diff options
| author | 2022-07-06 01:33:17 -0400 | |
|---|---|---|
| committer | 2022-07-06 01:33:17 -0400 | |
| commit | fa09f7aa6c54f5815373ec16d09b6fbf25436f5f (patch) | |
| tree | 45523f13b10407e1a22a9917a5102995c602dde7 /src | |
| parent | Merge pull request #8486 from liushuyu/github-actions-verify (diff) | |
| download | yuzu-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.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, | |||
| 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 | ||
| 16 | namespace Tegra { | 16 | namespace 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 |
| 98 | struct SynchState final { | 98 | struct 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{}; |