|
|
|
@ -22,10 +22,10 @@ namespace Vulkan { |
|
|
|
class CachedQuery; |
|
|
|
class Device; |
|
|
|
class HostCounter; |
|
|
|
class VKQueryCache; |
|
|
|
class QueryCache; |
|
|
|
class Scheduler; |
|
|
|
|
|
|
|
using CounterStream = VideoCommon::CounterStreamBase<VKQueryCache, HostCounter>; |
|
|
|
using CounterStream = VideoCommon::CounterStreamBase<QueryCache, HostCounter>; |
|
|
|
|
|
|
|
class QueryPool final : public ResourcePool { |
|
|
|
public: |
|
|
|
@ -49,13 +49,13 @@ private: |
|
|
|
std::vector<bool> usage; |
|
|
|
}; |
|
|
|
|
|
|
|
class VKQueryCache final |
|
|
|
: public VideoCommon::QueryCacheBase<VKQueryCache, CachedQuery, CounterStream, HostCounter> { |
|
|
|
class QueryCache final |
|
|
|
: public VideoCommon::QueryCacheBase<QueryCache, CachedQuery, CounterStream, HostCounter> { |
|
|
|
public: |
|
|
|
explicit VKQueryCache(VideoCore::RasterizerInterface& rasterizer_, |
|
|
|
Tegra::Engines::Maxwell3D& maxwell3d_, Tegra::MemoryManager& gpu_memory_, |
|
|
|
const Device& device_, Scheduler& scheduler_); |
|
|
|
~VKQueryCache(); |
|
|
|
explicit QueryCache(VideoCore::RasterizerInterface& rasterizer_, |
|
|
|
Tegra::Engines::Maxwell3D& maxwell3d_, Tegra::MemoryManager& gpu_memory_, |
|
|
|
const Device& device_, Scheduler& scheduler_); |
|
|
|
~QueryCache(); |
|
|
|
|
|
|
|
std::pair<VkQueryPool, u32> AllocateQuery(VideoCore::QueryType type); |
|
|
|
|
|
|
|
@ -75,9 +75,9 @@ private: |
|
|
|
std::array<QueryPool, VideoCore::NumQueryTypes> query_pools; |
|
|
|
}; |
|
|
|
|
|
|
|
class HostCounter final : public VideoCommon::HostCounterBase<VKQueryCache, HostCounter> { |
|
|
|
class HostCounter final : public VideoCommon::HostCounterBase<QueryCache, HostCounter> { |
|
|
|
public: |
|
|
|
explicit HostCounter(VKQueryCache& cache_, std::shared_ptr<HostCounter> dependency_, |
|
|
|
explicit HostCounter(QueryCache& cache_, std::shared_ptr<HostCounter> dependency_, |
|
|
|
VideoCore::QueryType type_); |
|
|
|
~HostCounter(); |
|
|
|
|
|
|
|
@ -86,7 +86,7 @@ public: |
|
|
|
private: |
|
|
|
u64 BlockingQuery() const override; |
|
|
|
|
|
|
|
VKQueryCache& cache; |
|
|
|
QueryCache& cache; |
|
|
|
const VideoCore::QueryType type; |
|
|
|
const std::pair<VkQueryPool, u32> query; |
|
|
|
const u64 tick; |
|
|
|
@ -94,7 +94,7 @@ private: |
|
|
|
|
|
|
|
class CachedQuery : public VideoCommon::CachedQueryBase<HostCounter> { |
|
|
|
public: |
|
|
|
explicit CachedQuery(VKQueryCache&, VideoCore::QueryType, VAddr cpu_addr_, u8* host_ptr_) |
|
|
|
explicit CachedQuery(QueryCache&, VideoCore::QueryType, VAddr cpu_addr_, u8* host_ptr_) |
|
|
|
: CachedQueryBase{cpu_addr_, host_ptr_} {} |
|
|
|
}; |
|
|
|
|
|
|
|
|