protonscr

Wrong GPU being selected on hybrid graphics system

vkd3dclosed
HansKristian-Work/vkd3d-proton#1809 · opened 2023-12-14 by TechnoPorg · updated 2024-01-05 · 1 comments · github
TTechnoPorg 2023-12-14 github

I am on a laptop that has both integrated graphics on the Intel CPU and a discrete NVIDIA GPU. When games are launched on Proton, they should be selecting the dGPU to run on, but when on D3D12 they consistently only use the integrated graphics.
__NV_PRIME_RENDER_OFFLOAD does not solve the issue, unfortunately. The discrete GPU still shows up at 0% usage in my system monitor and the game will run at less than 10 FPS.
This only occurs with D3D12 - when I run a game that uses Vulkan or D3D11, the NVIDIA GPU gets picked, as expected.

Software information

I have tested this with Satisfactory (D3D12 vs. Vulkan rendering backends), Deep Rock Galactic (D3D12 vs. D3D11 rendering backends, and Forza Horizon 5 (only D3D12 and just won't run).

System information

  • GPU: Mesa Intel® Graphics and NVIDIA RTX 5000 Ada Generation Laptop GPU
  • Driver: 4.18.1 and 545.29.06 respectively
  • Wine version: Proton Experimental, but it also happens on 8.0.4
  • VKD3D-Proton version: 2.11

Log files

steam-548430.log

TTechnoPorg 2023-12-27 github

This issue can be worked around for now by manually setting the VKD3D_VULKAN_DEVICE environment variable (for me it's 1).
I think this confirms that it is a vkd3d-proton issue and not a driver issue.
I can work on a fix myself in a few weeks if no one gets to it before then.

Proton versions

Launch options