[Piglit] [PATCH V2] arb_shading_language_420pack: test multiple layout qualifiers on the same line
Timothy Arceri
timothy.arceri at collabora.com
Thu Jan 14 15:08:00 PST 2016
On Thu, 2016-01-14 at 09:18 -0800, Matt Turner wrote:
> On Wed, Jan 13, 2016 at 9:45 PM, Timothy Arceri
> <timothy.arceri at collabora.com> wrote:
> > While the spec is taking about multiple layout qualifiers we
> > interpret that
> > to mean layout-qualifier-names can also occur multiple times within
> > a single layout qualifier.
> >
> > In Section 4.4 (Layout Qualifiers) of the GLSL 4.40 spec it
> > clarifies this:
> >
> > "More than one layout qualifier may appear in a single
> > declaration.
> > Additionally, the same layout-qualifier-name can occur multiple
> > times
> > within a layout qualifier or across multiple layout qualifiers
> > in the
> > same declaration"
> >
> > The results from the Nvidia binary are a little all over the place
> > with these
> > tests, most of the tests with arb_shading_language_420pack enabled
> > fail but
> > if the GLSL version is changed to 4.20 they pass.
> > The only tests that pass with arb_shading_language_420pack enabled
> > are the
> > global tests but that seems to be because they do not detect the
> > duplicates
> > and fail the negative tests.
> >
> > V2: fix version mismatch in location tests, and prefix variable
> > with out
> > in global tests
> > ---
>
> You seem to be interpreting this as a clarification on the earlier
> spec text rather than as a behavioral change based on NVIDIA's
> acceptance when using #version 420. I don't necessarily agree --
> their
> drivers are known to accept out-of-spec shaders.
>
> In fact (as I'm sure you know) ARB_enhanced_layouts, explicitly
> expands the paragraph cited to contain new text about
> layout-qualifier-names.
I actually totally missed that, thanks.
> I think this indicates an actual behavioral
> change and not a clarification meant to be applied to earlier shader
> versions.
I spent most of my time searching the older specs trying to find
something that says duplicates were not allowed in the first place ...
I couldn't find anything it seems undefined and drivers default to not
allowed.
The only thing I could find were sections specificly allowing it,
Section 4.3.8.1 (Input Layout Qualifiers) in the 4.10 spec:
"Any or all of these identifiers may be specified one or more times in
a single input layout declaration. If primitive mode, vertex spacing,
or ordering is declared more than once in the tessellation evaluation
shaders of a program, all such declarations must use the same
identifier."
I guess from that you can assume they are not normally allowed.
Anyway I think enabling this for enhanced layouts makes the most sense
as per your suggestion. I'll update the tests and Mesa patch thanks for
the feedback.
>
> I think the tests have value, but I think that they should be testing
> ARB_enhanced_layouts instead of 420pack.
>
> > ...e-qualifier-in-single-declaration-420-pack.vert | 22
> > +++++++++++++
> > ...ualifier-in-single-declaration-no-420-pack.vert | 21
> > ++++++++++++
> > ...n-qualifier-in-single-declaration-420-pack.vert | 33
> > +++++++++++++++++++
> > ...ualifier-in-single-declaration-no-420-pack.vert | 32
> > ++++++++++++++++++
> > ...iple-stream-in-single-declaration-420-pack.geom | 36
> > ++++++++++++++++++++
> > ...e-stream-in-single-declaration-no-420-pack.geom | 35
> > ++++++++++++++++++++
> > ...ream-in-single-global-declaration-420-pack.geom | 38
> > ++++++++++++++++++++++
> > ...m-in-single-global-declaration-no-420-pack.geom | 37
> > +++++++++++++++++++++
> > ...e-qualifier-in-single-declaration-420-pack.geom | 25
> > ++++++++++++++
> > ...ualifier-in-single-declaration-no-420-pack.geom | 24
> > ++++++++++++++
> > ...fier-in-single-global-declaration-420-pack.geom | 27
> > +++++++++++++++
> > ...r-in-single-global-declaration-no-420-pack.geom | 37
> > +++++++++++++++++++++
> > 12 files changed, 367 insertions(+)
> > create mode 100644
> > tests/spec/arb_shading_language_420pack/compiler/layout
> > -qualifiers/multiple-location-multiple-qualifier-in-single
> > -declaration-420-pack.vert
> > create mode 100644
> > tests/spec/arb_shading_language_420pack/compiler/layout
> > -qualifiers/multiple-location-multiple-qualifier-in-single
> > -declaration-no-420-pack.vert
> > create mode 100644
> > tests/spec/arb_shading_language_420pack/compiler/layout
> > -qualifiers/multiple-location-qualifier-in-single-declaration-420
> > -pack.vert
> > create mode 100644
> > tests/spec/arb_shading_language_420pack/compiler/layout
> > -qualifiers/multiple-location-qualifier-in-single-declaration-no
> > -420-pack.vert
> > create mode 100644
> > tests/spec/arb_shading_language_420pack/compiler/layout
> > -qualifiers/multiple-stream-in-single-declaration-420-pack.geom
> > create mode 100644
> > tests/spec/arb_shading_language_420pack/compiler/layout
> > -qualifiers/multiple-stream-in-single-declaration-no-420-pack.geom
> > create mode 100644
> > tests/spec/arb_shading_language_420pack/compiler/layout
> > -qualifiers/multiple-stream-in-single-global-declaration-420
> > -pack.geom
> > create mode 100644
> > tests/spec/arb_shading_language_420pack/compiler/layout
> > -qualifiers/multiple-stream-in-single-global-declaration-no-420
> > -pack.geom
> > create mode 100644
> > tests/spec/arb_shading_language_420pack/compiler/layout
> > -qualifiers/multiple-stream-multiple-qualifier-in-single
> > -declaration-420-pack.geom
> > create mode 100644
> > tests/spec/arb_shading_language_420pack/compiler/layout
> > -qualifiers/multiple-stream-multiple-qualifier-in-single
> > -declaration-no-420-pack.geom
> > create mode 100644
> > tests/spec/arb_shading_language_420pack/compiler/layout
> > -qualifiers/multiple-stream-multiple-qualifier-in-single-global
> > -declaration-420-pack.geom
> > create mode 100644
> > tests/spec/arb_shading_language_420pack/compiler/layout
> > -qualifiers/multiple-stream-multiple-qualifier-in-single-global
> > -declaration-no-420-pack.geom
> >
> > diff --git
> > a/tests/spec/arb_shading_language_420pack/compiler/layout
> > -qualifiers/multiple-location-multiple-qualifier-in-single
> > -declaration-420-pack.vert
> > b/tests/spec/arb_shading_language_420pack/compiler/layout
> > -qualifiers/multiple-location-multiple-qualifier-in-single
> > -declaration-420-pack.vert
> > new file mode 100644
> > index 0000000..9551476
> > --- /dev/null
> > +++ b/tests/spec/arb_shading_language_420pack/compiler/layout
> > -qualifiers/multiple-location-multiple-qualifier-in-single
> > -declaration-420-pack.vert
> > @@ -0,0 +1,22 @@
> > +// [config]
> > +// expect_result: pass
> > +// glsl_version: 1.40
> > +// require_extensions: GL_ARB_separate_shader_objects
> > GL_ARB_shading_language_420pack
> > +// check_link: false
> > +// [end config]
> > +//
> > +// From the ARB_shading_language_420pack spec:
> > +//
> > +// "More than one layout qualifier may appear in a single
> > declaration. If
> > +// the same layout-qualifier-name occurs in multiple layout
> > qualifiers for
> > +// the same declaration, the last one overrides the former
> > ones."
> > +
> > +#version 140
> > +#extension GL_ARB_separate_shader_objects : enable
> > +#extension GL_ARB_shading_language_420pack: enable
> > +
> > +layout(location=2) layout(location=1) out vec3 var;
> > +
> > +void main()
> > +{
> > +}
> > diff --git
> > a/tests/spec/arb_shading_language_420pack/compiler/layout
> > -qualifiers/multiple-location-multiple-qualifier-in-single
> > -declaration-no-420-pack.vert
> > b/tests/spec/arb_shading_language_420pack/compiler/layout
> > -qualifiers/multiple-location-multiple-qualifier-in-single
> > -declaration-no-420-pack.vert
> > new file mode 100644
> > index 0000000..e5cbeb4
> > --- /dev/null
> > +++ b/tests/spec/arb_shading_language_420pack/compiler/layout
> > -qualifiers/multiple-location-multiple-qualifier-in-single
> > -declaration-no-420-pack.vert
> > @@ -0,0 +1,21 @@
> > +// [config]
> > +// expect_result: fail
> > +// glsl_version: 1.40
> > +// require_extensions: GL_ARB_separate_shader_objects
> > +// check_link: false
> > +// [end config]
> > +//
> > +// From the ARB_shading_language_420pack spec:
> > +//
> > +// "More than one layout qualifier may appear in a single
> > declaration. If
> > +// the same layout-qualifier-name occurs in multiple layout
> > qualifiers for
> > +// the same declaration, the last one overrides the former
> > ones."
> > +
> > +#version 140
> > +#extension GL_ARB_separate_shader_objects : enable
> > +
> > +layout(location=2) layout(location=1) out vec3 var;
> > +
> > +void main()
> > +{
> > +}
> > diff --git
> > a/tests/spec/arb_shading_language_420pack/compiler/layout
> > -qualifiers/multiple-location-qualifier-in-single-declaration-420
> > -pack.vert
> > b/tests/spec/arb_shading_language_420pack/compiler/layout
> > -qualifiers/multiple-location-qualifier-in-single-declaration-420
> > -pack.vert
> > new file mode 100644
> > index 0000000..cff5d51
> > --- /dev/null
> > +++ b/tests/spec/arb_shading_language_420pack/compiler/layout
> > -qualifiers/multiple-location-qualifier-in-single-declaration-420
> > -pack.vert
> > @@ -0,0 +1,33 @@
> > +// [config]
> > +// expect_result: pass
> > +// glsl_version: 1.40
> > +// require_extensions: GL_ARB_separate_shader_objects
> > GL_ARB_shading_language_420pack
> > +// check_link: false
> > +// [end config]
> > +//
> > +// From the ARB_shading_language_420pack spec:
> > +//
> > +// "More than one layout qualifier may appear in a single
> > declaration. If
> > +// the same layout-qualifier-name occurs in multiple layout
> > qualifiers for
> > +// the same declaration, the last one overrides the former
> > ones."
> > +//
> > +// While the spec is taking about multiple layout qualifiers we
> > interpert that
>
> typo: interpret
>
> Occurs elsewhere as well.
More information about the Piglit
mailing list