From bcd348f2388cf944f2ac49364a8d13b47cc21456 Mon Sep 17 00:00:00 2001 From: ReinUsesLisp Date: Tue, 11 Feb 2020 18:59:44 -0300 Subject: vk_query_cache: Implement generic query cache on Vulkan --- src/video_core/renderer_opengl/gl_query_cache.cpp | 11 ++++++----- src/video_core/renderer_opengl/gl_query_cache.h | 11 +++-------- 2 files changed, 9 insertions(+), 13 deletions(-) (limited to 'src/video_core/renderer_opengl') diff --git a/src/video_core/renderer_opengl/gl_query_cache.cpp b/src/video_core/renderer_opengl/gl_query_cache.cpp index 7d5a044c7..f12e9f55f 100644 --- a/src/video_core/renderer_opengl/gl_query_cache.cpp +++ b/src/video_core/renderer_opengl/gl_query_cache.cpp @@ -31,15 +31,16 @@ constexpr GLenum GetTarget(VideoCore::QueryType type) { } // Anonymous namespace QueryCache::QueryCache(Core::System& system, RasterizerOpenGL& gl_rasterizer) - : VideoCommon::QueryCacheBase{system, static_cast( - gl_rasterizer)}, + : VideoCommon::QueryCacheBase< + QueryCache, CachedQuery, CounterStream, HostCounter, + std::vector>{system, + static_cast(gl_rasterizer)}, gl_rasterizer{gl_rasterizer} {} QueryCache::~QueryCache() = default; OGLQuery QueryCache::AllocateQuery(VideoCore::QueryType type) { - auto& reserve = queries_reserve[static_cast(type)]; + auto& reserve = query_pools[static_cast(type)]; OGLQuery query; if (reserve.empty()) { query.Create(GetTarget(type)); @@ -52,7 +53,7 @@ OGLQuery QueryCache::AllocateQuery(VideoCore::QueryType type) { } void QueryCache::Reserve(VideoCore::QueryType type, OGLQuery&& query) { - queries_reserve[static_cast(type)].push_back(std::move(query)); + query_pools[static_cast(type)].push_back(std::move(query)); } bool QueryCache::AnyCommandQueued() const noexcept { diff --git a/src/video_core/renderer_opengl/gl_query_cache.h b/src/video_core/renderer_opengl/gl_query_cache.h index 20d337f15..99d187837 100644 --- a/src/video_core/renderer_opengl/gl_query_cache.h +++ b/src/video_core/renderer_opengl/gl_query_cache.h @@ -6,12 +6,8 @@ #include #include -#include -#include #include -#include - #include "common/common_types.h" #include "video_core/query_cache.h" #include "video_core/rasterizer_interface.h" @@ -30,8 +26,8 @@ class RasterizerOpenGL; using CounterStream = VideoCommon::CounterStreamBase; -class QueryCache final - : public VideoCommon::QueryCacheBase { +class QueryCache final : public VideoCommon::QueryCacheBase> { public: explicit QueryCache(Core::System& system, RasterizerOpenGL& rasterizer); ~QueryCache(); @@ -44,7 +40,6 @@ public: private: RasterizerOpenGL& gl_rasterizer; - std::array, VideoCore::NumQueryTypes> queries_reserve; }; class HostCounter final : public VideoCommon::HostCounterBase { @@ -59,7 +54,7 @@ private: u64 BlockingQuery() const override; QueryCache& cache; - VideoCore::QueryType type; + const VideoCore::QueryType type; OGLQuery query; }; -- cgit v1.2.3