summaryrefslogtreecommitdiffstatshomepage
path: root/3rdparty/bgfx/3rdparty/glslang/Test/uint.frag
diff options
context:
space:
mode:
Diffstat (limited to '3rdparty/bgfx/3rdparty/glslang/Test/uint.frag')
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/uint.frag105
1 files changed, 105 insertions, 0 deletions
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/uint.frag b/3rdparty/bgfx/3rdparty/glslang/Test/uint.frag
new file mode 100644
index 00000000000..6dd69ac9fbc
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/uint.frag
@@ -0,0 +1,105 @@
+#version 300 es
+in uvec2 badu; // ERROR
+flat in uvec2 t;
+in highp float f;
+in highp vec2 tc;
+in bool bad; // ERROR
+uniform uvec4 v;
+uniform int i;
+uniform bool b;
+
+out uvec4 c;
+
+uniform lowp usampler2D usampler;
+
+void main()
+{
+ int count = 1;
+
+ uint u = t.y + 3u;
+ const uint cu1error = 0xFFFFFFFF; // ERROR
+ const uint cu1 = 0xFFFFFFFFU;
+ const uint cu2 = -1u; // 0xFFFFFFFF
+ const uint cu3 = 1U;
+ const uint cu4error = 1; // ERROR
+ const uint cu4 = 1u;
+
+ if (cu1 == cu2)
+ count *= 2; // done
+ if (cu3 == cu4)
+ count *= 3; // done
+ if (cu2 == cu3)
+ count *= 5; // not done
+
+ const uint cushiftediierror = 0xFFFFFFFF >> 10; // ERROR
+ const int cshiftedii = 0xFFFFFFFF >> 10;
+ const uint cushiftedui = 0xFFFFFFFFu >> 10;
+ const uint cushiftediuerror = 0xFFFFFFFF >> 10u; // ERROR
+ const int cshiftediu = 0xFFFFFFFF >> 10u;
+ const uint cushifteduu = 0xFFFFFFFFu >> 10u;
+
+ if (cshiftedii == cshiftediu)
+ count *= 7; // done
+ if (cushiftedui == cushifteduu)
+ count *= 11; // done
+ if (cshiftedii == int(cushiftedui))
+ count *= 13; // not done
+
+ uint shiftediierror = 0xFFFFFFFF >> 10; // ERROR
+ int shiftedii = 0xFFFFFFFF >> 10;
+ uint shiftedui = 0xFFFFFFFFu >> 10;
+ uint shiftediuerror = 0xFFFFFFFF >> 10u; // ERROR
+ int shiftediu = 0xFFFFFFFF >> 10u;
+ uint shifteduu = 0xFFFFFFFFu >> 10u;
+
+ if (shiftedii == shiftediu)
+ c = texture(usampler, tc);
+ if (shiftedui == shifteduu)
+ c = texture(usampler, tc + float(1u));
+ if (shiftedii == int(shiftedui))
+ c = texture(usampler, tc - vec2(2u));
+
+ if (t.x > 4u) {
+ float af = float(u);
+ bool ab = bool(u);
+ int ai = int(u);
+
+ c += uvec4(uint(af), uint(ab), uint(ai), count);
+ }
+
+ const uint cmask1 = 0x0A1u;
+ const uint cmask2 = 0xA10u;
+ const uint cmask3 = cmask1 << 4;
+ const uint cmask4 = 0xAB1u;
+
+ if (cmask3 == cmask2)
+ count *= 17; // done
+
+ if ((cmask3 & cmask1) != 0u)
+ count *= 19; // not done
+
+ if ((cmask1 | cmask3) == cmask4)
+ count *= 23; // done
+
+ if ((cmask1 ^ cmask4) == 0xA10u)
+ count *= 27; // done
+
+ uint mask1 = 0x0A1u;
+ uint mask2 = 0xA10u;
+ uint mask3 = mask1 << 4;
+ uint mask4 = 0xAB1u;
+
+ if (mask3 == mask2)
+ count *= 100;
+
+ if ((mask3 & mask1) != 0u)
+ count *= 101;
+
+ if ((mask1 | mask3) == mask4)
+ count *= 102;
+
+ if ((mask1 ^ mask4) == 0xA10u)
+ count *= 103;
+
+ c += uvec4(count);
+}