diff options
| author | 2022-06-11 00:07:18 -0700 | |
|---|---|---|
| committer | 2022-06-11 00:07:18 -0700 | |
| commit | 5282efac1b2a875ab3ea81b4ea21efdcac4e8d51 (patch) | |
| tree | ad7c5cde266ba8d9cf80305b88e46689491dab3a /src/video_core | |
| parent | Merge pull request #8393 from lat9nq/default-vulkan (diff) | |
| parent | gpu_thread: Move to bounded queue (diff) | |
| download | yuzu-5282efac1b2a875ab3ea81b4ea21efdcac4e8d51.tar.gz yuzu-5282efac1b2a875ab3ea81b4ea21efdcac4e8d51.tar.xz yuzu-5282efac1b2a875ab3ea81b4ea21efdcac4e8d51.zip | |
Merge pull request #8413 from behunin/bounded-queue
gpu_thread: Move to bounded queue
Diffstat (limited to 'src/video_core')
| -rw-r--r-- | src/video_core/gpu_thread.cpp | 3 | ||||
| -rw-r--r-- | src/video_core/gpu_thread.h | 6 |
2 files changed, 5 insertions, 4 deletions
diff --git a/src/video_core/gpu_thread.cpp b/src/video_core/gpu_thread.cpp index b79a73132..8479dc6d2 100644 --- a/src/video_core/gpu_thread.cpp +++ b/src/video_core/gpu_thread.cpp | |||
| @@ -31,7 +31,8 @@ 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 = state.queue.PopWait(stop_token); | 34 | CommandDataContainer next; |
| 35 | state.queue.Pop(next, stop_token); | ||
| 35 | if (stop_token.stop_requested()) { | 36 | if (stop_token.stop_requested()) { |
| 36 | break; | 37 | break; |
| 37 | } | 38 | } |
diff --git a/src/video_core/gpu_thread.h b/src/video_core/gpu_thread.h index 71cd35756..ad9fd5eff 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/threadsafe_queue.h" | 13 | #include "common/bounded_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,9 +96,9 @@ 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::SPSCQueue<CommandDataContainer, true>; | 99 | using CommandQueue = Common::MPSCQueue<CommandDataContainer>; |
| 100 | std::mutex write_lock; | 100 | std::mutex write_lock; |
| 101 | CommandQueue queue; | 101 | CommandQueue queue{512}; // size must be 2^n |
| 102 | u64 last_fence{}; | 102 | u64 last_fence{}; |
| 103 | std::atomic<u64> signaled_fence{}; | 103 | std::atomic<u64> signaled_fence{}; |
| 104 | std::condition_variable_any cv; | 104 | std::condition_variable_any cv; |