On 04/10/2013 12:20 PM, Vadim Girlin wrote:
Hi,It seems there is a bug in the compiler. The problem may be reproduced with the following shader (complete shader_test file attached): void main() { float f = 0.0; while (true) { f = 1.0; break; f = 0.5; } gl_FragColor = vec4(1.0 - f, f, 0.0, 1.0); } The result of compilation is equal to: while (true) { break; } gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0); In other words, GLSL compiler eliminates both assignments to "f" in the loop body and the resulting value of the "f" variable is 0.
Blarg. I can believe it. The loop analysis code is a disaster. Part of the reason I'm (slowly) making changes to the IR is so that we can do more credible loop handling.
I probably won't be able to get to this problem for quite some time. :(
Vadim _______________________________________________ mesa-dev mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/mesa-dev
_______________________________________________ mesa-dev mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/mesa-dev
