From abb616c3570f88133e8717d80c48fc5cffe7c8e4 Mon Sep 17 00:00:00 2001 From: xbzk Date: Sat, 11 Apr 2026 02:49:55 +0200 Subject: [PATCH] [vk,swapchain] vsync: Changed Immediate fallback from (FIFO) to (Mailbox, then FIFO) (#3746) Just discovered that stock adreno drivers on a730 had no Immediate VSync mode available, and it was falling back to FIFO, which causes a lot of response delay in Unity games. But if someone chose Immediate, it prefers low latency above buffering, so Mailbox is his friend, and FIFO is his nemesis. So i just changed Immediate to fall back to Mailbox first, and only if Mailbox is not available either it falls back to FIFO: Immediate -> Mailbox -> FIFO; Mailbox -> FIFO; FIFO Relaxed -> FIFO. Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/3746 Reviewed-by: crueter Reviewed-by: MaranBr Co-authored-by: xbzk Co-committed-by: xbzk --- src/video_core/renderer_vulkan/vk_swapchain.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/video_core/renderer_vulkan/vk_swapchain.cpp b/src/video_core/renderer_vulkan/vk_swapchain.cpp index 0e4c274d94..7e31f9cf67 100644 --- a/src/video_core/renderer_vulkan/vk_swapchain.cpp +++ b/src/video_core/renderer_vulkan/vk_swapchain.cpp @@ -65,8 +65,10 @@ static VkPresentModeKHR ChooseSwapPresentMode(bool has_imm, bool has_mailbox, return mode; } }(); + if (setting == Settings::VSyncMode::Immediate && !has_imm) { + setting = Settings::VSyncMode::Mailbox; + } if ((setting == Settings::VSyncMode::Mailbox && !has_mailbox) || - (setting == Settings::VSyncMode::Immediate && !has_imm) || (setting == Settings::VSyncMode::FifoRelaxed && !has_fifo_relaxed)) { setting = Settings::VSyncMode::Fifo; }