From: Matt Turner Date: Sat, 21 Nov 2015 05:18:26 +0000 (-0800) Subject: i965: Use implicit backend_reg copy-constructor. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=f093c842e65b251e24ea3a2d6daaa91326a4f862;p=mesa.git i965: Use implicit backend_reg copy-constructor. In order to do this, we have to change the signature of the backend_reg(brw_reg) constructor to take a reference to a brw_reg in order to avoid unresolvable ambiguity about which constructor is actually being called in the other modifications in this patch. As far as I understand it, the rule in C++ is that if multiple constructors are available for parent classes, the one closest to you in the class heirarchy is closen, but if one of them didn't take a reference, that screws things up. Reviewed-by: Francisco Jerez --- diff --git a/src/mesa/drivers/dri/i965/brw_shader.h b/src/mesa/drivers/dri/i965/brw_shader.h index 718a22520de..abf04cfb89c 100644 --- a/src/mesa/drivers/dri/i965/brw_shader.h +++ b/src/mesa/drivers/dri/i965/brw_shader.h @@ -42,7 +42,7 @@ struct backend_reg : public brw_reg { backend_reg() {} - backend_reg(struct brw_reg reg) : brw_reg(reg) {} + backend_reg(const struct brw_reg ®) : brw_reg(reg) {} bool equals(const backend_reg &r) const; diff --git a/src/mesa/drivers/dri/i965/brw_vec4.cpp b/src/mesa/drivers/dri/i965/brw_vec4.cpp index 9f748dcd1d8..9fc08573081 100644 --- a/src/mesa/drivers/dri/i965/brw_vec4.cpp +++ b/src/mesa/drivers/dri/i965/brw_vec4.cpp @@ -79,9 +79,8 @@ src_reg::src_reg(struct brw_reg reg) : } src_reg::src_reg(const dst_reg ®) : - backend_reg(static_cast(reg)) + backend_reg(reg) { - this->reg_offset = reg.reg_offset; this->reladdr = reg.reladdr; this->swizzle = brw_swizzle_for_mask(reg.writemask); } @@ -137,9 +136,8 @@ dst_reg::dst_reg(struct brw_reg reg) : } dst_reg::dst_reg(const src_reg ®) : - backend_reg(static_cast(reg)) + backend_reg(reg) { - this->reg_offset = reg.reg_offset; this->writemask = brw_mask_for_swizzle(reg.swizzle); this->reladdr = reg.reladdr; }