Project

General

Profile

Bug #247

Vsync always forced on with AMD/Vulkan full-screen mode

Added by mark_k over 4 years ago. Updated about 3 years ago.

Status:
Resolved
Priority:
Normal
Assignee:
-
Category:
Graphic
Start date:
01/04/2020
API:
Vulkan
Cemu Version:
1.16.1
GPU Vendor/Model:
AMD FirePro W5100

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

#1

Updated by Serfrost over 4 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.

#2

Updated by Petergov about 4 years ago

did that change with the new vsync options of v1.17.1?

#3

Updated by Serfrost about 3 years ago

  • Status changed from New to Resolved

Going to assume this was resolved.

Also available in: Atom PDF