So myself and Corbin have been picking off the r500 fragment program code one bug at a time since my last posting.
Today I decided to fix texenv which was both wrong and hanging, Corbin fixed the wrong, and I went after the hanging, and tracked it down to my own misunderstanding of a shared structure in the fragment program compiler from the r300 driver. This led to the wrong number of instructions getting output at various stages to the chip, which of course resulted in death and corruption.
So I now have compiz running without any corruption or wierdness.
and I've just ran ut2004demo which was killing the machine stone dead up until now.
So I think we are very close to merging this back into master and pushing it out into F9.