Bazzite - Configure Default GPU Settings
Bazzite - Configure Default GPU Settings
Hello all, Apologies for the potentially nooby question but I've been searching online and haven't been able to find an answer. I recently installed Bazzite on my ASUS Laptop with an AMD iGPU and an Nvidia dGPU and so far everything has been working pretty smoothly. I've run into an issue, however, where some games don't launch on the dGPU but launch on the iGPU instead. The dGPU is getting used for some so it's not a driver-issue as far as I can tell. Switcherooctl shows that the default GPU is the iGPU. Is there a way on Bazzite to configure which GPU is set as the default one? Ideally I would like to configure my system so that when I'm on AC power the Nvidia dGPU would be the default GPU, and only on battery power would the iGPU become the default. If there's a guide or video that covers this already feel free to link that, I just haven't found it.
If you're starting from Steam, you can ensure Steam launches using your dGPU instead of iGPU by adjusting the settings in your Steam library. For games with this issue, set the launch option to DRI_PRIME=1 %command%.
I looked over last night. My BIOS doesn’t let me turn off the iGPU, so that’s not an option. It might not be necessary, but it could be useful if there’s an issue with the Nvidia GPU.
Bazzite might not offer a direct replacement for Device Manager. You could try turning off the iGPU drivers temporarily and reactivating them as needed. Alternatively, you might be able to manage them via the terminal, though I’m not sure about the details.
Your display is linked to the dGPU by default. When connected via iGPU, rendering shifts to the dGPU and frames travel back through the iGPU. This may cause apps to render on the iGPU, especially if they lack multi-GPU support. With Vulkan and DXVK, the setup tends to be smoother, but adjustments might still be needed. This isn’t exclusive to Bazzite—though I haven’t tested it, it’s a common issue across distros. Environment settings can also influence this behavior outside Steam. For instance, when using Mesa (Linux graphics stack), you can configure it to prioritize the second GPU for rendering with commands like DRI_PRIME=1 glxgears. While "1" usually selects the second GPU, it actually refers to the N-th non-default device, which is helpful for drivers. For proprietary NVidia drivers, additional flags such as __NV_PRIME_RENDER_OFFLOAD and __GLX_VENDOR_LIBRARY_NAME are often required. You can check more details about DXVK device filtering here. It’s usually practical to test these settings individually, perhaps starting with DRI_PRIME and GLX options before adding filters. If needed, you can make them global in environment files or user-specific configs. Keep in mind that Bazzite’s default settings may differ, so experimenting might be necessary.
Switcheroo KDE Start Menu Entry Right Click -> Edit Entry -> Advanced -> activate "run using dedicated graphics card". Desktop Icon Right Click -> Properties -> Application -> Advanced Options -> activate "run using dedicated graphics card". GNOME Right Click Application Entry -> Launch using Discrete Graphics Card Not Persistent. This step is usually necessary. It can be saved by modifying the desktop file and inserting "PrefersNonDefaultGPU=true". This allows the system to utilize the iGPU for general tasks and reserve the dGPU only for applications you specify. Certain programs may adjust this setting automatically. Heroic Launcher (Epic/GOG/Amazon) Default Settings for installs -> Game Defaults -> Other -> Use Dedicated Graphics Card Per Game (if installed) -> Game Settings -> Other -> Use Dedicated Graphics Card Bottles Prefix -> Settings -> Discrete Graphics -> Lutris Preferences -> Global Options -> Display -> GPU
This setup lets the app operate using the dGPU, providing a partial fix. Ideally, it should function across different programs.
It's great to hear that! The method you're talking about is the most direct way. I haven't been able to get it to function properly with an Nvidia dGPU on the distributions I use, so I've always relied on using environment variables. In theory, "switcheroo" should handle that. Even with a command like "switcherooctl launch -g 1 <command>", it should start the command on the chosen GPU. Unfortunately, both methods only work with AMD dGPUs, which is frustrating from a user perspective. I prefer GNOME's "Right Click -> Launch on dGPU" since it feels more familiar. It reminds me of what Windows did in the early days of Nvidia "Optimus." Maybe KDE should explore this as well. However, the reliability of these approaches across different distros remains inconsistent. A plus point is that general Linux experience, especially for non-technical users, has improved rapidly in recent years. Perhaps, hoping it works out, many of these issues will be resolved soon.