From 6ba757387727fdfd2e749c692a160e7a485506de Mon Sep 17 00:00:00 2001 From: Robin Kertels Date: Wed, 16 Nov 2022 17:34:41 +0100 Subject: [PATCH 1/4] VideoBackends:Vulkan: Fix queries Fixes both checking whether queries are done and actually resets query pools. --- .../Core/VideoBackends/Vulkan/VKPerfQuery.cpp | 23 +++++++++++++++---- .../Core/VideoBackends/Vulkan/VKPerfQuery.h | 2 +- 2 files changed, 19 insertions(+), 6 deletions(-) diff --git a/Source/Core/VideoBackends/Vulkan/VKPerfQuery.cpp b/Source/Core/VideoBackends/Vulkan/VKPerfQuery.cpp index c882587b71..1237bd6c15 100644 --- a/Source/Core/VideoBackends/Vulkan/VKPerfQuery.cpp +++ b/Source/Core/VideoBackends/Vulkan/VKPerfQuery.cpp @@ -35,6 +35,9 @@ bool PerfQuery::Initialize() return false; } + // Vulkan requires query pools to be reset after creation + ResetQuery(); + return true; } @@ -55,6 +58,7 @@ void PerfQuery::EnableQuery(PerfQueryGroup type) ActiveQuery& entry = m_query_buffer[m_query_next_pos]; DEBUG_ASSERT(!entry.has_value); entry.has_value = true; + entry.query_type = type; // Use precise queries if supported, otherwise boolean (which will be incorrect). VkQueryControlFlags flags = @@ -72,6 +76,9 @@ void PerfQuery::DisableQuery(PerfQueryGroup type) if (type == PQG_ZCOMP_ZCOMPLOC || type == PQG_ZCOMP) { vkCmdEndQuery(g_command_buffer_mgr->GetCurrentCommandBuffer(), m_query_pool, m_query_next_pos); + ActiveQuery& entry = m_query_buffer[m_query_next_pos]; + entry.fence_counter = g_command_buffer_mgr->GetCurrentFenceCounter(); + m_query_next_pos = (m_query_next_pos + 1) % PERF_QUERY_BUFFER_SIZE; m_query_count.fetch_add(1, std::memory_order_relaxed); } @@ -119,8 +126,10 @@ u32 PerfQuery::GetQueryResult(PerfQueryType type) void PerfQuery::FlushResults() { - while (!IsFlushed()) + if (!IsFlushed()) PartialFlush(true); + + ASSERT(IsFlushed()); } bool PerfQuery::IsFlushed() const @@ -185,13 +194,17 @@ void PerfQuery::ReadbackQueries(u32 query_count) (m_query_readback_pos + query_count) <= PERF_QUERY_BUFFER_SIZE); // Read back from the GPU. - VkResult res = - vkGetQueryPoolResults(g_vulkan_context->GetDevice(), m_query_pool, m_query_readback_pos, - query_count, query_count * sizeof(PerfQueryDataType), - m_query_result_buffer.data(), sizeof(PerfQueryDataType), 0); + VkResult res = vkGetQueryPoolResults( + g_vulkan_context->GetDevice(), m_query_pool, m_query_readback_pos, query_count, + query_count * sizeof(PerfQueryDataType), m_query_result_buffer.data(), + sizeof(PerfQueryDataType), VK_QUERY_RESULT_WAIT_BIT); if (res != VK_SUCCESS) LOG_VULKAN_ERROR(res, "vkGetQueryPoolResults failed: "); + StateTracker::GetInstance()->EndRenderPass(); + vkCmdResetQueryPool(g_command_buffer_mgr->GetCurrentCommandBuffer(), m_query_pool, + m_query_readback_pos, query_count); + // Remove pending queries. for (u32 i = 0; i < query_count; i++) { diff --git a/Source/Core/VideoBackends/Vulkan/VKPerfQuery.h b/Source/Core/VideoBackends/Vulkan/VKPerfQuery.h index e4488683be..6d5fc00914 100644 --- a/Source/Core/VideoBackends/Vulkan/VKPerfQuery.h +++ b/Source/Core/VideoBackends/Vulkan/VKPerfQuery.h @@ -40,7 +40,7 @@ private: struct ActiveQuery { u64 fence_counter; - PerfQueryType query_type; + PerfQueryGroup query_type; bool has_value; }; From 57b2ea663eb6da47a95d337e1e004b6d9c0d0a16 Mon Sep 17 00:00:00 2001 From: Robin Kertels Date: Wed, 16 Nov 2022 17:35:55 +0100 Subject: [PATCH 2/4] VideoBackends:D3D12: Set query type --- Source/Core/VideoBackends/D3D12/D3D12PerfQuery.cpp | 1 + Source/Core/VideoBackends/D3D12/D3D12PerfQuery.h | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/Source/Core/VideoBackends/D3D12/D3D12PerfQuery.cpp b/Source/Core/VideoBackends/D3D12/D3D12PerfQuery.cpp index 9b69a70ca2..d1935c9464 100644 --- a/Source/Core/VideoBackends/D3D12/D3D12PerfQuery.cpp +++ b/Source/Core/VideoBackends/D3D12/D3D12PerfQuery.cpp @@ -71,6 +71,7 @@ void PerfQuery::EnableQuery(PerfQueryGroup type) ActiveQuery& entry = m_query_buffer[m_query_next_pos]; ASSERT(!entry.has_value && !entry.resolved); entry.has_value = true; + entry.query_type = type; g_dx_context->GetCommandList()->BeginQuery(m_query_heap.Get(), D3D12_QUERY_TYPE_OCCLUSION, m_query_next_pos); diff --git a/Source/Core/VideoBackends/D3D12/D3D12PerfQuery.h b/Source/Core/VideoBackends/D3D12/D3D12PerfQuery.h index 3b1f1775fa..1f44e53884 100644 --- a/Source/Core/VideoBackends/D3D12/D3D12PerfQuery.h +++ b/Source/Core/VideoBackends/D3D12/D3D12PerfQuery.h @@ -31,7 +31,7 @@ private: struct ActiveQuery { u64 fence_value; - PerfQueryType query_type; + PerfQueryGroup query_type; bool has_value; bool resolved; }; From df2e07ad29284bac890428a7020ff063e160f910 Mon Sep 17 00:00:00 2001 From: Robin Kertels Date: Wed, 16 Nov 2022 19:12:05 +0100 Subject: [PATCH 3/4] VideoBackends:Vulkan: Fix incorrect barriers in StagingBuffer HOST barriers need to be issued regardless of whether the memory type is coherent and we need to properly synchronize writes to the buffer. --- .../VideoBackends/Vulkan/StagingBuffer.cpp | 19 ++----------------- 1 file changed, 2 insertions(+), 17 deletions(-) diff --git a/Source/Core/VideoBackends/Vulkan/StagingBuffer.cpp b/Source/Core/VideoBackends/Vulkan/StagingBuffer.cpp index 19ca7dc8dd..c053ced700 100644 --- a/Source/Core/VideoBackends/Vulkan/StagingBuffer.cpp +++ b/Source/Core/VideoBackends/Vulkan/StagingBuffer.cpp @@ -73,11 +73,6 @@ void StagingBuffer::InvalidateGPUCache(VkCommandBuffer command_buffer, VkPipelineStageFlagBits dest_pipeline_stage, VkDeviceSize offset, VkDeviceSize size) { - VkMemoryPropertyFlags flags = 0; - vmaGetAllocationMemoryProperties(g_vulkan_context->GetMemoryAllocator(), m_alloc, &flags); - if (flags & VK_MEMORY_PROPERTY_HOST_COHERENT_BIT) [[likely]] - return; - ASSERT((offset + size) <= m_size || (offset < m_size && size == VK_WHOLE_SIZE)); BufferMemoryBarrier(command_buffer, m_buffer, VK_ACCESS_HOST_WRITE_BIT, dest_access_flags, offset, size, VK_PIPELINE_STAGE_HOST_BIT, dest_pipeline_stage); @@ -88,25 +83,15 @@ void StagingBuffer::PrepareForGPUWrite(VkCommandBuffer command_buffer, VkPipelineStageFlagBits dst_pipeline_stage, VkDeviceSize offset, VkDeviceSize size) { - VkMemoryPropertyFlags flags = 0; - vmaGetAllocationMemoryProperties(g_vulkan_context->GetMemoryAllocator(), m_alloc, &flags); - if (flags & VK_MEMORY_PROPERTY_HOST_COHERENT_BIT) [[likely]] - return; - ASSERT((offset + size) <= m_size || (offset < m_size && size == VK_WHOLE_SIZE)); - BufferMemoryBarrier(command_buffer, m_buffer, 0, dst_access_flags, offset, size, - VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, dst_pipeline_stage); + BufferMemoryBarrier(command_buffer, m_buffer, VK_ACCESS_MEMORY_WRITE_BIT, dst_access_flags, + offset, size, VK_PIPELINE_STAGE_ALL_COMMANDS_BIT, dst_pipeline_stage); } void StagingBuffer::FlushGPUCache(VkCommandBuffer command_buffer, VkAccessFlagBits src_access_flags, VkPipelineStageFlagBits src_pipeline_stage, VkDeviceSize offset, VkDeviceSize size) { - VkMemoryPropertyFlags flags = 0; - vmaGetAllocationMemoryProperties(g_vulkan_context->GetMemoryAllocator(), m_alloc, &flags); - if (flags & VK_MEMORY_PROPERTY_HOST_COHERENT_BIT) [[likely]] - return; - ASSERT((offset + size) <= m_size || (offset < m_size && size == VK_WHOLE_SIZE)); BufferMemoryBarrier(command_buffer, m_buffer, src_access_flags, VK_ACCESS_HOST_READ_BIT, offset, size, src_pipeline_stage, VK_PIPELINE_STAGE_HOST_BIT); From 35a6d16d9e2ac4a6924ffdea0184a92da5e6bf60 Mon Sep 17 00:00:00 2001 From: Robin Kertels Date: Thu, 17 Nov 2022 21:54:43 +0100 Subject: [PATCH 4/4] VideoBackends: Rename query_type to query_group --- .../Core/VideoBackends/D3D/D3DPerfQuery.cpp | 18 +++++----- Source/Core/VideoBackends/D3D/D3DPerfQuery.h | 6 ++-- .../VideoBackends/D3D12/D3D12PerfQuery.cpp | 14 ++++---- .../Core/VideoBackends/D3D12/D3D12PerfQuery.h | 6 ++-- .../Core/VideoBackends/OGL/OGLPerfQuery.cpp | 34 +++++++++---------- Source/Core/VideoBackends/OGL/OGLPerfQuery.h | 14 ++++---- .../Core/VideoBackends/Vulkan/VKPerfQuery.cpp | 14 ++++---- .../Core/VideoBackends/Vulkan/VKPerfQuery.h | 6 ++-- 8 files changed, 56 insertions(+), 56 deletions(-) diff --git a/Source/Core/VideoBackends/D3D/D3DPerfQuery.cpp b/Source/Core/VideoBackends/D3D/D3DPerfQuery.cpp index 6a5550c0f5..e1535f7c32 100644 --- a/Source/Core/VideoBackends/D3D/D3DPerfQuery.cpp +++ b/Source/Core/VideoBackends/D3D/D3DPerfQuery.cpp @@ -24,7 +24,7 @@ PerfQuery::PerfQuery() : m_query_read_pos() PerfQuery::~PerfQuery() = default; -void PerfQuery::EnableQuery(PerfQueryGroup type) +void PerfQuery::EnableQuery(PerfQueryGroup group) { u32 query_count = m_query_count.load(std::memory_order_relaxed); @@ -44,21 +44,21 @@ void PerfQuery::EnableQuery(PerfQueryGroup type) } // start query - if (type == PQG_ZCOMP_ZCOMPLOC || type == PQG_ZCOMP) + if (group == PQG_ZCOMP_ZCOMPLOC || group == PQG_ZCOMP) { auto& entry = m_query_buffer[(m_query_read_pos + query_count) % m_query_buffer.size()]; D3D::context->Begin(entry.query.Get()); - entry.query_type = type; + entry.query_group = group; m_query_count.fetch_add(1, std::memory_order_relaxed); } } -void PerfQuery::DisableQuery(PerfQueryGroup type) +void PerfQuery::DisableQuery(PerfQueryGroup group) { // stop query - if (type == PQG_ZCOMP_ZCOMPLOC || type == PQG_ZCOMP) + if (group == PQG_ZCOMP_ZCOMPLOC || group == PQG_ZCOMP) { auto& entry = m_query_buffer[(m_query_read_pos + m_query_count.load(std::memory_order_relaxed) + m_query_buffer.size() - 1) % @@ -116,8 +116,8 @@ void PerfQuery::FlushOne() // hardware behavior when drawing triangles. const u64 native_res_result = result * EFB_WIDTH / g_renderer->GetTargetWidth() * EFB_HEIGHT / g_renderer->GetTargetHeight(); - m_results[entry.query_type].fetch_add(static_cast(native_res_result), - std::memory_order_relaxed); + m_results[entry.query_group].fetch_add(static_cast(native_res_result), + std::memory_order_relaxed); m_query_read_pos = (m_query_read_pos + 1) % m_query_buffer.size(); m_query_count.fetch_sub(1, std::memory_order_relaxed); @@ -145,8 +145,8 @@ void PerfQuery::WeakFlush() // NOTE: Reported pixel metrics should be referenced to native resolution const u64 native_res_result = result * EFB_WIDTH / g_renderer->GetTargetWidth() * EFB_HEIGHT / g_renderer->GetTargetHeight(); - m_results[entry.query_type].store(static_cast(native_res_result), - std::memory_order_relaxed); + m_results[entry.query_group].store(static_cast(native_res_result), + std::memory_order_relaxed); m_query_read_pos = (m_query_read_pos + 1) % m_query_buffer.size(); m_query_count.fetch_sub(1, std::memory_order_relaxed); diff --git a/Source/Core/VideoBackends/D3D/D3DPerfQuery.h b/Source/Core/VideoBackends/D3D/D3DPerfQuery.h index fc1848f29a..3d937b0012 100644 --- a/Source/Core/VideoBackends/D3D/D3DPerfQuery.h +++ b/Source/Core/VideoBackends/D3D/D3DPerfQuery.h @@ -15,8 +15,8 @@ public: PerfQuery(); ~PerfQuery(); - void EnableQuery(PerfQueryGroup type) override; - void DisableQuery(PerfQueryGroup type) override; + void EnableQuery(PerfQueryGroup group) override; + void DisableQuery(PerfQueryGroup group) override; void ResetQuery() override; u32 GetQueryResult(PerfQueryType type) override; void FlushResults() override; @@ -26,7 +26,7 @@ private: struct ActiveQuery { ComPtr query; - PerfQueryGroup query_type{}; + PerfQueryGroup query_group{}; }; void WeakFlush(); diff --git a/Source/Core/VideoBackends/D3D12/D3D12PerfQuery.cpp b/Source/Core/VideoBackends/D3D12/D3D12PerfQuery.cpp index d1935c9464..06f6f9dbcc 100644 --- a/Source/Core/VideoBackends/D3D12/D3D12PerfQuery.cpp +++ b/Source/Core/VideoBackends/D3D12/D3D12PerfQuery.cpp @@ -48,7 +48,7 @@ bool PerfQuery::Initialize() return true; } -void PerfQuery::EnableQuery(PerfQueryGroup type) +void PerfQuery::EnableQuery(PerfQueryGroup group) { // Block if there are no free slots. // Otherwise, try to keep half of them available. @@ -66,21 +66,21 @@ void PerfQuery::EnableQuery(PerfQueryGroup type) // this assumes that the caller has bound all required state prior to enabling the query. Renderer::GetInstance()->ApplyState(); - if (type == PQG_ZCOMP_ZCOMPLOC || type == PQG_ZCOMP) + if (group == PQG_ZCOMP_ZCOMPLOC || group == PQG_ZCOMP) { ActiveQuery& entry = m_query_buffer[m_query_next_pos]; ASSERT(!entry.has_value && !entry.resolved); entry.has_value = true; - entry.query_type = type; + entry.query_group = group; g_dx_context->GetCommandList()->BeginQuery(m_query_heap.Get(), D3D12_QUERY_TYPE_OCCLUSION, m_query_next_pos); } } -void PerfQuery::DisableQuery(PerfQueryGroup type) +void PerfQuery::DisableQuery(PerfQueryGroup group) { - if (type == PQG_ZCOMP_ZCOMPLOC || type == PQG_ZCOMP) + if (group == PQG_ZCOMP_ZCOMPLOC || group == PQG_ZCOMP) { g_dx_context->GetCommandList()->EndQuery(m_query_heap.Get(), D3D12_QUERY_TYPE_OCCLUSION, m_query_next_pos); @@ -246,8 +246,8 @@ void PerfQuery::AccumulateQueriesFromBuffer(u32 query_count) const u64 native_res_result = static_cast(result) * EFB_WIDTH / g_renderer->GetTargetWidth() * EFB_HEIGHT / g_renderer->GetTargetHeight(); - m_results[entry.query_type].fetch_add(static_cast(native_res_result), - std::memory_order_relaxed); + m_results[entry.query_group].fetch_add(static_cast(native_res_result), + std::memory_order_relaxed); } constexpr D3D12_RANGE write_range = {0, 0}; diff --git a/Source/Core/VideoBackends/D3D12/D3D12PerfQuery.h b/Source/Core/VideoBackends/D3D12/D3D12PerfQuery.h index 1f44e53884..b7409cedb5 100644 --- a/Source/Core/VideoBackends/D3D12/D3D12PerfQuery.h +++ b/Source/Core/VideoBackends/D3D12/D3D12PerfQuery.h @@ -20,8 +20,8 @@ public: bool Initialize(); void ResolveQueries(); - void EnableQuery(PerfQueryGroup type) override; - void DisableQuery(PerfQueryGroup type) override; + void EnableQuery(PerfQueryGroup group) override; + void DisableQuery(PerfQueryGroup group) override; void ResetQuery() override; u32 GetQueryResult(PerfQueryType type) override; void FlushResults() override; @@ -31,7 +31,7 @@ private: struct ActiveQuery { u64 fence_value; - PerfQueryGroup query_type; + PerfQueryGroup query_group; bool has_value; bool resolved; }; diff --git a/Source/Core/VideoBackends/OGL/OGLPerfQuery.cpp b/Source/Core/VideoBackends/OGL/OGLPerfQuery.cpp index a293c92c6c..550b837de8 100644 --- a/Source/Core/VideoBackends/OGL/OGLPerfQuery.cpp +++ b/Source/Core/VideoBackends/OGL/OGLPerfQuery.cpp @@ -30,14 +30,14 @@ PerfQuery::PerfQuery() : m_query_read_pos() ResetQuery(); } -void PerfQuery::EnableQuery(PerfQueryGroup type) +void PerfQuery::EnableQuery(PerfQueryGroup group) { - m_query->EnableQuery(type); + m_query->EnableQuery(group); } -void PerfQuery::DisableQuery(PerfQueryGroup type) +void PerfQuery::DisableQuery(PerfQueryGroup group) { - m_query->DisableQuery(type); + m_query->DisableQuery(group); } bool PerfQuery::IsFlushed() const @@ -96,7 +96,7 @@ PerfQueryGL::~PerfQueryGL() glDeleteQueries(1, &query.query_id); } -void PerfQueryGL::EnableQuery(PerfQueryGroup type) +void PerfQueryGL::EnableQuery(PerfQueryGroup group) { u32 query_count = m_query_count.load(std::memory_order_relaxed); @@ -115,20 +115,20 @@ void PerfQueryGL::EnableQuery(PerfQueryGroup type) } // start query - if (type == PQG_ZCOMP_ZCOMPLOC || type == PQG_ZCOMP) + if (group == PQG_ZCOMP_ZCOMPLOC || group == PQG_ZCOMP) { auto& entry = m_query_buffer[(m_query_read_pos + query_count) % m_query_buffer.size()]; glBeginQuery(m_query_type, entry.query_id); - entry.query_type = type; + entry.query_group = group; m_query_count.fetch_add(1, std::memory_order_relaxed); } } -void PerfQueryGL::DisableQuery(PerfQueryGroup type) +void PerfQueryGL::DisableQuery(PerfQueryGroup group) { // stop query - if (type == PQG_ZCOMP_ZCOMPLOC || type == PQG_ZCOMP) + if (group == PQG_ZCOMP_ZCOMPLOC || group == PQG_ZCOMP) { glEndQuery(m_query_type); } @@ -171,7 +171,7 @@ void PerfQueryGL::FlushOne() if (g_ActiveConfig.iMultisamples > 1) result /= g_ActiveConfig.iMultisamples; - m_results[entry.query_type].fetch_add(result, std::memory_order_relaxed); + m_results[entry.query_group].fetch_add(result, std::memory_order_relaxed); m_query_read_pos = (m_query_read_pos + 1) % m_query_buffer.size(); m_query_count.fetch_sub(1, std::memory_order_relaxed); @@ -196,7 +196,7 @@ PerfQueryGLESNV::~PerfQueryGLESNV() glDeleteOcclusionQueriesNV(1, &query.query_id); } -void PerfQueryGLESNV::EnableQuery(PerfQueryGroup type) +void PerfQueryGLESNV::EnableQuery(PerfQueryGroup group) { u32 query_count = m_query_count.load(std::memory_order_relaxed); @@ -215,20 +215,20 @@ void PerfQueryGLESNV::EnableQuery(PerfQueryGroup type) } // start query - if (type == PQG_ZCOMP_ZCOMPLOC || type == PQG_ZCOMP) + if (group == PQG_ZCOMP_ZCOMPLOC || group == PQG_ZCOMP) { auto& entry = m_query_buffer[(m_query_read_pos + query_count) % m_query_buffer.size()]; glBeginOcclusionQueryNV(entry.query_id); - entry.query_type = type; + entry.query_group = group; m_query_count.fetch_add(1, std::memory_order_relaxed); } } -void PerfQueryGLESNV::DisableQuery(PerfQueryGroup type) +void PerfQueryGLESNV::DisableQuery(PerfQueryGroup group) { // stop query - if (type == PQG_ZCOMP_ZCOMPLOC || type == PQG_ZCOMP) + if (group == PQG_ZCOMP_ZCOMPLOC || group == PQG_ZCOMP) { glEndOcclusionQueryNV(); } @@ -266,8 +266,8 @@ void PerfQueryGLESNV::FlushOne() // hardware behavior when drawing triangles. const u64 native_res_result = static_cast(result) * EFB_WIDTH * EFB_HEIGHT / (g_renderer->GetTargetWidth() * g_renderer->GetTargetHeight()); - m_results[entry.query_type].fetch_add(static_cast(native_res_result), - std::memory_order_relaxed); + m_results[entry.query_group].fetch_add(static_cast(native_res_result), + std::memory_order_relaxed); m_query_read_pos = (m_query_read_pos + 1) % m_query_buffer.size(); m_query_count.fetch_sub(1, std::memory_order_relaxed); diff --git a/Source/Core/VideoBackends/OGL/OGLPerfQuery.h b/Source/Core/VideoBackends/OGL/OGLPerfQuery.h index ff78de678e..8ca2bd4334 100644 --- a/Source/Core/VideoBackends/OGL/OGLPerfQuery.h +++ b/Source/Core/VideoBackends/OGL/OGLPerfQuery.h @@ -19,8 +19,8 @@ class PerfQuery : public PerfQueryBase public: PerfQuery(); ~PerfQuery() {} - void EnableQuery(PerfQueryGroup type) override; - void DisableQuery(PerfQueryGroup type) override; + void EnableQuery(PerfQueryGroup group) override; + void DisableQuery(PerfQueryGroup group) override; void ResetQuery() override; u32 GetQueryResult(PerfQueryType type) override; void FlushResults() override; @@ -30,7 +30,7 @@ protected: struct ActiveQuery { GLuint query_id; - PerfQueryGroup query_type; + PerfQueryGroup query_group; }; // when testing in SMS: 64 was too small, 128 was ok @@ -52,8 +52,8 @@ public: PerfQueryGL(GLenum query_type); ~PerfQueryGL(); - void EnableQuery(PerfQueryGroup type) override; - void DisableQuery(PerfQueryGroup type) override; + void EnableQuery(PerfQueryGroup group) override; + void DisableQuery(PerfQueryGroup group) override; void FlushResults() override; private: @@ -70,8 +70,8 @@ public: PerfQueryGLESNV(); ~PerfQueryGLESNV(); - void EnableQuery(PerfQueryGroup type) override; - void DisableQuery(PerfQueryGroup type) override; + void EnableQuery(PerfQueryGroup group) override; + void DisableQuery(PerfQueryGroup group) override; void FlushResults() override; private: diff --git a/Source/Core/VideoBackends/Vulkan/VKPerfQuery.cpp b/Source/Core/VideoBackends/Vulkan/VKPerfQuery.cpp index 1237bd6c15..9571c69677 100644 --- a/Source/Core/VideoBackends/Vulkan/VKPerfQuery.cpp +++ b/Source/Core/VideoBackends/Vulkan/VKPerfQuery.cpp @@ -41,7 +41,7 @@ bool PerfQuery::Initialize() return true; } -void PerfQuery::EnableQuery(PerfQueryGroup type) +void PerfQuery::EnableQuery(PerfQueryGroup group) { // Block if there are no free slots. // Otherwise, try to keep half of them available. @@ -53,12 +53,12 @@ void PerfQuery::EnableQuery(PerfQueryGroup type) // a buffer with open queries. StateTracker::GetInstance()->Bind(); - if (type == PQG_ZCOMP_ZCOMPLOC || type == PQG_ZCOMP) + if (group == PQG_ZCOMP_ZCOMPLOC || group == PQG_ZCOMP) { ActiveQuery& entry = m_query_buffer[m_query_next_pos]; DEBUG_ASSERT(!entry.has_value); entry.has_value = true; - entry.query_type = type; + entry.query_group = group; // Use precise queries if supported, otherwise boolean (which will be incorrect). VkQueryControlFlags flags = @@ -71,9 +71,9 @@ void PerfQuery::EnableQuery(PerfQueryGroup type) } } -void PerfQuery::DisableQuery(PerfQueryGroup type) +void PerfQuery::DisableQuery(PerfQueryGroup group) { - if (type == PQG_ZCOMP_ZCOMPLOC || type == PQG_ZCOMP) + if (group == PQG_ZCOMP_ZCOMPLOC || group == PQG_ZCOMP) { vkCmdEndQuery(g_command_buffer_mgr->GetCurrentCommandBuffer(), m_query_pool, m_query_next_pos); ActiveQuery& entry = m_query_buffer[m_query_next_pos]; @@ -220,8 +220,8 @@ void PerfQuery::ReadbackQueries(u32 query_count) const u64 native_res_result = static_cast(m_query_result_buffer[i]) * EFB_WIDTH / g_renderer->GetTargetWidth() * EFB_HEIGHT / g_renderer->GetTargetHeight(); - m_results[entry.query_type].fetch_add(static_cast(native_res_result), - std::memory_order_relaxed); + m_results[entry.query_group].fetch_add(static_cast(native_res_result), + std::memory_order_relaxed); } m_query_readback_pos = (m_query_readback_pos + query_count) % PERF_QUERY_BUFFER_SIZE; diff --git a/Source/Core/VideoBackends/Vulkan/VKPerfQuery.h b/Source/Core/VideoBackends/Vulkan/VKPerfQuery.h index 6d5fc00914..ee4cabd7d6 100644 --- a/Source/Core/VideoBackends/Vulkan/VKPerfQuery.h +++ b/Source/Core/VideoBackends/Vulkan/VKPerfQuery.h @@ -22,8 +22,8 @@ public: bool Initialize(); - void EnableQuery(PerfQueryGroup type) override; - void DisableQuery(PerfQueryGroup type) override; + void EnableQuery(PerfQueryGroup group) override; + void DisableQuery(PerfQueryGroup group) override; void ResetQuery() override; u32 GetQueryResult(PerfQueryType type) override; void FlushResults() override; @@ -40,7 +40,7 @@ private: struct ActiveQuery { u64 fence_counter; - PerfQueryGroup query_type; + PerfQueryGroup query_group; bool has_value; };