From fa09f7aa6c54f5815373ec16d09b6fbf25436f5f Mon Sep 17 00:00:00 2001
From: Morph <39850852+Morph1984@users.noreply.github.com>
Date: Wed, 6 Jul 2022 01:33:17 -0400
Subject: [PATCH] gpu_thread: Use the previous MPSCQueue implementation

The bounded MPSCQueue implementation causes crashes in Fire Emblem Three Houses, use the previous implementation for now.
---
 src/video_core/gpu_thread.cpp | 3 +--
 src/video_core/gpu_thread.h   | 4 ++--
 2 files changed, 3 insertions(+), 4 deletions(-)

diff --git a/src/video_core/gpu_thread.cpp b/src/video_core/gpu_thread.cpp
index b0ce9f000..d43f7175a 100644
--- a/src/video_core/gpu_thread.cpp
+++ b/src/video_core/gpu_thread.cpp
@@ -31,8 +31,7 @@ static void RunThread(std::stop_token stop_token, Core::System& system,
     VideoCore::RasterizerInterface* const rasterizer = renderer.ReadRasterizer();
 
     while (!stop_token.stop_requested()) {
-        CommandDataContainer next;
-        state.queue.Pop(next, stop_token);
+        CommandDataContainer next = state.queue.PopWait(stop_token);
         if (stop_token.stop_requested()) {
             break;
         }
diff --git a/src/video_core/gpu_thread.h b/src/video_core/gpu_thread.h
index be0ac2214..2f8210cb9 100644
--- a/src/video_core/gpu_thread.h
+++ b/src/video_core/gpu_thread.h
@@ -10,7 +10,7 @@
 #include <thread>
 #include <variant>
 
-#include "common/bounded_threadsafe_queue.h"
+#include "common/threadsafe_queue.h"
 #include "video_core/framebuffer_config.h"
 
 namespace Tegra {
@@ -96,7 +96,7 @@ struct CommandDataContainer {
 
 /// Struct used to synchronize the GPU thread
 struct SynchState final {
-    using CommandQueue = Common::MPSCQueue<CommandDataContainer>;
+    using CommandQueue = Common::MPSCQueue<CommandDataContainer, true>;
     std::mutex write_lock;
     CommandQueue queue;
     u64 last_fence{};