diff options
| author | assiduous <assiduous@diligentgraphics.com> | 2020-08-25 03:31:20 +0000 |
|---|---|---|
| committer | assiduous <assiduous@diligentgraphics.com> | 2020-08-25 03:31:20 +0000 |
| commit | 67fec45e6b5ec70b477c529fb2b1f4bd08682831 (patch) | |
| tree | 7d9d66be7b83ced2e72228b69464301b163aad9b /Graphics/GraphicsEngineD3D12 | |
| parent | Fixed buffer creation test on Vulkan/Intel; improved texture test failure output (diff) | |
| download | DiligentCore-67fec45e6b5ec70b477c529fb2b1f4bd08682831.tar.gz DiligentCore-67fec45e6b5ec70b477c529fb2b1f4bd08682831.zip | |
Added QUERY_TYPE_DURATION value and QueryDataDuration struct
Diffstat (limited to 'Graphics/GraphicsEngineD3D12')
| -rw-r--r-- | Graphics/GraphicsEngineD3D12/src/D3D12TypeConversions.cpp | 2 | ||||
| -rw-r--r-- | Graphics/GraphicsEngineD3D12/src/QueryManagerD3D12.cpp | 8 |
2 files changed, 9 insertions, 1 deletions
diff --git a/Graphics/GraphicsEngineD3D12/src/D3D12TypeConversions.cpp b/Graphics/GraphicsEngineD3D12/src/D3D12TypeConversions.cpp index 1759663f..88c1fb2d 100644 --- a/Graphics/GraphicsEngineD3D12/src/D3D12TypeConversions.cpp +++ b/Graphics/GraphicsEngineD3D12/src/D3D12TypeConversions.cpp @@ -494,7 +494,9 @@ D3D12_QUERY_HEAP_TYPE QueryTypeToD3D12QueryHeapType(QUERY_TYPE QueryType) case QUERY_TYPE_BINARY_OCCLUSION: return D3D12_QUERY_HEAP_TYPE_OCCLUSION; case QUERY_TYPE_TIMESTAMP: return D3D12_QUERY_HEAP_TYPE_TIMESTAMP; case QUERY_TYPE_PIPELINE_STATISTICS: return D3D12_QUERY_HEAP_TYPE_PIPELINE_STATISTICS; + case QUERY_TYPE_DURATION: return D3D12_QUERY_HEAP_TYPE_TIMESTAMP; + static_assert(QUERY_TYPE_NUM_TYPES == 6, "Not all QUERY_TYPE enum values are handled"); default: UNEXPECTED("Unexpected query type"); return static_cast<D3D12_QUERY_HEAP_TYPE>(-1); diff --git a/Graphics/GraphicsEngineD3D12/src/QueryManagerD3D12.cpp b/Graphics/GraphicsEngineD3D12/src/QueryManagerD3D12.cpp index 2391e2a6..6e122832 100644 --- a/Graphics/GraphicsEngineD3D12/src/QueryManagerD3D12.cpp +++ b/Graphics/GraphicsEngineD3D12/src/QueryManagerD3D12.cpp @@ -45,6 +45,7 @@ static Uint32 GetQueryDataSize(QUERY_TYPE QueryType) case QUERY_TYPE_OCCLUSION: case QUERY_TYPE_BINARY_OCCLUSION: case QUERY_TYPE_TIMESTAMP: + case QUERY_TYPE_DURATION: return sizeof(Uint64); break; @@ -52,6 +53,8 @@ static Uint32 GetQueryDataSize(QUERY_TYPE QueryType) return sizeof(D3D12_QUERY_DATA_PIPELINE_STATISTICS); break; + static_assert(QUERY_TYPE_NUM_TYPES == 6, "Not all QUERY_TYPE enum values are tested"); + default: UNEXPECTED("Unexpected query type"); return 0; @@ -70,7 +73,8 @@ QueryManagerD3D12::QueryManagerD3D12(ID3D12Device* pd3d12Device, static_assert(QUERY_TYPE_BINARY_OCCLUSION == 2, "Unexpected value of QUERY_TYPE_BINARY_OCCLUSION. EngineD3D12CreateInfo::QueryPoolSizes must be updated"); static_assert(QUERY_TYPE_TIMESTAMP == 3, "Unexpected value of QUERY_TYPE_TIMESTAMP. EngineD3D12CreateInfo::QueryPoolSizes must be updated"); static_assert(QUERY_TYPE_PIPELINE_STATISTICS== 4, "Unexpected value of QUERY_TYPE_PIPELINE_STATISTICS. EngineD3D12CreateInfo::QueryPoolSizes must be updated"); - static_assert(QUERY_TYPE_NUM_TYPES == 5, "Unexpected value of QUERY_TYPE_NUM_TYPES. EngineD3D12CreateInfo::QueryPoolSizes must be updated"); + static_assert(QUERY_TYPE_DURATION == 5, "Unexpected value of QUERY_TYPE_DURATION. EngineD3D12CreateInfo::QueryPoolSizes must be updated"); + static_assert(QUERY_TYPE_NUM_TYPES == 6, "Unexpected value of QUERY_TYPE_NUM_TYPES. EngineD3D12CreateInfo::QueryPoolSizes must be updated"); // clang-format on auto& HeapInfo = m_Heaps[QueryType]; @@ -79,6 +83,8 @@ QueryManagerD3D12::QueryManagerD3D12(ID3D12Device* pd3d12Device, HeapInfo.HeapSize = QueryHeapSizes[QueryType]; d3d12HeapDesc.Type = QueryTypeToD3D12QueryHeapType(static_cast<QUERY_TYPE>(QueryType)); d3d12HeapDesc.Count = HeapInfo.HeapSize; + if (QueryType == QUERY_TYPE_DURATION) + d3d12HeapDesc.Count *= 2; auto hr = pd3d12Device->CreateQueryHeap(&d3d12HeapDesc, __uuidof(HeapInfo.pd3d12QueryHeap), reinterpret_cast<void**>(&HeapInfo.pd3d12QueryHeap)); CHECK_D3D_RESULT_THROW(hr, "Failed to create D3D12 query heap of type"); |
