Commit e496eb6a authored by's avatar
Browse files


= Nvidia Optimus =
Optimus means having an Nvidia GPU and another (always Intel?) GPU in a laptop. It may require that the Nvidia GPU has the PCOPY engine, but other than that, it is pretty much just a marketing term for a dual-GPU laptop.
== Why is Optimus a huge problem? ==
In short, it is a mess.
A graphics card has a GPU, some memory which may be dedicated (VRAM) or just a piece of system memory (like in many IGPs), and outputs (connectors) where you plug in a monitor. Also the laptop internal display panel is a monitor in this sense.
What makes Optimus a mess is, that you do not know what outputs are connected to which GPU, or if there is a hardware switch (a mux) in between. The mux would be controlled in software.
The mux, if it exists, can used to select which GPU drives the internal panel. Or, which GPU drives the external monitor. Or, both.
Also, it is possible, that a GPU is hardwired to the internal panel, so the other GPU cannot drive the internal panel. The same with the external monitor output, it may be hardwired to one of the GPUs, or there might be a mux. Basically, you can have ''any'' combination of these possibilities. There is no standard how to wire things, and there is no standard for detecting how things are wired.
Detecting the wiring is only difficult. The hard part comes, when you do rendering on a GPU, that cannot drive the output you want. Or the GPU may not be able to drive ''any'' of the outputs. To get the rendered result onto a display, you need to copy it somewhere, where the other GPU, that does drive the output, can access it.
So, we are just missing a simple framebuffer copy, right? Well, we are also missing the whole infrastructure in the kernel DRM drivers, X drivers and the X server itself to support Optimus. Not even the proprietary drivers support it on Linux, save a few exceptions.
On the other hand, power saving is a key point of Optimus, and switching off a GPU is relatively easy. If a mux exists and the hardware manufacturer was sane, you might already be able to choose which GPU you use exclusively in your current session. Or you might be able to power off the unused GPU. Everything else is hard.
== What works right now ==
If your laptop has a hardware mux, the kernel switcheroo driver may be able to set the wanted GPU at boot. There are also hacks based on the switcheroo, like asus-switcheroo, but they offer no extra value. If one of the hacks happens to work, and the switcheroo does not, the switcheroo has a bug. There might already be pending patches waiting to go towards the mainline kernel.
In all other cases, you are stuck with what happens to work by default. No switching, no framebuffer copying. Yet.
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment