From: Samuel Pitoiset Date: Wed, 26 Apr 2017 16:50:15 +0000 (+0200) Subject: glsl: introduce validate_image_qualifier_for_type() helper X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=edb4a1ab2d3fbbbe0ec88f3fbb0654620b4b094c;p=mesa.git glsl: introduce validate_image_qualifier_for_type() helper Signed-off-by: Samuel Pitoiset Reviewed-by: Timothy Arceri --- diff --git a/src/compiler/glsl/ast_to_hir.cpp b/src/compiler/glsl/ast_to_hir.cpp index 425da639c71..1159b2cdfbf 100644 --- a/src/compiler/glsl/ast_to_hir.cpp +++ b/src/compiler/glsl/ast_to_hir.cpp @@ -3291,15 +3291,13 @@ apply_explicit_location(const struct ast_type_qualifier *qual, } } -static void -apply_image_qualifier_to_variable(const struct ast_type_qualifier *qual, - ir_variable *var, - struct _mesa_glsl_parse_state *state, - YYLTYPE *loc) +static bool +validate_image_qualifier_for_type(struct _mesa_glsl_parse_state *state, + YYLTYPE *loc, + const struct ast_type_qualifier *qual, + const glsl_type *type) { - const glsl_type *base_type = var->type->without_array(); - - if (!base_type->is_image()) { + if (!type->is_image()) { if (qual->flags.q.read_only || qual->flags.q.write_only || qual->flags.q.coherent || @@ -3313,8 +3311,21 @@ apply_image_qualifier_to_variable(const struct ast_type_qualifier *qual, _mesa_glsl_error(loc, state, "format layout qualifiers may only be " "applied to images"); } - return; + return false; } + return true; +} + +static void +apply_image_qualifier_to_variable(const struct ast_type_qualifier *qual, + ir_variable *var, + struct _mesa_glsl_parse_state *state, + YYLTYPE *loc) +{ + const glsl_type *base_type = var->type->without_array(); + + if (!validate_image_qualifier_for_type(state, loc, qual, base_type)) + return; if (var->data.mode != ir_var_uniform && var->data.mode != ir_var_function_in) {