[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