From: Emil Velikov <[email protected]> Check if the linker throws an error when the offset across two identically named blocks' members are not the same.
v2: - Rework into intra- and interstage tests (Tim). - Tweak shader comment (wrong ...) Signed-off-by: Emil Velikov <[email protected]> --- ...sbo-different-offset-across-shaders.shader_test | 35 ++++++++++++++++++ ...ubo-different-offset-across-shaders.shader_test | 32 +++++++++++++++++ ...sbo-different-offset-across-shaders.shader_test | 41 ++++++++++++++++++++++ ...ubo-different-offset-across-shaders.shader_test | 40 +++++++++++++++++++++ 4 files changed, 148 insertions(+) create mode 100644 tests/spec/arb_enhanced_layouts/linker/explicit-offsets/interstage-ssbo-different-offset-across-shaders.shader_test create mode 100644 tests/spec/arb_enhanced_layouts/linker/explicit-offsets/interstage-ubo-different-offset-across-shaders.shader_test create mode 100644 tests/spec/arb_enhanced_layouts/linker/explicit-offsets/intrastage-ssbo-different-offset-across-shaders.shader_test create mode 100644 tests/spec/arb_enhanced_layouts/linker/explicit-offsets/intrastage-ubo-different-offset-across-shaders.shader_test diff --git a/tests/spec/arb_enhanced_layouts/linker/explicit-offsets/interstage-ssbo-different-offset-across-shaders.shader_test b/tests/spec/arb_enhanced_layouts/linker/explicit-offsets/interstage-ssbo-different-offset-across-shaders.shader_test new file mode 100644 index 0000000..6d06ef5 --- /dev/null +++ b/tests/spec/arb_enhanced_layouts/linker/explicit-offsets/interstage-ssbo-different-offset-across-shaders.shader_test @@ -0,0 +1,35 @@ +[require] +GLSL >= 1.40 +GL_ARB_enhanced_layouts +GL_ARB_shader_storage_buffer_object + +[vertex shader] +#version 140 +#extension GL_ARB_enhanced_layouts : enable +#extension GL_ARB_shader_storage_buffer_object : enable + +layout(std430) buffer b { + layout(offset = 0) vec4 var1; + layout(offset = 32) vec4 var2; +}; + +void main() +{ +} + +[fragment shader] +#version 140 +#extension GL_ARB_enhanced_layouts : enable +#extension GL_ARB_shader_storage_buffer_object : enable + +layout(std430) buffer b { + layout(offset = 0) vec4 var1; + layout(offset = 64) vec4 var2; // Wrong: members and their respective offset across identically named blocks must be the same +}; + +void main() +{ +} + +[test] +link error diff --git a/tests/spec/arb_enhanced_layouts/linker/explicit-offsets/interstage-ubo-different-offset-across-shaders.shader_test b/tests/spec/arb_enhanced_layouts/linker/explicit-offsets/interstage-ubo-different-offset-across-shaders.shader_test new file mode 100644 index 0000000..b391fd6 --- /dev/null +++ b/tests/spec/arb_enhanced_layouts/linker/explicit-offsets/interstage-ubo-different-offset-across-shaders.shader_test @@ -0,0 +1,32 @@ +[require] +GLSL >= 1.40 +GL_ARB_enhanced_layouts + +[vertex shader] +#version 140 +#extension GL_ARB_enhanced_layouts : enable + +layout(std140) uniform b { + layout(offset = 0) vec4 var1; + layout(offset = 32) vec4 var2; +}; + +void main() +{ +} + +[fragment shader] +#version 140 +#extension GL_ARB_enhanced_layouts : enable + +layout(std140) uniform b { + layout(offset = 0) vec4 var1; + layout(offset = 64) vec4 var2; // Wrong: members and their respective offset across identically named blocks must be the same +}; + +void main() +{ +} + +[test] +link error diff --git a/tests/spec/arb_enhanced_layouts/linker/explicit-offsets/intrastage-ssbo-different-offset-across-shaders.shader_test b/tests/spec/arb_enhanced_layouts/linker/explicit-offsets/intrastage-ssbo-different-offset-across-shaders.shader_test new file mode 100644 index 0000000..dee2da0 --- /dev/null +++ b/tests/spec/arb_enhanced_layouts/linker/explicit-offsets/intrastage-ssbo-different-offset-across-shaders.shader_test @@ -0,0 +1,41 @@ +[require] +GLSL >= 1.40 +GL_ARB_enhanced_layouts +GL_ARB_shader_storage_buffer_object + +[vertex shader] +#version 140 +#extension GL_ARB_enhanced_layouts : enable +#extension GL_ARB_shader_storage_buffer_object : enable + +layout(std430) buffer b { + layout(offset = 0) vec4 var1; + layout(offset = 32) vec4 var2; +}; + +void f() +{ + var1 = vec4(1, 0, 0, 1); +} + +[vertex shader] +#version 140 +#extension GL_ARB_enhanced_layouts : enable +#extension GL_ARB_shader_storage_buffer_object : enable + +layout(std430) buffer b { + layout(offset = 0) vec4 var1; + layout(offset = 64) vec4 var2; // Wrong: members and their respective offset across identically named blocks must be the same +}; + +void f(); + +void main() +{ + f(); + + gl_Position = gl_Vertex; +} + +[test] +link error diff --git a/tests/spec/arb_enhanced_layouts/linker/explicit-offsets/intrastage-ubo-different-offset-across-shaders.shader_test b/tests/spec/arb_enhanced_layouts/linker/explicit-offsets/intrastage-ubo-different-offset-across-shaders.shader_test new file mode 100644 index 0000000..ac22303 --- /dev/null +++ b/tests/spec/arb_enhanced_layouts/linker/explicit-offsets/intrastage-ubo-different-offset-across-shaders.shader_test @@ -0,0 +1,40 @@ +[require] +GLSL >= 1.40 +GL_ARB_enhanced_layouts + +[vertex shader] +#version 140 +#extension GL_ARB_enhanced_layouts : enable + +layout(std140) uniform b { + layout(offset = 0) vec4 var1; + layout(offset = 32) vec4 var2; +}; + +varying vec4 v; + +void f() +{ + v = var1; +} + +[vertex shader] +#version 140 +#extension GL_ARB_enhanced_layouts : enable + +layout(std140) uniform b { + layout(offset = 0) vec4 var1; + layout(offset = 64) vec4 var2; // Wrong: members and their respective offset across identically named blocks must be the same +}; + +void f(); + +void main() +{ + f(); + + gl_Position = gl_Vertex; +} + +[test] +link error -- 2.6.2 _______________________________________________ Piglit mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/piglit
