[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