2
3
4
5
17 VkQueryPipelineStatisticFlags statistics
27
28
29 VkQueryPoolCreateInfo createInfo{};
30 createInfo.sType = VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO;
31 createInfo.queryType = type;
32 createInfo.queryCount = count;
35 createInfo.pipelineStatistics = statistics;
36 createInfo.pNext =
nullptr;
39
40
41 VK_CHECK(vkCreateQueryPool(vulkanState.m_Device, &createInfo,
nullptr, &m_QueryPool))
42 DEBUGUTILS_SETOBJECTNAME(VK_OBJECT_TYPE_QUERY_POOL, (uint64_t)m_QueryPool, m_VulkanState.m_Device,
"Query Pool")
50
51
52 vkDestroyQueryPool(m_VulkanState.m_Device, m_QueryPool,
nullptr);
60
61
62 VkQueryControlFlags flags = 0;
63 if (m_QueryType & VK_QUERY_TYPE_OCCLUSION)
65 flags |= VK_QUERY_CONTROL_PRECISE_BIT;
68 assert(!(m_QueryType & VK_QUERY_TYPE_TIMESTAMP));
71
72
73 vkCmdBeginQuery(commandBuffer, m_QueryPool, index, flags);
80 assert(!(m_QueryType & VK_QUERY_TYPE_TIMESTAMP));
83
84
85 vkCmdEndQuery(commandBuffer, m_QueryPool, index);
92 assert(m_QueryType & VK_QUERY_TYPE_TIMESTAMP);
94 vkCmdWriteTimestamp2(commandBuffer, VK_PIPELINE_STAGE_2_NONE, m_QueryPool, index);
102
103
104
105 vkCmdResetQueryPool(commandBuffer, m_QueryPool, 0, m_QueryCount);
113
114
116 m_VulkanState.m_Device ,
120 m_Stride * m_QueryCount +
sizeof(uint64_t) ,
126 VK_QUERY_RESULT_64_BIT | VK_QUERY_RESULT_WAIT_BIT
#define SPICES_PROFILE_ZONE
#define VK_CHECK(expr)
Vulkan Check macro. Verify Vulkan API Effectiveness.
VulkanObject(VulkanState &vulkanState)
Constructor Function. Init member variables.
VulkanObject Class. This class defines the basic behaves of VulkanObject. When we create an new Vulka...
void EndQuery(VkCommandBuffer commandBuffer, uint32_t index=0) const
End query previous commands.
void WriteTimeStamp(VkCommandBuffer commandBuffer, uint32_t index) const
Write a TimeStamp to queryPool.
void Reset(VkCommandBuffer commandBuffer) const
Reset QueryPool. Call it on frame start.
void QueryResults(uint64_t *result) const
Query results from Pool.
virtual ~VulkanQueryPool() override
Destructor Function.
uint32_t m_QueryCount
Query Count.
VulkanQueryPool(VulkanState &vulkanState, VkQueryType type, uint32_t count=1, uint32_t stride=8, VkQueryPipelineStatisticFlags statistics=0)
Constructor Function. Create VkQueryPool.
void BeginQuery(VkCommandBuffer commandBuffer, uint32_t index=0) const
Begin to query next commands.
uint32_t m_Stride
Data stride.
This Class is a Wrapper of VulkanQueryPool.
This struct contains all Vulkan object in used global.