[Mesa-dev] RFC ARB_enhanced_layouts component qualifier support

Timothy Arceri timothy.arceri at collabora.com
Mon Dec 21 22:01:47 PST 2015

I've bounced back and forward between adding this support in the nir/i965
backend or adding it in the varying packing pass in GLSL IR a couple of times,
so I wanted to get some feedback on how others think it should be done. This
series adds support to the varying packing pass.

This series adds support for every stage except the tessellation stages where
this series in its current state will break any tess shader that has a varying
with an eplicit location. This is due to the shared storage for tess varyings,
see the commit message in patch 18 for my thoughts on working around this issue.

Any thoughts/comments on this series appreciated.

There are a bunch of piglit test for this commited and a few more sitting on the
mailing list / in patchwork.

>From my testing this series seems to work much better in most areas compared with
the Nvidia blob which fails a number of the simple exection tests.


[PATCH 01/21] glsl: remove unused varyings before packing them

Patch 1 is a clean-up

[PATCH 02/21] glsl: create helper to remove outer vertex index array
[PATCH 03/21] glsl: fix overlapping of varying locations for arrays
[PATCH 04/21] glsl: don't try adding build-ins to explicit locations

Patches 2-3 are SSO bugfixes

[PATCH 05/21] glsl: parse component layout qualifier
[PATCH 06/21] glsl: validate and store component layout qualifier in
[PATCH 07/21] glsl: fix cross validation for explicit locations on
[PATCH 08/21] glsl: cross validate varyings with a component
[PATCH 09/21] glsl: update explicit location matching to support
[PATCH 10/21] glsl: include varyings with explicit locations in slot
[PATCH 11/21] glsl: pass disable_varying_packing bool to the lowering
[PATCH 12/21] glsl: add support for packing varyings with explicit
[PATCH 13/21] glsl: enable lowering of varyings with explicit
[PATCH 14/21] glsl: validate linking of intrastage component
[PATCH 15/21] glsl: add support for explicit components to frag
[PATCH 16/21] glsl: pack vertex attributes with component layout
[PATCH 17/21] glsl: pack fragment shader outputs with component
[PATCH 18/21] RFC glsl: support packing of tessellation shader
[PATCH 19/21] glsl: add pack varying to resource list for vertex
[PATCH 20/21] mesa: add LOCATION_COMPONENT support to
[PATCH 21/21] docs: mark component layout qualifiers as DONE

Patches 5-20 add the component qualifier support.

More information about the mesa-dev mailing list