On 02/07/2014 04:44 AM, Juha-Pekka Heikkila wrote: > ir_constant::ir_constant(const struct glsl_type, > const ir_constant_data *) was copying too much memory.
The code looks correct as-is to me. This copies one ir_constant_data union to another... they're declared as the same type, and they have the same size. What is the actual error? Is there some code somewhere that's casting a different type to ir_constant_data* to pass into this constructor? > Signed-off-by: Juha-Pekka Heikkila <juhapekka.heikk...@gmail.com> > --- > src/glsl/ir.cpp | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/src/glsl/ir.cpp b/src/glsl/ir.cpp > index 1a36bd6..abc5568 100644 > --- a/src/glsl/ir.cpp > +++ b/src/glsl/ir.cpp > @@ -622,7 +622,7 @@ ir_constant::ir_constant(const struct glsl_type *type, > > this->ir_type = ir_type_constant; > this->type = type; > - memcpy(& this->value, data, sizeof(this->value)); > + memcpy(& this->value, data, type->std140_size(false)); > } > > ir_constant::ir_constant(float f, unsigned vector_elements) > _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev