diff options
author | Fernando Sahmkow <fsahmkow27@gmail.com> | 2023-04-23 21:55:16 +0200 |
---|---|---|
committer | Fernando Sahmkow <fsahmkow27@gmail.com> | 2023-04-23 22:04:14 +0200 |
commit | e29ced29fa54bf36a06545c53d1d523f3a31f883 (patch) | |
tree | d3c33325727bdd080d95d7f95018ae710f1dbf2f /src/video_core/renderer_vulkan/vk_query_cache.cpp | |
parent | Accuracy Normal: reduce accuracy further for perf improvements in Project Lime (diff) | |
download | yuzu-e29ced29fa54bf36a06545c53d1d523f3a31f883.tar yuzu-e29ced29fa54bf36a06545c53d1d523f3a31f883.tar.gz yuzu-e29ced29fa54bf36a06545c53d1d523f3a31f883.tar.bz2 yuzu-e29ced29fa54bf36a06545c53d1d523f3a31f883.tar.lz yuzu-e29ced29fa54bf36a06545c53d1d523f3a31f883.tar.xz yuzu-e29ced29fa54bf36a06545c53d1d523f3a31f883.tar.zst yuzu-e29ced29fa54bf36a06545c53d1d523f3a31f883.zip |
Diffstat (limited to '')
-rw-r--r-- | src/video_core/renderer_vulkan/vk_query_cache.cpp | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/src/video_core/renderer_vulkan/vk_query_cache.cpp b/src/video_core/renderer_vulkan/vk_query_cache.cpp index 0701e572b..d67490449 100644 --- a/src/video_core/renderer_vulkan/vk_query_cache.cpp +++ b/src/video_core/renderer_vulkan/vk_query_cache.cpp @@ -66,9 +66,10 @@ void QueryPool::Reserve(std::pair<VkQueryPool, u32> query) { } } -QueryCache::QueryCache(VideoCore::RasterizerInterface& rasterizer_, const Device& device_, +QueryCache::QueryCache(VideoCore::RasterizerInterface& rasterizer_, + Core::Memory::Memory& cpu_memory_, const Device& device_, Scheduler& scheduler_) - : QueryCacheBase{rasterizer_}, device{device_}, scheduler{scheduler_}, + : QueryCacheBase{rasterizer_, cpu_memory_}, device{device_}, scheduler{scheduler_}, query_pools{ QueryPool{device_, scheduler_, QueryType::SamplesPassed}, } {} @@ -100,7 +101,8 @@ HostCounter::HostCounter(QueryCache& cache_, std::shared_ptr<HostCounter> depend cache.GetScheduler().Record([logical, query = query](vk::CommandBuffer cmdbuf) { const bool use_precise = Settings::IsGPULevelHigh(); logical->ResetQueryPool(query.first, query.second, 1); - cmdbuf.BeginQuery(query.first, query.second, use_precise ? VK_QUERY_CONTROL_PRECISE_BIT : 0); + cmdbuf.BeginQuery(query.first, query.second, + use_precise ? VK_QUERY_CONTROL_PRECISE_BIT : 0); }); } @@ -113,8 +115,10 @@ void HostCounter::EndQuery() { [query = query](vk::CommandBuffer cmdbuf) { cmdbuf.EndQuery(query.first, query.second); }); } -u64 HostCounter::BlockingQuery() const { - cache.GetScheduler().Wait(tick); +u64 HostCounter::BlockingQuery(bool async) const { + if (!async) { + cache.GetScheduler().Wait(tick); + } u64 data; const VkResult query_result = cache.GetDevice().GetLogical().GetQueryResults( query.first, query.second, 1, sizeof(data), &data, sizeof(data), |