summaryrefslogtreecommitdiffstats
path: root/src/video_core/renderer_vulkan/vk_present_manager.cpp
diff options
context:
space:
mode:
authorGPUCode <geoster3d@gmail.com>2023-05-03 06:48:18 +0200
committerGPUCode <geoster3d@gmail.com>2023-05-03 06:50:10 +0200
commitf3fcc15ad5d77aa6d8cbd8dcc3f043e218224dee (patch)
treec3b3a36f0050941e51e404b531d2a3e14fc1b39e /src/video_core/renderer_vulkan/vk_present_manager.cpp
parentMerge pull request #9973 from GPUCode/async-present (diff)
downloadyuzu-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.cpp11
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,