SpiecsEngine
 
Loading...
Searching...
No Matches
PipelineStatisticsQueryer.cpp
Go to the documentation of this file.
1/**
2* @file PipelineStatisticsQueryer.cpp.
3* @brief The PipelineStatisticsQuerier Class Implementation.
4* @author Spices.
5*/
6
7#include "Pchheader.h"
9
10namespace Spices {
11
14 {
16
17 m_QueryPool = std::make_unique<VulkanQueryPool>(
18 state,
19 VK_QUERY_TYPE_PIPELINE_STATISTICS,
20 1,
21 static_cast<uint32_t>(PipelineStatisticEnum::MAX) * sizeof(uint64_t),
22 static_cast<VkQueryPipelineStatisticFlags>(PipelineStatisticEnum::ALL)
23 );
24
25 m_Result = std::make_shared<Result>();
26 }
27
28 void PipelineStatisticsQuerier::BeginQuery(VkCommandBuffer commandBuffer)
29 {
31
32 m_QueryPool->Reset(commandBuffer);
33 m_QueryPool->BeginQuery(commandBuffer);
34 }
35
36 void PipelineStatisticsQuerier::EndQuery(VkCommandBuffer commandBuffer)
37 {
39
40 m_QueryPool->EndQuery(commandBuffer);
41 }
42
44 {
46
47 auto* result = dynamic_cast<Result*>(m_Result.get());
48
49 uint64_t poolResult[static_cast<int>(PipelineStatisticEnum::MAX) + 1];
50 m_QueryPool->QueryResults(poolResult);
51
52 //result->valid = poolResult[(int)PipelineStatisticEnum::MAX];
53 result->valid = true;
54 if (result->valid)
55 {
56 memcpy(result->statistics.data(), poolResult, sizeof(result->statistics));
57 }
58 }
59}
#define SPICES_PROFILE_ZONE
virtual void EndQuery(VkCommandBuffer commandBuffer) override
End QueryPool.
virtual void StorePoolResult() override
Store QueryPool Result.
virtual void BeginQuery(VkCommandBuffer commandBuffer) override
Begin QueryPool.
PipelineStatisticsQuerier(VulkanState &state)
Constructor Function.
Querier(StatisticsBits type)
Constructor Function.
Definition Querier.h:69
StatisticsBits
Statistics types.
Definition Querier.h:24
Basic interface of Queries.
Definition Querier.h:17
PipelineStatisticEnum
Enum of all pipeline statistics item.
This struct contains all Vulkan object in used global.
Definition VulkanUtils.h:74