[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