[Mesa-dev] [PATCH] mesa: add additional checks for uniform location query

Tapani Pälli tapani.palli at intel.com
Mon Oct 26 03:19:01 PDT 2015



On 10/26/2015 12:11 PM, Timothy Arceri wrote:
> On Mon, 2015-10-26 at 11:22 +0200, Tapani Pälli wrote:
>> Patch adds additional check to make sure we don't return locations
>> for
>> structures or arrays of structures.
>>
>>  From page 79 of the OpenGL 4.2 spec:
>>      "A valid name cannot be a structure, an array of structures, or
>> any
>>      portion of a single vector or a matrix."
>>
>> No Piglit or CTS regressions observed.
>>
>> Signed-off-by: Tapani Pälli <tapani.palli at intel.com>
>> ---
>>   src/mesa/main/shader_query.cpp | 10 ++++++++++
>>   1 file changed, 10 insertions(+)
>>
>> diff --git a/src/mesa/main/shader_query.cpp
>> b/src/mesa/main/shader_query.cpp
>> index 8182d3d..b0707a4 100644
>> --- a/src/mesa/main/shader_query.cpp
>> +++ b/src/mesa/main/shader_query.cpp
>> @@ -808,6 +808,16 @@ program_resource_location(struct
>> gl_shader_program *shProg,
>>         if (RESOURCE_UNI(res)->builtin)
>>            return -1;
>>
>> +     /* From page 79 of the OpenGL 4.2 spec:
>> +      *
>> +      *     "A valid name cannot be a structure, an array of
>> structures, or any
>> +      *     portion of a single vector or a matrix."
>> +      */
>> +      if (RESOURCE_UNI(res)->type->is_record() ||
>> +          (RESOURCE_UNI(res)->type->is_array() &&
>> +           RESOURCE_UNI(res)->type->fields.array->is_record()))
>> +         return -1;
>> +
>
> This could just be RESOURCE_UNI(res)->type->without_array()
> ->is_record() then it would also work for arrays of arrays.

True, this is simpler way to say the same thing, I'll change this.

>
>>         /* From the GL_ARB_uniform_buffer_object spec:
>>          *
>>          *     "The value -1 will be returned if <name> does not
>> correspond to an


More information about the mesa-dev mailing list