Răsfoiți Sursa

vk_query_cache: Hack counter destructor to avoid reserving queries

This is a hack to destroy all HostCounter instances before the base
class destructor is called. The query cache should be redesigned to have
a proper ownership model instead of using shared pointers.

For now, destroy the host counter hierarchy from the derived class
destructor.
ReinUsesLisp 5 ani în urmă
părinte
comite
4f5bbe56ba
1 a modificat fișierele cu 10 adăugiri și 1 ștergeri
  1. 10 1
      src/video_core/renderer_vulkan/vk_query_cache.cpp

+ 10 - 1
src/video_core/renderer_vulkan/vk_query_cache.cpp

@@ -76,7 +76,16 @@ VKQueryCache::VKQueryCache(VideoCore::RasterizerInterface& rasterizer,
                                                           QueryType::SamplesPassed},
                                             } {}
 
-VKQueryCache::~VKQueryCache() = default;
+VKQueryCache::~VKQueryCache() {
+    // TODO(Rodrigo): This is a hack to destroy all HostCounter instances before the base class
+    // destructor is called. The query cache should be redesigned to have a proper ownership model
+    // instead of using shared pointers.
+    for (size_t query_type = 0; query_type < VideoCore::NumQueryTypes; ++query_type) {
+        auto& stream = Stream(static_cast<QueryType>(query_type));
+        stream.Update(false);
+        stream.Reset();
+    }
+}
 
 std::pair<VkQueryPool, u32> VKQueryCache::AllocateQuery(QueryType type) {
     return query_pools[static_cast<std::size_t>(type)].Commit();