diff options
| author | assiduous <assiduous@diligentgraphics.com> | 2020-01-03 19:19:40 +0000 |
|---|---|---|
| committer | assiduous <assiduous@diligentgraphics.com> | 2020-01-03 19:19:40 +0000 |
| commit | 1934612b3d416c914dc589c912de8dd96d9ea044 (patch) | |
| tree | 7572f39988925af817d0097f0ed6520d7edd911f /Graphics/GraphicsEngineD3D11 | |
| parent | Completed implementation of timestamp queries in D3D11 (diff) | |
| download | DiligentCore-1934612b3d416c914dc589c912de8dd96d9ea044.tar.gz DiligentCore-1934612b3d416c914dc589c912de8dd96d9ea044.zip | |
Renamed QueryDataTimestamp::NumTicks to QueryDataTimestamp::Counter
Diffstat (limited to 'Graphics/GraphicsEngineD3D11')
| -rw-r--r-- | Graphics/GraphicsEngineD3D11/src/QueryD3D11Impl.cpp | 27 |
1 files changed, 16 insertions, 11 deletions
diff --git a/Graphics/GraphicsEngineD3D11/src/QueryD3D11Impl.cpp b/Graphics/GraphicsEngineD3D11/src/QueryD3D11Impl.cpp index d7cc9458..2229c47e 100644 --- a/Graphics/GraphicsEngineD3D11/src/QueryD3D11Impl.cpp +++ b/Graphics/GraphicsEngineD3D11/src/QueryD3D11Impl.cpp @@ -113,22 +113,27 @@ bool QueryD3D11Impl::GetData(void* pData, Uint32 DataSize) case QUERY_TYPE_TIMESTAMP: { + // Timestamp query is only useful if two timestamp queries are done in the middle of a D3D11_QUERY_TIMESTAMP_DISJOINT query. + // Timestamp disjoint query is begun by the device context when the first timestamp query is begun and ended + // by FinishFrame. Thus timestamp queries will only become available after FinishFrame. + VERIFY_EXPR(m_DisjointQuery); - + D3D11_QUERY_DATA_TIMESTAMP_DISJOINT DisjointQueryData; DataReady = pd3d11Ctx->GetData(m_DisjointQuery->pd3d11Query, &DisjointQueryData, sizeof(DisjointQueryData), 0) == S_OK; - - UINT64 NumTicks; - if (DataReady) - { - DataReady = pd3d11Ctx->GetData(m_pd3d11Query, &NumTicks, sizeof(NumTicks), 0) == S_OK; - } + if (DataReady) { - auto& QueryData = *reinterpret_cast<QueryDataTimestamp*>(pData); - QueryData.NumTicks = NumTicks; - // The timestamp returned by ID3D11DeviceContext::GetData for a timestamp query is only reliable if Disjoint is FALSE. - QueryData.Frequency = DisjointQueryData.Disjoint ? 0 : DisjointQueryData.Frequency; + UINT64 Counter = 0; + + DataReady = pd3d11Ctx->GetData(m_pd3d11Query, &Counter, sizeof(Counter), 0) == S_OK; + if (DataReady) + { + auto& QueryData = *reinterpret_cast<QueryDataTimestamp*>(pData); + QueryData.Counter = Counter; + // The timestamp returned by ID3D11DeviceContext::GetData for a timestamp query is only reliable if Disjoint is FALSE. + QueryData.Frequency = DisjointQueryData.Disjoint ? 0 : DisjointQueryData.Frequency; + } } } break; |
