summaryrefslogtreecommitdiffstats
path: root/Graphics/GraphicsEngineD3D11
diff options
context:
space:
mode:
authorassiduous <assiduous@diligentgraphics.com>2020-01-03 19:19:40 +0000
committerassiduous <assiduous@diligentgraphics.com>2020-01-03 19:19:40 +0000
commit1934612b3d416c914dc589c912de8dd96d9ea044 (patch)
tree7572f39988925af817d0097f0ed6520d7edd911f /Graphics/GraphicsEngineD3D11
parentCompleted implementation of timestamp queries in D3D11 (diff)
downloadDiligentCore-1934612b3d416c914dc589c912de8dd96d9ea044.tar.gz
DiligentCore-1934612b3d416c914dc589c912de8dd96d9ea044.zip
Renamed QueryDataTimestamp::NumTicks to QueryDataTimestamp::Counter
Diffstat (limited to 'Graphics/GraphicsEngineD3D11')
-rw-r--r--Graphics/GraphicsEngineD3D11/src/QueryD3D11Impl.cpp27
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;