Hacker News new | ask | show | jobs
by uep 2181 days ago
> Is this some kind of limitation with Linux itself?

Definitely not. I don't know the details of the grandparent's hardware, it's possible that there are some limitations with specific NVIDIA hardware, given the fact that NVIDIA does not have open source drivers.

I have had working hybrid NVIDIA graphics on my work laptop for eight years now I think. Basic functionality such as using one of the display outputs requires the dedicated GPU. The open source tool for controlling NVIDIA hybrid graphics is Bumblebee. NVIDIA's proprietary technology is called Optimus.

2 comments

I'm using a similar System76 laptop (Gazelle 14") with hybrid Intel/NVIDIA graphics—though running Debian, not Pop_OS!—and at least hardware acceleration works fine under both GPUs without rebooting. I'm using the primus-vk-nvidia package and a simple "pvkrun" prefix when starting a command will run it using the NVIDIA graphics card rather than the default Intel card. This passes the rendered framebuffer from the NVIDIA GPU to the Intel GPU via the Vulkan APIs, which are better suited for handling dissimilar GPUs simultaneously then the older OpenGL-based PRIMUS implementation.

As for the external displays, HDMI out seems to work on my system through the default Intel controller. I haven't tried the DisplayPort or USB-C interfaces. I do know that the proprietary NVIDIA drivers are incapable of efficiently scanning out graphics rendered on the Intel GPU using the standard Linux interface (xrandr --setprovideroutputsource). The NVIDIA driver can use outputs provided by other GPUs but won't provide its own outputs for other GPUs to use. All the guides I've seen say that if you want to output on the ports controlled by the NVIDIA card you have to make that your primary GPU, which of course impacts battery life.

Technically there are open-source drivers for NVIDIA cards (nouveau). And they do support the standard interfaces to let other GPUs control the outputs. They just aren't on par with the proprietary drivers performance-wise, and normally performance is the reason you want hybrid graphics in the first place. However, if you just to use the extra video output ports while rendering on the integrated GPU then the nouveau driver is a viable option.

> they do support the standard interfaces to let other GPUs control the outputs. They just aren't on par with the proprietary drivers performance-wise

Some softwares don't work on nouveau. For example, chromium GPU acceleration and QtWebEngine

That's fine. Those apps would be rendering with the integrated GPU (probably Intel). The nouveau driver would only be responsible for driving the outputs by scanning out from the buffers the other GPU rendered.
> The open source tool for controlling NVIDIA hybrid graphics is Bumblebee.

Setting up Bumblebee can be painful. And not guarantee to last.

I have a nice bumblebee setup with CUDA working, but when I updated the HWE (I think I go from zero HWE to 18.04.4 in one go), bumblebee broke down completely. And I stopped caring and just use prime-select.