The lack of temporaries registers is a bug of the ATI GLSL compiler, not an hardware issue.
I have some shaders that failed to compiled due to a lack of temporaries registers, but the same shader on MacOSX or with Cg (or DX HLSL) for example did work and produced an excellent assembler code (see the early thread about vertex skinning in GLSL or with multiple light shading.)
I hope that ATI will think to rewrite their GLSL compiler from scratch, because there is too many issues for being used in production IMHO.
Because of thoses software fallbacks (the worst are the silent one), OpenGL would be never as fast a DirectX on ATI, which guarantuee that when creating a ‘D3DCREATE_PUREDEVICE’ to never do software fallback at all.
I’ve asked once if they were an option to ‘disable’ all OpenGL software fallbacks to testing purpose and produce ‘GL_ERROR’ instead, but apparently this request was rejected.
Thanks for your reply.
I’ll try testing my GLSL shader by re-writing it in Cg and then testing it on Nvidia GPU.
But AFAIK the software fallback on GLSL was needed to be able to run those shaders also which exceeded the instruction limits imposed by the hardware.
And the error is returned when we use ARB_FRAGMENT_PROGRAM and the fragment program exceedes the no. of available resources.
So, I think the software fallback provided by GLSL is good because it guarantees that your shader will run even if it exceedes the no. of resources available.
BTW , has anybody tried to find out the no. of various resources available on new ATI GPU’s??