summaryrefslogtreecommitdiffstatshomepage
path: root/3rdparty/bgfx/3rdparty/glslang/Test/spv.precision.frag
diff options
context:
space:
mode:
Diffstat (limited to '3rdparty/bgfx/3rdparty/glslang/Test/spv.precision.frag')
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/spv.precision.frag60
1 files changed, 60 insertions, 0 deletions
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/spv.precision.frag b/3rdparty/bgfx/3rdparty/glslang/Test/spv.precision.frag
new file mode 100644
index 00000000000..090c1a6a139
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/spv.precision.frag
@@ -0,0 +1,60 @@
+#version 310 es
+precision mediump float;
+in lowp float lowfin;
+in mediump float mediumfin;
+in highp vec4 highfin;
+
+highp int uniform_high;
+mediump int uniform_medium;
+lowp int uniform_low;
+bvec2 ub2;
+
+out mediump vec4 mediumfout;
+
+highp float global_highp;
+
+lowp vec2 foo(mediump vec3 mv3)
+{
+ return highfin.xy;
+}
+
+bool boolfun(bvec2 bv2)
+{
+ return bv2 == bvec2(false, true);
+}
+
+struct S {
+ highp float a;
+ lowp float b;
+};
+
+in S s;
+
+void main()
+{
+ lowp int sum = uniform_medium + uniform_high;
+
+ sum += uniform_high;
+ sum += uniform_low;
+
+ // test maxing precisions of args to get precision of builtin
+ lowp float arg1 = 3.2;
+ mediump float arg2 = 1023908.2;
+ lowp float d = distance(lowfin, mediumfin);
+
+ global_highp = length(highfin);
+
+ highp vec4 local_highp = vec4(global_highp);
+
+ mediumfout = vec4(sin(d)) + arg2 + local_highp;
+
+ sum += 4 + ((ivec2(uniform_low) * ivec2(uniform_high) + ivec2((/* comma operator */uniform_low, uniform_high)))).x;
+
+ mediumfout += vec4(sum);
+
+ if (boolfun(ub2))
+ ++mediumfout;
+
+ mediumfout *= s.a;
+ mediumfout *= s.b;
+}