So I just replaced my graphics card with an AMD Radeon RX 6700 XT as I was having issues with Nvidia drivers. I replaced the card and then removed the Nvidia drivers with ' sudo apt purge ~nnvidia '. I then restarted the computer.
Everything seems to be working correctly other than Steam will launch but when it tries to actually open a window, it will appear and then instantly disappears and will flash like this several times. The icon in the top bar is still there and I can use it to exit Steam, but I cannot open up any windows with it. If I start Steam from the CLI or start it with integrated graphics, it works correctly.
Basically, if you have Steam setup to prefer the external / discrete GPU, it currently will crash (at least with AMD... interestingly it works fine with my NVIDIA eGPU). However, if you launch it with the integrated graphics, then it will work as you pointed out.
So until Valve fixes this, you may need to start Steam with your integrated graphics card, and then add DRI_PRIME=1 to the command options of the games you want to use your external GPU.
Thank you! I was afraid that it was something I had done, as it had been working with the 3060 Ti that I just removed. I guess I'll just launch it with integrated graphics and use the extra command for the game itself until Valve fixes it.
Hmm... Is that a recent change? That is not true from my experience and most comments online discuss explicitly setting this to take advantage of the dGPU.
Update: So I just tried this with City Skylines. I launched Steam from the dock/panel with the "Integrated Graphics" option and started City Skylines without the DRI_PRIME environment variable. Checking the output of intel_gpu_top it appears that the game was only used my integrated graphics as the Render/3D usage was 100%.
I then added the DRI_PRIME environment variable to the launch options and restarted City Skylines. With the setting, the FPS counter was higher and the intel_gpu_top output was only around 10%... which probably means it was using my discrete AMD GPU instead of just my integrated Intel one. Also, my fans kicked on, which usually only happens with the dGPU is being used.
So unfortunately, it does not appear to automatically use the dGPU... at least not on my laptop, with my configuration.
Odd. I am guessing that use integrated graphics option from the Gnome DE forces the use of the iGPU for everything steam launches. Do you also require to use the DRI_PRIME=1 command if you launch steam through the terminal in which case it automatically switches to the iGPU for the steam client because I sure did not when I was launching steam from the terminal to circumnagivate the issue
I used the workarounds mentioned in this post's comments to resolve the issue https://lemmy.one/post/151466. With this workaround there no need to use the DRI_PRIME=1 modifier for the games(atleast in my experience)
Edit : does somebody know to link the post in a way such that it opens within the app you are currently using(voyager for me) and does not open a new lemmy.one tab in the browser
If I just start steam from the terminal, then it uses the iGPU and I still need to use the DRI_PRIME=1 environment varitable. This makes sense, because the DRI_PRIME=1 modifier is not set in the environment.
The workaround mentioned in that post (ie. changing PrefersNonDefaultGPU=true to PrefersNonDefaultGPU=false) is just a way to change the shortcut (.desktop) in GNOME from using the dGPU to iGPU by default (whereas right clicking on the shortcut and selecting "Launch with Integrated GPU" only temporarily overrides the setting for that single instance).
It would be nice if was automatically detected on my computer... or rather it would be even better if we didn't have to workaround it at all and Steam just worked :]
I am stumped. How can steam/the system exhibit different behaviour when we are executing similar commands. Maybe it is because I have an amd+amd laptop so it automatically dumps the graphically intensive application to the dGPU. Or maybe because in a desktop, the dGPU is connected directly to the display, it not switching to the dGPU automatically as the user had specified the use of the iGPU. In my laptop(which has no mux switch), the iGPU will draw the frame on the screen even if it the dGPU which determines what is to be drawn