Primus: Better Performance And Less Power Consumption For Bumblebee [Optimus Hybrid Graphics Chipsets]
Nvidia Optimus is a technology used to increases battery life by switching between two graphics adapters (a low-performance integrated Intel graphics adapter and a high-performance one by Nvidia) within a computer system. Optimus GPU switching is officially only supported on Windows, but it’s also unofficially available on Linux thanks to the Bumblebee project.
Primus brings better performance and less power consumption when using Bumblebee, by replacing VirtualGL. According to the Bumblebee G+ page, this has the following advantages over the optirun (VirtualGL) solution used by default in Bumblebee:Less overhead (better framerates) and cleaner solution (no networking or compression involved at all)Fixes the “bug” that causes Bumblebee to shut down the GPU too early sometimes (no more need for the “optirun bash” workaround)Less buggy/glitchy, easier to debugOnly uses/starts secondary GPU for OpenGL parts of applications – everything else remains on your main GPU (power savings)
The Bumblebee developers explain what Primus does and the difference between Primus / optirun in simple terms in a comment on their G+ page:
Bumblebee uses VirtualGL to copy the image generated by the second (faster) GPU to your display. VirtualGL was intended for use over a network though, so it takes a great many steps to enable this (compression, sending the image over a network link, decompression, etc).
Primus doesn’t perform all these “extra” steps, instead taking a more direct route (copying the rendered image in memory to the other GPU, then displaying there). In theory this should get you better performance as well as better compatibility. Running applications will “see” the OpenGL implementation of your real hardware, nothing virtual is presented to them.
For comparison, here are the framerates I get on my laptop when using the integrated Intel graphics, when using the Nvidia graphics card using optirun and using primusrun (this is just for FPS and not an indicator for the whole performance!):
Integrated (Intel) graphics
optirun (default in Bumblebee) using the Nvidia GPU
Primus using the Nvidia GPU
As you can see, the FPS using