-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Reviewed-by: Samuel Iglesias Gonsálvez <sigles...@igalia.com>
Sam On 12/06/15 08:52, Timothy Arceri wrote: > --- src/glsl/ast_to_hir.cpp | 45 > +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 > insertions(+) > > diff --git a/src/glsl/ast_to_hir.cpp b/src/glsl/ast_to_hir.cpp > index d7ecc35..8236ff9 100644 --- a/src/glsl/ast_to_hir.cpp +++ > b/src/glsl/ast_to_hir.cpp @@ -3610,6 +3610,51 @@ > ast_declarator_list::hir(exec_list *instructions, } > > handle_geometry_shader_input_decl(state, loc, var); + } > else if (state->stage == MESA_SHADER_FRAGMENT) { + /* > From section 4.3.4 (Input Variables) of the GLSL ES 3.10 spec: + > * + * It is a compile-time error to declare a > fragment shader + * input with, or that contains, > any of the following types: + * + * * A > boolean type + * * An opaque type + * > * An array of arrays + * * An array of structures + > * * A structure containing an array + * * A > structure containing a structure + */ + if > (state->es_shader) { + const glsl_type *check_type = > var->type->without_array(); + if > (check_type->is_boolean() || + > check_type->contains_opaque()) { + > _mesa_glsl_error(&loc, state, + > "fragment shader input cannot have type %s", + > check_type->name); + } + if > (var->type->is_array() && + > var->type->fields.array->is_array()) { + > _mesa_glsl_error(&loc, state, + > "%s shader output " + "cannot > have an array of arrays", + > _mesa_shader_stage_to_string(state->stage)); + } + > if (var->type->is_array() && + > var->type->fields.array->is_record()) { + > _mesa_glsl_error(&loc, state, + > "fragment shader input " + > "cannot have an array of structs"); + } + > if (var->type->is_record()) { + for (unsigned i = > 0; i < var->type->length; i++) { + if > (var->type->fields.structure[i].type->is_array() || + > var->type->fields.structure[i].type->is_record()) + > _mesa_glsl_error(&loc, state, + > "fragement shader input cannot have " + > "a struct that contains an " + > "array or struct"); + } + } + > } } } else if (var->data.mode == ir_var_shader_out) { const > glsl_type *check_type = var->type->without_array(); > -----BEGIN PGP SIGNATURE----- Version: GnuPG v1 iQIcBAEBAgAGBQJVeod4AAoJEH/0ujLxfcNDEhgP/0iLbFCATHvJBEWEpnI1YAGl egbGbptKCtz9cA0EkfacDrGNAcY9EF1E4yA1cAWqcdYVSVj0oE17nqovkKaCeMJe YfXT6UUA9Ovw9imXG+xvP6qZ86u4JVGOoYfrtOMuiGEEMydkkH0CpLbvlNiGTCdN cEfrZkAi3wBUjkxE8T8eFVpPfsI4wd9Qe+INHUgSEf+w2h3TX4VshYlLNeXQw8Kj NilGD/lHWX7TTUslvMK9lap7bhNj8E6AuuhBHCmpMeqmKILP8HpDLhnHRqUFGagL J3FlBpYuaWk3e6IFgUjQjvtJcU90xncRkhKSjy2r/lelpqv/SAyTsyCvuCumQCJF /2h1OhsVuvYwr5adaR+Eqf3/2YPlhBPwbmnxppWrkDLK2Ra6Klg9cz3hjbV7/6ZL ubsAgJLNkue74ac/ahXC8As14jwRzRWAUL4l6NaKpjbsSXDiAy9SzI2Fqe+ZWpRU sDMYJN468iA7OI/eNYzOIzOK5Oudew0EdGxdY/lFD3NS9N/BCgh/yUsr5Oq7Rbfv cgye2YHJIZqQddle6JtOgdKKQHY42dKLSl+v33xc9Tit5RPxcEdxSenuxuU/bQBx 6LOEFalIixjqnThSrSCK1S1dlhGV40cch2o7v52n867Vx+BZgfGqbAiP7DrxtCXM HxdZHoulCglxEJVK2RiH =JSlZ -----END PGP SIGNATURE----- _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev