Merge pull request #3031 from rg3igalia/sub-group-size-arb-flat-fix
[platform/upstream/glslang.git] / Test / web.controlFlow.frag
1 #version 310 es
2
3 precision mediump float;
4 precision highp int;
5
6 int c, d;
7 layout(location = 0) in highp float x;
8 layout(location = 1) in vec4 bigColor;
9 layout(location = 2) in vec4 BaseColor;
10 layout(location = 3) in float f;
11
12 layout(location = 4) flat in int Count;
13 layout(location = 5) flat in uvec4 v4;
14
15 layout(location = 0) out vec4 outColor;
16
17 void main()
18 {
19     float f;
20     int a[2];
21
22     switch(c)
23     {
24     }
25
26     switch (c) {      // a no-error normal switch
27     case 1:
28         f = sin(x);
29         break;
30     case 2:
31         switch (d) {
32         case 1:
33             f = x * x * x;
34             break;
35         case 2:
36             f = x * x;
37             break;
38         }
39         break;
40     default:
41         f = tan(x);
42     }
43
44     vec4 color = BaseColor;
45
46     for (int i = 0; i < Count; ++i) {
47         color += bigColor;
48     }
49
50     outColor = color;
51
52     float sum = 0.0;
53     for (int i = 0; i < 4; ++i)
54         sum += float(v4[i]);
55
56     vec4 tv4;
57
58     for (int i = 0; i < 4; ++i)
59         tv4[i] = float(v4[i] * 4u);
60
61     outColor += vec4(sum) + tv4;
62
63     vec4 r;
64     r.xyz = BaseColor.xyz;
65
66     for (int i = 0; i < Count; ++i)
67         r.w = f;
68
69     outColor.xyz += r.xyz;
70
71     for (int i = 0; i < 16; i += 4)
72         outColor *= f;
73
74     int i = 0;
75     int A, B, C, D;
76     while (i<10) {
77         A = 1;
78         if (i%2 == 0) {
79             B = 2;
80             continue;
81             C = 2;
82         }
83         if (i%5 == 0) {
84             B = 2;
85             break;
86             C = 2;
87         }
88         i++;
89     }
90     D = 3;
91 }