ext_gpu_shader4: add compiler tests for everything
[piglit.git] / tests / spec / arb_tessellation_shader / compiler / barrier-switch.tesc
blob2cc2cfdc628d0a63c2d97dc1fcb7cfe7b73e9509
1 // [config]
2 // expect_result: fail
3 // glsl_version: 1.50
4 // require_extensions: GL_ARB_tessellation_shader
5 // check_link: true
6 // [end config]
8 /**
9  * From issue 42:
10  *
11  *   As a result, we choose a heavy-handed approach in which we only allow
12  *   calls to barrier() inside main().  Even within main, barrier() calls are
13  *   forbidden inside loops (even those that turn out to have constant loop
14  *   counts and don't execute "break" or "continue" statements), if
15  *   statements, or after a return statement.
16  *
17  * Further, from the spec text:
18  *
19  *   In particular, barrier() may not be called inside
20  *   a switch statement, in either sub-statement of an if statement, inside a
21  *   do, for, or while loop, or at any point after a return statement in the
22  *   function main().
23  */
25 #version 150
26 #extension GL_ARB_tessellation_shader: require
27 layout(vertices = 3) out;
28 uniform int val;
30 void main() {
31     gl_out[gl_InvocationID].gl_Position = vec4(0.0);
32     switch (val) {
33     case 1:
34         break;
35     default:
36         barrier();
37     }
38     gl_TessLevelOuter = float[4](1.0, 1.0, 1.0, 1.0);
39     gl_TessLevelInner = float[2](1.0, 1.0);