blob: 619179b1d34243fcde4fdedac35143f5b6a7865d [file] [log] [blame]
group custom "Custom loop tests"
case continue_in_fragment_for_loop
version 300 es
vertex ""
#version 300 es
${VERTEX_DECLARATIONS}
void main()
{
${VERTEX_OUTPUT}
}
""
fragment ""
#version 300 es
${FRAGMENT_DECLARATIONS}
void main()
{
int count1 = 0;
for(int i=0;i<4;i++)
{
if (count1 == 2)
continue;
}
${FRAG_COLOR} = vec4(1.0);
}
""
end
end # custom
# https://github.com/KhronosGroup/WebGL/blob/master/sdk/tests/conformance2/glsl3/short-circuiting-in-loop-condition.html
group short_circuit "Short-circuiting operator in a loop using a function call with side effects"
case while
version 300 es
values
{
input bool in0 = [ false | true ];
output int sideEffectCounter = [ 0 | 10 ];
}
both ""
#version 300 es
precision mediump float;
precision mediump int;
${DECLARATIONS}
bool foo() {
++sideEffectCounter;
return true;
}
void main()
{
${SETUP}
sideEffectCounter = 0;
int iterations = 0;
while (in0 && foo()) {
++iterations;
if (iterations >= 10) {
break;
}
}
${OUTPUT}
}
""
end
case for
version 300 es
values
{
input bool in0 = [ false | true ];
output int sideEffectCounter = [ 0 | 10 ];
}
both ""
#version 300 es
precision mediump float;
precision mediump int;
${DECLARATIONS}
bool foo() {
++sideEffectCounter;
return true;
}
void main()
{
${SETUP}
sideEffectCounter = 0;
for (int iterations = 0; true; in0 && foo()) {
++iterations;
if (iterations > 10) {
break;
}
}
${OUTPUT}
}
""
end
case do_while
version 300 es
values
{
input bool in0 = [ false | true ];
output int sideEffectCounter = [ 0 | 10 ];
}
both ""
#version 300 es
precision mediump float;
precision mediump int;
${DECLARATIONS}
bool foo() {
++sideEffectCounter;
return true;
}
void main()
{
${SETUP}
sideEffectCounter = 0;
int iterations = 0;
do {
++iterations;
if (iterations > 10) {
break;
}
} while (in0 && foo());
${OUTPUT}
}
""
end
case while_sequence
version 300 es
values
{
input bool in0 = [ false | true ];
output int sideEffectCounter = [ 0 | 10 ];
}
both ""
#version 300 es
precision mediump float;
precision mediump int;
${DECLARATIONS}
bool foo() {
++sideEffectCounter;
return true;
}
void main()
{
${SETUP}
sideEffectCounter = 0;
int iterations = 0;
while ((in0, in0 && foo())) {
++iterations;
if (iterations >= 10) {
break;
}
}
${OUTPUT}
}
""
end
end # short_circuit