[Mesa-dev] [WIP 11/13] glsl: parser changes for GL_ARB_explicit_uniform_location

Matt Turner mattst88 at gmail.com
Fri Apr 4 14:51:56 PDT 2014


On Fri, Apr 4, 2014 at 2:42 PM, Ian Romanick <idr at freedesktop.org> wrote:
> On 03/27/2014 11:45 PM, Tapani Pälli wrote:
>> Patch adds a preprocessor define for the extension and stores
>> explicit location data for uniforms during AST->HIR conversion.
>> It also sets layout token to be available when having the
>> extension in place.
>>
>> Signed-off-by: Tapani Pälli <tapani.palli at intel.com>
>> ---
>>  src/glsl/ast_to_hir.cpp      | 13 +++++++++++++
>>  src/glsl/glcpp/glcpp-parse.y |  3 +++
>>  src/glsl/glsl_lexer.ll       |  1 +
>>  3 files changed, 17 insertions(+)
>>
>> diff --git a/src/glsl/ast_to_hir.cpp b/src/glsl/ast_to_hir.cpp
>> index 8f6e901..3bfad02 100644
>> --- a/src/glsl/ast_to_hir.cpp
>> +++ b/src/glsl/ast_to_hir.cpp
>> @@ -2123,6 +2123,19 @@ validate_explicit_location(const struct ast_type_qualifier *qual,
>>  {
>>     bool fail = false;
>>
>> +   /* Checks for GL_ARB_explicit_uniform_location. */
>> +   if (qual->flags.q.uniform) {
>> +
>> +      if (qual->index < 0) {
>> +         _mesa_glsl_error(loc, state,
>> +                          "explicit location < 0 for uniform %s", var->name);
>
> We also need to check that the explicit location isn't too large.  I
> don't think that check can happen here because (I think) it will depend
> on the size of the uniform.  The spec isn't completely clear, but I think
>
> // assume GL_MAX_UNIFORM_LOCATIONS is 65536
> layout(location=65535) float foo[1];

I think you mean foo[2]?


More information about the mesa-dev mailing list