From d1ac33b18bf2d7fc39d485e005066ed646dfbd1f Mon Sep 17 00:00:00 2001 From: GPUCode Date: Sat, 25 Feb 2023 17:13:03 +0200 Subject: [PATCH] Revert "Revert "vk_scheduler: wait for command processing to complete"" * No longer needed after async present and causes sync issues during swapchain recreation This reverts commit 0381081c5df79f261a1056b095b3044e7b518e9c. --- src/video_core/renderer_vulkan/vk_rasterizer.cpp | 7 ------- src/video_core/renderer_vulkan/vk_scheduler.cpp | 6 ++++-- 2 files changed, 4 insertions(+), 9 deletions(-) diff --git a/src/video_core/renderer_vulkan/vk_rasterizer.cpp b/src/video_core/renderer_vulkan/vk_rasterizer.cpp index cd1b3a731..262fd5afc 100644 --- a/src/video_core/renderer_vulkan/vk_rasterizer.cpp +++ b/src/video_core/renderer_vulkan/vk_rasterizer.cpp @@ -562,13 +562,6 @@ bool RasterizerVulkan::Draw(bool accelerate, bool is_indexed) { // Mark framebuffer surfaces as dirty res_cache.InvalidateRenderTargets(framebuffer); - static int counter = 20; - counter--; - if (counter == 0) { - scheduler.DispatchWork(); - counter = 20; - } - return succeeded; } diff --git a/src/video_core/renderer_vulkan/vk_scheduler.cpp b/src/video_core/renderer_vulkan/vk_scheduler.cpp index 4e22b08df..680cfd356 100644 --- a/src/video_core/renderer_vulkan/vk_scheduler.cpp +++ b/src/video_core/renderer_vulkan/vk_scheduler.cpp @@ -83,6 +83,7 @@ void Scheduler::WorkerThread(std::stop_token stop_token) { Common::SetCurrentThreadName("VulkanWorker"); do { std::unique_ptr work; + bool has_submit{false}; { std::unique_lock lock{work_mutex}; if (work_queue.empty()) { @@ -94,9 +95,10 @@ void Scheduler::WorkerThread(std::stop_token stop_token) { } work = std::move(work_queue.front()); work_queue.pop(); + + has_submit = work->HasSubmit(); + work->ExecuteAll(current_cmdbuf); } - const bool has_submit = work->HasSubmit(); - work->ExecuteAll(current_cmdbuf); if (has_submit) { AllocateWorkerCommandBuffers(); }