[Mesa-dev] [PATCH] glsl: Initialize patch member of glsl_struct_field

Michel Dänzer michel at daenzer.net
Wed Aug 5 20:01:25 PDT 2015

On 06.08.2015 00:32, Ian Romanick wrote:
> On 08/05/2015 02:20 AM, Michel Dänzer wrote:
>> From: Michel Dänzer <michel.daenzer at amd.com>
>> Fixes a bunch of random (mostly tessellation related) piglit failures
>> since commit 7ac946e5 ("glsl: Add constuctors for the common cases of
>> glsl_struct_field").
> I was going to look at this yesterday, but I didn't get to it. :(
> That said, this is not the patch that I would have anticipated.  I
> thought these paths should have used the default constructor, but I
> think your change is correct.  It took a bit of research to convince
> myself.  He's my thinking (and some of this should end up in the commit
> message)...
> There is apparently a subtle difference in C++ between
>     F f;
> and
>     F f();
> The former will use the default constructor.  If there is no default
> constructor specified, the compiler provides one that simply invokes the
> default constructor for each field.  For built-in basic types, the
> default constructor does nothing.  The later will, according to
> http://stackoverflow.com/questions/2417065/does-the-default-constructor-initialize-built-in-types)
> perform value-initialization of the type.  For built-in types this means
> initializing to zero.
> The per_vertex_accumulator constructor is:
>     per_vertex_accumulator::per_vertex_accumulator()
>        : fields(),
>          num_fields(0)
>     {
>     }
> This is the second form of constructor, so the glsl_struct_field
> objects were previously zero initialized.  With the addition of an empty
> default constructor in commit 7ac946e5, per_vertex_accumulator::fields
> receive no initialization.
>> Signed-off-by: Michel Dänzer <michel.daenzer at amd.com>
> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=91544
> Reviewed-by: Ian Romanick <ian.d.romanick at intel.com>

Pushed with your feedback incorporated, thanks!

Earthling Michel Dänzer               |               http://www.amd.com
Libre software enthusiast             |             Mesa and X developer

More information about the mesa-dev mailing list