<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Fri, Oct 20, 2017 at 4:14 PM, Kenneth Graunke <span dir="ltr"><<a href="mailto:kenneth@whitecape.org" target="_blank">kenneth@whitecape.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="HOEnZb"><div class="h5">On Friday, October 20, 2017 4:11:20 PM PDT Kenneth Graunke wrote:<br>
> On Friday, October 20, 2017 2:14:25 PM PDT Jason Ekstrand wrote:<br>
> > On Thu, Oct 19, 2017 at 4:51 PM, Kenneth Graunke <<a href="mailto:kenneth@whitecape.org">kenneth@whitecape.org</a>><br>
> > wrote:<br>
> ><br>
> > > On Wednesday, October 18, 2017 10:31:53 PM PDT Jordan Justen wrote:<br>
> > > > Signed-off-by: Jordan Justen <<a href="mailto:jordan.l.justen@intel.com">jordan.l.justen@intel.com</a>><br>
> > > > ---<br>
> > > >  src/compiler/glsl/builtin_<wbr>variables.cpp | 1 +<br>
> > > >  1 file changed, 1 insertion(+)<br>
> > > ><br>
> > > > diff --git a/src/compiler/glsl/builtin_<wbr>variables.cpp<br>
> > > b/src/compiler/glsl/builtin_<wbr>variables.cpp<br>
> > > > index ea2d897cc8..d3cf12475b 100644<br>
> > > > --- a/src/compiler/glsl/builtin_<wbr>variables.cpp<br>
> > > > +++ b/src/compiler/glsl/builtin_<wbr>variables.cpp<br>
> > > > @@ -318,6 +318,7 @@ per_vertex_accumulator::per_<wbr>vertex_accumulator()<br>
> > > >     : fields(),<br>
> > > >       num_fields(0)<br>
> > > >  {<br>
> > > > +   memset(fields, 0, sizeof(fields));<br>
> > > >  }<br>
> > ><br>
> > > This shouldn't fix anything, we're calling the fields() constructor,<br>
> > > which should value-initialize every element of the fields array,<br>
> > > calling the constructor for glsl_struct_type on each element.<br>
> > ><br>
> > > That constructor is supposed to zero initialize items.  Maybe it is<br>
> > > missing some of them?<br>
> > ><br>
> ><br>
> > No, the problem is that, when we do the user data check in the blob code,<br>
> > valgrind complains about the padding bytes in-between field elements.  C++<br>
> > constructors don't initialize that data.  That said, I agree that this is a<br>
> > tad sketchy.  I just wish there were some way to shut up valgrind.<br>
><br>
> Okay, that makes sense.  In that case, I would drop the fields()<br>
> constructor in the initialization list and just do the memset.<br>
><br>
> Also, hope nobody adds a non-zero constructor to glsl_struct_field.<br>
<br>
</div></div>Or, alternatively, just make the glsl_struct_field constructor<br>
initialize the whole struct with a memset, then leave this code be.<br>
</blockquote></div></div><div class="gmail_extra"><br></div><div class="gmail_extra">+1<br></div></div>