Nouveau Project Has Huge Surprises Today
This morning I wrote about the launch of the NVIDIA GeForce GTX 680 as the first-to-ship NVIDIA GPU based upon their brand new Kepler architecture. At the start of the morning it looked to be the usual NVIDIA launch: binary driver support should be in place with an official driver update due out at any time and it would mark the start of the usual Nouveau driver game of reverse-engineering the support in the coming months. With Fermi and past NVIDIA generations there's never been same-day open-source Nouveau support in any form, but it's generally taken months to get the display to light-up with KMS.
Moments after that Phoronix article went live this morning, there was a shocking commit to the Nouveau DRM repository. Ben Skeggs of Red Hat made a commit entitled "drm/nve0: initial modesetting support for kepler chipsets" (0a606b). With just about 50 lines of code, Ben Skeggs has managed to get KMS-based mode-setting support for Kepler. It seems that he can get a GeForce GTX 680 to light-up on Nouveau by using existing NVC0/NVD0/NV84/NV50 functionality. There really isn't any fundamentally new code to this initial Kepler Nouveau "NVE0" mode-setting support. (The Nouveau developers have previously believed the GeForce 500 NVD0 / GF119 parts used Kepler-like mode-setting.)
There isn't any acceleration support yet for Kepler or anything besides mode-setting on Nouveau, but this is welcoming at least so early Kepler adopters won't need to fall-back to the xf86-video-vesa driver and likely some less-than-ideal resolution. What's surprising besides how easy the Kepler mode-setting support went is that it's launch-day support, which the Nouveau driver has never achieved previously. The Nouveau driver isn't officially supported by NVIDIA Corp but generally they're left to reverse-engineering. Yet for today's GTX 680 launch Ben Skeggs not only somehow had a GTX 680 Kepler in advance but also managed to get it driving a display in time.
So how did this Nouveau developer at Red Hat get early Kepler access? Did NVIDIA have a hand in this community upbringing? Ben hasn't publicly said yet (it's night-time in Australia where he's based at the moment) and other Nouveau developers aren't exactly sure. Nouveau developers have expressed interest in better collaborating with NVIDIA.
The other interesting Nouveau news for this morning: Nouveau is leaving staging! With the Linux 3.4 kernel, the Nouveau driver will finally be considered part of the mainline Linux kernel as a proper DRM driver. This also means they're committing to a stable ABI for the Linux kernel and have bumped their DRM version to 1.0.
With this bump to 1.0, there isn't any final ABI breakage in the Nouveau driver. For those that don't remember, Nouveau entered the staging area in late 2009 with the Linux 2.6.33 kernel after Linus Torvalds was getting irritated about Nouveau not being mainline while shipping in Fedora, etc. Linus got his wish and Nouveau was quickly tidied up and sent into the kernel.
While living within the staging area, there was one heated and controversial ABI break to the Nouveau KMS/DRM driver.
This is a great day for Nouveau and an important milestone for this community-spawned open-source NVIDIA project. The Nouveau driver is still slower than the NVIDIA binary driver, doesn't support all of the features yet, power management is not on par, and there's other shortcomings, but the driver has progressed immensely over the years. Prost to all Nouveau developers who have worked on the project over the years!
There's also another potentially interesting development within the Nouveau camp. On IRC, a NVIDIA employee was actively recruiting Nouveau developers to try to join the company. A NVIDIA employee was inviting Nouveau employees to send in their résumés and that they also have "great internship programs." In particular, brought up was that they have an open-source Linux kernel team on the mobile side (Tegra; albeit the user-space right now is still closed-up) where they wouldn't have to dance with the binary blob. It was just earlier this month that NVIDIA joined the Linux Foundation, likely for expanding their mobile Linux focus.
Below is git pull message concerning Kepler and the Nouveau de-staging.
This pull request is unexpected and not something I had mentioned previously.Again, nice job to all those involved. Be sure to come to XDS2012 Nürnberg for another Phoronix-sponsored free beer event, which will be even better than the 2011 free Phoronix beer at XDC2011 Chicago.
so NVIDIA announced new Kepler GPUs this morning, and Ben has killed himself getting modesetting support for them together to have on launch day. Most of the code to support the new chips has already gone in, however this pull contains a few more pieces along with the final enables so the driver binds to the new Kepler cards. Its quite amazing that nouveau can support a GPU on its launch day even if its just unaccelerated modesetting, and I'd like to have support in the next kernel.
In order to sweeten the deal, Ben has also requested nouveau destage and become ABI stable, the only change is the version number bump which he prepared userspace for quite a long time ago. The driver hasn't broken ABI since that one big break that caused a lot of fuss.
It's also quite a small set of code, and not likely to break anything.