From a51503660435f1279ce0fa449f9cf76e74b45d74 Mon Sep 17 00:00:00 2001
From: ReinUsesLisp <reinuseslisp@airmail.cc>
Date: Fri, 7 May 2021 00:29:08 -0300
Subject: [PATCH] vk_master_semaphore: Use fetch_add to increase master
 semaphore tick

---
 src/video_core/renderer_vulkan/vk_master_semaphore.h | 6 +++---
 src/video_core/renderer_vulkan/vk_scheduler.cpp      | 4 +---
 2 files changed, 4 insertions(+), 6 deletions(-)

diff --git a/src/video_core/renderer_vulkan/vk_master_semaphore.h b/src/video_core/renderer_vulkan/vk_master_semaphore.h
index ee3cd35d0..4f8688118 100644
--- a/src/video_core/renderer_vulkan/vk_master_semaphore.h
+++ b/src/video_core/renderer_vulkan/vk_master_semaphore.h
@@ -39,9 +39,9 @@ public:
         return KnownGpuTick() >= tick;
     }
 
-    /// Advance to the logical tick.
-    void NextTick() noexcept {
-        ++current_tick;
+    /// Advance to the logical tick and return the old one
+    [[nodiscard]] u64 NextTick() noexcept {
+        return current_tick.fetch_add(1, std::memory_order::relaxed);
     }
 
     /// Refresh the known GPU tick
diff --git a/src/video_core/renderer_vulkan/vk_scheduler.cpp b/src/video_core/renderer_vulkan/vk_scheduler.cpp
index 81cb330d9..fcb6a5911 100644
--- a/src/video_core/renderer_vulkan/vk_scheduler.cpp
+++ b/src/video_core/renderer_vulkan/vk_scheduler.cpp
@@ -168,9 +168,7 @@ void VKScheduler::SubmitExecution(VkSemaphore semaphore) {
     EndPendingOperations();
     InvalidateState();
 
-    const u64 signal_value = master_semaphore->CurrentTick();
-    master_semaphore->NextTick();
-
+    const u64 signal_value = master_semaphore->NextTick();
     Record([semaphore, signal_value, this](vk::CommandBuffer cmdbuf) {
         cmdbuf.End();