David Airlie has announced work on "Reverse Optimus", which is a new approach he's taking for poking laptops with multiple GPUs, namely the NVIDIA Optimus
laptops with a discrete NVIDIA GPU and integrated Intel graphics.
While there's been progress made in bettering the support for NVIDIA Optimus hardware under Linux, it's still far from perfect. Additionally, hitting the milestone of being able to switch compositors on-the-fly is going to require a lot more work. However, David Airlie has hacked together "Reverse Optimus" as a stop-gap measure.
David Airlie announced Reverse Optimus on his blog. He describes this concept as, "The intel still renders the compositor, however it can use the nvidia to output slaved pixmaps. This is totally the opposite of how the technology was meant to be used, and it introduces another copy. So the intel driver now copies from its tiled rendering to a shared linear rendering (just like with USB GPUs), however since we don't want nouveau scanning out of system RAM, the nouveau driver then copies the rendering from the shared pixmap into the nvidia VRAM object. So we get a double copy, and we chew lots of power, but hey you can see stuff. Also the slave output stuff sucks for synchronisation so far, so you will also get tearing and other crappyness."
While this implementation isn't the best, he's looking at possibly upstreaming the work. "There is also a secondary problem with the output configuration. Some laptops (Lenovo I have at least), connect DDC lines to the Intel GPU for outputs which are only connected to the nvidia GPU, so when I enable the nvidia as a slave, I get some cases of double monitor reporting. This probably requires parsing ACPI tables properly like Windows does, in order to make it not do that. However I suppose having two outputs is better than none :-) So I've gotten this working today with two intel/nvidia laptops, and I'm contemplating how to upstream it, so far I've just done some hackery to nouveau, that along with some fixes in intel driver master, and patch to the X server (or Fedora koji 1.13.1-2 server) makes it just work."
Read more on David Airlie's blog