diff options
author | ReinUsesLisp <reinuseslisp@airmail.cc> | 2021-04-27 03:11:31 +0200 |
---|---|---|
committer | ameerj <52414509+ameerj@users.noreply.github.com> | 2021-07-23 03:51:29 +0200 |
commit | 53acdda772a8b7650c46ba9d998119b8c8e30844 (patch) | |
tree | 5f98a9a19093704513fffd17dc7326cdbf5e6f91 /src/video_core/renderer_vulkan/vk_scheduler.h | |
parent | vk_compute_pass: Fix -Wshadow warning (diff) | |
download | yuzu-53acdda772a8b7650c46ba9d998119b8c8e30844.tar yuzu-53acdda772a8b7650c46ba9d998119b8c8e30844.tar.gz yuzu-53acdda772a8b7650c46ba9d998119b8c8e30844.tar.bz2 yuzu-53acdda772a8b7650c46ba9d998119b8c8e30844.tar.lz yuzu-53acdda772a8b7650c46ba9d998119b8c8e30844.tar.xz yuzu-53acdda772a8b7650c46ba9d998119b8c8e30844.tar.zst yuzu-53acdda772a8b7650c46ba9d998119b8c8e30844.zip |
Diffstat (limited to 'src/video_core/renderer_vulkan/vk_scheduler.h')
-rw-r--r-- | src/video_core/renderer_vulkan/vk_scheduler.h | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/src/video_core/renderer_vulkan/vk_scheduler.h b/src/video_core/renderer_vulkan/vk_scheduler.h index a40bb8bcd..40215c4c5 100644 --- a/src/video_core/renderer_vulkan/vk_scheduler.h +++ b/src/video_core/renderer_vulkan/vk_scheduler.h @@ -86,6 +86,10 @@ public: /// Waits for the given tick to trigger on the GPU. void Wait(u64 tick) { + if (tick >= master_semaphore->CurrentTick()) { + // Make sure we are not waiting for the current tick without signalling + Flush(); + } master_semaphore->Wait(tick); } @@ -155,15 +159,24 @@ private: return true; } + void MarkSubmit() { + submit = true; + } + bool Empty() const { return command_offset == 0; } + bool HasSubmit() const { + return submit; + } + private: Command* first = nullptr; Command* last = nullptr; size_t command_offset = 0; + bool submit = false; alignas(std::max_align_t) std::array<u8, 0x8000> data{}; }; @@ -176,6 +189,8 @@ private: void WorkerThread(); + void AllocateWorkerCommandBuffer(); + void SubmitExecution(VkSemaphore semaphore); void AllocateNewContext(); |