Gallium3D / LLVMpipe With LLVM 2.8

Written by Michael Larabel in Display Drivers on 8 October 2010 at 04:00 AM EDT. Page 1 of 2. 64 Comments.

While LLVM 2.8 was just released, we have been curious to see how the latest Low-Level Virtual Machine compiler code affects the performance of the LLVMpipe driver. This is the Gallium3D graphics driver that lives in Mesa and leverages the unique modular LLVM compiler to efficiently handle processing the graphics rendering workload on a modern CPU as a much faster alternative to that of their legacy software rasterizer. To see how much of a performance impact - for better or worse - that LLVM 2.8 has on this open-source software driver we tested it when being built with LLVM 2.6, 2.7, and the 2.8 SVN code.

The LLVMpipe driver currently requires version 2.6 of the Low-Level Virtual Machine or newer, so we were limited to building Gallium3D with just the 2.6, 2.7, and 2.8 releases. With each release we built the open-source compiler from source and for the 2.8 testing we used a SVN snapshot as of 2010-09-04. When building each LLVM release we ran configure with the --enable-optimized and --disable-assertions flags to produce a release build. With each version of LLVM we rebuilt Mesa / Gallium3D / LLVMpipe. The Mesa code-base from Git master was pulled on 2010-09-04, which is version Mesa 7.9-devel and Gallium 0.4.

The system we used for this testing was an Intel Core i5 750, an ECS P55H-A motherboard, 4GB of system memory, and a 500GB Western Digital WD5000AADS-0 SATA hard drive. The Core i5 750 is a 45nm quad-core Intel CPU clocked at 2.67GHz with a maximum Turbo Frequency of 3.2GHz, 8MB of cache, and supports the latest SSE 4.2 instruction set. The Ubuntu 10.10 Beta release was used as the base operating system with the Linux 2.6.35 (x86_64) kernel, GNOME 2.31.90, X.Org Server 1.9.0, and an EXT4 file-system.

For testing LLVMpipe built under the three different versions of the Low-Level Virtual Machine we ran the OpenArena, Warsow, Urban Terror, Tremulous, and World of Padman games at 640 x 480, 800 x 600, 1024 x 768, and 1280 x 1024 via the Phoronix Test Suite.

Starting with the OpenArena game we see that when the LLVMpipe driver was using the LLVM 2.8 code the frame-rates were the highest, which averaged to be about two frames per second higher, which isn't much in general but fairly significant seeing as LLVMpipe right now is still not nearly as fast as even a cheap graphics card. This two frame per second improvement on average amounts to being about 9% faster than LLVM 2.7.

LLVM 2.8 also provided a speed-boost for LLVMpipe in the Warsow game, but this Qfusion-based title is more taxing on the LLVM-using driver where its frame-rate is half the speed of OpenArena and the improvement presented by the 2.8 SVN code was less than one FPS higher.


Related Articles