[Piglit] [PATCH 2/2] arb_shader_atomic_counters: check different binding points
Andres Gomez
agomez at igalia.com
Wed Feb 8 17:04:29 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."
Signed-off-by: Andres Gomez <agomez at igalia.com>
Cc: Francisco Jerez <currojerez at riseup.net>
Cc: Kenneth Graunke <kenneth at 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
More information about the Piglit
mailing list