[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