How do I make everything use the DGPU on Fedora 40 for the Framework 16?

I feel like this is a somewhat silly question, and yet if there is an answer it is not clearly labeled.

I’m running Fedora 40 (KDE Plasma Spin) on my Framework 16, and it’s great… up until I fill all 4 of my variably scaled displays with stuff and open a bunch of tabs, then it’s like a potato.

By default the window manager et al do not use the DGPU I have installed, I know the reason is because the IGPU component is usually enough, but clearly this is not so for my use case. I want to at least try using my DGPU system-wide but I cannot find clear information on how this can be accomplished anywhere - in fact, searching for way to do this on the broader internet gives me steps for the doing the opposite, or just how to launch a single app on-demand with it, which I already know how to do and isn’t what I need. -_-

Is this some kind of wacky, forbidden arcane knowledge, or does nobody truly know how to make this work? Surely there is a buried option somewhere that will set this system-wide on modern Linux.

Exclusively using the dGPU is supported by the hardware, but it isn’t exposed as a BIOS option since it would result in dramatically worse battery life, and currently cannot be configured by the Linux drivers. See this thread for more information: [RESPONDED] MUX switch toggle in BIOS?

It is possible to exclusively use the iGPU for putting the final rendered image on the screen, but this will likely result in higher latency. The Arch wiki has a brief section on this configuration: PRIME - ArchWiki

No no no, my problem is unacceptable latency. I want to force system-wide use of the DGPU, not the opposite. It’s a desk queen most of the time, so battery life is completely unimportant.

LinuxMint with Cinnamon on my old laptop has a simple little toggle switch that does just that. Are you seriously telling me that this laptop, designed with Linux support explicitly, CANNOT do what a system that didn’t even consider Linux support at any time can?

I strongly suspect there is a process to either add the same kind of mode toggle I see in Cinnamon to KDE/Plasma or another means of setting it manually, it just seems that this is some kind of guarded secret or something everyone assumes everyone else knows. If someone has any idea what I need to do to get this, please break it down into simple, discrete steps as though I were a child, because I’m at a complete loss as to how anything in the article linked is actionable for me.

The Linux kernel mechanism you’re referring to is called vga_switcheroo. This interface was designed for early Nvidia Optimus laptops and is considered generally inapplicable to modern hardware.

Unlike this older hardware, on modern laptops the screen is generally expected to be driven by the iGPU in almost all cases, with the dGPU operating headlessly. The ability to drive the screen directly from the dGPU is intended as a minor optimization for full-screen games, and many laptops don’t support it at all. There is currently no Linux kernel interface designed for this.

See the past thread I linked with much more discussion on this subject.

1 Like