This adds a test to check that a link error is expected when
specifying different binding points among compilation units for atomic
counters with the same name.

From the ARB_shader_atomic_counters spec:

  " It is legal for some shaders to provide a layout qualifier for a
    uniform variable of the same name, while another shader does not
    provide a layout qualifier for a uniform variable of the same
    name, but if provided, all provided layout qualifiers must be
    equal for a uniform variable of the same name, and if not
    provided, all implicitly provided layout qualifiers must be equal
    for a uniform variable of the same name."

Signed-off-by: Andres Gomez <ago...@igalia.com>
Cc: Francisco Jerez <curroje...@riseup.net>
Cc: Kenneth Graunke <kenn...@whitecape.org>
---
 .../different-bindings-atomic-counter.shader_test  | 50 ++++++++++++++++++++++
 1 file changed, 50 insertions(+)
 create mode 100644 
tests/spec/arb_shader_atomic_counters/linker/different-bindings-atomic-counter.shader_test

diff --git 
a/tests/spec/arb_shader_atomic_counters/linker/different-bindings-atomic-counter.shader_test
 
b/tests/spec/arb_shader_atomic_counters/linker/different-bindings-atomic-counter.shader_test
new file mode 100644
index 000000000..6e7c77488
--- /dev/null
+++ 
b/tests/spec/arb_shader_atomic_counters/linker/different-bindings-atomic-counter.shader_test
@@ -0,0 +1,50 @@
+/* The ARB_shader_atomic_counters says:
+ *
+ *     "It is legal for some shaders to provide a layout qualifier for
+ *      a uniform variable of the same name, while another shader does
+ *      not provide a layout qualifier for a uniform variable of the
+ *      same name, but if provided, all provided layout qualifiers
+ *      must be equal for a uniform variable of the same name, and if
+ *      not provided, all implicitly provided layout qualifiers must
+ *      be equal for a uniform variable of the same name."
+ *
+ * Verify that a link error happens when using different binding
+ * points for an atomic counter with the same name in different
+ * compilation units.
+ */
+
+[require]
+GLSL >= 1.40
+GL_ARB_shader_atomic_counters
+
+[vertex shader]
+#version 140
+#extension GL_ARB_shader_atomic_counters: require
+
+layout (binding = 0) uniform atomic_uint x;
+
+in vec4 piglit_vertex;
+out vec4 vs_fs;
+
+void main()
+{
+       vs_fs = vec4(atomicCounter(x));
+       gl_Position = piglit_vertex;
+}
+
+[fragment shader]
+#version 140
+#extension GL_ARB_shader_atomic_counters: require
+
+layout (binding = 1) uniform atomic_uint x;
+
+in  vec4 vs_fs;
+out vec4 fs_out;
+
+void main()
+{
+       fs_out = vs_fs * atomicCounter(x);
+}
+
+[test]
+link error
-- 
2.11.0

_______________________________________________
Piglit mailing list
Piglit@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/piglit

Reply via email to