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.
This commit is contained in:
parent
58b0ae84b5
commit
4f5bbe56ba
|
@ -76,7 +76,16 @@ VKQueryCache::VKQueryCache(VideoCore::RasterizerInterface& rasterizer,
|
||||||
QueryType::SamplesPassed},
|
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) {
|
std::pair<VkQueryPool, u32> VKQueryCache::AllocateQuery(QueryType type) {
|
||||||
return query_pools[static_cast<std::size_t>(type)].Commit();
|
return query_pools[static_cast<std::size_t>(type)].Commit();
|
||||||
|
|
Loading…
Reference in New Issue