GNOME Shell Now Works With Software Rendering!
Adam Jackson of Red Hat has announced to the world that it's now possible for everyone to use GNOME Shell, regardless of whether you have a proper 3D hardware driver loaded. Adam says that as of tomorrow, LLVMpipe will no longer be treated as an unsupported driver for Fedora's Rawhide, which is what will eventually be Fedora 17.
While most have open or closed-source 3D drivers available for their GPU, this will be of use to those with QEMU guests where hardware acceleration is lacking, those using Intel Poulsbo on open-source, etc. GNOME Shell now works in software rendering with LLVMpipe and the performance is reported to be decent, but performance optimizations are surely to come as new paths are stressed. In particular, enhancements should land within the Linux kernel and Mesa.
LLVMpipe is a software-based Gallium3D driver that leverages LLVM to provide decent OpenGL acceleration on the CPU for modern CPUs. In particular, LLVMpipe tends to do the best in 64-bit mode and with the latest SSE instruction sets. LLVMpipe still isn't fast enough for many OpenGL games, but for simple window effects that should be a different story with more lax hardware requirements.
While Red Hat can be thanked for much of the improvements to Mesa/Gallium3D, GNOME, and other key components, Red Hat isn't the only one to thank for this new support. Google and others have been working on GLX_EXT_texture_from_pixmap for LLVMpipe and various support improvements.
Details on the GNOME Shell over LLVMpipe accomplishment in Fedora Rawhide can be found on Adam Willianson's blog while more details are available from Adam Jackson himself on the Fedora development list. Adam additionally wrote in an email to me, "[Adam Jackson] says performance is tolerable on cirrus/VNC and 'notably snappier' on qxl/SPICE."
With LLVMpipe now working on GNOME Shell / Mutter, it is likely possible now to use this CPU-based driver for Unity / Compiz (or with not much more work ahead).
This isn't the end of Red Hat's work on GNOME Shell software rendering. In time for Fedora 17 are also other improvements, per this feature specification. Among the items talked about are turning down the Mutter effects automatically when a software-based driver is detected, creating a fake GEM allocator in the Linux kernel DRM that is backed by system memory (would result in a big performance win), and adding more support and optimizations to Mesa. Jackson has already identified some extensions worth adding and other performance optimizations to make to LLVMpipe. With the mock-GEM DRM approach in the kernel, display drivers not using the kernel DRM by default (e.g. xf86-video-vesa, xf86-video-cirrus, etc) would need to be slightly modified to take advantage of the fake DRM.
While Red Hat will be releasing Fedora 16 next week Tuesday (thanks Red Hat, will be a great birthday present!), this GNOME Shell support in software will not land until Fedora 17. The Fedora 17 release will be a beefy miracle and released in the first half of 2012. For those wishing to play with the GNOME Shell software acceleration right now can tap the Fedora Rawhide packages.