diff options
author | GPUCode <geoster3d@gmail.com> | 2023-05-03 06:48:18 +0200 |
---|---|---|
committer | GPUCode <geoster3d@gmail.com> | 2023-05-03 06:50:10 +0200 |
commit | f3fcc15ad5d77aa6d8cbd8dcc3f043e218224dee (patch) | |
tree | c3b3a36f0050941e51e404b531d2a3e14fc1b39e /src/video_core/renderer_vulkan/vk_present_manager.cpp | |
parent | Merge pull request #9973 from GPUCode/async-present (diff) | |
download | yuzu-f3fcc15ad5d77aa6d8cbd8dcc3f043e218224dee.tar yuzu-f3fcc15ad5d77aa6d8cbd8dcc3f043e218224dee.tar.gz yuzu-f3fcc15ad5d77aa6d8cbd8dcc3f043e218224dee.tar.bz2 yuzu-f3fcc15ad5d77aa6d8cbd8dcc3f043e218224dee.tar.lz yuzu-f3fcc15ad5d77aa6d8cbd8dcc3f043e218224dee.tar.xz yuzu-f3fcc15ad5d77aa6d8cbd8dcc3f043e218224dee.tar.zst yuzu-f3fcc15ad5d77aa6d8cbd8dcc3f043e218224dee.zip |
Diffstat (limited to '')
-rw-r--r-- | src/video_core/renderer_vulkan/vk_present_manager.cpp | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/src/video_core/renderer_vulkan/vk_present_manager.cpp b/src/video_core/renderer_vulkan/vk_present_manager.cpp index a137c66f2..c49583013 100644 --- a/src/video_core/renderer_vulkan/vk_present_manager.cpp +++ b/src/video_core/renderer_vulkan/vk_present_manager.cpp @@ -153,16 +153,19 @@ Frame* PresentManager::GetRenderFrame() { return frame; } -void PresentManager::PushFrame(Frame* frame) { +void PresentManager::Present(Frame* frame) { if (!use_present_thread) { + scheduler.WaitWorker(); CopyToSwapchain(frame); free_queue.push(frame); return; } - std::unique_lock lock{queue_mutex}; - present_queue.push(frame); - frame_cv.notify_one(); + scheduler.Record([this, frame](vk::CommandBuffer) { + std::unique_lock lock{queue_mutex}; + present_queue.push(frame); + frame_cv.notify_one(); + }); } void PresentManager::RecreateFrame(Frame* frame, u32 width, u32 height, bool is_srgb, |