For the past year or so we have been fascinated by the LLVMpipe driver on Mesa's Gallium3D driver architecture for accelerating OpenGL on your CPU (or any other Gallium3D state tracker) as a means of a more efficient and viable software rasterizer for Linux. Mesa's long-standing software rasterizer (swrast) driver is slow and next to useless while LLVMpipe is many times faster thanks to leveraging the Low-Level Virtual Machine and other optimizations atop Gallium3D. However, in order to run a basic OpenGL game purely on the CPU you still need a powerful CPU, but we are pleased to find there are some noticeable performance improvements to be found in Mesa 7.10.
After doing a big ATI Linux benchmarking comparison with the latest Mesa code both in the form of their classic DRI drivers as well as Gallium3D, the Nouveau Gallium3D driver, and then the ATI Linux driver again with the very latest kernel bits, the focus turned to LLVMpipe. No major Linux distributions are yet shipping with LLVMpipe enabled over the Mesa software rasterizer in cases where there is no GPU hardware driver available, but over the course of the past year when this driver has been coming together, we have been finding great progress made. With the Mesa 7.10 release, there are significant improvements in the LLVMpipe performance compared to Mesa 7.9.
For this round of LLVMpipe driver testing the test system had an Intel Core i7 Q 720M quad-core CPU with Hyper Threading, 4GB of system memory, and a 160GB Intel SSDSA2M160. This was a Lenovo ThinkPad W510 notebook. On the software side was an Ubuntu 11.04 snapshot with the Linux 2.6.37 kernel, GNOME 2.32.1, X.Org Server 1.9.1 RC2, GCC 4.5.2, LLVM 2.8, and an EXT4 file-system. As far as Mesa / Gallium3D goes, we built and tested Mesa 7.9.1, Mesa 7.10, and the Mesa 7.11-devel Git code as of 2011-01-10. There are not many major changes to Mesa in the past few weeks since Mesa 7.10 was branched, but we decided to test an early Mesa 7.11-devel snapshot anyhow. Gallium 0.4 is the version reported across the three Mesa releases that were benchmarked.
The OpenGL gaming benchmarks included OpenArena, World of Padman, Urban Terror, Warsow, and VDrift. Testing was done via Phoronix Test Suite 3.0-Iveland and OpenBenchmarking.org. Each test profile was run at 640 x 480, 800 x 600, 1024 x 768, and 1600 x 900.
Beginning our Mesa 7.10 LLVMpipe benchmarking expedition with OpenArena, the results were immediately pleasing. On average, across the four resolutions tested, Mesa 7.10 and newer with LLVMpipe is 33% faster than Mesa 7.9.1. This is a terrific boost, but still, the overall frame-rate for this powerful Intel Core i7 mobile processor barely breached 30 FPS even at 640 x 480, which makes the game hardly playable. The proprietary graphics drivers easily do hundreds of frames per second with most any NVIDIA / ATI GPU and even the open-source Mesa / Gallium3D GPU drivers tend to do 50 or more frames per second.