For more information, join the team subscribe to the mailing list 
at the bottom of the Launchpad page 

Please join this team if you are new by clicking on the "Join 
Team" link at the right of the Launchpad page. It's important to 
have as many users in the community as possible to request for 
appropriate support.

Thursday, 11 March 2010

NVIDIA Optimus and Linux: an update

Optimus is a way of taking over the processing of DirectX/OpenGL calls the moment they're made. Optimus works by leaving the Intel's Display Driver to display image on the screen and actively monitoring everything that is happening in relation to displaying image. The library of applications inside nVidia's driver will automatically react and switch to the GPU as soon as it detects application profile where nVidia's GPU would do much better than integrated graphics.

Using NVIDIA's Optimus technology, when the discrete GPU is handling all the rendering duties, the final image output to the display is still handled by the Intel integrated graphics processor (IGP). In effect, the IGP is only being used as a simple display controller, resulting in a seamless, flicker-free experience with no need to reboot. When less critical or less demanding applications are run, the discrete GPU is powered off and the Intel IGP handles both rendering and display calls to conserve power and provide the highest possible battery life.

The hardware component Optimus-capable GPUs is the "Optimus Copy Engine", a parallel pipeline next to the 3D Engine one. What Copy Engine does is to take the finalized rendered engine created by the 3D Engine and copy the contents from on-board memory to the system memory - which is then taken by Intel's IGP and displayed on frame-by-frame basis. The Optimus Copy Engine is a new alternative to traditional DMA (Direct Memory Access) transfers between the GPU framebuffer memory and main memory used by the IGP.

In the Microsoft Windows world, Optimus technology leverages Windows 7's ability to allow two independent graphics drivers to be active at the same time. The standard Intel graphics driver is used along with the NVIDIA driver because both display adapters operate independently. Looking within the Windows Device Manager, you'll see two display adapters listed even if Optimus has turned the GPU off.

The Linux community now needs people who are going to figure out how to activate two graphics drivers at the same time. Also, how to switch the mux between the integrated graphics and the discrete card. In nvidia/nvidia configurations, how to access the discrete ROM also needs investigating.

Although the open-source Nouveau community has been very active since their merge to the mainline kernel, nobody seems to have shown interest in getting Optimus hardware to work in Linux. From the users pointo of view, we already have Linux users with optimus laptops, willing to provide useful debugging information via the hybrid-graphics-linux Launchpad group:

Hopefully thinks will get better soon, and the usual lag that takes for Linux to implement features in the graphics world will be shorter than usual for Optimus-enabled laptops and desktops.