[Mesa-dev] [PATCH v4 02/11] glsl: always initialize image_* fields, copy them on interface init

Marek Olšák maraeo at gmail.com
Mon Jan 25 11:43:18 PST 2016


Reviewed-by: Marek Olšák <marek.olsak at amd.com>

Marek

On Sun, Jan 24, 2016 at 7:59 PM, Ilia Mirkin <imirkin at alum.mit.edu> wrote:
> Interfaces can have image properties set in case they are buffer
> interfaces. Make sure not to lose this information.
>
> Signed-off-by: Ilia Mirkin <imirkin at alum.mit.edu>
> Reviewed-by: Iago Toral Quiroga <itoral at igalia.com>
> ---
>  src/glsl/builtin_variables.cpp | 5 +++++
>  src/glsl/nir/glsl_types.cpp    | 5 +++++
>  src/glsl/nir/glsl_types.h      | 3 ++-
>  3 files changed, 12 insertions(+), 1 deletion(-)
>
> diff --git a/src/glsl/builtin_variables.cpp b/src/glsl/builtin_variables.cpp
> index ccc04c0..70facd0 100644
> --- a/src/glsl/builtin_variables.cpp
> +++ b/src/glsl/builtin_variables.cpp
> @@ -328,6 +328,11 @@ per_vertex_accumulator::add_field(int slot, const glsl_type *type,
>     this->fields[this->num_fields].sample = 0;
>     this->fields[this->num_fields].patch = 0;
>     this->fields[this->num_fields].precision = GLSL_PRECISION_NONE;
> +   this->fields[this->num_fields].image_read_only = 0;
> +   this->fields[this->num_fields].image_write_only = 0;
> +   this->fields[this->num_fields].image_coherent = 0;
> +   this->fields[this->num_fields].image_volatile = 0;
> +   this->fields[this->num_fields].image_restrict = 0;
>     this->num_fields++;
>  }
>
> diff --git a/src/glsl/nir/glsl_types.cpp b/src/glsl/nir/glsl_types.cpp
> index 44d3056..c98597b 100644
> --- a/src/glsl/nir/glsl_types.cpp
> +++ b/src/glsl/nir/glsl_types.cpp
> @@ -163,6 +163,11 @@ glsl_type::glsl_type(const glsl_struct_field *fields, unsigned num_fields,
>        this->fields.structure[i].sample = fields[i].sample;
>        this->fields.structure[i].matrix_layout = fields[i].matrix_layout;
>        this->fields.structure[i].patch = fields[i].patch;
> +      this->fields.structure[i].image_read_only = fields[i].image_read_only;
> +      this->fields.structure[i].image_write_only = fields[i].image_write_only;
> +      this->fields.structure[i].image_coherent = fields[i].image_coherent;
> +      this->fields.structure[i].image_volatile = fields[i].image_volatile;
> +      this->fields.structure[i].image_restrict = fields[i].image_restrict;
>        this->fields.structure[i].precision = fields[i].precision;
>     }
>
> diff --git a/src/glsl/nir/glsl_types.h b/src/glsl/nir/glsl_types.h
> index 0b83727..8723fd0 100644
> --- a/src/glsl/nir/glsl_types.h
> +++ b/src/glsl/nir/glsl_types.h
> @@ -863,7 +863,8 @@ struct glsl_struct_field {
>     glsl_struct_field(const struct glsl_type *_type, const char *_name)
>        : type(_type), name(_name), location(-1), interpolation(0), centroid(0),
>          sample(0), matrix_layout(GLSL_MATRIX_LAYOUT_INHERITED), patch(0),
> -        precision(GLSL_PRECISION_NONE)
> +        precision(GLSL_PRECISION_NONE), image_read_only(0), image_write_only(0),
> +        image_coherent(0), image_volatile(0), image_restrict(0)
>     {
>        /* empty */
>     }
> --
> 2.4.10
>
> _______________________________________________
> 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