From 42d4c5dab74c7d62c6ca99cc8d3e96bb6a163284 Mon Sep 17 00:00:00 2001 From: CamilleLaVey Date: Thu, 25 Jun 2026 22:48:26 -0400 Subject: [PATCH] [query_cache] Reduction of synchronization within queries --- src/video_core/query_cache/query_cache.h | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/video_core/query_cache/query_cache.h b/src/video_core/query_cache/query_cache.h index 6bed91a53e..ae68e045eb 100644 --- a/src/video_core/query_cache/query_cache.h +++ b/src/video_core/query_cache/query_cache.h @@ -287,6 +287,7 @@ void QueryCacheBase::CounterReport(GPUVAddr addr, QueryType counter_type u32 value = static_cast(query_base->value); std::memcpy(pointer, &value, sizeof(value)); } + query_base->flags |= QueryFlagBits::IsGuestSynced; if (!is_synced) [[likely]] { impl->pending_unregister.push_back(query_location); } @@ -569,10 +570,12 @@ bool QueryCacheBase::SemiFlushQueryDirty(QueryCacheBase::QueryLo auto* ptr = impl->device_memory.template GetPointer(query_base->guest_address); if (True(query_base->flags & QueryFlagBits::HasTimestamp)) { std::memcpy(ptr, &query_base->value, sizeof(query_base->value)); + query_base->flags |= QueryFlagBits::IsGuestSynced; return false; } u32 value_l = static_cast(query_base->value); std::memcpy(ptr, &value_l, sizeof(value_l)); + query_base->flags |= QueryFlagBits::IsGuestSynced; return false; } return True(query_base->flags & QueryFlagBits::IsHostManaged) &&