The Nouveau Companion, the newsletter by the Nouveau driver developers about the progress on their NVIDIA reverse-engineering challenge for creating an open-source NVIDIA Linux driver, has its first new issue in nearly two years.
While we are only half-way into the Linux 2.6.38 kernel development cycle with there still being a number of weeks before its formal release, there is already a reason to look forward to the Linux 2.6.39 kernel if you use -- or plan to utilize -- the open-source Nouveau graphics driver for NVIDIA graphics cards. What's there to be excited over is page-flipping being enabled by defaultfor the NVIDIA GeForce 400/500 "Fermi" and GeForce 8/9/100/200/300 "NV50" graphics cards.
The Nouveau (and PathScale) developers working on reverse-engineering the NVIDIA Linux binary driver in turn to write a free software driver with 2D/3D acceleration for all of NVIDIA's graphics processors, have another accomplishment under their belt today. They've now merged the NVC0 (a.k.a. "Fermi") acceleration support into the xf86-video-nouveau DDX driver.
Canonical has been using the Nouveau DRM/KMS driver since Ubuntu 10.04 LTS for providing 2D acceleration and kernel mode-setting for NVIDIA hardware on an open-source driver by default, but they haven't yet shipped the Nouveau Gallium3D driver that would provide OpenGL acceleration support (along with OpenVG, OpenGL ES, and the other APIs accelerated by Gallium3D state trackers). Their reasoning for holding back on shipping the Nouveau Gallium3D component by default (though it is available through an experimental package) has been that the upstream Nouveau developers haven't yet declared it stable and are unwilling to take bug reports against the driver. Canonical though may be in the process of reevaluating their Nouveau Gallium3D decision and this 3D driver could end up appearing in Ubuntu 11.04.
While the Nouveau driver may not yet have a stable Gallium3D or DDX driver release nor does it have capabilities like stabilized power management or OpenGL 3.x, if you want to overclock your NVIDIA graphics card with this open-source driver, you can now do so today. Martin Peres who has been working on Nouveau power management support and timing management, has produced a patch to support custom clock manipulation of the NVIDIA graphics card's core clock, memory clock, and shader clock speeds. The voltages can also be manipulated too whether you are manually overclocking or underclocking your GPU with this Linux kernel DRM driver.
Three days ago we passed along the latest information on the PSCNV driver, which is a fork of the open-source Nouveau driver for NVIDIA graphics cards, with this information coming from Christopher Bergström of PathScale. As this was one of our first articles talking about the PSCNV driver at length, many readers were surprised by this fork with the upstream Nouveau driver still lacking even an official release. Some feel that this fork is a bad idea (it's even been compared to the dead RadeonHD driver) while others are in support of PathScale's efforts. Since publishing that article we have learned a few more details on the PSCNV driver from some of its developers within our forums.
Christopher Bergström of PathScale has passed along a note detailing some of the recent progress made by the Nouveau team and their developers working on PSCNV, their Nouveau driver fork. This includes 2D beginning to work on the GeForce 400 "Fermi" graphics hardware, open-source 3D for Fermi still being worked on, and a pool of documentation is beginning to form for the NVIDIA hardware by the open-source community. Here's the details in full.
It was just last week that page-flipping and sync-to-vblank support came to the Nouveau driver and now this open-source NVIDIA driver has initial support for Zaphod mode. While the Nouveau kernel mode-setting code has supported RandR 1.2 for quite a while with multi-monitor support, Red Hat's Ben Skeggs has made an initial pass at providing Zaphod mode.
Recently the Nouveau power management code emerged and we recently helped out with timing management, but that's not all of the work being done at the moment to this community-driven open-source driver for NVIDIA graphics cards. Committed today to the xf86-video-nouveau DDX driver is support for DRI2 page-flipping and sync-to-vblank support.
If you thought you had to be an advanced computer programmer to be of significant help with an open-source project, especially when it comes to something very technical like a graphics processor driver, guess again. The Nouveau developers send their regards to those of you that submitted dumps of their video BIOS and strap registers in order to help them with their reverse-engineering of memory timing manipulation for the Nouveau driver.
For those owners of NVIDIA graphics hardware that are already using -- or interested in using -- the open-source Nouveau driver that is developed by the community as an alternative to NVIDIA's proprietary driver, the developers could use some help. Martin Peres has issued a testing request for people to try out new code for the Nouveau driver that deals with memory timing management.
While the Nouveau kernel mode-setting / DRM driver has been living in the mainline Linux kernel for nearly one year and the open-source developers working on this reverse-engineered NVIDIA driver have a working Gallium3D driver (we have updated Nouveau Gallium3D benchmarks coming out during Oktoberfest), their support for NVIDIA power management has always been a struggle. The Nouveau power management situation though just received a big boost, that will hopefully lead to finally allowing your NVIDIA GPU with this open-source driver to run cooler and pull less power.
Yesterday was an exciting day for those Linux users interested in AMD's open-source ATI driver work with the release of the Radeon HD 5000 series 2D/3D driver, Radeon HD 6000 series support getting underway, and many ATI R600 Gallium3D driver improvements over the past few days. If though you are a NVIDIA customer interested in open-source support, there's great news for you today with the Nouveau driver that greatly improves the Gallium3D support.
Last week we reported on the first DRM pull request for the Linux 2.6.36 kernel and it brought forth some interesting features and improvements for the open-source Linux graphics drivers living within the kernel, but a second pull request has reached the email inbox of Linus Torvalds this afternoon.
If you have been wanting to test drive the Gallium3D drivers on your new Ubuntu 10.04 LTS "Lucid Lynx" installation but have been put off by the idea of building the Mesa stack yourself, fear not any longer. There's some new packages in the Ubuntu xorg-edgers PPA for easily facilitating the switch from classic Mesa to Gallium3D for Intel, ATI, and NVIDIA hardware.
This morning we talked about the real need for Nouveau power management as with a notebook bearing a NVIDIA GPU this open-source NVIDIA driver can easily consume 10~30% more power than using NVIDIA's official binary driver. While power management is more important on the mobile side, a quick test was carried out on a desktop too.
Following the very heated kernel DRM discussion that came about as the result of a major interface break in the Nouveau DRM code, David Airlie has asked on the Nouveau mailing list about potentially releasing Nouveau 1.0.0. Right now the Nouveau interface is at 0.0.16 and is wondering if developers will accept just renaming the current code to version 1.0.0.
One of the issues that was widely discussed when Linus Torvalds brought up finally merging the Nouveau DRM into the Linux 2.6.33 kernel was a microcode problem. The past few generations of NVIDIA graphics processors require this specialized microcode/firmware to be loaded in order to provide acceleration of any sort. At first it was it was a mystery what this microcode actually did, but it turns out that it's used for GPU context switching and the like. This wound up being a sticky situation.
It's been a long time coming, but beginning with the new daily builds of Ubuntu 10.04 and then coming up for Ubuntu 10.04 Alpha 3 is Nouveau driver support by default for NVIDIA graphics hardware. The Nouveau kernel DRM was back-ported from the Linux 2.6.33 kernel (since then more graphics DRM is being pulled back) and the xf86-video-nouveau DDX driver that supports kernel mode-setting has been dropped into place in the Lucid repository.
While Nouveau's initial DRM (Direct Rendering Manager) code has landed in the Linux 2.6.33 kernel, changes made today to the Nouveau driver stack will cause grief for some users. The Nouveau user-space driver code will now not work with the DRM found in the Linux 2.6.33 kernel, which isn't even officially released yet but will be in a week or two.
While there is now DRM support in the Linux 2.6.33 kernel for the Nouveau driver that carries the bits for kernel mode-setting, 2D (EXA) acceleration, and other fundamental functions on NVIDIA graphics processors, the Gallium3D driver still is incomplete. Prior to focusing solely on Gallium3D for their OpenGL acceleration, the Nouveau project was working on a DRI driver for classic Mesa, but that work was dropped in 2008 to focus entirely on Gallium3D support. This afternoon, however, a new Mesa DRI driver has emerged for Nouveau that provides *working* 3D support for older NVIDIA hardware.
Back in November we shared that Nouveau would finally be pulled into the Ubuntu 10.04 kernel as up to this point Canonical had employed the feature-limited and obfuscated open-source NVIDIA driver known as xf86-video-nv. The Nouveau driver became an option with Ubuntu 9.04, but it was using Nouveau's DDX user-space mode-setting code paths that have since been dropped upstream.
Over the past few years more of the Linux graphics stack has moved within the Linux kernel so that there is finally a proper kernel memory management solution for the open-source graphics drivers and to also provide kernel mode-setting. Moving more of the GPU driver code into the kernel DRM results in a more secure environment as the X Server can now run without root access, the start-up process is cleaner and faster with KMS, the performance will ultimately be better with a memory manager, there's more reliable and faster VT switching, suspend and resume is better, and the list of benefits just goes on. However, that's for Linux users. Most of the X.Org developers are centered on Linux support and as a result where in the past it was relatively easy to just support the X.Org DDX driver under multiple platforms, it's now not as easy when there's so much code tied into the kernel that isn't trivial to port between Linux and the *BSDs and OpenSolaris. As a result, driver support on the BSD operating systems and OpenSolaris has lagged behind Linux since they aren't up to speed with their kernel DRM code. Intel even has dropped their UMS code, which now makes kernel mode-setting a necessity for their hardware. The Nouveau driver has also dropped its non-KMS code.
While the Nouveau driver is now beginning to be trimmed down a bit as non-KMS support is being dropped, this free software NVIDIA driver will be gaining some new code in the form of power management support. Power management for NVIDIA hardware in the Nouveau driver stack is still early on, but a patch is being prepared and a discussion has been initiated how to handle the power management controls for this driver. A discussion surrounding power management controls has also opened up to the larger Linux GPU driver development community at large.
Back in 2008 the developers behind the Nouveau reverse-engineered NVIDIA driver dropped support for their classic Mesa driver even before there was ever a stable release of it. Instead the developers working on the 3D support for all generations of NVIDIA hardware turned their focus to their Gallium3D driver, which still remains heavily experimental to this day. In a similar move, the Nouverau developers have begun deleting their non-KMS code paths even before a stable DDX driver release has been made.
With the Nouveau driver earning itself some new attention now that its DRM code has been pulled into the Linux 2.6.33 kernel, there is another important milestone worth sharing. The Nouveau driver now has TV-Out working and being considered "done" for the NV30 class GPUs (the GeForce 5 / FX series) and is mostly done for NV40 GPUs (the GeForce 6 series). The TV output support for the earlier GPUs and also the newer GPUs is still considered a work in progress.
Since last week the DRM code for the Nouveau driver has been in the mainline kernel code-base for its official debut with the Linux 2.6.33 kernel. However, by default this DRM will not work with hardware newer than the GeForce 5 series as there is some firmware that must be loaded. Due to legal issues with this firmware/microcode (referred to as "ctx_voodoo"), this binary code must be installed separately if you wish to use Nouveau with one of the newer NVIDIA graphics cards.
As we shared yesterday morning, Nouveay would be entering the Linux 2.6.33 kernel as a staging driver. Last night Linus did indeed pull the drm-nouveau-pony branch. Linus' response on the matter was: "PONIES! Yay! I lurve ponies!"
Wow, the day has come, open-source fans with NVIDIA hardware that run Linux have quite the present this holiday season. Yesterday there was the first DRM pull request for the Linux 2.6.33 kernel that brought many changes to the ATI/AMD and Intel DRM along with other core DRM improvements (such as to the TTM memory manager). These changes were quite significant and we even called it a great present in the Linux 2.6.33 kernel.
Following a feature-packed DRM pull request this morning for the Linux 2.6.33 kernel, Linus Torvalds became frustrated that the Nouveau driver for supporting NVIDIA hardware was still not to be found in this most recent pull request. Linus wants Nouveau in the mainline kernel especially as Red Hat has already been shipping this free software driver in Fedora for two releases.
251 Nouveau news articles published on Phoronix.