Kernel comment: Bad show, NVIDIA!
by Thorsten Leemhuis
NVIDIA's graphics driver supports hybrid graphics now. As in other areas, NVIDIA took it easy, waiting until other people had done the dirty work building the necessary foundations.
Linus Torvalds cursed out NVIDIA ten months ago when he was asked about the lack of Linux support for Optimus, NVIDIA's hybrid graphics technology. NVIDIA has now released a beta of its proprietary Linux graphics driver which finally supports Optimus. The sad thing here is that NVIDIA will be praised for the Optimus support, even though they sat back and waited for quite a while to let others build foundations they now use in their driver, which is fairly popular among users, but fairly hated among open source developers.
To add Optimus support, NVIDIA is using parts of the Prime infrastructure in the Linux kernel and X server which were built to let open source graphics drivers provide experimental support for hybrid graphics technologies for a few months now. Prime was mainly developed by Red Hat's Dave Airlie, who worked closely with developers at Intel, Texas Instruments and other companies, which contributed code as well as feedback regarding the driver interfaces.
NVIDIA developers played a minor role and only became more active when they realised that some of the Prime functions only worked for GPL-compatible code. They called for the limitation to be done away with, sparking a debate among the kernel developers and winning some support for opening up the interfaces. Opponents of the idea won the argument, however, so NVIDIA developers, with Airlie's blessing, built a backdoor in Linux kernel 3.9 in order to still be able to use pieces of Prime. These are the functions that NVIDIA is now using in the beta of its new driver, which also makes use of the hybrid graphics functions, developed by Airlie, in new X servers.
There's no legal case for NVIDIA to answer here, as long as we ignore the issue of whether the kernel module for NVIDIA's graphics driver jibes with the Linux kernel's licence, a subject that's been debated many times over the years. Still, NVIDIA is benefiting once again from the Linux kernel and X server developers' hard work without themselves contributing anything significant to building the infrastructure that Linux and NVIDIA's driver needs to support graphics hardware both now and in the future.
NVIDIA gets away with this egotistical behaviour because users praise them and Linux computer manufacturers don't demand open source drivers enough. AMD and Intel, on the other hand, are looking at the big picture and are actively working on open source development, even if they occasionally develop something that benefits the competitor's hardware as well.
The history of WLAN drivers for Linux shows how important this kind of involvement is. Just a few years ago, setting up and using WLAN chips was generally a huge pain because so many companies were doing their own thing with drivers that were maintained independent of the Linux kernel. Thanks to kernel developers getting involved and some companies having a change of heart, the companies behind all the biggest WLAN chips are now working on open source drivers in the Linux kernel. Like AMD and Intel's open source graphics drivers, Linux distributions now automatically configure these WLAN drivers, which means that Linux users, at least most of the time, no longer have to give them a second thought.
Many manufacturerers of SoCs (systems on a chip) for embedded systems with Linux have also realised the importance of co-operating on the continued development of open source projects if they want Linux to work well on their hardware. Even NVIDIA's Tegra SoC team actively contributes to the ARM area of Linux development, not only with graphics drivers and other open source code for their own Tegra SoCs, but also with improvements to the infrastructure that benefit Linux as a whole. We can only hope that management in the graphics chip department sooner or later learn the benefits that this co-operation has for everyone – after all, contributions that benefit more than just the companies that developed them have made Linux the incredible system that it is today.