[Mesa-dev] [PATCH v5 5/7] glsl: Add precision information to ir_variable
Samuel Iglesias Gonsálvez
siglesias at igalia.com
Mon Nov 16 01:26:58 PST 2015
On 13/11/15 21:38, Ilia Mirkin wrote:
> On Fri, Nov 13, 2015 at 2:37 PM, Ilia Mirkin <imirkin at alum.mit.edu> wrote:
>> Looks like valgrind hates this for some reason. I'm seeing lots of
>>
>> ==16821== Conditional jump or move depends on uninitialised value(s)
>> ==16821== at 0xA074D09: glsl_type::record_compare(glsl_type const*)
>> const (glsl_types.cpp:783)
>>
>> Where line 783 is:
>>
>> if (this->fields.structure[i].precision
>> != b->fields.structure[i].precision)
>>
>> This happens with the trace from
>> https://bugs.freedesktop.org/show_bug.cgi?id=92229 but I suspect it
>> happens with just about anything with structs.
>
> I tried the following but no go. I'm giving up for now.
>
OK, I can reproduce this valgrind error. I am going to debug it.
Thanks!
Sam
> -ilia
>
> diff --git a/src/glsl/ast_to_hir.cpp b/src/glsl/ast_to_hir.cpp
> index 51ea183..92f8b37 100644
> --- a/src/glsl/ast_to_hir.cpp
> +++ b/src/glsl/ast_to_hir.cpp
> @@ -6584,6 +6584,8 @@ ast_interface_block::hir(exec_list *instructions,
> earlier_per_vertex->fields.structure[j].sample;
> fields[i].patch =
> earlier_per_vertex->fields.structure[j].patch;
> + fields[i].precision =
> + earlier_per_vertex->fields.structure[j].precision;
> }
> }
>
> diff --git a/src/glsl/nir/glsl_types.cpp b/src/glsl/nir/glsl_types.cpp
> index 975b815..7345765 100644
> --- a/src/glsl/nir/glsl_types.cpp
> +++ b/src/glsl/nir/glsl_types.cpp
> @@ -124,6 +124,7 @@ 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].precision = fields[i].precision;
> 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;
> diff --git a/src/glsl/nir/glsl_types.h b/src/glsl/nir/glsl_types.h
> index d841a32..f3a0cf8 100644
> --- a/src/glsl/nir/glsl_types.h
> +++ b/src/glsl/nir/glsl_types.h
> @@ -851,7 +851,7 @@ 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)
> + sample(0), matrix_layout(GLSL_MATRIX_LAYOUT_INHERITED),
> patch(0), precision(0)
> {
> /* empty */
> }
>
More information about the mesa-dev
mailing list