I’m running the Vulkan samples: GitHub - SaschaWillems/Vulkan: Examples and demos for the new Vulkan API in fullscreen in xorg session with vsync on but it seems that the G-SYNC/VRR is not working. I enabled the indicator and it says “normal” instead of “g-sync”. I can see that v-sync is marked as on but tearing is still visible when moving the camera.
I noticed it also in Doom Eternal and Shadow of the Tomb Raider which are also using Vulkan natively.
It works in games running through Steam Proton using VKD3D-Proton. I don’t see anything different in the code of the samples and the vkd3d-proton which creates the swapchain. So what triggers GSync/VRR in Vulkan?
I have a Freesync monitor. All things mentioned are working fine on Windows.
I have this options enabled for kernel modules:
I’m using Desktop RTX 4070 with the latest driver 545.29.06 but this behaves the same on the previous driver or the latest from the 535 or the latest vulkan beta driver. And I’m using the closed source kernel modules.
Yes and the FPS was limited to refresh rate which is 60 in my case. The driver indicator on the top left shows that the vsync is on but tearing is still happening.
Overall the VRR on X11 is a mixed bag. If I run Doom Eternal or the sample this will break the VRR and then when I run the other games though Proton that were working before now they will be broken too. I have to go to nvidia settings disable and enable GSync compat.
This issue is still present on latest beta driver 565 and Ubuntu 24.10. VRR only works for Steam Proton games (most of the time at least), Doom 2016 Vulkan API and OpenGL apps. It does not work for native Vulkan apps.
I even ported a OpenGL app gl-sync-demo to Vulkan and tried different APIs to create full screen window like SDL and GFLW but none of them managed to make VRR work. Here is the code for my app: vk-gsync-demo
I don’t know what triggers VRR in the driver for Vulkan apps or am I doing something wrong. Is ither some kind of whitelist that I need to add apps to?