[Piglit] [PATCH 3/5] arb_enhanced_layouts: test some more compile time constant features

Timothy Arceri timothy.arceri at collabora.com
Sun Nov 1 18:48:41 PST 2015


On Sun, 2015-11-01 at 21:19 -0500, Ilia Mirkin wrote:
> On Sun, Nov 1, 2015 at 8:54 PM, Timothy Arceri
> <timothy.arceri at collabora.com> wrote:
> > Tests some glsl versioning used with the arb_enhanced_layout, as well
> > as some less basic features such as geting the qualifer value from
> > a constant array, the length method and unsigned ints.
> > ---
> >  .../input-location-constant-array-member.vert      | 28
> > ++++++++++++++++++++++
> >  .../input-location-glsl-330.vert                   | 16 +++++++++++++
> >  .../input-location-uint.vert                       | 17 +++++++++++++
> >  .../input-location-uniform-in-expression.vert      | 21 ++++++++++++++++
> >  .../invalid-glsl-version.vert                      | 18 ++++++++++++++
> >  .../length-method-invalid.vert                     | 26
> > ++++++++++++++++++++
> >  .../compiler-time-constants/length-method.vert     | 25
> > +++++++++++++++++++
> >  7 files changed, 151 insertions(+)
> >  create mode 100644 tests/spec/arb_enhanced_layouts/compiler/compiler-time
> > -constants/input-location-constant-array-member.vert
> >  create mode 100644 tests/spec/arb_enhanced_layouts/compiler/compiler-time
> > -constants/input-location-glsl-330.vert
> >  create mode 100644 tests/spec/arb_enhanced_layouts/compiler/compiler-time
> > -constants/input-location-uint.vert
> >  create mode 100644 tests/spec/arb_enhanced_layouts/compiler/compiler-time
> > -constants/input-location-uniform-in-expression.vert
> >  create mode 100644 tests/spec/arb_enhanced_layouts/compiler/compiler-time
> > -constants/invalid-glsl-version.vert
> >  create mode 100644 tests/spec/arb_enhanced_layouts/compiler/compiler-time
> > -constants/length-method-invalid.vert
> >  create mode 100644 tests/spec/arb_enhanced_layouts/compiler/compiler-time
> > -constants/length-method.vert
> > 
> > diff --git a/tests/spec/arb_enhanced_layouts/compiler/compiler-time
> > -constants/input-location-constant-array-member.vert
> > b/tests/spec/arb_enhanced_layouts/compiler/compiler-time-constants/input
> > -location-constant-array-member.vert
> > new file mode 100644
> > index 0000000..74e0633
> > --- /dev/null
> > +++ b/tests/spec/arb_enhanced_layouts/compiler/compiler-time
> > -constants/input-location-constant-array-member.vert
> > @@ -0,0 +1,28 @@
> > +// [config]
> > +// expect_result: pass
> > +// glsl_version: 1.20
> 
> 1.40
> 
> > +// require_extensions: GL_ARB_enhanced_layouts
> > GL_ARB_explicit_attrib_location
> > +// [end config]
> > +//
> > +// Section 4.3.3 (Constant Expressions) of the GLSL 4.50 Spec says:
> > +//
> > +// "A constant expression is one of:
> > +//  an expression formed by an operator on operands that are all constant
> > +//  expressions, including getting an element of a constant array, or a
> > member
> > +//  of a constant structure, or components of a constant vector.
> > +//  However, the lowest precedence operators of the sequence operator (,)
> > and
> > +//  the assignment operators ( =, +=,...) are not included in the
> > operators
> > +//  that can create a constant expression.
> > +
> > +#version 120
> > +#extension GL_ARB_explicit_attrib_location: require
> > +#extension GL_ARB_enhanced_layouts: require
> > +
> > +const int start[3] = int[3](3, 2, 1);
> > +
> > +layout(location = start[2] + 2) in vec4 b;
> > +
> > +void main()
> > +{
> > +       gl_Position = b;
> > +}
> > diff --git a/tests/spec/arb_enhanced_layouts/compiler/compiler-time
> > -constants/input-location-glsl-330.vert
> > b/tests/spec/arb_enhanced_layouts/compiler/compiler-time-constants/input
> > -location-glsl-330.vert
> > new file mode 100644
> > index 0000000..b69cad4
> > --- /dev/null
> > +++ b/tests/spec/arb_enhanced_layouts/compiler/compiler-time
> > -constants/input-location-glsl-330.vert
> > @@ -0,0 +1,16 @@
> > +// [config]
> > +// expect_result: pass
> > +// glsl_version: 3.30
> 
> 1.40 (and you also need GL_ARB_explicit_attrib_location) -- or is 3.30
> somehow different? Don't think that it is...

3.30 includes GL_ARB_explicit_attrib_location

> 
> > +// require_extensions: GL_ARB_enhanced_layouts
> > +// [end config]
> > +
> > +#version 330
> > +#extension GL_ARB_enhanced_layouts: require
> > +
> > +const int start = 6;
> > +layout(location = start + 2) in vec4 b;
> > +
> > +void main()
> > +{
> > +       gl_Position = b;
> > +}
> > diff --git a/tests/spec/arb_enhanced_layouts/compiler/compiler-time
> > -constants/input-location-uint.vert
> > b/tests/spec/arb_enhanced_layouts/compiler/compiler-time-constants/input
> > -location-uint.vert
> > new file mode 100644
> > index 0000000..bc7dbad
> > --- /dev/null
> > +++ b/tests/spec/arb_enhanced_layouts/compiler/compiler-time
> > -constants/input-location-uint.vert
> > @@ -0,0 +1,17 @@
> > +// [config]
> > +// expect_result: pass
> > +// glsl_version: 1.30
> 
> 1.40
> 
> > +// require_extensions: GL_ARB_enhanced_layouts
> > GL_ARB_explicit_attrib_location
> > +// [end config]
> > +
> > +#version 130
> > +#extension GL_ARB_explicit_attrib_location: require
> > +#extension GL_ARB_enhanced_layouts: require
> > +
> > +const uint start = 3u;
> > +layout(location = start + 2u) in vec4 b;
> > +
> > +void main()
> > +{
> > +       gl_Position = b;
> > +}
> > diff --git a/tests/spec/arb_enhanced_layouts/compiler/compiler-time
> > -constants/input-location-uniform-in-expression.vert
> > b/tests/spec/arb_enhanced_layouts/compiler/compiler-time-constants/input
> > -location-uniform-in-expression.vert
> > new file mode 100644
> > index 0000000..d0ef241
> > --- /dev/null
> > +++ b/tests/spec/arb_enhanced_layouts/compiler/compiler-time
> > -constants/input-location-uniform-in-expression.vert
> > @@ -0,0 +1,21 @@
> > +// [config]
> > +// expect_result: fail
> > +// glsl_version: 1.10
> 
> 1.40
> 
> > +// require_extensions: GL_ARB_enhanced_layouts
> > GL_ARB_explicit_attrib_location
> > +// [end config]
> > +//
> > +// Tests that compiler fails if a uniform is part of the constant
> > expression.
> > +
> > +#version 110
> > +#extension GL_ARB_explicit_attrib_location: require
> > +#extension GL_ARB_enhanced_layouts: require
> > +
> > +uniform int n;
> > +
> > +const int start = 3;
> > +layout(location = n + start + 2) in vec4 b;
> > +
> > +void main()
> > +{
> > +       gl_Position = b;
> > +}
> > diff --git a/tests/spec/arb_enhanced_layouts/compiler/compiler-time
> > -constants/invalid-glsl-version.vert
> > b/tests/spec/arb_enhanced_layouts/compiler/compiler-time-constants/invalid
> > -glsl-version.vert
> > new file mode 100644
> > index 0000000..1a5fb77
> > --- /dev/null
> > +++ b/tests/spec/arb_enhanced_layouts/compiler/compiler-time
> > -constants/invalid-glsl-version.vert
> > @@ -0,0 +1,18 @@
> > +// [config]
> > +// expect_result: fail
> > +// glsl_version: 1.10
> 
> 1.40
> 
> > +// [end config]
> > +//
> > +// Test that compiler fails when compile-time constants used in
> > unsupported
> > +// version of glsl and ARB_enhanced_layouts is not enabled.
> > +
> > +#version 110
> > +#extension GL_ARB_explicit_attrib_location: require
> > +
> > +const int start = 3;
> > +layout(location = start + 2) in vec4 b;
> > +
> > +void main()
> > +{
> > +       gl_Position = b;
> > +}
> > diff --git a/tests/spec/arb_enhanced_layouts/compiler/compiler-time
> > -constants/length-method-invalid.vert
> > b/tests/spec/arb_enhanced_layouts/compiler/compiler-time-constants/length
> > -method-invalid.vert
> > new file mode 100644
> > index 0000000..1612a62
> > --- /dev/null
> > +++ b/tests/spec/arb_enhanced_layouts/compiler/compiler-time
> > -constants/length-method-invalid.vert
> > @@ -0,0 +1,26 @@
> > +// [config]
> > +// expect_result: fail
> > +// glsl_version: 1.20
> 
>  1.40
> 
> > +// require_extensions: GL_ARB_enhanced_layouts
> > GL_ARB_explicit_attrib_location
> > +// [end config]
> > +//
> > +// Section 4.3.3 (Constant Expressions) of the GLSL 4.50 Spec says:
> > +//
> > +// "A constant expression is one of:
> > +//  valid use of the length() method on an explicitly sized object,
> > whether or
> > +//  not the object itself is constant (implicitly sized or run-time sized
> > +//  arrays do not return a constant expression)"
> > +
> > +#version 120
> > +#extension GL_ARB_explicit_attrib_location: require
> > +#extension GL_ARB_enhanced_layouts: require
> > +
> > +int start[];
> > +
> > +layout(location = start.length() + 2) in vec4 b;
> > +
> > +void main()
> > +{
> > +       start[1] = 3;
> > +       gl_Position = b;
> > +}
> > diff --git a/tests/spec/arb_enhanced_layouts/compiler/compiler-time
> > -constants/length-method.vert
> > b/tests/spec/arb_enhanced_layouts/compiler/compiler-time-constants/length
> > -method.vert
> > new file mode 100644
> > index 0000000..830db8d
> > --- /dev/null
> > +++ b/tests/spec/arb_enhanced_layouts/compiler/compiler-time
> > -constants/length-method.vert
> > @@ -0,0 +1,25 @@
> > +// [config]
> > +// expect_result: pass
> > +// glsl_version: 1.20
> 
> 1.40
> 
> > +// require_extensions: GL_ARB_enhanced_layouts
> > GL_ARB_explicit_attrib_location
> > +// [end config]
> > +//
> > +// Section 4.3.3 (Constant Expressions) of the GLSL 4.50 Spec says:
> > +//
> > +// "A constant expression is one of:
> > +//  valid use of the length() method on an explicitly sized object,
> > whether or
> > +//  not the object itself is constant (implicitly sized or run-time sized
> > +//  arrays do not return a constant expression)"
> > +
> > +#version 120
> > +#extension GL_ARB_explicit_attrib_location: require
> > +#extension GL_ARB_enhanced_layouts: require
> > +
> > +int start[3];
> > +
> > +layout(location = start.length() + 2) in vec4 b;
> > +
> > +void main()
> > +{
> > +       gl_Position = b;
> > +}
> 
> BTW, the reason I'm forcing the version discussion now is that I'm
> suspecting that we'll only want to enable GL_ARB_enhanced_layouts in
> core contexts, which makes it extra-important for these tests to
> request a core profile.

Yeah not a problem I totally spaced on this, I was to concerned about the
requirements for the features other then ARB_enhanced_layouts and forgot about
it's own requirements, thanks for the reviews and picking it up.

> 
> With the version changes,
> 
> Reviewed-by: Ilia Mirkin <imirkin at alum.mit.edu>


More information about the Piglit mailing list