[Mesa-dev] [PATCH v5 09/70] glsl: return error if unsized arrays are found in OpenGL ES

Samuel Iglesias Gonsálvez siglesias at igalia.com
Tue Sep 15 03:14:33 PDT 2015



On 15/09/15 12:01, Tapani Pälli wrote:
> 
> 
> On 09/10/2015 04:35 PM, Iago Toral Quiroga wrote:
>> From: Samuel Iglesias Gonsalvez <siglesias at igalia.com>
>>
>> Signed-off-by: Samuel Iglesias Gonsalvez <siglesias at igalia.com>
>> ---
>>   src/glsl/ast_to_hir.cpp | 16 ++++++++++++++++
>>   1 file changed, 16 insertions(+)
>>
>> diff --git a/src/glsl/ast_to_hir.cpp b/src/glsl/ast_to_hir.cpp
>> index 72c6459..b67ae70 100644
>> --- a/src/glsl/ast_to_hir.cpp
>> +++ b/src/glsl/ast_to_hir.cpp
>> @@ -6252,6 +6252,22 @@ ast_interface_block::hir(exec_list *instructions,
>>         else if (state->stage == MESA_SHADER_TESS_CTRL && var_mode ==
>> ir_var_shader_out)
>>            handle_tess_ctrl_shader_output_decl(state, loc, var);
>>
>> +      for (unsigned i = 0; i < num_variables; i++) {
> 
> IMO this loop should run to 'num_variables - 1' since last item should
> be allowed to be unsized array.
> 
> With this fixed,
> Reviewed-by: Tapani Pälli <tapani.palli at intel.com>
> 

Right. Thanks!

Sam

> 
>> +         /* From GLSL ES 3.10 spec, section 4.1.9 "Arrays":
>> +          *
>> +          * "If an array is declared as the last member of a shader
>> storage
>> +          * block and the size is not specified at compile-time, it is
>> +          * sized at run-time. In all other cases, arrays are sized only
>> +          * at compile-time."
>> +          */
>> +         if (state->es_shader && fields[i].type->is_unsized_array()) {
>> +             _mesa_glsl_error(&loc, state, "unsized array `%s'
>> definition: "
>> +                              "only last member of a shader storage
>> block "
>> +                              "can be defined as unsized array",
>> +                              fields[i].name);
>> +         }
>> +      }
>> +
>>         if (ir_variable *earlier =
>>             state->symbols->get_variable(this->instance_name)) {
>>            if (!redeclaring_per_vertex) {
>>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev


More information about the mesa-dev mailing list