Autodesk Maya runs in Linux systems as a charm, fast and stable, you may have experiment it if working in some of the large studios which uses Maya Linux extensively, so let’s say you are used to Linux and decide to install Maya at home but if your computer has an NVidia Optimus GPU, and all modern laptops has this kind of card, you are going to get in troubles because NVidia hasn’t released a proper driver for Optimus GPUs in Linux and it seems they haven’t plans to release it, so what to do?
What is an Optimus GPU?
Optimus cards are actually a dual GPU, one card( INTEL) is welded in the motherboard and connect directly to the screen, this card is very limited, just able for 2D drawing and basic 3D features, not valid for using Maya, specially it can´t support Viewport 2.0, then there is another card( NVIDIA), a more powerful GPU which handles all the heavy 3D stuff, it is supposed this card auto activates when the system detect the application you are using needs demanding 3D features. The idea of a dual GPU is nice, because you save battery power by using only the basic card when running 2D applications or system menus and heavy 3D features are enabled by applications or games which needs it saving your battery and besides keeping the laptop temperature lower, all of this happens in Windows system but not in Linux because the lack of a proper driver by NVidia.
Making it work
There are two different strategies for making Optimus work in Linux, the simplest one is deactivating the INTEL card in BIOS so the system is forced to use the NVIDIA card always at the expense of your battery power, sadly only a few hi-end laptops allows to setup this feature in BIOS.
The other way is using a software bridge between both cards, at the beginning there was only BumbleBee, an independent software project which uses VirtualGL or Primus to communicate both GPUs, there is a performance penalty when using these libraries and besides it doesn’t work with all applications, sadly Maya is one of them, in our tests using BunbleBee Maya launches with Viewport 2.0 but it crash by simple interactions with the keyboard, so no way.
Luckily in the middle 2016 NVidia itself fixed partially its Linux drivers to can do the switch between both cards in a fast way by using what is called NVIDIA-PRIME capabilities, this mechanism has a few limitations and needs an special configuration of your system to work which sadly it isn’t explained clearly in NVidia docs.
We have been able to install NVIDIA-PRIME in an Optimus laptop with CentOS7 following this excellent guide by Ezequiel Mastrasso,
guide to install NVIDIA-PRIME in Centos 7
Some comments about our own experience with installation if this can help to someone:
In step 2 of the guide Ezequiel says a Xorg with ABI 24 is needed but according to NVidia ABI 23 is supported and actually our system is using elrepo kernel 4.19 which features Xorg ABI 23.
In step 18 of the guide our system turned black screen, but rebooting and skipping directly to step 19 did the trick, the rest of the guide worked perfectly for us.
Actually our system is a dual boot Windows 10 /Centos 7, this didn’t affect in anything the installation of NVidia-PRIME.
Finally before starting the Optimus setup we recommend to install and run nvidia-detect by elrepo, this little utility will shows up the exact NVidia driver your system needs and also check compatibility with your current Xorg server and displays its ABI number.
In our tests using this setup Maya Viewport 2.0 works perfect and Unigine benchmark seems not having any noticeable performance loss by using NVidia-PRIME .
Nevertheless, as Ezequiel mention this configuration is pretty sensitive to system changes, for example in our case NVidia-PRIME mechanism got broken just by installing the mesa-lib-GLU library, but luckily reinstalling the Nvidia driver again fixed it instantly, anyway it is a good idea to make a system backup when you manage to get it working just in case.
Hope this article helps you to enjoy Maya linux and of course Pulldownit plugin in your brand new Optimus laptop!