Here's a somewhat experimental patch to enable
GL_ARB_texture_env_crossbar on r200. It got more ugly than I wanted...
Works with tests/crossbar, glean(texcombine), couldn't find anything
more which uses it (well ut2k4 seems to, but I couldn't see any difference).
There is some overhead associated with it unfortunately (figuring out
what register to use for the output of the stages), I hope it's not too
serious (might roughly double the amount of cpu cycles spent for that
tex env stuff). Still, if you have all 6 texture units enabled and
reference textures back and forth like mad (since you can have 3
arguments per environment, both for rgb and alpha, that means at the
worst case you will need to reference all 6 registers in a single env
stage) you're somewhat likely to hit a raster fallback I guess :-(. Only
one register more and there would be no problem (as you can reference
arbitrary texture sampling results, but only the previous tex env result)...
I'm actually wondering how ATI solved that problem in their driver, I
couldn't see an easy way out to avoid the fallback - even using the 2
additional tex env stages or the second phase of the fragment pipeline
isn't going to fix the issue I think. Maybe someone else has a good idea?