New "NV30" Nouveau Driver Still Causes Pain

Written by Michael Larabel in Nouveau on 22 April 2012 at 06:12 AM EDT. 20 Comments
NOUVEAU
One week ago following the committing of the major libdrm re-write for the Nouveau project, the "NVFX" Gallium3D driver was dropped and succeeded by a new "NV30" driver for the GeForce FX/6/7 series GPUs. Unfortunately, for at least some hardware, this Nouveau support is still a busted mess.

The nearly 15,000 lines of code "NVFX" driver had been around for quite a while to actively support the NVIDIA GeForce 5 (FX), 6, and 7 series graphics processors. This open-source driver mostly worked for what now is vintage hardware, but the driver was no longer being worked on and went into a dormant state.

Recently work began on the "NV30" driver to replace the GeForce FX/6/7 series support and a new 13,725 line driver was born for this NV30/NV40 class hardware. As Ben Skeggs wrote in the commit message when introducing this new driver, "The primary motivation for this rewrite was to have a maintainable driver going forward, as nvfx was quite horrible in a lot of ways."

The new NV30 driver is based upon the design of the NV50/NVC0 drivers, which is the Nouveau Gallium3D drivers for the newer generations of hardware up through Fermi and Kepler. The NV30 driver also shares some common code with these newer drivers. Skeggs mentioned that the NV30 driver is passing much more Piglit OpenGL regression tests than the old driver did and potentially handles a couple more features with more potentially on the way.

Last but not least, the NV30 driver is designed to utilize less of the CPU than the old NVFX driver. "The CPU footprint of this driver is far far less than nvfx, and translates into far greater framerates in a lot of applications (unless you're using a CPU that's way way newer than the GPUs of these generations....)"

Ben ended with, "Basically, we once again have a maintained driver for these chipsets \o/"


Going back to NVIDIA's GeForce 6 days... The first NVIDIA GeForce FX (5) series GPUs were launched in 2003, the GeForce 6 series began appearing in 2004, and the first GeForce 7 series graphics cards hit in 2006 and continued into 2007.

Seeing as I'm in support of killing old hardware support on Linux, the only graphics cards I still have around from the NV30/NV40 days is a PCI-based NVIDIA GeForce FX 5200 "NV34" and a PCI Express GeForce 6600 GT "NV43" graphics card.

The GeForce FX 5200 has never worked properly for me with the Nouveau driver, but had worked fine with the NVIDIA binary blob (there's still legacy support available) as well as the now-defunct xf86-video-nv DDX. Kernel mode-setting with Nouveau hadn't even worked right for this hardware. However, it may be working now. Nouveau's Martin Peres recently mentioned to me, "the 5200 should work too...many people came and asked for fixes. Ben got access to an AGP box a few weeks ago...he can now work on it again." But these days with the modern CPUs in use at Phoronix, LLVMpipe is probably faster than this NV34 graphics card from March of 2003.

The GeForce 6600GT has also been problematic with Nouveau for the past few years every time I've tried. It also shouldn't be a hardware availability issue here, seeing as a few years ago at FOSDEM I did give Nouveau a PCI-E GeForce 6600GT graphics card for their work.

With the committing of the NV30 Gallium3D driver, I decided to try it out when paired with Linux 3.4 kernel, Mesa 8.1-devel Git, the latest libdrm, and the latest xf86-video-nouveau. The latest code as of this weekend was tested from an Ubuntu 12.04 base.

When booting, kernel mode-setting worked this time, but when it came to using the Gallium3D driver on the Unity desktop there were quickly issues. Rendering issues were commonly apparent on the Ubuntu Unity desktop with the NV30 driver and the 6600GT. With the NV30 Gallium3D Nouveau driver not even playing well with the Unity desktop, it didn't make it much further when running some OpenGL Linux games/benchmarks on the GeForce 6600GT. OpenArena 0.8.5 did work successfully, but the other games presented rendering issues -- either constantly or once in a while -- and ultimately the system would lock-up with this hardware/software combination.

This eight-year-old graphics card is still failing badly with Nouveau.

Though for anyone interested, there are a few Nouveau GeForce 6600GT benchmarks from this new Nouveau driver in Mesa 8.1-devel Git.
Nouveau GeForce 6600 GT Linux
You can also see how your graphics card/driver compares to the GeForce 6600GT in those few benchmarks by running phoronix-test-suite benchmark 1204212-SU-NOUVEAUGE34. The GeForve 6600GT did at least work with Nouveau re-clocking.

It's actually a bit peculiar that the GeForce 6 support remains in bad shape for Nouveau with the new GeForce 400/500 "Fermi" and GeForce 600 "Kepler" series support being in better shape when it comes to OpenGL support and stability.

Recent Nouveau benchmarks compared against the binary NVIDIA Linux driver can be found in this article. Coming up soon will also be an open-source driver comparison between Intel Ivy Bridge, Nouveau, and Radeon Gallium3D for several different graphics processors.
Related News
About The Author
Michael Larabel

Michael Larabel is the principal author of Phoronix.com and founded the site in 2004 with a focus on enriching the Linux hardware experience. Michael has written more than 20,000 articles covering the state of Linux hardware support, Linux performance, graphics drivers, and other topics. Michael is also the lead developer of the Phoronix Test Suite, Phoromatic, and OpenBenchmarking.org automated benchmarking software. He can be followed via Twitter, LinkedIn, or contacted via MichaelLarabel.com.

Popular News This Week