Browse Source

[vk] CounterStreamer

lizzie/evil-meow-meow
CamilleLaVey 6 months ago
committed by lizzie
parent
commit
34833e9ad0
  1. 6
      src/video_core/query_cache/query_cache.h
  2. 2
      src/video_core/query_cache/query_cache_base.h
  3. 4
      src/video_core/renderer_vulkan/vk_scheduler.cpp
  4. 1
      src/video_core/renderer_vulkan/vk_scheduler.h

6
src/video_core/query_cache/query_cache.h

@ -211,6 +211,12 @@ void QueryCacheBase<Traits>::CounterClose(QueryType counter_type) {
streamer->CloseCounter(); streamer->CloseCounter();
} }
template <typename Traits>
bool QueryCacheBase<Traits>::HasStreamer(QueryType counter_type) const {
const size_t index = static_cast<size_t>(counter_type);
return impl->streamers[index] != nullptr;
}
template <typename Traits> template <typename Traits>
void QueryCacheBase<Traits>::CounterReset(QueryType counter_type) { void QueryCacheBase<Traits>::CounterReset(QueryType counter_type) {
size_t index = static_cast<size_t>(counter_type); size_t index = static_cast<size_t>(counter_type);

2
src/video_core/query_cache/query_cache_base.h

@ -95,6 +95,8 @@ public:
void CounterReset(QueryType counter_type); void CounterReset(QueryType counter_type);
[[nodiscard]] bool HasStreamer(QueryType counter_type) const;
void CounterClose(QueryType counter_type); void CounterClose(QueryType counter_type);
void CounterReport(GPUVAddr addr, QueryType counter_type, QueryPropertiesFlags flags, void CounterReport(GPUVAddr addr, QueryType counter_type, QueryPropertiesFlags flags,

4
src/video_core/renderer_vulkan/vk_scheduler.cpp

@ -44,8 +44,7 @@ void Scheduler::CommandChunk::ExecuteAll(vk::CommandBuffer cmdbuf,
} }
Scheduler::Scheduler(const Device& device_, StateTracker& state_tracker_) Scheduler::Scheduler(const Device& device_, StateTracker& state_tracker_)
: device{device_}, supports_transform_feedback{device_.IsExtTransformFeedbackSupported()},
state_tracker{state_tracker_},
: device{device_}, state_tracker{state_tracker_},
master_semaphore{std::make_unique<MasterSemaphore>(device)}, master_semaphore{std::make_unique<MasterSemaphore>(device)},
command_pool{std::make_unique<CommandPool>(*master_semaphore, device)} { command_pool{std::make_unique<CommandPool>(*master_semaphore, device)} {
@ -337,7 +336,6 @@ void Scheduler::EndRenderPass()
if (supports_transform_feedback) { if (supports_transform_feedback) {
query_cache->CounterEnable(VideoCommon::QueryType::StreamingByteCount, false); query_cache->CounterEnable(VideoCommon::QueryType::StreamingByteCount, false);
} }
query_cache->NotifySegment(false);
Record([num_images = num_renderpass_images, Record([num_images = num_renderpass_images,
images = renderpass_images, images = renderpass_images,

1
src/video_core/renderer_vulkan/vk_scheduler.h

@ -266,7 +266,6 @@ private:
void AcquireNewChunk(); void AcquireNewChunk();
const Device& device; const Device& device;
const bool supports_transform_feedback;
StateTracker& state_tracker; StateTracker& state_tracker;
std::unique_ptr<MasterSemaphore> master_semaphore; std::unique_ptr<MasterSemaphore> master_semaphore;

Loading…
Cancel
Save