Gallium3D's LLVMpipe Under LLVM 2.9
Version 2.9 of the Low-Level Virtual Machine is set to be released in a little more than a week, but what will it mean much for users in terms of performance? We will be looking at the LLVM 2.9 and Clang performance in the coming days (along with GCC 4.6, which was just released). We are beginning this weekend by providing a look at how using LLVM 2.9 affects the performance of the Mesa Gallium3D LLVMpipe driver relative to the previous LLVM 2.6, 2.7, and 2.8 releases.
LLVMpipe is the Gallium3D driver for Mesa that is effectively a CPU-based software rasterizer that leverages the Low-Level Virtual Machine. It's a software driver that is much faster than Gallium3D's former solution, softpipe, or the classic Mesa software rasterizer, which is next to useless for anything meaningful to an end-user. LLVMpipe is used by Mesa developers for ruling out hardware drivers when debugging and it is beginning to be used as the default software solution in Linux distributions such as Fedora 15 when no actual GPU driver is available. Though we have been showing for a year now, in order for LLVMpipe to run any modest OpenGL game/application you need a rather powerful CPU. Even running LLVMpipe on a six-core Intel Gulftown with Hyper Threading is not exactly ideal. The focus of this article though is not on the merits of usefulness of LLVMpipe right now, but to see how the driver's performance is affected -- if at all -- when using the latest LLVM 2.9 code.
The CPU used in this article is an Intel Core i7 990X that Intel Corp kindly sent over last week. This is the new and more powerful Gulftown processor to the Core i7 970 that has been used in many Phoronix tests. The Core i7 990X processor has six physical cores plus Hyper Threading (12 threads total), 3.46 GHz base clock frequency with 3.73 GHz Turbo Boost, 12MB of Intel Smart Cache, SSE 4.2 support, and is built on a 32nm process. It's quite similar to the Core i7 970 except for the base frequency being bumped from 3.2 GHz to 3.46 GHz, 3.46 GHz vs. 3.73GHz Turbo Boost, and 4.8 GT/s vs. 6.4 GT/s QPI. With the Core i7 990X now securing the $999 USD spot (Amazon.com, NewEgg.com), the price on the Core i7 970 has been dropped to just under $600 USD (Amazon.com, NewEgg.com). A review on the Core i7 990X and more Linux tests of it will arrive in the coming weeks.
LLVMpipe on the Core i7 990X was tested with the ASRock X58 SuperComputer motherboard, 3GB of DDR3 system memory, and a 320GB Seagate SATA HDD. Ubuntu 10.10 (x86_64) was used while the Linux kernel was upgraded to the vanilla 2.6.38 release. Mesa 7.11-devel was pulled from Git as of 2010-03-24 along with the LLVM 2.9 branch on the same date. LLVM 2.6, 2.7, and 2.8 were tested as well when built in the release mode (optimizations enabled, no assertions) followed by rebuilding Mesa each time. GCC 4.4.5 had built LLVM and Mesa. The LLVMpipe driver requires Mesa 2.6 or newer, but the developers recommend using LLVM 2.8+ for best support.
OpenArena, World of Padman, Warsow, VDrift, Lightsmark, and Urban Terror were run with LLVMpipe using the Phoronix Test Suite and OpenBenchmarking.org.