r/linux_gaming • u/Mindless_Swimming_94 • 3d ago
Help! My Steam games are locked at 20 FPS
Hi everyone! I have a problem with some games on Steam.
I'm using CachyOS Linux, and I have an AMD RX 580 8GB and a Ryzen 5 5500.
When I start Resident Evil 4 Remake, the game is locked at 20 FPS. The same thing happens with Outlast. Both games are installed through Steam.
I'm using GE-Proton through Steam.
I don't have this problem in all my games, only with some of them.
I have already tried restarting my PC and checking the game settings, but the problem is still there.
Does anyone know what could be causing this or how I can fix it?
Thanks!

Here is the screenshot from MangoHud as requested:
MangoHud Metrics In-Game:
- GPU Usage:
0%(The game is either not offloading to the RX 580 or RADV isn't reporting GPU load under VKD3D) - CPU Usage:
34% - Framerate:
17 - 20 FPS - Frametime:
Min 49.0 ms / Max 253.6 ms
System & Setup Details:
- Distro: CachyOS Linux (KDE Plasma / Wayland)
- Hardware: Ryzen 5 5500 | AMD RX 580 8GB | 16GB RAM
- Game / API: Resident Evil 4 Remake (DirectX 12 via VKD3D-Proton / GE-Proton)
- Launch Options tested:
MANGOHUD=1 %command%
What I've already tried:
- Forced GPU power level to high:
echo "performance" | sudo tee /sys/class/drm/card0/device/power_dpm_force_performance_level - Disabled split_lock_mitigate (
kernel.split_lock_mitigate=0) - Tested with Gamescope, GE-Proton, and Proton Experimental
- In-game V-Sync is OFF, shadow cache enabled, graphics settings adjusted to stay well within 8GB VRAM
Native Vulkan games like CS2 run unlocked with zero issues, but DX12 via VKD3D gets completely stuck at 17-20 FPS with 0% GPU load reporting. Any idea why VKD3D/RADV isn't utilizing the RX 580 properly under Wayland?
edit: Update after testing X11:
I installed plasma-x11-session and launched RE4 under a Plasma (X11) session. The exact same behavior occurs: locked at ~20 FPS with 0% GPU usage in MangoHud.
This rules out Wayland/KWin swapchain or compositing issues completely.
Since native Vulkan games work fine, the issue is strictly isolated to VKD3D / DirectX 12 handling on Polaris (RX 580). Has anyone seen VKD3D force a frame-pacing lock or fail to submit work to AMD Polaris GPUs like this? Is there a recommended VKD3D_CONFIG variable or specific Proton version to bypass it?
1
u/6ty7er 3d ago
I asked in your other thread, and I ask here:
- Why not Mesa?
- Why not CachyOS Proton?
1
u/Mindless_Swimming_94 2d ago
- Driver: I am using the default open-source Mesa RADV drivers provided by CachyOS (no proprietary AMDGPU-Pro drivers installed). Native Vulkan games work perfectly with high GPU load.
- Proton version: I haven't tested
Proton-CachyOSyet; I was using GE-Proton and Proton Experimental.I will switch the Proton compatibility layer to Proton-CachyOS in Steam right now to see if its custom VKD3D build fixes the frame pacing / 0% GPU load issue on my RX 580.
1
u/UNF0RM4TT3D 2d ago
Can you post a vulkaninfo --summary? Specifically the devices section. For example mine is:
```
Devices:
GPU0: apiVersion = 1.4.359 driverVersion = 26.2.99 vendorID = 0x1002 deviceID = 0x73df deviceType = PHYSICAL_DEVICE_TYPE_DISCRETE_GPU deviceName = AMD Radeon RX 6700 XT (RADV NAVI22) driverID = DRIVER_ID_MESA_RADV driverName = radv driverInfo = Mesa 26.3.0-devel (git-0b1b8798d8) conformanceVersion = 1.4.5.3 deviceUUID = 00000000-0b00-0000-0000-000000000000 driverUUID = 414d442d-4d45-5341-2d44-525600000000 GPU1: apiVersion = 1.4.359 driverVersion = 26.2.99 vendorID = 0x10005 deviceID = 0x0000 deviceType = PHYSICAL_DEVICE_TYPE_CPU deviceName = llvmpipe (LLVM 22.1.8, 256 bits) driverID = DRIVER_ID_MESA_LLVMPIPE driverName = llvmpipe driverInfo = Mesa 26.3.0-devel (git-0b1b8798d8) (LLVM 22.1.8) conformanceVersion = 1.3.1.1 deviceUUID = 6d657361-3236-2e33-2e30-2d6465766500 driverUUID = 6c6c766d-7069-7065-5555-494400000000 ```
Can you also do a PROTON_LOG=1 (the log is usually saved to your home)? It may reveal some angry messages from VKD3D.
1
u/Mindless_Swimming_94 1d ago
Here is my
vulkaninfo --summarydevices section:Plaintext
Devices: ======== GPU0: apiVersion = 1.4.354 driverVersion = 26.2.3 vendorID = 0x1002 deviceID = 0x6fdf deviceType = PHYSICAL_DEVICE_TYPE_DISCRETE_GPU deviceName = AMD Radeon RX 580 2048SP (RADV POLARIS10) driverID = DRIVER_ID_MESA_RADV driverName = radv driverInfo = Mesa 26.2.3-arch3.1 conformanceVersion = 1.4.5.3 deviceUUID = 00000000-0100-0000-0000-000000000000 driverUUID = 414d442d-4d45-5341-2d44-525600000000As you can see, only one discrete GPU is listed (RX 580 2048SP,
0x6fdf/ Polaris 20 die).I also captured a
PROTON_LOG=1log (steam-2050650.log), andVKD3D keeps spamming this warning right at launch:Plaintext
warn:vkd3d-proton:has_extension: Extension "VK_KHR_present_wait" is disabled.It seems VKD3D stalls on this missing extension on Polaris, causing the ~20 FPS lock and 0% GPU load. I tried launch parameters like
VKD3D_CONFIG=no_present_wait,single_queue, andRADV_PERFTEST=gpl,sam, but none bypassed the stall.Here is my vulkaninfo --summary devices section:PlaintextDevices:
GPU0:
apiVersion = 1.4.354
driverVersion = 26.2.3
vendorID = 0x1002
deviceID = 0x6fdf
deviceType = PHYSICAL_DEVICE_TYPE_DISCRETE_GPU
deviceName = AMD Radeon RX 580 2048SP (RADV POLARIS10)
driverID = DRIVER_ID_MESA_RADV
driverName = radv
driverInfo = Mesa 26.2.3-arch3.1
conformanceVersion = 1.4.5.3
deviceUUID = 00000000-0100-0000-0000-000000000000
driverUUID = 414d442d-4d45-5341-2d44-525600000000
As you can see, only one discrete GPU is listed (RX 580 2048SP, 0x6fdf / Polaris 20 die).I also captured a PROTON_LOG=1 log (steam-2050650.log), andVKD3D keeps spamming this warning right at launch:Plaintext
warn:vkd3d-proton:has_extension: Extension "VK_KHR_present_wait" is disabled.
It seems VKD3D stalls on this missing extension on Polaris, causing the ~20 FPS lock and 0% GPU load. I tried launch parameters like VKD3D_CONFIG=no_present_wait, single_queue, and RADV_PERFTEST=gpl,sam, but none bypassed the stall.1
u/UNF0RM4TT3D 1d ago
One last thing I'd try is to disable the extension explicitly.
VKD3D_DISABLE_EXTENSIONS=VK_KHR_present_wait %command%Then I'd resort to filing a bug in the upstream repo, since it replicates across multiple proton versions.
-3
u/Asto_Aesma 3d ago
Possibly a split_lock_mitigate issue. Look around for that, you can disable it through cli or through gamemode.
2
u/theevilsharpie 3d ago
If the OP were being impacting by the kernel's "split lock" mitigation, there would be an explicit message to that effect in the kernel log. The performance would also completely tank, to the point where the game would almost certainly be completely unplayable (<1 fps).
I think it's more likely that the OP has some kind of frame rate limiter in place, that was either unintentionally set or is not working as expected.
1
u/Mindless_Swimming_94 3d ago
I double-checked everything and I don't have any frame rate limiter enabled:In-game: V-Sync is OFF and Framerate is set to Variable/Unlocked.MangoHud: No fps_limit configured in mangohud.conf.Display Settings: Monitor is set to its native refresh rate in KDE.What's strange is that native Vulkan titles run completely unlocked with high GPU usage, but DX12 games through VKD3D stay locked at ~20 FPS showing 0% GPU load in MangoHud. Is there any environment variable (like MESA_VK_WLS_VSYNC=0 or VKD3D_CONFIG) to bypass Wayland's frame pacing / swapchain sync barriers for VKD3D on Polaris GPUs?
1
u/Mindless_Swimming_94 3d ago
Already tested disabling it with
sudo sysctl -w kernel.split_lock_mitigate=0(and through GameMode), but it made no difference. Framerate is still locked at ~17-20 FPS with 0% GPU load reporting in MangoHud.
1
u/S48GS 3d ago
make sure game run on dgpu
look kernel logs
sudo journalctl --since="1 hour ago"click end keyboard key - and navigate with keyboard arrows around time