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 <sigles...@igalia.com> >> >> Signed-off-by: Samuel Iglesias Gonsalvez <sigles...@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.pa...@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@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/mesa-dev _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev