For the original bug behind this, please see https://bugzilla.gnome.org/show_bug.cgi?id=674208
In Gnome apps, including gnome-shell, Clutter and Cogl try to avoid doing a full-screen update on every rendered frame by just doing a glBlitFramebuffer() of the dirty region from the back buffer to the front buffer. The idea is that with software rendering, Mesa will do an XPutImage() of small regions, instead of the whole screen, to minimize the amount of data transferred to the (possibly remote) X server. However, this is broken in drisw, and has been for a couple of years now.
This piglit test exposes the bug (needs to be run with LIBGL_ALWAYS_SOFTWARE=1):