From 700abd68e3214d7586a1ea89b33dce9c9934bacf Mon Sep 17 00:00:00 2001 From: Jordan Woyak Date: Sat, 25 Oct 2025 16:47:09 -0500 Subject: [PATCH] VideoCommon/AsyncRequests: Remove now unnecessary `SetEnable` function. Requests are now always enabled. Call `SetPassthrough` on initialization to not be racy. --- Source/Core/Core/Core.cpp | 2 ++ Source/Core/VideoCommon/AsyncRequests.cpp | 17 ----------------- Source/Core/VideoCommon/AsyncRequests.h | 2 -- Source/Core/VideoCommon/Fifo.cpp | 6 ------ 4 files changed, 2 insertions(+), 25 deletions(-) diff --git a/Source/Core/Core/Core.cpp b/Source/Core/Core/Core.cpp index 781656529c5..991f2f09dfe 100644 --- a/Source/Core/Core/Core.cpp +++ b/Source/Core/Core/Core.cpp @@ -457,6 +457,8 @@ static void FifoPlayerThread(Core::System& system, const std::optionalSetPassthrough(!system.IsDualCoreMode()); + // Must happen on the proper thread for some video backends, e.g. OpenGL. return g_video_backend->Initialize(wsi); }; diff --git a/Source/Core/VideoCommon/AsyncRequests.cpp b/Source/Core/VideoCommon/AsyncRequests.cpp index 0469d3ebb98..6671f93293a 100644 --- a/Source/Core/VideoCommon/AsyncRequests.cpp +++ b/Source/Core/VideoCommon/AsyncRequests.cpp @@ -42,9 +42,6 @@ void AsyncRequests::QueueEvent(Event&& event) { m_empty.Clear(); - if (!m_enable) - return; - m_queue.push(std::move(event)); auto& system = Core::System::GetInstance(); @@ -57,20 +54,6 @@ void AsyncRequests::WaitForEmptyQueue() m_cond.wait(lock, [this] { return m_queue.empty(); }); } -void AsyncRequests::SetEnable(bool enable) -{ - std::unique_lock lock(m_mutex); - m_enable = enable; - - if (!enable) - { - // flush the queue on disabling - while (!m_queue.empty()) - m_queue.pop(); - m_cond.notify_one(); - } -} - void AsyncRequests::SetPassthrough(bool enable) { std::unique_lock lock(m_mutex); diff --git a/Source/Core/VideoCommon/AsyncRequests.h b/Source/Core/VideoCommon/AsyncRequests.h index 1c72b55b859..7b8cdd036b1 100644 --- a/Source/Core/VideoCommon/AsyncRequests.h +++ b/Source/Core/VideoCommon/AsyncRequests.h @@ -26,7 +26,6 @@ public: PullEventsInternal(); } void WaitForEmptyQueue(); - void SetEnable(bool enable); void SetPassthrough(bool enable); template @@ -74,6 +73,5 @@ private: std::mutex m_mutex; std::condition_variable m_cond; - bool m_enable = false; bool m_passthrough = true; }; diff --git a/Source/Core/VideoCommon/Fifo.cpp b/Source/Core/VideoCommon/Fifo.cpp index 513b6554087..0e7bb4c3417 100644 --- a/Source/Core/VideoCommon/Fifo.cpp +++ b/Source/Core/VideoCommon/Fifo.cpp @@ -287,9 +287,6 @@ void FifoManager::ResetVideoBuffer() // Purpose: Keep the Core HW updated about the CPU-GPU distance void FifoManager::RunGpuLoop() { - AsyncRequests::GetInstance()->SetEnable(true); - AsyncRequests::GetInstance()->SetPassthrough(false); - m_gpu_mainloop.Run( [this] { // Run events from the CPU thread. @@ -391,9 +388,6 @@ void FifoManager::RunGpuLoop() } }, 100); - - AsyncRequests::GetInstance()->SetEnable(false); - AsyncRequests::GetInstance()->SetPassthrough(true); } void FifoManager::FlushGpu()