Patches 1 and 2 are: Reviewed-by: Ian Romanick <ian.d.roman...@intel.com>
I'm sending some comments about the other two. On 10/30/2013 02:27 PM, Paul Berry wrote: > Note: as of Mesa 5cb80f0, test "intrastage-interface-unnamed-array" is > known to fail. > --- > ...ge-interface-arrays-unmatched-sizes.shader_test | 42 +++++++++++++++++++ > .../intrastage-interface-named-array.shader_test | 47 > ++++++++++++++++++++++ > .../intrastage-interface-unnamed-array.shader_test | 47 > ++++++++++++++++++++++ > 3 files changed, 136 insertions(+) > create mode 100644 > tests/spec/glsl-1.50/linker/intrastage-interface-arrays-unmatched-sizes.shader_test > create mode 100644 > tests/spec/glsl-1.50/linker/intrastage-interface-named-array.shader_test > create mode 100644 > tests/spec/glsl-1.50/linker/intrastage-interface-unnamed-array.shader_test > > diff --git > a/tests/spec/glsl-1.50/linker/intrastage-interface-arrays-unmatched-sizes.shader_test > > b/tests/spec/glsl-1.50/linker/intrastage-interface-arrays-unmatched-sizes.shader_test > new file mode 100644 > index 0000000..b1f60fc > --- /dev/null > +++ > b/tests/spec/glsl-1.50/linker/intrastage-interface-arrays-unmatched-sizes.shader_test > @@ -0,0 +1,42 @@ > +# From the GLSL 1.50 spec, section 4.3.7 (Interface Blocks): > +# > +# Matched block names within an interface (as defined above) must > +# match in terms of having the same number of declarations with > +# the same sequence of types and the same sequence of member > +# names, as well as having the same member-wise layout > +# qualification (see next section). Furthermore, if a matching > +# block is declared as an array, then the array sizes must also > +# match (or follow array matching rules for the interface between > +# a vertex and a geometry shader). > +# > +# This test verifies that a link error is generated if intrastage > +# array sizes don't match. > + > +[require] > +GLSL >= 1.50 > + > +[vertex shader] > +out blk { > + vec4 foo; > +} inst[2]; > + > +void f() > +{ > + inst[1].foo = vec4(1.0); > +} > + > +[vertex shader] > +out blk { > + vec4 foo; > +} inst[3]; > + > +void f(); > + > +void main() > +{ > + f(); > + inst[2].foo = vec4(1.0); > +} > + > +[test] > +link error > diff --git > a/tests/spec/glsl-1.50/linker/intrastage-interface-named-array.shader_test > b/tests/spec/glsl-1.50/linker/intrastage-interface-named-array.shader_test > new file mode 100644 > index 0000000..a8ef627 > --- /dev/null > +++ b/tests/spec/glsl-1.50/linker/intrastage-interface-named-array.shader_test > @@ -0,0 +1,47 @@ > +# From the GLSL 1.50 spec, section 4.3.7 (Interface Blocks): > +# > +# Matched block names within an interface (as defined above) must > +# match in terms of having the same number of declarations with > +# the same sequence of types and the same sequence of member > +# names, as well as having the same member-wise layout > +# qualification (see next section). Furthermore, if a matching > +# block is declared as an array, then the array sizes must also > +# match (or follow array matching rules for the interface between > +# a vertex and a geometry shader). > +# > +# Although it's not explicitly stated, it's clear that when doing > +# intrastage linking, interface block arrays can only match other > +# interface block arrays. > +# > +# This test verifies that a link error occurs if we try to do > +# intrastage linking of a named interface block to an interface block > +# array. > + > +[require] > +GLSL >= 1.50 > + > +[vertex shader] > +out blk { > + vec4 foo; > +} inst; > + > +void f() > +{ > + inst.foo = vec4(1.0); > +} > + > +[vertex shader] > +out blk { > + vec4 foo; > +} inst[3]; > + > +void f(); > + > +void main() > +{ > + f(); > + inst[2].foo = vec4(1.0); > +} > + > +[test] > +link error > diff --git > a/tests/spec/glsl-1.50/linker/intrastage-interface-unnamed-array.shader_test > b/tests/spec/glsl-1.50/linker/intrastage-interface-unnamed-array.shader_test > new file mode 100644 > index 0000000..1dee998 > --- /dev/null > +++ > b/tests/spec/glsl-1.50/linker/intrastage-interface-unnamed-array.shader_test > @@ -0,0 +1,47 @@ > +# From the GLSL 1.50 spec, section 4.3.7 (Interface Blocks): > +# > +# Matched block names within an interface (as defined above) must > +# match in terms of having the same number of declarations with > +# the same sequence of types and the same sequence of member > +# names, as well as having the same member-wise layout > +# qualification (see next section). Furthermore, if a matching > +# block is declared as an array, then the array sizes must also > +# match (or follow array matching rules for the interface between > +# a vertex and a geometry shader). > +# > +# Although it's not explicitly stated, it's clear that when doing > +# intrastage linking, interface block arrays can only match other > +# interface block arrays. > +# > +# This test verifies that a link error occurs if we try to do > +# intrastage linking of an unnamed interface block to an interface > +# block array. > + > +[require] > +GLSL >= 1.50 > + > +[vertex shader] > +out blk { > + vec4 foo; > +}; > + > +void f() > +{ > + foo = vec4(1.0); > +} > + > +[vertex shader] > +out blk { > + vec4 foo; > +} inst[3]; > + > +void f(); > + > +void main() > +{ > + f(); > + inst[2].foo = vec4(1.0); > +} > + > +[test] > +link error > _______________________________________________ Piglit mailing list Piglit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/piglit