Merge pull request #3031 from rg3igalia/sub-group-size-arb-flat-fix
[platform/upstream/glslang.git] / Test / earlyReturnDiscard.frag
1 #version 110\r
2 \r
3 uniform float d;\r
4 uniform vec4 bigColor, smallColor;\r
5 uniform vec4 otherColor;\r
6 \r
7 varying float c;\r
8 \r
9 uniform float threshhold;\r
10 uniform float threshhold2;\r
11 uniform float threshhold3;\r
12 \r
13 uniform float minimum;\r
14 \r
15 varying vec4 BaseColor;\r
16 \r
17 uniform bool b;\r
18 \r
19 void main()\r
20 {\r
21     vec4 color = BaseColor;\r
22     vec4 color2;\r
23 \r
24     color2 = otherColor;\r
25 \r
26     if (c > d)\r
27         color += bigColor;\r
28     else\r
29         color += smallColor;\r
30 \r
31     if (color.z < minimum)\r
32         return;\r
33 \r
34     color.z++;\r
35 \r
36     if (color.z > threshhold)\r
37         discard;\r
38 \r
39     color++;\r
40 \r
41     // Two path, different rest\r
42     if (color.w > threshhold2) {\r
43         if (color.z > threshhold2)\r
44             return;\r
45         else if (b)\r
46             color.z++;\r
47         else {\r
48             if (color.x < minimum) {\r
49                 discard;\r
50             } else {\r
51                 color++;\r
52             }\r
53         }\r
54     } else {\r
55         if (b)\r
56             discard;\r
57         else\r
58             return;\r
59     }\r
60 \r
61 \r
62     // // Two path, shared rest\r
63     // if (color.w > threshhold2) {\r
64     //     if (color.z > threshhold2)\r
65     //         return;\r
66     //     else if (b)\r
67     //         color++;\r
68     //     else {\r
69     //         if (color.x < minimum) {\r
70     //             discard;\r
71     //         } else {\r
72     //             color++;\r
73     //         }\r
74     //     }\r
75     // } else {\r
76     //     if (b)\r
77     //         discard;\r
78     //     else\r
79     //         return;\r
80     // }\r
81 \r
82 \r
83     // // One path\r
84     // if (color.w > threshhold2) {\r
85     //     if (color.z > threshhold2)\r
86     //         return;\r
87     //     else {\r
88     //         if (color.x < minimum) {\r
89     //             discard;\r
90     //         } else {\r
91     //             color++;\r
92     //         }\r
93     //     }\r
94     // } else {\r
95     //     if (b)\r
96     //         discard;\r
97     //     else\r
98     //         return;\r
99     // }\r
100 \r
101     gl_FragColor = color * color2;\r
102 }\r