Bug #247
Vsync always forced on with AMD/Vulkan full-screen mode
Description
There seems to be a problem with the way Cemu sets up full-screen mode with Vulkan. The problem doesn't happen with OpenGL.
With OpenGL, full-screen mode with vsync disabled works correctly: a tearing line is visible as the screen moves/scrolls. However with Vulkan vsync is always on: there's no tearing line.
Another noticeable difference: in OpenGL mode, if I press Vol+/- on my keyboard, Windows' volume OSD doesn't appear on-screen. But in Vulkan mode the OSD does appear. So the problem may be down to Cemu not using exclusive full-screen mode with Vulkan, meaning the Windows compositor forces vsync on.
I'm using Windows 10 1803 with AMD FirePro W5100 driver 19.Q4.1. I have Vsync disabled in Cemu settings. Forcing Vsync off in Radeon settings didn't help, neither did checking "Disable full-screen optimisations" in Cemu Properties.
Older versions of Dolphin also had this problem (or a very similar one) but they managed to fix it. In case it might help, I think this Dolphin commit did it:
"Vulkan: Exclusive fullscreen support via VK_EXT_full_screen_exclusive"
https://github.com/dolphin-emu/dolphin/commit/16f103ab42c6faca0cb2c4ce6e93546d22feb1a4
History
Updated by Serfrost almost 5 years ago
mark_k wrote:
There seems to be a problem with the way Cemu sets up full-screen mode with Vulkan. The problem doesn't happen with OpenGL.
We discussed this on Discord. Here's a rundown:
Instead of traditional Vsync, we are using VK_PRESENT_MODE_FIFO_KHR which makes sure there is no screen tearing - https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkPresentModeKHR.html
It's not really Vsync as that would lock your framerate to 60, 30, 15, etc. It's more that the driver doesn't allow the GPU to push more frames than the monitor can display. There is very little impact on performance.
Under Vulkan, Vsync isn't just a "yes/no" thing. They finally fixed it and made it work properly like on consoles. VK_PRESENT_MODE_FIFO_KHR is the new Fast Sync / new fast Vsync.
A mode dropdown option is already planned. It's just not a high priority.
On Nvidia the FPS shown in fullscreen is unconstrained, going over the display's refresh rate is displayed but the frames are dropped. On AMD it seems they do not show the extra frames, though it should behave in the same way regardless.
Updated by Serfrost over 3 years ago
- Status changed from New to Resolved
Going to assume this was resolved.