17 void Initialize(plUInt32 uiValidBits);
21 void BeginFrame(vk::CommandBuffer commandBuffer);
27 plGALTimestampHandle InsertTimestamp(vk::CommandBuffer commandBuffer, vk::PipelineStageFlagBits pipelineStage = vk::PipelineStageFlagBits::eBottomOfPipe);
37 void EndOcclusionQuery(vk::CommandBuffer commandBuffer,
plGALPoolHandle hPool);
44 static constexpr plUInt32 s_uiRetainFrames = 4;
50 plUInt32 uiQueryIndex;
58 bool m_bReady =
false;
65 plUInt64 m_uiNextIndex = 0;
66 plUInt64 m_uiFrameCounter = 0;
67 plUInt8 m_uiReadyFrames = 0;
77 void Initialize(vk::Device device, plUInt32 uiPoolSize, vk::QueryType queryType);
80 QueryPool* GetFreePool();
81 void BeginFrame(vk::CommandBuffer commandBuffer, plUInt64 uiCurrentFrame, plUInt64 uiSafeFrame);
87 FramePool* m_pCurrentFrame =
nullptr;
88 plUInt64 m_uiFirstFrameIndex = 0;
96 plUInt32 m_uiPoolSize = 0;
97 vk::QueryType m_QueryType;
103 double m_fNanoSecondsPerTick = 0;
104 plUInt64 m_uiValidBitsMask = 0;
108 Pool m_TimestampPool;
109 Pool m_OcclusionPool;