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."
v2: Added GL minimum version restriction.
Signed-off-by: Andres Gomez <[email protected]>
Cc: Francisco Jerez <[email protected]>
Cc: Ian Romanick <[email protected]>
---
.../different-bindings-atomic-counter.shader_test | 51 ++++++++++++++++++++++
1 file changed, 51 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..b331650cc
--- /dev/null
+++
b/tests/spec/arb_shader_atomic_counters/linker/different-bindings-atomic-counter.shader_test
@@ -0,0 +1,51 @@
+/* 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]
+GL >= 3.00
+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
[email protected]
https://lists.freedesktop.org/mailman/listinfo/piglit