summaryrefslogtreecommitdiffstatshomepage
path: root/3rdparty/bgfx/3rdparty/glslang/Test/precision.frag
diff options
context:
space:
mode:
Diffstat (limited to '3rdparty/bgfx/3rdparty/glslang/Test/precision.frag')
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/precision.frag76
1 files changed, 76 insertions, 0 deletions
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/precision.frag b/3rdparty/bgfx/3rdparty/glslang/Test/precision.frag
new file mode 100644
index 00000000000..e24fa52ccfd
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/precision.frag
@@ -0,0 +1,76 @@
+#version 100
+
+varying vec3 color; // ERRROR, there is no default qualifier for float
+
+lowp vec2 foo(mediump vec3 mv3)
+{
+ highp vec4 hv4;
+ return hv4.xy;
+}
+
+int global_medium;
+
+uniform lowp sampler2D samplerLow;
+uniform mediump sampler2D samplerMed;
+uniform highp sampler2D samplerHigh;
+
+precision highp int;
+precision highp ivec2; // ERROR
+precision mediump int[2]; // ERROR
+vec4 uint; // okay
+precision mediump vec4; // ERROR
+
+int global_high;
+
+void main()
+{
+ lowp int sum = global_medium + global_high;
+
+ gl_FragColor = vec4(color, 1.0);
+
+ int level1_high;
+ sum += level1_high;
+
+ precision lowp int;
+ int level1_low;
+ sum += level1_low;
+
+ // test maxing precisions of args to get precision of builtin
+ lowp float arg1;
+ mediump float arg2;
+ lowp float d = distance(arg1, arg2);
+
+ {
+ int level2_low;
+ sum += level2_low;
+
+ precision highp int;
+ int level2_high;
+ sum += level2_high;
+ do {
+ if (true) {
+ precision mediump int;
+ int level4_medium;
+ sum += level4_medium;
+ }
+ int level3_high;
+ sum += level3_high;
+ } while (true);
+ int level2_high2;
+ sum += level2_high2;
+ }
+ int level1_low3;
+ sum += level1_low3;
+
+ sum += 4 + ((ivec2(level1_low3) * ivec2(level1_high) + ivec2((/* comma operator */level1_low3, level1_high)))).x;
+
+ texture2D(samplerLow, vec2(0.1, 0.2));
+ texture2D(samplerMed, vec2(0.1, 0.2));
+ texture2D(samplerHigh, vec2(0.1, 0.2));
+}
+
+precision mediump bool; // ERROR
+//precision mediump struct { int a; } s; // ERROR
+struct s {int a;};
+precision mediump s; // ERROR
+mediump bvec2 b2; // ERROR