On 31 August 2012 16:06, Kenneth Graunke <kenn...@whitecape.org> wrote:
> The ARB_explicit_attrib_location tests layout-12.frag and layout-13.frag > were incorrect: they both used index == 2 (which is invalid) and > expected the compile to succeed. Although the extension spec doesn't > state anything about generating an error on indices other than 0 or 1, > the GLSL 4.30 spec clarifies this as a compile error. This matches the > behavior of the API call defined in ARB_blend_func_extended, > glBindFragDataLocationIndexed, which generates INVALID_VALUE for indices > other than 0 or 1. > > This patch changes layout-13.frag to use index = 1 so it will actually > test the intended behavior. > > layout-12.frag was just bogus: the comment said "Even though the > specified locations overlap [...]" but the test only had one variable. > This patch turns it into a negative test to ensure index == 2 is a > compile error. > > This patch also adds layout-14.frag, a test to check that index < 0 is > also a compile error. > Reviewed-by: Paul Berry <stereotype...@gmail.com> > --- > .../1.20/compiler/layout-12.frag | 27 > ++++++---------------- > .../1.20/compiler/layout-13.frag | 4 ++-- > .../1.20/compiler/layout-14.frag | 21 +++++++++++++++++ > 3 files changed, 30 insertions(+), 22 deletions(-) > create mode 100644 > tests/spec/arb_explicit_attrib_location/1.20/compiler/layout-14.frag > > diff --git > a/tests/spec/arb_explicit_attrib_location/1.20/compiler/layout-12.frag > b/tests/spec/arb_explicit_attrib_location/1.20/compiler/layout-12.frag > index d337eb5..e7dab5d 100644 > --- a/tests/spec/arb_explicit_attrib_location/1.20/compiler/layout-12.frag > +++ b/tests/spec/arb_explicit_attrib_location/1.20/compiler/layout-12.frag > @@ -1,28 +1,15 @@ > // [config] > -// expect_result: pass > +// expect_result: fail > // glsl_version: 1.20 > // require_extensions: GL_ARB_explicit_attrib_location > GL_ARB_blend_func_extended > // [end config] > // > -// Even though the specified locations overlap, the spec says that a > *link* > -// error is generated. The changes to section 3.9.2 say: > -// > -// "Output binding assignments will cause LinkProgram to fail: > -// > -// * if the number of active outputs is greater than the value > of > -// MAX_DRAW_BUFFERS; > -// > -// * if the program has an active output assigned to a location > -// greater than or equal to the value of > -// MAX_DUAL_SOURCE_DRAW_BUFFERS and has an active output > assigned > -// an index greater than or equal to one; > -// > -// * if more than one varying out variable is bound to the same > -// number and index; or > -// > -// * if the explicit binding assigments do not leave enough > space > -// for the linker to automatically assign a location for a > varying > -// out array, which requires multiple contiguous locations." > +// While the GL_ARB_explicit_attrib_location specification does not say > +// anything about generating errors for invalid indices, the GLSL 4.30 > +// spec clarifies this: "It is also a compile-time error if a fragment > shader > +// sets a layout index to less than 0 or greater than 1." This matches > the > +// behavior of the equivalent API call, glBindFragDataLocationIndexed, > which > +// generates an INVALID_VALUE error if <index> is not 0 or 1. > > #version 120 > #extension GL_ARB_explicit_attrib_location: require > diff --git > a/tests/spec/arb_explicit_attrib_location/1.20/compiler/layout-13.frag > b/tests/spec/arb_explicit_attrib_location/1.20/compiler/layout-13.frag > index 3124e7f..a57a108 100644 > --- a/tests/spec/arb_explicit_attrib_location/1.20/compiler/layout-13.frag > +++ b/tests/spec/arb_explicit_attrib_location/1.20/compiler/layout-13.frag > @@ -26,8 +26,8 @@ > > #version 120 > #extension GL_ARB_explicit_attrib_location: require > -layout(location = 0, index = 2) out vec4 color; > -layout(location = 0, index = 2) out vec4 factor; > +layout(location = 0, index = 1) out vec4 color; > +layout(location = 0, index = 1) out vec4 factor; > > void main() > { > diff --git > a/tests/spec/arb_explicit_attrib_location/1.20/compiler/layout-14.frag > b/tests/spec/arb_explicit_attrib_location/1.20/compiler/layout-14.frag > new file mode 100644 > index 0000000..045fb8e > --- /dev/null > +++ b/tests/spec/arb_explicit_attrib_location/1.20/compiler/layout-14.frag > @@ -0,0 +1,21 @@ > +// [config] > +// expect_result: fail > +// glsl_version: 1.20 > +// require_extensions: GL_ARB_explicit_attrib_location > GL_ARB_blend_func_extended > +// [end config] > +// > +// While the GL_ARB_explicit_attrib_location specification does not say > +// anything about generating errors for invalid indices, the GLSL 4.30 > +// spec clarifies this: "It is also a compile-time error if a fragment > shader > +// sets a layout index to less than 0 or greater than 1." This matches > the > +// behavior of the equivalent API call, glBindFragDataLocationIndexed, > which > +// generates an INVALID_VALUE error if <index> is not 0 or 1. > + > +#version 120 > +#extension GL_ARB_explicit_attrib_location: require > +layout(location = 0, index = -5) out vec4 color; > + > +void main() > +{ > + color = vec4(1.0); > +} > -- > 1.7.11.4 > > _______________________________________________ > Piglit mailing list > Piglit@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/piglit >
_______________________________________________ Piglit mailing list Piglit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/piglit