1. Computers
  2. Display Drivers
  3. Graphics Cards
  4. Memory
  5. Motherboards
  6. Processors
  7. Software
  8. Storage
  9. Operating Systems


Facebook RSS Twitter Twitter Google Plus


Phoronix Test Suite

OpenBenchmarking.org

A Massive Nouveau Code Push Happened Today

Nouveau

Published on 13 April 2012 06:03 PM EDT
Written by Michael Larabel in Nouveau
18 Comments

A massive Nouveau code push went through today affecting libdrm, the Mesa Gallium3D drivers, and the xf86-video-nouveau driver. The whole shebang should offer some performance improvements across the board while one driver has been completely rewritten and affects three generations of hardware.

This morning I wrote the Open-Source NVIDIA Driver Approaches Stable State looking at the open-source reverse-engineered NVIDIA driver leaving the Linux kernel staging area with the forthcoming stable release. I also recapped the current state of the Nouveau driver and a bit of its history. That article also provided a look at the performance of the Nouveau driver versus the official NVIDIA closed-source Linux driver for ten different graphics cards.

In that article I made several references to "a new libdrm" for Nouveau that should offer up impressive performance improvements, reduced CPU usage, and other benefits. Fortunately, that code push happened today. The entire Nouveau DRM library interface has been reworked.

The libdrm commit calls it the "major libdrm rewrite" and affects around 2,000 lines of code in this library. The commit description says, "Redesigned primarily to allow us to better take advantage of BO's [buffer objects] having fixed GPU virtual addresses on GeForce 8 and up, and to reduce the overhead of handling relocations on earlier chipsets."

With the libdrm interface breaking for Nouveau, updates to the xf86-video-nouveau DDX and Mesa Gallium3D Nouveau drivers are required and now found in their respective Git repositories. As said in today's earlier article, in some benchmarks the Nouveau performance may be up by 100% thanks to this libdrm rewrite for Nouveau. Besides the frame rates jumping higher, the CPU usage should be lower at the same time as well. I've already been busy benchmarking this new code, hence why I didn't write about this libdrm the moment this Git commit happened. I should have up a preview of new Nouveau benchmarks on Saturday and a more thorough benchmark analysis a few days later.

Besides the libdrm overhaul and the Nouveau Mesa code switching to this 2.0 interface, there were other important Nouveau commits today too. The Nouveau NVFX Gallium3D driver was completely removed (commit), but that's because a few commits later it was replaced by a new Gallium3D driver. The NVFX-replacement 3D driver is being called "NV30" and it's designed to be much better.

From the commit, "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 driver is heavily based on the design of the nv50/nvc0 3d drivers we already have, and uses the same common buffer/fence code. It also passes a HEAP more piglit tests than nvfx did, supports a couple more features, and a few more to come still probably. 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....) Basically, we once again have a maintained driver for these chipsets \o/ Feel free to report bugs now!"

This NV30 driver is 13,725 lines of code long and was authored primarily by Ben Skeggs of Red Hat. The NV30 driver supports the GeForce 5 (FX), 6, and 7 series graphics cards.

So at the end of the day we have a radically new libdrm interface for Nouveau that should offer up significant graphics performance benefits while for owners still running the vintage GeForce 5/6/7 graphics cards there's also a brand new driver that is also much better than its predecessor. This will all be great for Mesa 8.1, among the other improvements that are forthcoming. Stay tuned for another round of Nouveau Linux driver benchmarks!

P.S. As a bonus I'm told that the NV50 OpenGL 3.0 near-full-compliance is hours away from being pushed... The only missing item after this push should be the transformed feedback support for NV50. The Nouveau NVC0 (Fermi) driver already advertises GL3.0.

About The Author
Michael Larabel is the principal author of Phoronix.com and founded the web-site in 2004 with a focus on enriching the Linux hardware experience and being the largest web-site devoted to Linux hardware reviews, particularly for products relevant to Linux gamers and enthusiasts but also commonly reviewing servers/workstations and embedded Linux devices. Michael has written more than 10,000 articles covering the state of Linux hardware support, Linux performance, graphics hardware drivers, and other topics. Michael is also the lead developer of the Phoronix Test Suite, Phoromatic, and OpenBenchmarking.org automated testing software. He can be followed via and or contacted via .
Latest Linux Hardware Reviews
  1. Btrfs On 4 x Intel SSDs In RAID 0/1/5/6/10
  2. AMD Radeon R9 290 On Ubuntu 14.10: RadeonSI Gallium3D vs. Catalyst
  3. MSI X99S SLI PLUS On Linux
  4. NVIDIA GeForce GTX 970 Offers Great Linux Performance
Latest Linux Articles
  1. Windows 8.1 vs. Ubuntu 14.10 With Intel HD Graphics
  2. 6-Way Ubuntu 14.10 Radeon Gallium3D vs. Catalyst Driver Comparison
  3. NVIDIA vs. Nouveau Drivers On Ubuntu 14.10
  4. Ubuntu 14.10 Offers AMD Radeon Driver Performance Improvements
Latest Linux News
  1. GTK+ 3.16's New GtkGLArea Widget Gets Improved
  2. X.Org Server 1.17 ABI Bumped
  3. Fedora 21 Beta To Be Released Next Week
  4. Go 1.4 Beta Release Brings Big Runtime Changes
  5. SIMD For JavaScript Continues Coming Along
  6. GNOME 3.15.1 Released
  7. Red Hat Software Collections 1.2 Adds GCC 4.9, Nginx 1.6
  8. GLAMOR Acceleration Continues To Be Cleaned Up
  9. Russia's Yandex Web Browser Finally Released For Linux
  10. Linux Kernel Finally Being Optimized For SSHDs
Latest Forum Discussions
  1. Is foolish currently develop in machine code, hexadecimal and assembly?
  2. Reducing The CPU Usage In Mesa To Improve Performance
  3. How to get rid of Linux
  4. Help diagnosing problems with a Readon HD 4670 on Mesa 10.3.2-1
  5. Advertisements On Phoronix
  6. nv and xorg.conf under Debian PPC
  7. Looking for a Open-Source AMD experienced Linux mentor
  8. Bad perfomance in gaming