LLVMpipe: OpenGL With Gallium3D on Your CPU

Written by Michael Larabel in Display Drivers on 30 April 2010 at 01:00 AM EDT. Page 2 of 3. 29 Comments.

Building the Gallium3D LLVMpipe driver requires having LLVM 2.6 (ideally the recently released version 2.7) compiler infrastructure installed. The LLVMpipe build instructions are surprisingly well documented and can be found in the README for this driver (available online via their Git viewer).

For this round of testing we used an Intel Core i7 920. This quad-core 45nm Intel "Bloomfield" processor with Hyper Threading is clocked at 2.66GHz by default (but we had it overclocked to 3.60GHz), has 256KB of L2 cache per core, 8MB of shared L3 cache, and has SSE2/SSE3/SSE4.1/SSE4.2 instruction support. In a future article, we may provide LLVMpipe tests with a greater selection of Intel and AMD GPUs. The rest of the system components included an ATI Radeon X1950PRO 256MB, an ASRock X58 SuperComputer motherboard, and 3GB of CSX DDR3 system memory. On the software side was Ubuntu 10.04 LTS (x86_64) with the Linux 2.6.32 kernel, xf86-video-ati 6.13.0, X.Org Server 1.7.6, and GCC 4.4.3.

In our benchmarking of LLVMpipe we compared its performance to the classic Mesa Radeon driver and the R300 Gallium3D driver using an ATI Radeon X1950PRO 256MB graphics card. We did not compare the performance to the traditional software Mesa rasterizer in this benchmarking since it is incapable of running any of our OpenGL benchmarks beyond a couple frames per second. All of the Mesa code was from the master code-base as of commit ee29b861298bd165e6b104b218f31c78aed3682a with a subject "i965: Reject shaders with un-inlined function calls instead of hanging." Mesa was built without debug support for proper performance monitoring and we used an LLVM 2.7 snapshot that was obtained from Ubuntu Lucid's repository.

Via the Phoronix Test Suite we ran OpenArena. Padman and Warsow were run as well and the different drivers produced similar results proportionally to OpenArena, but due to a EXT4 file-system failure we lost those results and ended up carrying out the tests again just on OpenArena. Additionally we also ran OpenArena at 1280 x 1024 afterwards as we monitored the CPU usage with the Phoronix Test Suite. In our testing of this latest Mesa code we had not run into any artifacts or rendering glitches when using LLVMpipe on our test system with the aforementioned tests.

Related Articles