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