The nv30/nv40 driver expects that all optimizations that can be performed on TGSI without target knowledge to have already been performed. This seems a sensible principle in general to avoid drivers duplicating work.
In particular, registers are expected to be optimally allocated. Doing this in the driver seems complex because I don't think you can easily tell where a variable is live in the presence of control flow and functions (without full-blown analysis). A practical problem I found (a bit ago, maybe it's no longer the case) is that the vsraytrace shader does not fit in the VS 512 instruction limit on nv40. Now, I'm not sure whether the GLSL passes, IR-to-Mesa, prog_optimize or something else should fix these issues. Also, it does not necessarily have to hold up release, since things have been more or less always broken in this area. Something interesting to try would be to use LLVM for this, which should provide a definitive solution, but is a longer term and somewhat experimental project. _______________________________________________ mesa-dev mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/mesa-dev
