Преглед на файлове

vk_master_semaphore: Use fetch_add to increase master semaphore tick

ReinUsesLisp преди 5 години
родител
ревизия
a515036604
променени са 2 файла, в които са добавени 4 реда и са изтрити 6 реда
  1. 3 3
      src/video_core/renderer_vulkan/vk_master_semaphore.h
  2. 1 3
      src/video_core/renderer_vulkan/vk_scheduler.cpp

+ 3 - 3
src/video_core/renderer_vulkan/vk_master_semaphore.h

@@ -39,9 +39,9 @@ public:
         return KnownGpuTick() >= tick;
         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
     /// Refresh the known GPU tick

+ 1 - 3
src/video_core/renderer_vulkan/vk_scheduler.cpp

@@ -168,9 +168,7 @@ void VKScheduler::SubmitExecution(VkSemaphore semaphore) {
     EndPendingOperations();
     EndPendingOperations();
     InvalidateState();
     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) {
     Record([semaphore, signal_value, this](vk::CommandBuffer cmdbuf) {
         cmdbuf.End();
         cmdbuf.End();