diff options
author | Morph <[email protected]> | 2022-07-06 01:33:17 -0400 |
---|---|---|
committer | Morph <[email protected]> | 2022-07-06 01:33:17 -0400 |
commit | fa09f7aa6c54f5815373ec16d09b6fbf25436f5f (patch) | |
tree | 45523f13b10407e1a22a9917a5102995c602dde7 | |
parent | 770611fdf39f274ee9ccde9875e86cfeb79a3f6f (diff) | |
download | yuzu-mainline-fa09f7aa6c54f5815373ec16d09b6fbf25436f5f.tar.gz yuzu-mainline-fa09f7aa6c54f5815373ec16d09b6fbf25436f5f.zip |
gpu_thread: Use the previous MPSCQueue implementation
The bounded MPSCQueue implementation causes crashes in Fire Emblem Three Houses, use the previous implementation for now.
-rw-r--r-- | src/video_core/gpu_thread.cpp | 3 | ||||
-rw-r--r-- | 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{}; |