diff options
author | Fernando Sahmkow <fsahmkow27@gmail.com> | 2019-06-10 14:36:22 +0200 |
---|---|---|
committer | FernandoS27 <fsahmkow27@gmail.com> | 2019-07-05 21:49:20 +0200 |
commit | f2e026a1d8fb2384c1ece24e6dd32062b4f390a2 (patch) | |
tree | 354bc916012ca989a00da14ee4ab7770b07710a8 /src/video_core/gpu_thread.h | |
parent | nv_host_ctrl: Make Sync GPU variant always return synced result. (diff) | |
download | yuzu-f2e026a1d8fb2384c1ece24e6dd32062b4f390a2.tar yuzu-f2e026a1d8fb2384c1ece24e6dd32062b4f390a2.tar.gz yuzu-f2e026a1d8fb2384c1ece24e6dd32062b4f390a2.tar.bz2 yuzu-f2e026a1d8fb2384c1ece24e6dd32062b4f390a2.tar.lz yuzu-f2e026a1d8fb2384c1ece24e6dd32062b4f390a2.tar.xz yuzu-f2e026a1d8fb2384c1ece24e6dd32062b4f390a2.tar.zst yuzu-f2e026a1d8fb2384c1ece24e6dd32062b4f390a2.zip |
Diffstat (limited to 'src/video_core/gpu_thread.h')
-rw-r--r-- | src/video_core/gpu_thread.h | 32 |
1 files changed, 0 insertions, 32 deletions
diff --git a/src/video_core/gpu_thread.h b/src/video_core/gpu_thread.h index 05a168a72..1d9d0c39e 100644 --- a/src/video_core/gpu_thread.h +++ b/src/video_core/gpu_thread.h @@ -88,41 +88,9 @@ struct CommandDataContainer { /// Struct used to synchronize the GPU thread struct SynchState final { std::atomic_bool is_running{true}; - std::atomic_int queued_frame_count{}; - std::mutex synchronization_mutex; - std::mutex commands_mutex; - std::condition_variable commands_condition; - std::condition_variable synchronization_condition; - - /// Returns true if the gap in GPU commands is small enough that we can consider the CPU and GPU - /// synchronized. This is entirely empirical. - bool IsSynchronized() const { - constexpr std::size_t max_queue_gap{5}; - return queue.Size() <= max_queue_gap; - } - - void TrySynchronize() { - if (IsSynchronized()) { - std::lock_guard lock{synchronization_mutex}; - synchronization_condition.notify_one(); - } - } void WaitForSynchronization(u64 fence); - void SignalCommands() { - if (queue.Empty()) { - return; - } - - commands_condition.notify_one(); - } - - void WaitForCommands() { - std::unique_lock lock{commands_mutex}; - commands_condition.wait(lock, [this] { return !queue.Empty(); }); - } - using CommandQueue = Common::SPSCQueue<CommandDataContainer>; CommandQueue queue; u64 last_fence{}; |