[Mesa-dev] ARB_sso layout() + other qualifiers

Ian Romanick idr at freedesktop.org
Mon Jun 2 16:17:23 PDT 2014


On 05/19/2014 10:06 PM, Chris Forbes wrote:
> Hi Ian,
> 
> When I was writing the `precise` support I found some error cases in
> the GLSL parser where we reject combinations of layout() with
> invariant / interpolation / etc qualifiers.
> 
> This seems to be consistent with the GLSL 1.50 grammar (or, at least,
> admits all the examples that were given in various GLSL specs and
> extension specs), but I don't think it works any more with SSO, since
> you'd want to be able to do rendezvous-by-location on qualified
> variables. The body of the ARB_sso spec doesn't clearly make the
> changes required to allow this, but various parts of the spec hint at
> it being possible, with the most obvious being in the resolution of
> issue 13:
> 
>     13. How are interpolation modifiers handled for separate shader
>         programs?
> 
>         RESOLVED:  GLSL only provides interpolation modifiers for user-
>         defined varyings. These modifiers can be used in conjunction
>         with the layout location qualifiers specified in this extension.
>         Such modifiers must match.

Hrm... that's weird.  ARB_sso came with 4.1, so it predates the
relaxation of the ordering rules.  `precise` came in 4.0.  The 4.0 and
4.1 specs provide approximately jack squat for guadance that I can find.

> I propose relaxing the rules in type_qualifier as follows:
> 
> * If neither GLSL 4.20 nor ARB_shading_language_420pack is supported,

Do you mean supported or enabled (in the shader)?
ARB_shading_language_420pack is supported by every driver that supports
GLSL 1.30.

> then require layout qualifiers to precede any other qualifiers;
> continue to disallow multiple layout qualifiers.
> 
> * Remove all other error generation for combining layout with
> invariant / interpolation / (with my other patches) precise.
> 
> I think this retains all the useful current behavior, and will accept
> all the examples I've seen.
> 
> -- Chris



More information about the mesa-dev mailing list