Last February there was the first bits of hybrid graphics support
under Linux when Red Hat's David Airlie began working on what he called "vga_switcheroo." The vga_switcheroo support allowed switching between multiple graphics processors -- primarily for notebooks -- by issuing a few commands and restarting the X Server. This work was later merged into the mainline kernel
, but as of late there hasn't been much more to say.
The vga_switcheroo support is living in the mainline kernel, but it's far from being at the same level of support as what's available for hybrid graphics notebooks in Windows and even Mac OS X. (One item to note is that for those using the AMD Catalyst Linux driver, there is now PowerXpress support under Linux
.) It also doesn't work with all hardware. However, now there's a new project: ASUS-Switcheroo. The ASUS-Switcheroo kernel module was started by another Red Hat engineer and is designed to better the support for some ASUS laptops.
ASUS notebooks with "hybrid graphics" commonly boast Intel integrated graphics with a discrete NVIDIA GPU so that when running on battery power or don't need the extra graphics rendering power, the low-power Intel graphics are used, but when there's a need, the graphics can seamlessly switch to coming from the NVIDIA GPU.
The ASUS-Switcheroo module though doesn't support the ASUS Optimus laptops at this point. Hybrid graphics support on Linux has been poor
and NVIDIA doesn't have plans to support their Optimus Technology on Linux
. Right now this ASUS-Switcheroo support is limited to those with the basic WMI MXM interface switching such as the UL30VT notebook.
The ASUS-Switcheroo module does still depend upon vga_switcheroo and writing to its respective debugfs nodes. It also introduces an i915-jprobe module for working around an Intel driver bug. Additionally, there's also experimental support in the ASUS-Switcheroo module for switching to/from the NVIDIA proprietary driver rather than just the open-source Nouveau driver.
While this may seem like a major advancement, this ASUS-Switcheroo module just amounts to a little over 100 lines of code. There's also pending upstream patches for Linux 2.6.40 that would make ASUS-Switcheroo not needed, but this could serve as a workaround for existing ASUS notebooks. With that said, this kernel module will likely not be seen for mainline kernel inclusion.
More information on the ASUS-Switcheroo kernel module can be found on the GitHub project page