diff options
| author | 2021-04-07 13:57:49 +0200 | |
|---|---|---|
| committer | 2021-04-07 22:38:52 +0200 | |
| commit | e6fb49fa4bb2864702abcefc14f6bb62eaba7a7e (patch) | |
| tree | 6cad1f7c35b6f9c539fbb9ad0fa2a1359a543a97 /src/video_core/gpu_thread.h | |
| parent | video_core/gpu_thread: Implement a ShutDown method. (diff) | |
| download | yuzu-e6fb49fa4bb2864702abcefc14f6bb62eaba7a7e.tar.gz yuzu-e6fb49fa4bb2864702abcefc14f6bb62eaba7a7e.tar.xz yuzu-e6fb49fa4bb2864702abcefc14f6bb62eaba7a7e.zip | |
video_core/gpu_thread: Keep the write lock for allocating the fence.
Else the fence might get submited out-of-order into the queue, which makes testing them pointless.
Overhead should be tiny as the mutex is just moved from the queue to the writing code.
Diffstat (limited to 'src/video_core/gpu_thread.h')
| -rw-r--r-- | src/video_core/gpu_thread.h | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/src/video_core/gpu_thread.h b/src/video_core/gpu_thread.h index d384164de..cb901c22a 100644 --- a/src/video_core/gpu_thread.h +++ b/src/video_core/gpu_thread.h | |||
| @@ -101,7 +101,8 @@ struct CommandDataContainer { | |||
| 101 | struct SynchState final { | 101 | struct SynchState final { |
| 102 | std::atomic_bool is_running{true}; | 102 | std::atomic_bool is_running{true}; |
| 103 | 103 | ||
| 104 | using CommandQueue = Common::MPSCQueue<CommandDataContainer>; | 104 | using CommandQueue = Common::SPSCQueue<CommandDataContainer>; |
| 105 | std::mutex write_lock; | ||
| 105 | CommandQueue queue; | 106 | CommandQueue queue; |
| 106 | u64 last_fence{}; | 107 | u64 last_fence{}; |
| 107 | std::atomic<u64> signaled_fence{}; | 108 | std::atomic<u64> signaled_fence{}; |