protonscr

Vsync forced in fullscreen mode on Wayland with VKD3D, not with DXVK

vkd3dclosed
HansKristian-Work/vkd3d-proton#2639 · opened 2025-09-29 by RiantAnda · updated 2025-10-20 · 9 comments · github
RRiantAnda 2025-09-29 github

When I'm running DX12 games with VKD3D, games stay at 60fps with vsync disabled and fullscreen.
Switching to DX11 (where available) using DXVK, games run above 60fps with same settings.
I'm using the Sway Wayland compositor.

Example game: Control
Game runs at 60fps max with VKD3D, but at ~160fps with DXVK in fullscreen mode.
I can break the 60fps vsync lock, when selecting Windowed mode. This gives VKD3D the same fps as with DXVK.

System information

  • GPU: AMD 7900 XTX
  • Driver: Mesa/RADV
  • Wine version: Proton Experimental

Steam log

steam-870780.log

HHansKristian-Work maintainer 2025-10-02 github

Not sure what is different here because we support both MAILBOX and IMMEDIATE. We go through Xwl anyway. Is this isolated to Sway compositor?

RRiantAnda 2025-10-02 github

I did a retest with KDE Plasma Wayland and the issue isn't happening there.

If this is a Sway issue, why doesn't it happen with DXVK?

HHansKristian-Work maintainer 2025-10-02 github

If this is a Sway issue, why doesn't it happen with DXVK?

Good question. I have no idea and probably should be a Sway issue filed as well, since the exact same code is working fine on other compositors. It might be some bad interaction with full-screen flip.

OoNxZero 2025-10-03 github

I’m having a very similar issue on Fedora 42 with KDE Plasma (Wayland). My FPS isn’t capped when I run glxgears or in some Steam games like Albion Online they run as expected. But in titles like Payday 3 or CS2, my framerate constantly fluctuates between 60 and 120 FPS, as if something is enforcing a soft cap.

Here’s what I’ve already tried without success:

Completely disabling V-Sync in Plasma/KWin.

Editing kwinrc manually and adjusting tearing prevention settings.

Testing with and without VRR (Variable Refresh Rate).

Setting environment variables like vblank_mode=0 and __GL_MaxFramesAllowed.

Reverting to an older kernel (Fedora 6.16.4) to rule out regressions.

System details:
Fedora 42 (kernel 6.16.8-200.fc42.x86_64)
Mesa 25.1.9
OpenGL core profile: 4.6 (Core Profile)
OpenGL compatibility profile: 4.6
OpenGL ES profile: 3.2
KDE Plasma 6.4.5 (Wayland)
KWin 6.4.5
GPU: AMD Radeon RX 6950 XT (Navi 21)
CPU: AMD Ryzen 9 5900X

OoNxZero 2025-10-03 github

I’ve done some testing and it looks like the issue only affects games that rely on DirectX 11/12 → Vulkan translation (DXVK / vkd3d-proton).

Native Vulkan games (e.g. No Man’s Sky, Albion Online) run perfectly with uncapped framerates.

DirectX games translated through DXVK/vkd3d (e.g. CS2, Payday 3) get stuck at 60 FPS (or fluctuate around it), as if V-Sync is being forced.

This suggests the problem isn’t with the hardware, Mesa, or Vulkan itself, but specifically with the translation layer.

RRiantAnda 2025-10-04 github

Seems to be Xwayland related for me.
Using Proton-GE with PROTON_ENABLE_WAYLAND=1 on Control gives me full fps.

OoNxZero 2025-10-06 github

Updating to kernel 6.16.10-200.fc42.x86_64 fixed my issues

RRiantAnda 2025-10-09 github

I tried other games with different engines for comparison:
Witcher 3
Outcast 2
Hitman (2016)
Shadow of the Tomb Raider
Resident Evil 7
Metro Exodus Enhanced Edition

All behaved the same with the exception of Metro Exodus Enhanced Edition.
This game gave me full fps with disabled vsync.
I've added the log, is there any way to deduct what this game makes different?

steam-1449560.log

RRiantAnda 2025-10-20 github

Closing report, it is unclear what is causing this bad interaction.
Workarounds by using wine-wayland, gamescope or KDE Plasma exist.

Proton versions

Launch options