CamilleLaVey
3 weeks ago
committed by
Caio Oliveira
No known key found for this signature in database
GPG Key ID: AAAE6C7FD4186B0C
4 changed files with
18 additions and
7 deletions
-
src/video_core/query_cache/query_cache.h
-
src/video_core/query_cache/query_cache_base.h
-
src/video_core/renderer_vulkan/vk_scheduler.cpp
-
src/video_core/renderer_vulkan/vk_scheduler.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); |
|
|
|
|
|
|
|
@ -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, |
|
|
|
|
|
|
|
@ -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, |
|
|
|
|
|
|
|
@ -235,7 +235,6 @@ private: |
|
|
|
void AcquireNewChunk(); |
|
|
|
|
|
|
|
const Device& device; |
|
|
|
const bool supports_transform_feedback; |
|
|
|
StateTracker& state_tracker; |
|
|
|
|
|
|
|
std::unique_ptr<MasterSemaphore> master_semaphore; |
|
|
|
|