Linux creator Linus Torvalds criticized Nvidia in 2012 at Aalto Talk as “the single worst company we have ever dealt with.” Along with him many other members of the open source community previously criticized Nvidia’s proprietary hardware and software, which made open source alternatives difficult.
But in reaction to Nvidia’s recent announcement where Nvidia said to improve performance on Linux, Torvalds said, “Hey, this time I’m raising a thumb for Nvidia. Good times.”
A Nvidia Linux engineer Alexandre Courbot has published a new set of patches for providing initial hardware support for the GK20A (Kepler-based GPU) graphics core inside of Nouveau, the open-source NVIDIA Linux driver. These kernel patches paired with a modified Mesa driver yield an open-source combination that can start to run shaders and render triangles. Nvidia, one of the biggest GPU manufacturers in the world, made a series of code contributions to the open-source project Nouveau lately, signaling a possible thawing of relations with the Linux community.
“Nouveau” [nuvo] is the French word for new. The nouveau project aims to build high-quality, free/libre software drivers for Nvidia cards. It is the open-source NVIDIA graphics driver that has been in development for years as a community-based, reverse-engineered implementation of NVIDIA’s closed-source Linux graphics driver.
Nvidia took a neutral stance on Nouveau until 2013 when it began supporting the project with limited code and documentation beginning to appear. Nouveau consists of an open-source kernel DRM driver, Gallium3D drivers, and xf86-video-nouveau DDX. The Nouveau project, which produces an open-source alternative to Nvidia’s proprietary driver, was the beneficiary of the company’s previous attempt at an olive branch, a documentation release, in September 2013.
The first part of the series (patches 01/09) adds support for platform devices to Nouveau. This part can be considered independently from the actual GK20A support. The second part (10/14) updates existing subdev/engine drivers to support GK20A, and adds a very simple memory driver that simulates dedicated video memory by allocating a large system memory chunk at boot time. Finally, support for probing GK20A is added in the last 2 patches. It should be noted that contrary to what Nouveau currently expects, GK20A does not embed any display hardware. So this driver should really be only used through DRM render-nodes and collaborate with the display driver using PRIME.
The new contributions focus on Nvidia’s Tegra line of GPUs for mobile devices, but embedded software engineer Alexandre Courbot said in a post to a mailing list that the code would be helpful for those working on drivers for other Nvidia hardware. He mentioned, “This work should be considered as a RFC and a proof-of-concept for driving future Tegra GPUs with Nouveau. This is very encouraging, and it will be interesting to keep improving this support and see where this gets us.”
He also added that, “The scope of this work is strictly limited to Tegra, and we do not have any plan to work on user-space support. So do not uninstall that proprietary driver just yet.”
Even if its scope is limited, the contribution is a crucial step forward in Nvidia’s relationship with the world of open source. Considering all these facts what we can say is, “Its better late than never”.
Source: Phoronix.com, Freedesktop.org