The Good & Bad For LLVMpipe With Intel's GLSL2 Compiler

Written by Michael Larabel in Display Drivers on 11 August 2010 at 06:00 AM EDT. Page 1 of 4. 14 Comments.

Last month we tested out Intel's new GLSL compiler for Mesa when running the ATI Radeon classic Mesa and Gallium3D drivers to see how this GL Shading Language compiler designed by Intel employee's for their hardware and open-source driver work for the other open-source drivers, since all of the Mesa drivers will be affected once this "GLSL2" compiler is merged into the Mesa code-base by month's end. The experience using Intel's new shader compiler with the ATI Radeon graphics driver worked fine except for Warsow where serious regressions were visible, but in the other games that are capable of running off Mesa, the experience was fine. What we have been curious to test since then with this new OpenGL shader compiler has been the LLVMpipe driver -- a Gallium3D driver we have been very excited about as it finally provides a better software rasterizer for Linux by leveraging Gallium3D and the Low-Level Virtual Machine (LLVM) compiler infrastructure for accelerating the Mesa state tracker atop a modern multi-core CPU that supports SSE4 instructions. We have now finished running tests of the Intel's GLSL2 branch with the most recent LLVMpipe driver code.

While LLVMpipe is many times faster than Mesa's long-standing software rasterizer that is rather useless to run most any game even with a hefty processor or Gallium3D's Softpipe driver that is much in the same boat, with LLVMpipe and a good CPU it's now possible to run games (like the ioquake3 type) on the CPU but it's still not heavily optimized. However, even with a modern Intel quad-core CPU the frame-rates in many games are still low even when running at low resolutions like 800 x 600. While LLVMpipe is still not fast enough for most games nor does it yet support running Compiz or the GNOME Shell with OpenGL atop the CPU due to the lack of GLX_EXT_texture_from_pixmap support within this software driver, the LLVMpipe driver continues to improve.

For this most recent testing we used a Lenovo ThinkPad W510 notebook with an Intel Core i7 720QM quad-core CPU with Hyper Threading, 4GB of DDR3 system memory, a 60GB OCZ Vertex 2 SSD, and a NVIDIA Quadro FX 880M graphics card. We were running an Ubuntu 10.10 snapshot with the Linux 2.6.35 kernel, X.Org Server 1.8.2 RC2, LLVM 2.7, and GCC 4.4.4. The Mesa code for both the master and glsl2 branches were pulled on 2010-08-01. When testing the glsl2 branch we merged it back on top of Mesa master to drop in the new compiler while having all of the latest LLVMpipe, Gallium, and Mesa core changes. Besides the LLVMpipe driver being very interesting in its own right, it's also interesting for our test purposes to see how this new GLSL compiler affects things in a rather agnostic manner than testing against a vendor's driver and hardware architecture. The Phoronix Test Suite can also log the CPU usage as LLVMpipe pounds the Intel Core i7, which makes for some more interesting metrics too. Worth noting, however, is that Urban Terror had not worked with the LLVMpipe driver when using Intel's new compiler. Let's start though with the frame-rate performance results of OpenArena, Tremulous, and World of Padman.


Related Articles