1
0
mirror of https://github.com/doitsujin/dxvk.git synced 2025-03-13 19:29:14 +01:00

[dxvk] Add support for transform feedback queries

This commit is contained in:
Philip Rebohle 2018-08-31 15:56:38 +02:00
parent 4bdf6daa39
commit 929b75a038
No known key found for this signature in database
GPG Key ID: C8CC613427A31C99
3 changed files with 16 additions and 4 deletions

View File

@ -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);

View File

@ -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;
}
}

View File

@ -101,6 +101,7 @@ namespace dxvk {
Rc<DxvkQueryPool> m_occlusion;
Rc<DxvkQueryPool> m_pipeStats;
Rc<DxvkQueryPool> m_timestamp;
Rc<DxvkQueryPool> m_xfbStream;
std::vector<DxvkQueryRevision> m_activeQueries;