[Mesa-dev] [PATCH v5 61/70] glsl: Do not allow assignments to read-only buffer variables

Tapani Pälli tapani.palli at intel.com
Tue Sep 15 02:45:31 PDT 2015


Patches 61 and 62

Reviewed-by: Tapani Pälli <tapani.palli at intel.com>

On 09/10/2015 04:36 PM, Iago Toral Quiroga wrote:
> v2:
>    - Merge the error check for the readonly qualifier with the already
>      existing check for variables flagged as readonly (Timothy).
>    - Limit the check to buffer variables, image variables have different
>      semantics involved (Curro).
> ---
>   src/glsl/ast_to_hir.cpp | 11 ++++++++++-
>   1 file changed, 10 insertions(+), 1 deletion(-)
>
> diff --git a/src/glsl/ast_to_hir.cpp b/src/glsl/ast_to_hir.cpp
> index 61318ef..fed5a47 100644
> --- a/src/glsl/ast_to_hir.cpp
> +++ b/src/glsl/ast_to_hir.cpp
> @@ -820,7 +820,16 @@ do_assignment(exec_list *instructions, struct _mesa_glsl_parse_state *state,
>                             "assignment to %s",
>                             non_lvalue_description);
>            error_emitted = true;
> -      } else if (lhs_var != NULL && lhs_var->data.read_only) {
> +      } else if (lhs_var != NULL && (lhs_var->data.read_only ||
> +                 (lhs_var->data.mode == ir_var_shader_storage &&
> +                  lhs_var->data.image_read_only))) {
> +         /* We can have image_read_only set on both images and buffer variables,
> +          * but in the former there is a distinction between assignments to
> +          * the variable itself (read_only) and to the memory they point to
> +          * (image_read_only), while in the case of buffer variables there is
> +          * no such distinction, that is why this check here is limited to
> +          * buffer variables alone.
> +          */
>            _mesa_glsl_error(&lhs_loc, state,
>                             "assignment to read-only variable '%s'",
>                             lhs_var->name);
>


More information about the mesa-dev mailing list