mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-02-22 01:10:32 +01:00
glsl: Initialize patch member of glsl_struct_field
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.
Fixes a bunch of random (mostly tessellation related) piglit failures
since commit 7ac946e5 ("glsl: Add constuctors for the common cases of
glsl_struct_field").
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=91544
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
This commit is contained in:
parent
2c61d583f8
commit
f7ac4ef4ee
1 changed files with 2 additions and 0 deletions
|
|
@ -322,6 +322,7 @@ per_vertex_accumulator::add_field(int slot, const glsl_type *type,
|
|||
this->fields[this->num_fields].interpolation = INTERP_QUALIFIER_NONE;
|
||||
this->fields[this->num_fields].centroid = 0;
|
||||
this->fields[this->num_fields].sample = 0;
|
||||
this->fields[this->num_fields].patch = 0;
|
||||
this->num_fields++;
|
||||
}
|
||||
|
||||
|
|
@ -1159,6 +1160,7 @@ builtin_variable_generator::generate_varyings()
|
|||
var->data.interpolation = fields[i].interpolation;
|
||||
var->data.centroid = fields[i].centroid;
|
||||
var->data.sample = fields[i].sample;
|
||||
var->data.patch = fields[i].patch;
|
||||
var->init_interface_type(per_vertex_out_type);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue