Following performance benchmark results I published earlier this week comparing the open-source Radeon and AMD Catalyst driver performance under Ubuntu 12.10, Marek, the well-known independent open-source graphics driver developer, set out to explore some of the performance issues in the open-source driver. One day later, he published a patch that could quadruple the frame-rate of the Radeon Gallium3D driver. He went on to push another performance-focused patch too for this R600g driver. In this article are a fresh round of benchmarks of the open-source driver to look at the wins and losses attributed to this new code.
Marek's first patch was for fixing the "abysmal performance" in the ioquake3-based Reaction game:
r600g: fix abysmal performance in Reaction Quake
The problem was we set VRAM|GTT for relocations of STATIC resources. Setting just VRAM increases the framerate 4 times on my machine. I rewrote the switch statement and adjusted the domains for window framebuffers too.
NOTE: This is a candidate for the stable branches.
This patch already was merged to Mesa master as was his follow-up patch concerning the handling of DISCARD_RANGE:
r600g: re-enable handling of DISCARD_RANGE, improving performance
It seems to work for me now. Even the graphics corruption is gone. This also boosts performance in Reaction Quake.
It's good to see performance improvements being a focus for the open-source graphics drivers because they are much slower than the closed-source drivers (this is also the case for Nouveau relative to the NVIDIA driver and for the open-source Intel driver relative to the closed-source Intel Windows driver). However, as the results show, there wasn't much test coverage prior to pushing them into the Mesa Git repository...
Even before my testing was complete, there was already a FreeDesktop.org bug report by other individuals reporting that these patches didn't deliver a performance improvement but rather a loss. Bug 56634 began with a report by a user saying that his Unigine Heaven FPS frame-rate on R600g dropped from about 25 FPS to just 3 FPS following the "fix abysmal performance" patch. Another user reported that he too saw some slowdowns, but this time from a Radeon HD 4890 graphics card and when trying to run Enemy Territory: Quake Wars.
The initial testing I did of these two patches were with and without these "optimizations" when using an AMD Radeon HD 4650 512MB graphics card from an Intel Core i7 3960X test system. The test system was running Ubuntu 12.10 but Git of Mesa 9.1-devel, xf86-video-ati Git that includes 2D color tiling by default, and the Linux 3.7 Git kernel. Swap buffers wait was disabled during testing. The only thing being changed out during this testing was the Mesa Git revision tested. All benchmarking was handled by the Phoronix Test Suite software.
On the following pages are the mixed benchmark results from the Radeon HD 4650 graphics card just before and after Marek's R600g driver performance patches.