A new patch has surfaced on the Mesa development list that allows for further performance improvements to the R600 Radeon Gallium3D driver for some OpenGL workloads.
The new patch in question is from Vadim Girlin and is titled "r600g: improve flushed depth texture handling v2." Vadim reports that for workloads where flushed depth texture is frequently used can significantly boost the performance. The level of improvement that Vadim cites is 30% for the Lightsmark OpenGL lighting benchmark. The patch presents 83 lines of new code and 61 lines of deleted code across the R600 Gallium3D driver. The patch has yet to be applied to mainline Mesa Git master but can be currently found on the mailing list and be easily applied against head.
"Use r600_resource_texture::flushed_depth_texture for GPU access, and allocate it in the VRAM. For transfers we'll allocate untiled texture in the GTT and store it in the r600_transfer::staging.
Improves performance when flushed depth texture is frequently used by the GPU (about 30% for Lightsmark)."
After seeing this patch surface on the mailing list this week, I ran some tests on three different Radeon graphics cards. Using the latest Linux 3.5 kernel, Mesa 8.1-devel from Git master, and the Git of xf86-video-ati and libdrm, I ran some new tests. Swap buffers wait was disabled while the other settings were at their defaults from the Ubuntu 12.04 operating system.
The tested graphics cards included an AMD Radeon HD 6770, Radeon HD 5830, and Radeon HD 6870. With each graphics card Mesa 8.1-devel git-bf679ce was benchmarked with and without Vadim's "r600g: improve flushed depth texture handling v2" patch.