[Piglit] [PATCH 2/2] arb_shader_atomic_counters: check different binding points

Andres Gomez agomez at igalia.com
Thu Feb 23 08:55:27 UTC 2017


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 <agomez at igalia.com>
Cc: Francisco Jerez <currojerez at riseup.net>
Cc: Ian Romanick <ian.d.romanick at intel.com>
---
 .../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



More information about the Piglit mailing list