diff options
author | bunnei <bunneidev@gmail.com> | 2023-05-03 02:54:57 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-05-03 02:54:57 +0200 |
commit | 8f43b05d6b1be260f68907c581b8e3a91cf244d8 (patch) | |
tree | be95158c22707e828cd57be90c68f9a1f683d3f1 /src/video_core/renderer_vulkan/vk_scheduler.cpp | |
parent | Merge pull request #10133 from lat9nq/clang-shadow-and-fallthrough (diff) | |
parent | vk_present_manager: Add toggle for async presentation (diff) | |
download | yuzu-8f43b05d6b1be260f68907c581b8e3a91cf244d8.tar yuzu-8f43b05d6b1be260f68907c581b8e3a91cf244d8.tar.gz yuzu-8f43b05d6b1be260f68907c581b8e3a91cf244d8.tar.bz2 yuzu-8f43b05d6b1be260f68907c581b8e3a91cf244d8.tar.lz yuzu-8f43b05d6b1be260f68907c581b8e3a91cf244d8.tar.xz yuzu-8f43b05d6b1be260f68907c581b8e3a91cf244d8.tar.zst yuzu-8f43b05d6b1be260f68907c581b8e3a91cf244d8.zip |
Diffstat (limited to 'src/video_core/renderer_vulkan/vk_scheduler.cpp')
-rw-r--r-- | src/video_core/renderer_vulkan/vk_scheduler.cpp | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/src/video_core/renderer_vulkan/vk_scheduler.cpp b/src/video_core/renderer_vulkan/vk_scheduler.cpp index 057e16967..80455ec08 100644 --- a/src/video_core/renderer_vulkan/vk_scheduler.cpp +++ b/src/video_core/renderer_vulkan/vk_scheduler.cpp @@ -46,10 +46,11 @@ Scheduler::Scheduler(const Device& device_, StateTracker& state_tracker_) Scheduler::~Scheduler() = default; -void Scheduler::Flush(VkSemaphore signal_semaphore, VkSemaphore wait_semaphore) { +u64 Scheduler::Flush(VkSemaphore signal_semaphore, VkSemaphore wait_semaphore) { // When flushing, we only send data to the worker thread; no waiting is necessary. - SubmitExecution(signal_semaphore, wait_semaphore); + const u64 signal_value = SubmitExecution(signal_semaphore, wait_semaphore); AllocateNewContext(); + return signal_value; } void Scheduler::Finish(VkSemaphore signal_semaphore, VkSemaphore wait_semaphore) { @@ -205,7 +206,7 @@ void Scheduler::AllocateWorkerCommandBuffer() { }); } -void Scheduler::SubmitExecution(VkSemaphore signal_semaphore, VkSemaphore wait_semaphore) { +u64 Scheduler::SubmitExecution(VkSemaphore signal_semaphore, VkSemaphore wait_semaphore) { EndPendingOperations(); InvalidateState(); @@ -217,6 +218,7 @@ void Scheduler::SubmitExecution(VkSemaphore signal_semaphore, VkSemaphore wait_s on_submit(); } + std::scoped_lock lock{submit_mutex}; switch (const VkResult result = master_semaphore->SubmitQueue( cmdbuf, signal_semaphore, wait_semaphore, signal_value)) { case VK_SUCCESS: @@ -231,6 +233,7 @@ void Scheduler::SubmitExecution(VkSemaphore signal_semaphore, VkSemaphore wait_s }); chunk->MarkSubmit(); DispatchWork(); + return signal_value; } void Scheduler::AllocateNewContext() { |