summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGravatar Morph2022-07-06 01:33:17 -0400
committerGravatar Morph2022-07-06 01:33:17 -0400
commitfa09f7aa6c54f5815373ec16d09b6fbf25436f5f (patch)
tree45523f13b10407e1a22a9917a5102995c602dde7 /src
parentMerge pull request #8486 from liushuyu/github-actions-verify (diff)
downloadyuzu-fa09f7aa6c54f5815373ec16d09b6fbf25436f5f.tar.gz
yuzu-fa09f7aa6c54f5815373ec16d09b6fbf25436f5f.tar.xz
yuzu-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.
Diffstat (limited to 'src')
-rw-r--r--src/video_core/gpu_thread.cpp3
-rw-r--r--src/video_core/gpu_thread.h4
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,
31 VideoCore::RasterizerInterface* const rasterizer = renderer.ReadRasterizer(); 31 VideoCore::RasterizerInterface* const rasterizer = renderer.ReadRasterizer();
32 32
33 while (!stop_token.stop_requested()) { 33 while (!stop_token.stop_requested()) {
34 CommandDataContainer next; 34 CommandDataContainer next = state.queue.PopWait(stop_token);
35 state.queue.Pop(next, stop_token);
36 if (stop_token.stop_requested()) { 35 if (stop_token.stop_requested()) {
37 break; 36 break;
38 } 37 }
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 @@
10#include <thread> 10#include <thread>
11#include <variant> 11#include <variant>
12 12
13#include "common/bounded_threadsafe_queue.h" 13#include "common/threadsafe_queue.h"
14#include "video_core/framebuffer_config.h" 14#include "video_core/framebuffer_config.h"
15 15
16namespace Tegra { 16namespace Tegra {
@@ -96,7 +96,7 @@ struct CommandDataContainer {
96 96
97/// Struct used to synchronize the GPU thread 97/// Struct used to synchronize the GPU thread
98struct SynchState final { 98struct SynchState final {
99 using CommandQueue = Common::MPSCQueue<CommandDataContainer>; 99 using CommandQueue = Common::MPSCQueue<CommandDataContainer, true>;
100 std::mutex write_lock; 100 std::mutex write_lock;
101 CommandQueue queue; 101 CommandQueue queue;
102 u64 last_fence{}; 102 u64 last_fence{};