Radeon 3D Performance: Gallium3D vs. Classic Mesa
Gallium3D, the graphics driver architecture started by Tungsten Graphics to overhaul the hardware driver support in Mesa, has been around for a few years but it is finally getting close to appearing on more desktop systems. Now that the Nouveau DRM code is in the mainline Linux kernel and its main 3D driver is Gallium3D-based, we will hopefully be seeing that adopted by more distributions soon -- it's already being flipped on with Fedora 13. On the ATI side the "r300g" Gallium3D driver that provides Gallium3D support for the R300-R500 (up through the Radeon X1000 series) is also being battered into surprisingly good shape. To see where the Radeon Gallium3D support is at for these older ATI graphics cards we have run a set of tests comparing the OpenGL performance under the latest Mesa 7.9-devel code with the Gallium3D driver to running the classic Mesa DRI driver.
It has taken years of work for Tungsten Graphics (now VMware) and the Linux development community to develop Gallium3D into a robust and reliable multi-platform graphics architecture, but this investment should begin paying off later this year or within the next year. Nouveau's Gallium3D support is becoming reliable and working across the range of NVIDIA GeForce/Quadro graphics cards that they are targeting to the point that Red Hat is shipping this driver by default in Fedora 13. For Ubuntu users there is a Gallium3D Nouveau PPA too, but we would not be surprised if Ubuntu 10.10 is to pull in this driver as it finally provides a free software 3D NVIDIA driver for Linux.
On the Intel side their older i915 graphics processors were among the first to be supported by Gallium3D through a simple Gallium3D driver, but that has fallen into a bit of disrepair (for the time being Intel is continuing to back their classic Mesa driver), but there are some efforts underway with a new Intel i965 Gallium3D driver. They have also developed a special Gallium3D Poulsbo driver. As we mentioned already with the ATI support there is the R300 Gallium3D driver that is considered to be in a modest state where its DRI and Mesa support is actually considered being done. Work on the ATI R600 class Gallium3D driver for ATI Radeon HD 2000/3000/4000 series graphics cards has only just begun recently and it will likely be a while before that driver is ready for thorough testing and usage.
Aside from the actual hardware drivers, there is VMware's "SVGA" virtual GPU driver that launched last year and it's rather unique with its design for their virtualization platform where the Gallium3D driver is run by the guest OS and then executed on the hardware by the host, but because of Gallium3D's design, this means the guests can also tap into the hardware acceleration for OpenGL ES, OpenCL, EXA, and other areas where Gallium3D has state trackers. The state trackers have been other area of active development for Gallium3D to allow these hardware drivers to have uniform support for OpenGL (currently 2.1, the 3.x state tracker is still M.I.A.), OpenCL (still premature), OpenGL ES 1.1/2.0, OpenVG, EXA / X-Video, VDPAU (not quite yet), and even Direct3D.
For this first round of Radeon Gallium3D benchmarks, we are simply comparing the OpenGL performance of the current r300g driver to the classic Mesa R300 DRI driver. A Mesa Git master checkout from 2010-03-19 was used, which puts it at version Mesa 7.9-devel. Mesa was built atop the 64-bit Ubuntu 10.04 LTS Beta with the Linux 2.6.32, the DRM updated to 2.4.19, X.Org Server 1.7.5, and xf86-video-ati 6.12.191 using KMS/DRI2. The hardware we used was an Intel Core i3 530 quad-core clocked at 3.32GHz, 2GB of system memory, an ECS H55H-M motherboard, a 64GB OCZ Vertex SSD, and a Samsung SyncMaster 305T 30-inch 2560 x 1600 display. The graphics card we used for this initial testing was an RV570-based ATI Radeon X1950 PRO.
As the Radeon Gallium3D driver is not to be found by default in Ubuntu at this time nor is it available in any package archive, those interested in trying it out can see this Radeon Gallium3D Ubuntu thread. To see that at least the correct 3D driver is being loaded (though not a rendering test) is by checking the glxinfo output of the Gallium3D driver and it should read something like "Gallium 0.4 on RV570" and the GL version string should be "2.1 Mesa 7.9-devel" instead of "1.5 Mesa 7.9-devel", or whatever version of Mesa you are running, but the important part is the advertising of OpenGL 2.1 support rather than OpenGL 1.5.