summaryrefslogtreecommitdiffstats
path: root/src/video_core/gpu_thread.h
diff options
context:
space:
mode:
authorameerj <52414509+ameerj@users.noreply.github.com>2021-09-16 02:32:54 +0200
committerameerj <52414509+ameerj@users.noreply.github.com>2021-09-16 02:49:07 +0200
commit877cd60b00a3f827062fdaff93183b52174ec134 (patch)
treeddcd7153dade611b9200c1867cfa643719696e25 /src/video_core/gpu_thread.h
parentthreadsafe_queue: Add std::stop_token overload to PopWait (diff)
downloadyuzu-877cd60b00a3f827062fdaff93183b52174ec134.tar
yuzu-877cd60b00a3f827062fdaff93183b52174ec134.tar.gz
yuzu-877cd60b00a3f827062fdaff93183b52174ec134.tar.bz2
yuzu-877cd60b00a3f827062fdaff93183b52174ec134.tar.lz
yuzu-877cd60b00a3f827062fdaff93183b52174ec134.tar.xz
yuzu-877cd60b00a3f827062fdaff93183b52174ec134.tar.zst
yuzu-877cd60b00a3f827062fdaff93183b52174ec134.zip
Diffstat (limited to '')
-rw-r--r--src/video_core/gpu_thread.h13
1 files changed, 4 insertions, 9 deletions
diff --git a/src/video_core/gpu_thread.h b/src/video_core/gpu_thread.h
index 11a648f38..91bada925 100644
--- a/src/video_core/gpu_thread.h
+++ b/src/video_core/gpu_thread.h
@@ -33,9 +33,6 @@ class RendererBase;
namespace VideoCommon::GPUThread {
-/// Command to signal to the GPU thread that processing has ended
-struct EndProcessingCommand final {};
-
/// Command to signal to the GPU thread that a command list is ready for processing
struct SubmitListCommand final {
explicit SubmitListCommand(Tegra::CommandList&& entries_) : entries{std::move(entries_)} {}
@@ -83,7 +80,7 @@ struct OnCommandListEndCommand final {};
struct GPUTickCommand final {};
using CommandData =
- std::variant<EndProcessingCommand, SubmitListCommand, SwapBuffersCommand, FlushRegionCommand,
+ std::variant<std::monostate, SubmitListCommand, SwapBuffersCommand, FlushRegionCommand,
InvalidateRegionCommand, FlushAndInvalidateRegionCommand, OnCommandListEndCommand,
GPUTickCommand>;
@@ -100,14 +97,12 @@ struct CommandDataContainer {
/// Struct used to synchronize the GPU thread
struct SynchState final {
- std::atomic_bool is_running{true};
-
- using CommandQueue = Common::SPSCQueue<CommandDataContainer>;
+ using CommandQueue = Common::SPSCQueue<CommandDataContainer, true>;
std::mutex write_lock;
CommandQueue queue;
u64 last_fence{};
std::atomic<u64> signaled_fence{};
- std::condition_variable cv;
+ std::condition_variable_any cv;
};
/// Class used to manage the GPU thread
@@ -149,7 +144,7 @@ private:
VideoCore::RasterizerInterface* rasterizer = nullptr;
SynchState state;
- std::thread thread;
+ std::jthread thread;
};
} // namespace VideoCommon::GPUThread