On 04/09/2014 01:47 PM, Matt Turner wrote: > From: Juha-Pekka Heikkila <juhapekka.heikk...@gmail.com> > > Reviewed-by: Matt Turner <matts...@gmail.com> > Signed-off-by: Juha-Pekka Heikkila <juhapekka.heikk...@gmail.com> > --- > As a follow-on patch series, we should move common fields from fs_reg > and vec4's reg into a backend_reg and consolidate these functions.
Yeah, there's been some talk about creating one of those. But even at present, src_reg and dst_reg both inherit from reg. is_accumulator() should be defined there, not in both subclasses. > > src/mesa/drivers/dri/i965/brw_fs.cpp | 8 ++++++++ > src/mesa/drivers/dri/i965/brw_fs.h | 1 + > src/mesa/drivers/dri/i965/brw_vec4.cpp | 17 +++++++++++++++++ > src/mesa/drivers/dri/i965/brw_vec4.h | 2 ++ > 4 files changed, 28 insertions(+) > > diff --git a/src/mesa/drivers/dri/i965/brw_fs.cpp > b/src/mesa/drivers/dri/i965/brw_fs.cpp > index 85a5463..e576545 100644 > --- a/src/mesa/drivers/dri/i965/brw_fs.cpp > +++ b/src/mesa/drivers/dri/i965/brw_fs.cpp > @@ -501,6 +501,14 @@ fs_reg::is_valid_3src() const > return file == GRF || file == UNIFORM; > } > > +bool > +fs_reg::is_accumulator() const > +{ > + return file == HW_REG && > + fixed_hw_reg.file == BRW_ARCHITECTURE_REGISTER_FILE && > + fixed_hw_reg.nr == BRW_ARF_ACCUMULATOR; > +} > + > int > fs_visitor::type_size(const struct glsl_type *type) > { > diff --git a/src/mesa/drivers/dri/i965/brw_fs.h > b/src/mesa/drivers/dri/i965/brw_fs.h > index 3d21ee5..1dadccd 100644 > --- a/src/mesa/drivers/dri/i965/brw_fs.h > +++ b/src/mesa/drivers/dri/i965/brw_fs.h > @@ -83,6 +83,7 @@ public: > bool is_null() const; > bool is_valid_3src() const; > bool is_contiguous() const; > + bool is_accumulator() const; > > fs_reg &apply_stride(unsigned stride); > /** Smear a channel of the reg to all channels. */ > diff --git a/src/mesa/drivers/dri/i965/brw_vec4.cpp > b/src/mesa/drivers/dri/i965/brw_vec4.cpp > index 740d9ff..38d2b93 100644 > --- a/src/mesa/drivers/dri/i965/brw_vec4.cpp > +++ b/src/mesa/drivers/dri/i965/brw_vec4.cpp > @@ -151,6 +151,15 @@ src_reg::src_reg(dst_reg reg) > swizzles[2], swizzles[3]); > } > > +bool > +src_reg::is_accumulator() const > +{ > + return file == HW_REG && > + fixed_hw_reg.file == BRW_ARCHITECTURE_REGISTER_FILE && > + fixed_hw_reg.nr == BRW_ARF_ACCUMULATOR; > +} > + > + > void > dst_reg::init() > { > @@ -221,6 +230,14 @@ dst_reg::is_null() const > } > > bool > +dst_reg::is_accumulator() const > +{ > + return file == HW_REG && > + fixed_hw_reg.file == BRW_ARCHITECTURE_REGISTER_FILE && > + fixed_hw_reg.nr == BRW_ARF_ACCUMULATOR; > +} > + > +bool > vec4_instruction::is_send_from_grf() > { > switch (opcode) { > diff --git a/src/mesa/drivers/dri/i965/brw_vec4.h > b/src/mesa/drivers/dri/i965/brw_vec4.h > index 159a5bd..b3549a5 100644 > --- a/src/mesa/drivers/dri/i965/brw_vec4.h > +++ b/src/mesa/drivers/dri/i965/brw_vec4.h > @@ -128,6 +128,7 @@ public: > bool equals(src_reg *r); > bool is_zero() const; > bool is_one() const; > + bool is_accumulator() const; > > src_reg(class vec4_visitor *v, const struct glsl_type *type); > > @@ -195,6 +196,7 @@ public: > explicit dst_reg(src_reg reg); > > bool is_null() const; > + bool is_accumulator() const; > > int writemask; /**< Bitfield of WRITEMASK_[XYZW] */ > >
signature.asc
Description: OpenPGP digital signature
_______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev