NVIDIA Posts Working "GK20A" Support For Nouveau
A NVIDIA Linux engineer has published a new set of twelve patches for the open-source Nouveau driver. These kernel patches paired with a modified Mesa driver yield a open-source combination that can start to run shaders and render triangles.
Alexandre Courbot of NVIDIA published these patches for providing initial hardware support for the GK20A graphics core inside of Nouveau, the open-source NVIDIA Linux driver that originally started out via community reverse-engineering. It was only in September of last year that NVIDIA officially decided to start helping out Nouveau in ways they can -- we've seen some patches surface, clarification of some technical items that have troubled Nouveau developers, and some very basic documentation. However, there have yet to be any huge desktop GPU code drops or public documentation dumps like we see from AMD and Intel, but this work on the GK20A is getting close.
The GK20A is the Kepler-based graphics core found within the Tegra K1, NVIDIA's very powerful next-generation ARM SoC that will eventually feature 64-bit ARM cores and a graphics core derived from their mainline Kepler architecture. While there's been separate work in the past on Tegra "GeForce" graphics, with Tegra K1 and beyond they're on the same architecture as the desktop GeForce graphics and can be relying upon the same driver code-base.
In early February NVIDIA began working on open-source Tegra K1 support for Nouveau. While NVIDIA currently isn't planning desktop Nouveau patches, on the mobile side with the Tegra K1 they are planning to ensure there's working code in place to support the GK20A core. We have seen some patches while the patches coming out today in this second patch-set provide the actual hardware enablement for the GK20A inside the Nouveau DRM driver.
The set of twelve patches have the actual chip support and work to the point where a slightly-modified version of Mesa with the Nouveau Gallium3D drivers can run shaders and render triangles on GBM. There's still a few hacks to work through and the Nouveau Gallium3D changes have not yet been published by NVIDIA, but this overall is a big milestone.
From these patches we learn that the GK20A core resembles the "NVE4" graphics processor, what is officially the GK102~GK106 GPUs. This graphics core was the first Kepler family part and is what's found in the GeForce GTX 660 Ti, GTX 680, GTX 760, and other early GeForce 600/700 graphics cards. Much of Nouveau's NVE4 code works for the Tegra K1 GK20A graphics.
These brand new Nouveau patches for bringing up the GK20A can be found on the DRI-devel mailing list. While the Linux 3.14 kernel has yet to be released, it's probably unlikely to see these new patches merged for the Linux 3.15 kernel given the review time, length of the merge window, etc. The user-space Gallium3D patches for the GK20A remain to be seen. There's also open questions like how the performance / battery life would be on this driver, given that Nouveau currently doesn't support dynamic power management / re-clocking and the Nouveau Kepler support isn't in the best shape.
While NVIDIA is working on this open-source Tegra support, their official graphics driver on Linux and Android will be the binary-only NVIDIA graphics driver. Their mainline NVIDIA Linux driver will work with the hardware and since last year they ported their binary GPU driver to ARM.
In terms of the Tegra K1 hardware, there's no official release date yet on the first K1 devices but last week when I was out at GDC 2014 I was trying out a few reference designs and found the Tegra K1 to be wonderful and very efficient, at least under Android with the binary NVIDIA driver. The 32-bit K1 will have a quad-core Cortex-A15 MPCore R3 with low-power companion core while the first 64-bit K1 is expected to be a dual-core "Project Denver" chip. The Kepler-based GK20A GPU has 192 GPU shader cores, a reported 950MHz clock speed, and is reportedly capable of 364 GFLOPS.
Latest Linux Hardware Reviews
Latest Linux Articles
Latest Linux News
Latest Forum Discussions