Join GitHub today
GitHub is home to over 40 million developers working together to host and review code, manage projects, and build software together.Sign up
I use Fedora 30 (kernel 5.2.14-200.fc30.x86_64) on a Thinkpad P50, which has an integrated Intel GPU and a separate Nvidia Quadro GPU. I use an external monitor connected to the HDMI output in addition to the laptop's own display. Until yesterday (with the 430.something driver version) the setup worked well: the laptop display was managed by the integrated GPU while the external monitor was driven by the Nvidia. nvidia-settings detected the laptop display as "PRIME display".
The update to driver version 435.21 broke this. The external monitor did not come out from power save, xrandr didn't even detect it, and nvidia-settings wasn't able to start properly.
I was able to find a workaround here: https://rpmfusion.org/Howto/Optimus - where it says to add
I think the reason of the breakage is hinted at in this driver version's official documentation: http://download.nvidia.com/XFree86/Linux-x86_64/435.21/README/primerenderoffload.html
"As of this writing, these commits are only in the master branch of the X.Org X server, and not yet in any official X.Org X server release."
Can you try to to comment the following line:
If this solves it, I will make a note about the mux vs muxless laptops
These have been pushed to the current X.org server package in Fedora 30+. Did you update recently?
If you set "PrimaryGPU", then the card is, well the primary one. Kind of defeats the point of the whole PRIME Offload thing. Can you try the snippet at the end of this page http://download.nvidia.com/XFree86/Linux-x86_64/435.21/README/primerenderoffload.html to force the GPU screens to be created?
If automatic configuration does not work, it may be necessary to explicitly configure the iGPU and dGPU devices in xorg.conf:
(Hopefully final edit, as I organize and state my findings here.)
I have this same issue, and I theorize that it's because our video outputs are wired to the NVIDIA card, which is theoretically not being used in this configuration unless activated.
Like Optimus under Windows, all of the standard rendering is being handled by the igfx and the NVIDIA card serves as an offload sink, only used on demand.
The feature that would make this work as expected is Reverse PRIME (ARCH Wiki on Reverse PRIME) and it does not appear to be supported under NVIDIA's offloading implementation. This can be verified by xrandr:
The outputs you are seeing are actually the outputs being exposed through your Thunderbolt 3 port, which is linked to the Intel card.
Naturally, these outputs will work when the GPU is set to Primary as the NVIDIA GPU is directly handling rendering and exposing those ports normally.
This means that the options you currently have to get your external displays working are:
Yeah, in this case the whole power off thing will not work. I guess there is no other chance than select one or the other.