The same issue happens for me on two different machines: one with AMD iGPU + NVIDIA dGPU, the other with Intel iGPU + AMD dGPU. So it's not just an NVIDIA issue.
i have them both on the same card and it just doesn't work for me for some reason, did you find a way to fix this?
Since I have upgraded my rig and only use a single RX 9070 XT now, I won't be able to test this issue any more.
The issue with having Steam and SteamVR running on different GPUs is that the textures (e.g. the Steam interface windows) are GPU objects. To allow them to work on separate GPUs would mean the texture would need to be copied Steam GPU -> CPU -> SteamVR GPU every time it updated (so, every frame of animation in the UI).
Moreover, different devices can have different texture formats, so if they don't support the same one it would potentially need to be copied out of one GPU, converted, and then copied back to the other.
The performance hit involved would be... let's go with "Not Great" 🫤
That said, we should probably surface some sort of error if you're trying to split things across two GPUs...
I would've hoped to be able to run the Steam desktop UI on the iGPU to avoid pinning the dGPU to high-power mode. For Steam VR, both SteamVR and the SteamVR Web Helper should on the discrete GPU with no copying required, streaming over Steam Link. What we get now is either garbled output, crashing, or both.
If I run the desktop Steam UI on the dGPU, I seem to recall the dGPU being unable to enter power-savings mode. I'll have to test again to double-check exactly what happens.
Steam Link also doesn't work well: the auto bandwidth calculation degrades it to needsmorejpeg sort of bandwidth.
https://github.com/user-attachments/assets/6d478cc8-0824-4768-aa59-4dc0d6ca98a3
Despite the SteamVR changelog saying the GPU selection logic was improved, this is still just as broken as before.
The GPU selection logic improvement is so that it doesn't erroneously pick an integrated GPU (or software Vulkan implementation) by default when a dedicated GPU is present, which it could sometimes do previously.
Placing Steam on one GPU and SteamVR on the other will break the Steam interface in VR still, for reasons mentioned earlier in this thread.
What is being rendered in the main Steam process and passed to the SteamVR processes? Couldn't whatever it is be rendered by the SteamVR processes directly?
I've even tried editing the steamwebhelper script (since there's no way to set Launch Options for it) to make that process run on the discrete GPU just as vrserver does.
On my Intel AMD + NVIDIA machine, even if I do run the main steam UI on the NVIDIA, the SteamVR overlay is still invisible.
On my Intel AMD + NVIDIA machine, even if I do run the main steam UI on the NVIDIA, the SteamVR overlay is still invisible.
If both SteamVR and Steam are running on the same GPU and the SteamVR overlay isn't showing, that would definitely be a bug. Can you provide more information?
In particular, when you say the SteamVR overlay is invisible, do you mean the entire dashboard doesn't turn up? Does just the dashboard bar turn up, but not the Steam library? Etc.
(I'm particularly interested if even the dashboard bar doesn't turn up, since that might actually not be a GPU bug, but a separate sporadic issue we've seen reported which I'm still trying to hunt down a repro case for...)
I reset SteamVR's launch options to defaults, and with Steam itself under prime-run, I get SteamVR failing to start properly:
I have to do as ALVR suggests, and add vrmonitor.sh to the launch options, and only then does SteamVR start properly.
It feels weird to me to have to tell Steam to use SteamVR's launcher to launch SteamVR.
After setting the launch options:
~/.local/share/Steam/steamapps/common/SteamVR/bin/vrmonitor.sh %command%
I can connect, and SteamVR rendering works, but the menu is broken, as shown in these screenshots from the headset's OS.
One shows the Steam horizon with the menu and the keyboard supposedly open, but all I see is the white bar.
The other shows SteamVR home, but the overlay is missing, and that thin dark rectangle is supposed to be the performance HUD:
I'm thinking I should repost this comment as a new bug report, leaving this one to be primarily about DRI_PRIME and NVIDIA's equivalent.
Now I remembered another reason I don't like to run the Steam client itself with DRI_PRIME or NVIDIA's equivalent:
https://github.com/ValveSoftware/steam-for-linux/issues/9383
After reinstalling the AMD+NVIDIA machine back to Ubuntu, the overlay works again in the same-GPU case. I wonder if there was something wrong in the distro? I don't recall what it was at the time, but it was either Bazzite or CachyOS.
With Steam and SteamVR both on the discrete GPU, I run into different issues:
The issues with streaming the desktop may include format mismatch issues (https://github.com/ValveSoftware/SteamVR-for-Linux/issues/869#issuecomment-4339907258) as a factor.
Describe the bug
When in SteamVR, the Steam Client must be using the same GPU as SteamVR in order for the Steam UI to be visible.
To Reproduce
Steps to reproduce the behavior:
SteamVRSteamVRExpected behavior
SteamVR isn't reliant on the Steam Client in order to display the UI in SteamVR, or, if it must be, isn't reliant on using the same GPU.
It would be nice for me to use the AMD GPU for the Steam Client as it runs a lot smoother, and have SteamVR use my, more powerful, NVIDIA GPU. Unfortunately I have to use my NVIDIA GPU to run both at the moment, which with the Steam Client, lags my computer.
System Information (please complete the following information):
Screenshots
https://github.com/user-attachments/assets/d9fccf63-72a7-4a00-865b-7560533cafe1