Nvidia Optimus

By Blue2k on Friday 28 December 2012 23:16 - Comments (5)
Category: -, Views: 2.961

One of the first things I do when I buy a new computer? Get Gentoo installed on it. I find it's the best way to get familiar with the new hardware and somehow feel like I'm in control over this new piece of machinery. Sure, getting it installed on the MacBook Pro that I bought a couple of years ago was no small feat. It took me about a month to get it all working natively (EFI) and supporting switching between the integrated Intel GPU and the dedicated ATI GPU... But boy, did I learn a lot about EFI and grub2 in the process.

I just bought the new Razer Blade, which comes with an NVidia 660m GTX and an integrated Intel HD 4000 chipset (Ivy Bridge). Assuming it followed the same pattern as the MacBook Pro that I own, I tried getting the dedicated NVidia chip set up to run Xorg on. I'd then worry about getting the Intel chip enabled later. Ironically, the only chip I could get recognized was the Intel chip... The NVidia kernel module could not find any NVidia hardware.

Enter Optimus... I was somewhat puzzled by my Gentoo experience on this laptop and started looking around on the internet. I had read about this laptop featuring 'Optimus' but I somewhat wrote it off as a buzzword. The Wikipedia page however started to change my perception a little. It appears that the two GPUs have a symbiotic relationship, as opposed to the 'friendly' relationship they had in older laptops. The dedicated GPU can not function without the integrated GPU! The dedicated GPU renders into the integrated GPU's frame-buffer when active. This allows for a combined final result where only part of the screen is rendered by a dedicated GPU.

As I looked back at the somewhat confused output from the NVidia kernel module I wondered how many properties I would have to add to my xconfig file to get this all to work. Only to then realize that all the configuration in the world wouldn't help with my kernel module. I headed back to Google and ended up at the Bumblebee project. It's an opensource attempt to get the Optimus technology to function on Linux. Reading a bit more on the forums there I learned that NVidia has no intention to support Optimus with the proprietary NVidia Linux drivers... It managed to get them the finger from Linus.

So, the approach to getting a laptop with Optimus technology to run Xorg is to configure Xorg with the Intel GPU and then use Bumblebee to get the dedicated GPU activated. The only way to leverage the dedicated GPU at that point is to launch applications with Bumblebee's 'optirun' executable which will then render the application's graphical output into the integrated GPU's frame-buffer. While I applaud the technology in principle, I'm very disappointed with the total lack of support from a Linux perspective.