Bettering Radeon Gallium3D Performance With PCI-E 2.0

Written by Michael Larabel in Display Drivers on 20 January 2012 at 03:00 AM EST. Page 1 of 4. 51 Comments.

While it will not take you up to the speeds of the Catalyst driver, besides the 2D color tiling patches, there are a few other outstanding features not yet enabled-by-default in the open-source Radeon graphics driver that can yield some performance boosts. One of these other features is enabling PCI Express 2.0 support within the Radeon DRM.

While the PCI Express 2.0 specification has been out since early 2007, been supported by Intel motherboards since 2007 with the X37 chipset, and has been supported by ATI graphics cards going back to the Radeon HD 3000 series, "PCI-E Gen2" support isn't yet enabled by default within the Radeon DRM. PCI Express 2.0 doubles the transfer rate of PCI Express 2.0 and the per-lane throughput is doubled to 500MB/s, among other improvements to the specification. With the Radeon HD 7000 "Southern Islands" series, AMD graphics cards are now up to supporting PCI Express 3.0.

Taking full advantage of PCI Express 2.0 for Radeon graphics cards involves setting a few registers related to the PCI-E link width and speed control. The code has been there for the supported generations of Radeon hardware for many months now, but it is not on by default. Like the Intel RC6 and Active State Power Management problems in the Linux kernel, PCI-E Gen2 is not on by default at this time due to a few hardware-specific problems. For some problematic systems, having the Radeon DRM with PCI Express 2.0 support enabled will cause a corrupted screen upon mode-setting. The problem comes down to compatibility issues with some motherboards. For over a year now the PCI-E Gen2 support has been concealed behind a kernel module parameter.

Those wishing to take advantage of PCI Express 2.0 with supported motherboards (nearly all Intel and AMD motherboards from 2008 and newer) and graphics cards (Radeon HD 3000 series and newer) must boot the kernel with the "radeon.pcie_gen2=1" on the kernel command line (or probe the radeon DRM with "pcie_gen2=1"), otherwise the graphics card will still be operating at PCI Express 1.0 speeds. Even with the forthcoming Linux 3.3 kernel, PCI-E 2.0 support is still off by default with the Radeon driver.

Across all of the motherboards and graphics cards I've tested, PCI Express 2.0 support has operated without fault -- for this latest round of testing and going back months. For many OpenGL workloads, running the graphics card with PCI-E 2.0 transfer rates does result in noticeable performance improvements.

Radeon Gallium3D PCI Express 2.0

To illustrate the performance benefits of booting with "radeon.pcie_gen2=1", here are some new benchmarks with and without this option. The system was from the Intel Core i7-3960X setup while using the Linux 3.2 kernel, Mesa 8.0-devel Git, the latest xf86-video-ati DDX, and an otherwise stock Ubuntu 11.10 host. The graphics cards tested were an ATI Radeon HD 4670, ATI Radeon HD 4770, ATI Radeon HD 4890, ATI Radeon HD 5450, ATI Radeon HD 5750, AMD Radeon HD 6870, and AMD Radeon HD 6950. Swap buffers wait was disabled during testing.


Related Articles