Browse Source

[vk] CounterStreamer

eds-true-adreno-fixes
CamilleLaVey 3 weeks ago
committed by Caio Oliveira
parent
commit
ef0061f72b
No known key found for this signature in database GPG Key ID: AAAE6C7FD4186B0C
  1. 6
      src/video_core/query_cache/query_cache.h
  2. 5
      src/video_core/query_cache/query_cache_base.h
  3. 7
      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();
}
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>
void QueryCacheBase<Traits>::CounterReset(QueryType counter_type) {
size_t index = static_cast<size_t>(counter_type);

5
src/video_core/query_cache/query_cache_base.h

@ -1,3 +1,6 @@
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
@ -92,6 +95,8 @@ public:
void CounterReset(QueryType counter_type);
[[nodiscard]] bool HasStreamer(QueryType counter_type) const;
void CounterClose(QueryType counter_type);
void CounterReport(GPUVAddr addr, QueryType counter_type, QueryPropertiesFlags flags,

7
src/video_core/renderer_vulkan/vk_scheduler.cpp

@ -40,8 +40,7 @@ void Scheduler::CommandChunk::ExecuteAll(vk::CommandBuffer cmdbuf,
}
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)},
command_pool{std::make_unique<CommandPool>(*master_semaphore, device)} {
AcquireNewChunk();
@ -296,11 +295,13 @@ void Scheduler::EndRenderPass()
return;
}
if (query_cache) {
query_cache->CounterEnable(VideoCommon::QueryType::ZPassPixelCount64, false);
if (supports_transform_feedback) {
if (query_cache->HasStreamer(VideoCommon::QueryType::StreamingByteCount)) {
query_cache->CounterEnable(VideoCommon::QueryType::StreamingByteCount, false);
}
query_cache->NotifySegment(false);
}
Record([num_images = num_renderpass_images,
images = renderpass_images,

1
src/video_core/renderer_vulkan/vk_scheduler.h

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

Loading…
Cancel
Save