protonscr

Forza Horizon 6 not utilizing 100% of the GPU wattage despite capped GPU usage

vkd3dclosed
HansKristian-Work/vkd3d-proton#3066 · opened 2026-05-27 by matejss · updated 2026-06-19 · 1 comments · github
Mmatejss 2026-05-27 github

My sincere apology for AI summary below, but after week of trying to find more about this issue i am absolutely drained.
I have also discussed this issue in this PR (which i again apologize for spam in the PR)
#3033

Software information

Game: Forza Horizon 6

Settings:

  • 2560x1440
  • Mostly Extreme settings
  • Terrain quality set to low due to known issue for AMD GPUs
  • FSR tested with almost no meaningful impact (+3-7 FPS)

Issue:
Performance is approximately 50% lower than another Linux user with nearly identical hardware and settings.

Benchmark comparison:

  • My result: ~62 FPS average
  • Comparison system: ~126 FPS average
  • Same GPU class (RX 9070)
  • Same CPU class (5700X3D)
  • Same resolution/settings
Image

Observed behavior:

  • GPU usage remains at 97-99%
  • GPU clocks boost correctly (~3000MHz sustained)
  • VRAM clocks boost correctly (~2516MHz)
  • Temperatures are normal
  • No thermal throttling
  • No PPT throttling
  • GPU power draw remains relatively low/moderate (~110-160W average)
  • FPS remains low regardless of graphics settings
  • FSR has almost no impact on FPS

Additional observations:

  • Diablo 4 shows somewhat similar behavior:

    • Heavy RT workload
    • High GPU usage
    • FPS drops significantly
    • Power draw remains around ~150W
  • Other DX12 games fully utilize the GPU correctly:

    • Witchfire reaches ~220W
    • Half Sword reaches ~220W

This suggests:

  • GPU is healthy
  • Boosting behavior works correctly
  • Thermals/power delivery are fine
  • The issue appears workload/game specific rather than a global hardware problem

Things tested:

  • Proton Experimental Bleeding Edge
  • Proton GE 10-34
  • Proton CachyOS
  • X11
  • Wayland
  • Native Wayland Proton
  • Fedora RPM Steam
  • Mesa 26.0.9
  • Mesa 26.1.0
  • Mesa git 26.1.1
  • Different VKD3D versions
  • Shader cache deletion
  • ReBAR enabled/disabled
  • Kernel 7.0.9
  • Kernel 7.0.10
  • amdgpu.mes=0
  • Different LACT performance modes
  • SMT disabled
  • Steam runtime tests
  • Flatpak Steam tests

None of these produced meaningful improvements.

System information

  • GPU: Sapphire Pulse Radeon RX 9070 16GB
  • CPU: Ryzen 7 5700X3D
  • RAM: 32GB DDR4-3600
  • Motherboard: ASUS TUF GAMING X570-PLUS
  • OS: Fedora 44 KDE
  • Kernel: 7.0.10-200.fc44.x86_64
  • Driver: RADV
  • Mesa: 26.1.1 (also tested 26.0.9 and 26.1.0)
  • Wine version: Proton Experimental Bleeding Edge / Proton GE 10-34 / Proton CachyOS
  • VKD3D-Proton version: latest Proton bundled versions + Horizon fixes tested

Log files

The Proton log contains a very large amount of:

matejss@matejss:~$ tail -n 10000 steam-2483190.log | cut -c1-120 | sort | uniq -c | sort -rn | head -30 33
23224.295:0140:026c:warn:seh:dispatch_exception backtrace: --- Exception 0xc000001d. 33 23224.295:0140:026c:trace:seh:call_vectored_handlers handler at 000000014534B378 returned ffffffff 33 23224.295:0140:026c:trace:seh:call_vectored_handlers calling handler at 000000014534B378 code=c000001d flags=0 30 23224.269:0140:026c:trace:seh:call_vectored_handlers handler at 000000014534B378 returned ffffffff 29 23224.269:0140:026c:warn:seh:dispatch_exception backtrace: --- Exception 0xc000001d. 29 23224.269:0140:026c:trace:seh:call_vectored_handlers calling handler at 000000014534B378 code=c000001d flags=0 26 23224.315:0140:026c:warn:seh:dispatch_exception backtrace: --- Exception 0xc000001d. 26 23224.315:0140:026c:trace:seh:call_vectored_handlers handler at 000000014534B378 returned ffffffff 26 23224.315:0140:026c:trace:seh:call_vectored_handlers calling handler at 000000014534B378 code=c000001d flags=0 24 23224.295:0140:026c:trace:seh:dispatch_exception code=c000001d (EXCEPTION_ILLEGAL_INSTRUCTION) flags=0 addr=000000014446 21 23224.292:0140:026c:warn:seh:dispatch_exception backtrace: --- Exception 0xc000001d. 21 23224.292:0140:026c:trace:seh:call_vectored_handlers handler at 000000014534B378 returned ffffffff 21 23224.292:0140:026c:trace:seh:call_vectored_handlers calling handler at 000000014534B378 code=c000001d flags=0 21 23224.288:0140:026c:warn:seh:dispatch_exception backtrace: --- Exception 0xc000001d. 21 23224.287:0140:026c:trace:seh:call_vectored_handlers handler at 000000014534B378 returned ffffffff 21 23224.286:0140:026c:trace:seh:call_vectored_handlers calling handler at 000000014534B378 code=c000001d flags=0 21 23224.274:0140:026c:warn:seh:dispatch_exception backtrace: --- Exception 0xc000001d. 21 23224.274:0140:026c:trace:seh:call_vectored_handlers handler at 000000014534B378 returned ffffffff 21 23224.273:0140:026c:trace:seh:call_vectored_handlers calling handler at 000000014534B378 code=c000001d flags=0 21 23224.272:0140:026c:warn:seh:dispatch_exception backtrace: --- Exception 0xc000001d. 21 23224.272:0140:026c:trace:seh:call_vectored_handlers handler at 000000014534B378 returned ffffffff 21 23224.269:0140:026c:trace:seh:dispatch_exception code=c000001d (EXCEPTION_ILLEGAL_INSTRUCTION) flags=0 addr=000000014446 20 23224.301:0140:026c:warn:seh:dispatch_exception backtrace: --- Exception 0xc000001d. 20 23224.301:0140:026c:trace:seh:call_vectored_handlers handler at 000000014534B378 returned ffffffff 20 23224.301:0140:026c:trace:seh:call_vectored_handlers calling handler at 000000014534B378 code=c000001d flags=0 20 23224.300:0140:026c:warn:seh:dispatch_exception backtrace: --- Exception 0xc000001d. 20 23224.300:0140:026c:trace:seh:call_vectored_handlers handler at 000000014534B378 returned ffffffff 20 23224.300:0140:026c:trace:seh:call_vectored_handlers calling handler at 000000014534B378 code=c000001d flags=0 20 23224.289:0140:026c:warn:seh:dispatch_exception backtrace: --- Exception 0xc000001d. 20 23224.289:0140:026c:trace:seh:call_vectored_handlers handler at 000000014534B378 returned ffffffff
matejss@matejss:~$ grep -c 'ILLEGAL_INSTRUCTION' steam-2483190.log
3520701 `

Disabling logging with WINEDEBUG=-all does not improve performance.

Additional technical information:

  • PCIe link verified as Gen4 x16
  • GPU boosts correctly to ~3000MHz during benchmark
  • VRAM boosts correctly
  • GPU usage remains ~99%
  • No thermal throttling observed
  • No PPT throttling observed

This does NOT appear to be:

  • thermal throttling
  • PCIe lane issue
  • CPU bottleneck
  • RAM issue
  • shader cache corruption
  • compositor issue
  • low clocks / boost issue

The GPU boosts correctly but performance remains abnormally low in some DX12/VKD3D workloads.

Mmatejss 2026-06-19 github

Hello,

I feel quite stupid but i have resolved the issue. Today i noticed an anomaly and started investigating - my GPU showed usage PCI-E line 5x16, but my MOBO and CPU supports up to 4x16.

After investigating i have noticed that my GPU was incorrectly informing me that it was using its full PCI-E power, while CPU was in the background limiting it to 4x1, without showing that information anywhere (except few specific terminal commands)

After cold resetting my entire hardware and reseating the GPU everything works fine.

Proton versions

Launch options

Error codes