Gallium3D LLVMpipe Starts To Smoke

Written by Michael Larabel in Display Drivers on 23 September 2011. Page 1 of 2. 16 Comments

While it's rare for a few days to pass at Phoronix without pulling the latest development code for Mesa / Gallium3D and the Linux kernel DRM in order to run updated Radeon, Intel, and Nouveau Linux graphics benchmarks, LLVMpipe isn't benchmarked as commonly. LLVMpipe is the new CPU-based software acceleration method for the Gallium3D that leverages the Low-Level Virtual Machine to provide better performance than the classic Mesa software rasterizer or Softpipe. Fortunately, upon running a brand new set of tests, the results show a bit more promise but there is still much work ahead.

Past benchmarks have shown that LLVMpipe is slow on the CPU, even with fast and modern multi-core AMD/Intel CPUs. Even with a six-core Intel Core i7 Gulftown, the speed is not too impressive. Earlier this year I showed benchmarks that LLVMpipe is beginning to speed-up, but with the latest round of tests I recently completed the numbers have stepped up a bit more.

This latest comparison is when using Mesa 7.12-devel git-ddd6e5b snapshot and when using the LLVM 3.0 SVN code from 24 August. With the latest Low-Level Virtual Machine and Mesa / Gallium3D development code, it is a very up-to-date look at how LLVMpipe will perform going forward. LLVM was built with just the --enable-optimized and --disable-assertions build options. Mesa was built per the defaults with LLVMpipe.

The testing for this article was done from a quad-core Intel Core i5 2500K "Sandy Bridge" CPU with a default frequency of 3.3GHz, Sapphire Pure Black P67 Hydra motherboard, 3GB of RAM, and a 500GB Western Digital SATA 3.0 HDD. Being compared to the LLVMpipe driver was the AMD Radeon HD 5450 and NVIDIA GeForce 9500GT PCI Express graphics cards. Both drivers were using their respective Gallium3D drivers (R600 and Nouveau NV50) from the same Mesa Git snapshot. Both drivers were tested with their stock settings. The OS was an Ubuntu 11.10 (x86_64) development snapshot with the latest Linux 3.1 kernel as of 24 August.

Before sharing the results generated by the Phoronix Test Suite, here's a few random notes concerning Gallium3D's LLVMpipe:

- With LLVMpipe using the CPU rather than any graphics processor, this driver may be free of some patent/IP concerns such as for S3 Texture Compression and floating-point textures. Some of these concerning features may end up being enabled by default in LLVMpipe.
- Software rendering (such as via LLVMpipe) can be used with Wayland.
- There are still problems using LLVMpipe with some compositing window managers.
- The only distribution I am aware of using the LLVMpipe driver as the default software fallback when no hardware acceleration is available is Fedora 15 (and newer). Though more distributions should begin supporting LLVMpipe rather than Mesa's classic software rasterizer or the nearly-as-slow Gallium3D Softpipe.
- There has been some talk in the Phoronix Forums and elsewhere about using LLVMpipe potentially on ARM mobile devices and in other embedded solutions. While nice in theory, LLVMpipe is not likely fast enough or as well optimized yet. Right now LLVMpipe is really targeted for multi-core x86_64 processors with SSE2/SSE3/SSE4 support.

The Nexuiz game failed to work on LLVMpipe with this Mesa 7.12-devel snapshot, so the first game that successfully runs was OpenArena.

Related Articles