Navi RX 5700 XT - hardware cursor + vsync causes stutter in compositors, games and even the cursor itself
When there is fullscreen vsync + hardware cursor movement active at the same time, random stutter occurs. This happens with
- fullscreen games with hardware cursor and enabled vsync, e.g. Path of Exile in Proton 4.11-11 or Heroes of the Storm in wine-staging 5.0-rc2. The stutter is also recognized by e.g. DXVK's frame time graph, it's an accumulation of several frames in a row that get delayed. It happens every few seconds.
- fullscreen compositors like Picom and enabled vsync. It's very noticeable when it occurs while moving windows, but even just moving the mouse cursor can trigger it and then the cursor itself skips frames (btw. also true for the above case with games).
When vsync is disabled, the issue does not occur. It is not related to FreeSync.
What is really remarkable about this is that the issue is shared between Linux and Windows. On Windows, the issue in games is pretty much totally comparable, while at least Windows DWM desktop usage doesn't seem to be affected.
So it would appear to me that the issue lies in a shared part of the display controller driver between the Linux kernel driver and Windows drivers (btw. not a matter of if old 19.7.x or recent 19.12.x drivers are used) that affects vsync and hardware cursor handling at the same time.
The issue does not seem to occur in games that don't have a cursor visible, neither on Linux nor Windows.
It's definitely not related to any clock adjusting power saving features, it's disabled for CPU in the system's bios and the GPU was forced into full clocks via setting power_dpm_force_performance_level
to high
.
The issue seems to be Navi specific, it does not occur with Polaris GPUs.
Used software and hardware: MSI 5700 XT Gaming X
Ryzen R5 3600
Samsung U32J59 4k 60hz display (issue happens with both FreeSync enabled and disabled)
Linux 5.5-rc2 (older kernels don't work better in this regard)
xorg 1.20.6
xf86-video-amdgpu 19.1
Log files: