summaryrefslogtreecommitdiffstats
path: root/src/video_core/gpu_thread.h
diff options
context:
space:
mode:
authorFernando Sahmkow <fsahmkow27@gmail.com>2019-06-10 14:36:22 +0200
committerFernandoS27 <fsahmkow27@gmail.com>2019-07-05 21:49:20 +0200
commitf2e026a1d8fb2384c1ece24e6dd32062b4f390a2 (patch)
tree354bc916012ca989a00da14ee4ab7770b07710a8 /src/video_core/gpu_thread.h
parentnv_host_ctrl: Make Sync GPU variant always return synced result. (diff)
downloadyuzu-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.h32
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{};