diff --git a/src/dxvk/dxvk_context.cpp b/src/dxvk/dxvk_context.cpp index f77669320..79e95440d 100644 --- a/src/dxvk/dxvk_context.cpp +++ b/src/dxvk/dxvk_context.cpp @@ -2283,6 +2283,9 @@ namespace dxvk { m_cmd->cmdBeginTransformFeedback( 0, MaxNumXfbBuffers, ctrBuffers, ctrOffsets); + + m_queries.beginQueries(m_cmd, + VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT); } } @@ -2304,6 +2307,9 @@ namespace dxvk { m_cmd->trackResource(physSlice.resource()); } + m_queries.endQueries(m_cmd, + VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT); + m_cmd->cmdEndTransformFeedback( 0, MaxNumXfbBuffers, ctrBuffers, ctrOffsets); diff --git a/src/dxvk/dxvk_query_manager.cpp b/src/dxvk/dxvk_query_manager.cpp index 3aa4fb672..e459ef56f 100644 --- a/src/dxvk/dxvk_query_manager.cpp +++ b/src/dxvk/dxvk_query_manager.cpp @@ -99,6 +99,7 @@ namespace dxvk { this->trackQueryPool(cmd, m_occlusion); this->trackQueryPool(cmd, m_pipeStats); this->trackQueryPool(cmd, m_timestamp); + this->trackQueryPool(cmd, m_xfbStream); } @@ -162,6 +163,9 @@ namespace dxvk { case VK_QUERY_TYPE_TIMESTAMP: return m_timestamp; + + case VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT: + return m_xfbStream; default: throw DxvkError("DXVK: Invalid query type"); @@ -171,10 +175,11 @@ namespace dxvk { uint32_t DxvkQueryManager::getDxvkQueryTypeBit(VkQueryType type) { switch (type) { - case VK_QUERY_TYPE_OCCLUSION: return 0x01; - case VK_QUERY_TYPE_PIPELINE_STATISTICS: return 0x02; - case VK_QUERY_TYPE_TIMESTAMP: return 0x04; - default: return 0; + case VK_QUERY_TYPE_OCCLUSION: return 0x01; + case VK_QUERY_TYPE_PIPELINE_STATISTICS: return 0x02; + case VK_QUERY_TYPE_TIMESTAMP: return 0x04; + case VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT: return 0x08; + default: return 0; } } diff --git a/src/dxvk/dxvk_query_manager.h b/src/dxvk/dxvk_query_manager.h index 3674d29ac..fd38ffaaa 100644 --- a/src/dxvk/dxvk_query_manager.h +++ b/src/dxvk/dxvk_query_manager.h @@ -101,6 +101,7 @@ namespace dxvk { Rc m_occlusion; Rc m_pipeStats; Rc m_timestamp; + Rc m_xfbStream; std::vector m_activeQueries;