On Tue, Apr 23, 2013 at 10:22 AM, Paul Berry <[email protected]> wrote: > Test written by Vadim Girlin <[email protected]>. I added > explanatory comments. > --- > .../dead-code-break-interaction.shader_test | 33 > ++++++++++++++++++++++ > 1 file changed, 33 insertions(+) > create mode 100644 tests/shaders/dead-code-break-interaction.shader_test > > diff --git a/tests/shaders/dead-code-break-interaction.shader_test > b/tests/shaders/dead-code-break-interaction.shader_test > new file mode 100644 > index 0000000..a2c5b6a > --- /dev/null > +++ b/tests/shaders/dead-code-break-interaction.shader_test > @@ -0,0 +1,33 @@ > +# This test verifies that dead code elimination correctly accounts for > +# the flow control effects of the "break" statement. In the while > +# loop below, the first assignment to f is not dead code, even though > +# it is followed by another assignment to f, because the intervening > +# break causes the second assignment to be skipped. > + > +[require] > +GLSL >= 1.20 > + > +[vertex shader] > +void main() > +{ > + gl_Position = gl_Vertex; > +} > + > +[fragment shader] > +void main() > +{ > + float f = 0.0; > + while (true) { > + f = 1.0; // Should not be dead code eliminated > + break; > + f = 0.5; > + } > + gl_FragColor = vec4(1.0 - f, f, 0.0, 1.0); > +} > + > +[test] > +clear color 0.0 0.0 0.0 0.0 > +clear > + > +draw rect -1 -1 2 2 > +probe all rgba 0.0 1.0 0.0 1.0 > -- > 1.8.2.1
Reviewed-by: Matt Turner <[email protected]> _______________________________________________ Piglit mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/piglit
