Testing Out The Major Nouveau libdrm Rewrite

Written by Michael Larabel in Display Drivers on 21 April 2012 at 08:16 AM EDT. Page 1 of 6. 7 Comments.

Committed to the Mesa and libdrm Git repositories last week for Nouveau, the open-source NVIDIA Linux driver, was the "major libdrm rewrite" designed to step-up this reverse-engineered driver. What impact did these invasive changes have on the Nouveau driver's performance? Here are benchmarks comparing before-and-after as well as how the Nouveau driver compares to the proprietary NVIDIA Linux graphics driver.

For information on the important Nouveau libdrm milestone, read the A Massive Nouveau Code Push Happened Today article from last week. The improvements made to the Nouveau driver facing the DRM library were important as for some tests it's been reported to boost the performance (namely with Nexuiz) and for other workloads can lower the CPU usage. The Nouveau libdrm changes affect how buffer objects are handled with modern GeForce generations under Nouveau. Following this libdrm rewrite is also when the Nouveau Kepler Gallium3D code landed.

New Nouveau Linux libdrm Benchmarking GeForce

With the libdrm rewrite, the Nouveau support is also enabled by default on new libdrm builds compared to having to pass a Nouveau "experimental" build switch for libdrm to provide the Nouveau driver support. This comes at a time when the Nouveau DRM driver has finally left the Linux kernel staging area and the open-source NVIDIA driver is approaching a stable state.

Some quick benchmarks from a Lenovo ThinkPad notebook with an Intel Core i7 720QM processor and NVIDIA Quadro FX880M graphics was used to look at the impact of the Nouveau libdrm changes. From Ubuntu 12.04 LTS x86_64, the NVIDIA graphics performance was compared using the binary driver (NVIDIA 295.40), using the stock Nouveau driver stack in Ubuntu 12.04, using the Git Nouveau driver stack (Linux kernel, xf86-video-nouveau, libdrm, and Mesa) just prior to merging the libdrm changes last week, and then the revised Git stack after the changes hit libdrm, xf86-video-nouveau, and Mesa.


Related Articles