Just a quick question. My 9700 reports that it supports 64 ALU instructions, is that per indirection or in total ? With the ATI_fragment_shader extension you had 8 instructions per-pass ( indirection in ARB_fp terms ) and the glGet(…) function reported 8.
ATI_fragment_shader uses the semi-programmable mode of the Radeon 8500, which is somewhat like two passes over a fixed set of execution hardware.
The R300 support a fully orthogonal assembly language, where instructions really mean instructions, and there’s no first or second pass (phase) to worry about.
Thus, the limits reported should be the overall limits for a single shader.
Thanks, that does seem logical. I wrote my first fragment program yesterday ( 35 instructions ) and it went pretty smoothly. I still trying to get used to having vertex program flexibility at the fragment level.