Ask any Linux developer for a top 10 rogues list of open source foes, and Nvidia is likely to appear near the top. Linus Torvalds affixed the chipmaker to the top slot in 2012 when he publicly saluted Nvidia with a middle finger and verbal condemnation to match. Torvalds noted that Nvidia represented “one of the worst trouble spots we’ve had with hardware manufacturers.”
This week, however, the Linux creator and overseer went on Google+ to write: “Hey, this time I’m raising a thumb for nvidia. Good times.”
Torvalds was referring to a Jan. 31 announcement on Freedesktop.org by Nvidia developer Alexandre Courbot of the release of “experimental” driver patches for the “GK20A” Mobile Kepler graphics processing unit inside Nvidia’s upcoming Tegra K1 system-on-chip. The “proof-of-concept” code includes patches that “perform architectural changes to Nouveau that are necessary to support non-PCI GPUs and add initial support for GK20A,” wrote Courbot.
Some of the patches focus generically on the community-developed, reverse-engineered Nouveau drivers for Nvidia graphics cards, expanding support beyond the PCI-centric x86 PC world to mobile processors. The bulk of the patches specifically address the Mobile Kepler GK20A GPU found in the quad-core, ARM Cortex-A15 Tegra K1.
“Although the support is still very basic and more user-space changes will be needed to make the full graphics stack run on top of it, we were able to successfully open channels and run simple pushbuffers with libdrm,” wrote Courbot, a software engineer at Nvidia, Japan. Among other things, the patches update subdev/engine drivers to support the GK20A, support GK20A probing, and add a memory driver that simulates dedicated video memory.
Nvidia Opens Up
The K1 is expected to ship in mobile devices in the second quarter. Although Windows will appear on some of these devices, the processor is primarily aimed at Android smartphones and tablets, as well as Nvidia’s own Nvidia Shield gaming device. Considering the ferocious competition with Samsung, Qualcomm, and potentially other mobile chipmaker upstarts like Allwinner and Intel, it’s not surprising that Nvidia is looking to open up. The company clearly wants to woo a broader range of Android and mobile Linux developers who are not typically clued in to the mysteries of its GPUs.
Back in September, Nvidia began reaching out to the open source community with a promise to unveil more public documentation on its GPUs. The company subsequently released some minor documentation. The Nouveau patch release is far more consequential, despite its preliminary nature.
Nvidia’s open source outreach is also reflected in its alliance with Valve and its open source Linux-based Steam OS gaming platform. Valve’s Steam Machine developer system, as well as most of the 14 Steam Machines announced by third parties at CES last month use discrete Nvidia GeForce GTX graphics cards, matched with x86-based, mostly 4th Generation Intel Core “Haswell” processors.
Nvidia unveiled the Tegra K1 last month at CES. The new Tegra far outshines mobile SoC competitors like Samsung Exynos and Qualcomm Snapdragon with a 192-core GPU based on its desktop Kepler technology. Nvidia claims the GK20A is faster than the Nvidia GeForce-driven PlayStation 3 or the desktop-oriented GeForce 8800 GTX graphics card. Still, it’s far shy of the 3,072 Kepler cores in the latest desktop-targeted GeForce GTX Titan graphics card, or the 768 cores in the laptop-class GTX 765M.
Mobile Kepler’s new inter-unit interconnect and other optimizations are said to significantly trim power consumption, claims Nvidia. The Tegra K1 also adds support for OpenGL 4.4, OpenGL ES 3.0 and DirectX 11.
Escape from Graphics Blob Hell?
Nvidia is not the only chipmaker to make life tough for mobile developers by sealing away the GPU with a proprietary binary blob. It is, however, notorious for hiding the technical details of its chips from developers outside the company’s tight inner circle.
In our story last week on the fully free and open source Replicant 4.2 Android ROM, Replicant developer Paul Kocialkowski explained how proprietary blobs and an increasing dependence on OpenGL prohibited any of Replicant’s Android device builds from including 3D graphics acceleration. According to Kocialkowski, the ARM Mali-assisted Exynos and Allwinner SoCs were the easiest SoC platforms to support with fully free code, with the Snapdragon farther behind, and Tegra and PowerVR-based processors down at the bottom of the list.
Desktop PC developers have been facing similar problems with Nvidia for years. Recent benchmarks at Phoronix showed that the reverse-engineered Nouveau drivers could greatly benefit from Nvidia contributions. In comparing Linux graphics driver performance between 4th Generation Core chips with Intel HD Graphics, AMD’s RadeonSI Gallium3D, and Nvidia GeForce, Nvidia lagged behind considerably.
Leading the list of problems is Nouveau’s lack of “proper re-clocking / power management support,” writes Phoronix’ Michael Larabel. As a result, while applauding Nvidia’s move, Larabel more recently wrote that “the binary Nvidia driver will likely be the preferred option for the foreseeable future given that Nouveau is still stuck to GL3 compared to NVIDIA’s OpenGL 4.x hardware, the performance is many times better, and there’s numerous other features not found in the open-source NVIDIA driver at this time.”
Still, if Linus is smiling, the Nvidia release is the start of something very nouveau, indeed. Good times.