From 34833e9ad0c82a9ddeaa6a2aeed480300faedf3e Mon Sep 17 00:00:00 2001 From: CamilleLaVey Date: Mon, 1 Dec 2025 02:12:36 -0400 Subject: [PATCH] [vk] CounterStreamer --- src/video_core/query_cache/query_cache.h | 6 ++++++ src/video_core/query_cache/query_cache_base.h | 2 ++ src/video_core/renderer_vulkan/vk_scheduler.cpp | 4 +--- src/video_core/renderer_vulkan/vk_scheduler.h | 1 - 4 files changed, 9 insertions(+), 4 deletions(-) diff --git a/src/video_core/query_cache/query_cache.h b/src/video_core/query_cache/query_cache.h index 6bed91a53e..2efeb25d60 100644 --- a/src/video_core/query_cache/query_cache.h +++ b/src/video_core/query_cache/query_cache.h @@ -211,6 +211,12 @@ void QueryCacheBase::CounterClose(QueryType counter_type) { streamer->CloseCounter(); } +template +bool QueryCacheBase::HasStreamer(QueryType counter_type) const { + const size_t index = static_cast(counter_type); + return impl->streamers[index] != nullptr; +} + template void QueryCacheBase::CounterReset(QueryType counter_type) { size_t index = static_cast(counter_type); diff --git a/src/video_core/query_cache/query_cache_base.h b/src/video_core/query_cache/query_cache_base.h index 242e24388f..728272ba57 100644 --- a/src/video_core/query_cache/query_cache_base.h +++ b/src/video_core/query_cache/query_cache_base.h @@ -95,6 +95,8 @@ public: void CounterReset(QueryType counter_type); + [[nodiscard]] bool HasStreamer(QueryType counter_type) const; + void CounterClose(QueryType counter_type); void CounterReport(GPUVAddr addr, QueryType counter_type, QueryPropertiesFlags flags, diff --git a/src/video_core/renderer_vulkan/vk_scheduler.cpp b/src/video_core/renderer_vulkan/vk_scheduler.cpp index 3bddf4b122..2c9f2e2e3e 100644 --- a/src/video_core/renderer_vulkan/vk_scheduler.cpp +++ b/src/video_core/renderer_vulkan/vk_scheduler.cpp @@ -44,8 +44,7 @@ void Scheduler::CommandChunk::ExecuteAll(vk::CommandBuffer cmdbuf, } Scheduler::Scheduler(const Device& device_, StateTracker& state_tracker_) - : device{device_}, supports_transform_feedback{device_.IsExtTransformFeedbackSupported()}, - state_tracker{state_tracker_}, + : device{device_}, state_tracker{state_tracker_}, master_semaphore{std::make_unique(device)}, command_pool{std::make_unique(*master_semaphore, device)} { @@ -337,7 +336,6 @@ void Scheduler::EndRenderPass() if (supports_transform_feedback) { query_cache->CounterEnable(VideoCommon::QueryType::StreamingByteCount, false); } - query_cache->NotifySegment(false); Record([num_images = num_renderpass_images, images = renderpass_images, diff --git a/src/video_core/renderer_vulkan/vk_scheduler.h b/src/video_core/renderer_vulkan/vk_scheduler.h index a3ba35e2e9..0709c3a370 100644 --- a/src/video_core/renderer_vulkan/vk_scheduler.h +++ b/src/video_core/renderer_vulkan/vk_scheduler.h @@ -266,7 +266,6 @@ private: void AcquireNewChunk(); const Device& device; - const bool supports_transform_feedback; StateTracker& state_tracker; std::unique_ptr master_semaphore;