Merge pull request #2891 from dneto0/hlsl-namespace
[platform/upstream/glslang.git] / Test / spv.precision.frag
1 #version 310 es\r
2 #extension GL_OES_sample_variables : enable\r
3 precision mediump float;\r
4 in lowp float lowfin;\r
5 in mediump float mediumfin;\r
6 in highp vec4 highfin;\r
7 \r
8 highp int uniform_high;\r
9 mediump int uniform_medium;\r
10 lowp int uniform_low;\r
11 bvec2 ub2;\r
12 \r
13 out mediump vec4 mediumfout;\r
14 \r
15 highp float global_highp;\r
16 \r
17 lowp vec2 foo(mediump vec3 mv3)\r
18 {\r
19     return highfin.xy;\r
20 }\r
21 \r
22 bool boolfun(bvec2 bv2)\r
23 {\r
24     return bv2 == bvec2(false, true);\r
25 }\r
26 \r
27 struct S {\r
28     highp float a;\r
29     lowp float b;\r
30 };\r
31 \r
32 in S s;\r
33 \r
34 void main()\r
35 {\r
36     lowp int sum = uniform_medium + uniform_high;\r
37 \r
38     sum += uniform_high;\r
39     sum += uniform_low;\r
40     \r
41     // test maxing precisions of args to get precision of builtin\r
42     lowp float arg1 = 3.2;\r
43     mediump float arg2 = 1023908.2;\r
44     lowp float d = distance(lowfin, mediumfin);\r
45 \r
46     global_highp = length(highfin);\r
47 \r
48     highp vec4 local_highp = vec4(global_highp);\r
49 \r
50     mediumfout = vec4(sin(d)) + arg2 + local_highp;\r
51 \r
52     sum += 4 + ((ivec2(uniform_low) * ivec2(uniform_high) + ivec2((/* comma operator */uniform_low, uniform_high)))).x;\r
53 \r
54     mediumfout += vec4(sum);\r
55 \r
56     if (boolfun(ub2))\r
57         ++mediumfout;\r
58     \r
59     mediumfout *= s.a;\r
60     mediumfout *= s.b;\r
61 \r
62     mediumfout = ((mediumfin * mediumfin > 4.2) ? 2.0 * mediumfout : 3.0 * mediumfout);\r
63     mediumfout = ((gl_SampleMaskIn[0] >> uniform_medium > 0) ? 2.0 * mediumfout : 3.0 * mediumfout);\r
64 }\r