summaryrefslogtreecommitdiffstats
path: root/chromium/third_party/glslang/src/Test/atomic_uint.frag
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/third_party/glslang/src/Test/atomic_uint.frag')
-rw-r--r--chromium/third_party/glslang/src/Test/atomic_uint.frag48
1 files changed, 48 insertions, 0 deletions
diff --git a/chromium/third_party/glslang/src/Test/atomic_uint.frag b/chromium/third_party/glslang/src/Test/atomic_uint.frag
new file mode 100644
index 00000000000..1234435695c
--- /dev/null
+++ b/chromium/third_party/glslang/src/Test/atomic_uint.frag
@@ -0,0 +1,48 @@
+#version 420 core
+
+layout(binding = 0) uniform atomic_uint counter;
+
+uint func(atomic_uint c)
+{
+ return atomicCounterIncrement(c);
+}
+
+uint func2(out atomic_uint c) // ERROR
+{
+ return counter; // ERROR, type mismatch
+ return atomicCounter(counter);
+}
+
+void main()
+{
+ atomic_uint non_uniform_counter; // ERROR
+ uint val = atomicCounter(counter);
+ atomicCounterDecrement(counter);
+}
+
+layout(binding = 1, offset = 3) uniform atomic_uint countArr[4];
+uniform int i;
+
+void opac()
+{
+ counter + counter; // ERROR
+ -counter; // ERROR
+ int a[3];
+ a[counter]; // ERROR
+ countArr[2];
+ countArr[i];
+ counter = 4; // ERROR
+}
+
+in atomic_uint acin; // ERROR
+atomic_uint acg; // ERROR
+uniform atomic_uint;
+uniform atomic_uint aNoBind; // ERROR, no binding
+layout(binding=0, offset=32) uniform atomic_uint aOffset;
+layout(binding=0, offset=4) uniform atomic_uint;
+layout(binding=0) uniform atomic_uint bar3; // offset is 4
+layout(binding=0) uniform atomic_uint ac[3]; // offset = 8
+layout(binding=0) uniform atomic_uint ad; // offset = 20
+layout(offset=8) uniform atomic_uint bar4; // ERROR, no binding
+layout(binding = 0, offset = 12) uniform atomic_uint overlap; // ERROR, overlapping offsets
+layout(binding = 20) uniform atomic_uint bigBind; // ERROR, binding too big