File: spv.controlFlowAttributes.frag

package info (click to toggle)
glslang 16.2.0-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 51,720 kB
  • sloc: cpp: 92,305; yacc: 4,320; sh: 603; python: 305; ansic: 94; javascript: 74; makefile: 17
file content (46 lines) | stat: -rw-r--r-- 1,570 bytes parent folder | download | duplicates (13)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#version 450

#extension GL_EXT_control_flow_attributes : enable

bool cond;

void f0() {
        [[loop]]                   for (;;) { }
}

void f1() {
        [[dont_unroll]]            while(true) {  }
}

void main()
{
        [[unroll]]                 for (int i = 0; i < 8; ++i) { }
	f0();
        [[dependency_infinite]]    do {  } while(true);
        [[dependency_length(1+3)]] for (int i = 0; i < 8; ++i) { }
        [[flatten]]                if (cond) { } else { }
        [[branch]]                 if (cond) cond = false;
        [[dont_flatten]]           switch(3) {  }                      // dropped
        [[dont_flatten]]           switch(3) { case 3: break; }

        // warnings on all these
        [[unroll(2)]]              for (int i = 0; i < 8; ++i) { }
        [[dont_unroll(-2)]]        while(true) {  }
        [[dependency_infinite(3)]] do {  } while(true);
        [[dependency_length]]      for (int i = 0; i < 8; ++i) { }
        [[flatten(3)]]             if (cond) { } else { }
        [[branch(5.2)]]            if (cond) cond = false;
        [[dont_flatten(3 + 7)]]    switch(3) { case 3: break; }

        // other valid uses
        [[ unroll, dont_unroll, dependency_length(2) ]]  while(cond) {  }
        [ [ dont_flatten , branch ] ]                    switch(3) { case 3: break; }
        [
            // attribute
            [
                // here
                flatten
            ]
        ]                       if (cond) { } else { }
        [[ dependency_length(2), dependency_infinite ]]  while(cond) {  }
}