Re: [Mesa-dev] [PATCH 1/5] i965: Pass symbolic swizzle to brw_swizzle() as a single argument.
Reviewed-by: Matt Turner___ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev
Re: [Mesa-dev] [PATCH 1/5] i965: Pass symbolic swizzle to brw_swizzle() as a single argument.
Reviewed-by: Iago Toral QuirogaOn Fri, 2016-02-26 at 22:02 -0800, Francisco Jerez wrote: > And replace brw_swizzle1() with brw_swizzle(). Seems slightly cleaner > and will allow reusing brw_swizzle() in the vec4 back-end more easily. > --- > src/mesa/drivers/dri/i965/brw_clip_unfilled.c | 6 -- > src/mesa/drivers/dri/i965/brw_clip_util.c | 13 +++-- > src/mesa/drivers/dri/i965/brw_eu_emit.c | 2 +- > src/mesa/drivers/dri/i965/brw_reg.h | 15 --- > 4 files changed, 16 insertions(+), 20 deletions(-) > > diff --git a/src/mesa/drivers/dri/i965/brw_clip_unfilled.c > b/src/mesa/drivers/dri/i965/brw_clip_unfilled.c > index 3c18858..d333d10 100644 > --- a/src/mesa/drivers/dri/i965/brw_clip_unfilled.c > +++ b/src/mesa/drivers/dri/i965/brw_clip_unfilled.c > @@ -85,8 +85,10 @@ static void compute_tri_direction( struct brw_clip_compile > *c ) > /* Take their crossproduct: > */ > brw_set_default_access_mode(p, BRW_ALIGN_16); > - brw_MUL(p, vec4(brw_null_reg()), brw_swizzle(e, 1,2,0,3), > brw_swizzle(f,2,0,1,3)); > - brw_MAC(p, vec4(e), negate(brw_swizzle(e, 2,0,1,3)), > brw_swizzle(f,1,2,0,3)); > + brw_MUL(p, vec4(brw_null_reg()), brw_swizzle(e, BRW_SWIZZLE_YZXW), > + brw_swizzle(f, BRW_SWIZZLE_ZXYW)); > + brw_MAC(p, vec4(e), negate(brw_swizzle(e, BRW_SWIZZLE_ZXYW)), > + brw_swizzle(f, BRW_SWIZZLE_YZXW)); > brw_set_default_access_mode(p, BRW_ALIGN_1); > > brw_MUL(p, c->reg.dir, c->reg.dir, vec4(e)); > diff --git a/src/mesa/drivers/dri/i965/brw_clip_util.c > b/src/mesa/drivers/dri/i965/brw_clip_util.c > index 7ef3305..3e6664e 100644 > --- a/src/mesa/drivers/dri/i965/brw_clip_util.c > +++ b/src/mesa/drivers/dri/i965/brw_clip_util.c > @@ -98,7 +98,8 @@ void brw_clip_project_position(struct brw_clip_compile *c, > struct brw_reg pos ) > /* value.xyz *= value.rhw > */ > brw_set_default_access_mode(p, BRW_ALIGN_16); > - brw_MUL(p, brw_writemask(pos, WRITEMASK_XYZ), pos, brw_swizzle1(pos, W)); > + brw_MUL(p, brw_writemask(pos, WRITEMASK_XYZ), pos, > + brw_swizzle(pos, BRW_SWIZZLE_)); > brw_set_default_access_mode(p, BRW_ALIGN_1); > } > > @@ -194,11 +195,11 @@ void brw_clip_interp_vertex( struct brw_clip_compile *c, >brw_set_default_access_mode(p, BRW_ALIGN_16); >brw_MOV(p, >brw_writemask(t_nopersp, WRITEMASK_ZW), > - brw_swizzle(tmp, 0, 1, 0, 1)); > + brw_swizzle(tmp, BRW_SWIZZLE_XYXY)); > >/* t_nopersp = vec4(v1.xy, dest.xy) - v0.xyxy */ >brw_ADD(p, t_nopersp, t_nopersp, > - negate(brw_swizzle(v0_ndc_copy, 0, 1, 0, 1))); > + negate(brw_swizzle(v0_ndc_copy, BRW_SWIZZLE_XYXY))); > >/* Add the absolute values of the X and Y deltas so that if > * the points aren't in the same place on the screen we get > @@ -212,8 +213,8 @@ void brw_clip_interp_vertex( struct brw_clip_compile *c, > */ >brw_ADD(p, >brw_writemask(t_nopersp, WRITEMASK_XY), > - brw_abs(brw_swizzle(t_nopersp, 0, 2, 0, 0)), > - brw_abs(brw_swizzle(t_nopersp, 1, 3, 0, 0))); > + brw_abs(brw_swizzle(t_nopersp, BRW_SWIZZLE_XZXZ)), > + brw_abs(brw_swizzle(t_nopersp, BRW_SWIZZLE_YWYW))); >brw_set_default_access_mode(p, BRW_ALIGN_1); > >/* If the points are in the same place, just substitute a > @@ -234,7 +235,7 @@ void brw_clip_interp_vertex( struct brw_clip_compile *c, >brw_MUL(p, vec1(t_nopersp), vec1(t_nopersp), > vec1(suboffset(t_nopersp, 1))); >brw_set_default_access_mode(p, BRW_ALIGN_16); > - brw_MOV(p, t_nopersp, brw_swizzle(t_nopersp, 0, 0, 0, 0)); > + brw_MOV(p, t_nopersp, brw_swizzle(t_nopersp, BRW_SWIZZLE_)); >brw_set_default_access_mode(p, BRW_ALIGN_1); > >release_tmp(c, tmp); > diff --git a/src/mesa/drivers/dri/i965/brw_eu_emit.c > b/src/mesa/drivers/dri/i965/brw_eu_emit.c > index 35d8039..2e4d7be 100644 > --- a/src/mesa/drivers/dri/i965/brw_eu_emit.c > +++ b/src/mesa/drivers/dri/i965/brw_eu_emit.c > @@ -3399,7 +3399,7 @@ brw_broadcast(struct brw_codegen *p, >*/ > inst = brw_MOV(p, > brw_null_reg(), > -stride(brw_swizzle1(idx, 0), 0, 4, 1)); > +stride(brw_swizzle(idx, BRW_SWIZZLE_), 0, 4, 1)); > brw_inst_set_pred_control(devinfo, inst, BRW_PREDICATE_NONE); > brw_inst_set_cond_modifier(devinfo, inst, BRW_CONDITIONAL_NZ); > brw_inst_set_flag_reg_nr(devinfo, inst, 1); > diff --git a/src/mesa/drivers/dri/i965/brw_reg.h > b/src/mesa/drivers/dri/i965/brw_reg.h > index a2a4a40..a4bcfca 100644 > --- a/src/mesa/drivers/dri/i965/brw_reg.h > +++ b/src/mesa/drivers/dri/i965/brw_reg.h > @@ -81,7 +81,9 @@ struct brw_device_info; > #define BRW_SWIZZLE_ BRW_SWIZZLE4(2,2,2,2) > #define
[Mesa-dev] [PATCH 1/5] i965: Pass symbolic swizzle to brw_swizzle() as a single argument.
And replace brw_swizzle1() with brw_swizzle(). Seems slightly cleaner and will allow reusing brw_swizzle() in the vec4 back-end more easily. --- src/mesa/drivers/dri/i965/brw_clip_unfilled.c | 6 -- src/mesa/drivers/dri/i965/brw_clip_util.c | 13 +++-- src/mesa/drivers/dri/i965/brw_eu_emit.c | 2 +- src/mesa/drivers/dri/i965/brw_reg.h | 15 --- 4 files changed, 16 insertions(+), 20 deletions(-) diff --git a/src/mesa/drivers/dri/i965/brw_clip_unfilled.c b/src/mesa/drivers/dri/i965/brw_clip_unfilled.c index 3c18858..d333d10 100644 --- a/src/mesa/drivers/dri/i965/brw_clip_unfilled.c +++ b/src/mesa/drivers/dri/i965/brw_clip_unfilled.c @@ -85,8 +85,10 @@ static void compute_tri_direction( struct brw_clip_compile *c ) /* Take their crossproduct: */ brw_set_default_access_mode(p, BRW_ALIGN_16); - brw_MUL(p, vec4(brw_null_reg()), brw_swizzle(e, 1,2,0,3), brw_swizzle(f,2,0,1,3)); - brw_MAC(p, vec4(e), negate(brw_swizzle(e, 2,0,1,3)), brw_swizzle(f,1,2,0,3)); + brw_MUL(p, vec4(brw_null_reg()), brw_swizzle(e, BRW_SWIZZLE_YZXW), + brw_swizzle(f, BRW_SWIZZLE_ZXYW)); + brw_MAC(p, vec4(e), negate(brw_swizzle(e, BRW_SWIZZLE_ZXYW)), + brw_swizzle(f, BRW_SWIZZLE_YZXW)); brw_set_default_access_mode(p, BRW_ALIGN_1); brw_MUL(p, c->reg.dir, c->reg.dir, vec4(e)); diff --git a/src/mesa/drivers/dri/i965/brw_clip_util.c b/src/mesa/drivers/dri/i965/brw_clip_util.c index 7ef3305..3e6664e 100644 --- a/src/mesa/drivers/dri/i965/brw_clip_util.c +++ b/src/mesa/drivers/dri/i965/brw_clip_util.c @@ -98,7 +98,8 @@ void brw_clip_project_position(struct brw_clip_compile *c, struct brw_reg pos ) /* value.xyz *= value.rhw */ brw_set_default_access_mode(p, BRW_ALIGN_16); - brw_MUL(p, brw_writemask(pos, WRITEMASK_XYZ), pos, brw_swizzle1(pos, W)); + brw_MUL(p, brw_writemask(pos, WRITEMASK_XYZ), pos, + brw_swizzle(pos, BRW_SWIZZLE_)); brw_set_default_access_mode(p, BRW_ALIGN_1); } @@ -194,11 +195,11 @@ void brw_clip_interp_vertex( struct brw_clip_compile *c, brw_set_default_access_mode(p, BRW_ALIGN_16); brw_MOV(p, brw_writemask(t_nopersp, WRITEMASK_ZW), - brw_swizzle(tmp, 0, 1, 0, 1)); + brw_swizzle(tmp, BRW_SWIZZLE_XYXY)); /* t_nopersp = vec4(v1.xy, dest.xy) - v0.xyxy */ brw_ADD(p, t_nopersp, t_nopersp, - negate(brw_swizzle(v0_ndc_copy, 0, 1, 0, 1))); + negate(brw_swizzle(v0_ndc_copy, BRW_SWIZZLE_XYXY))); /* Add the absolute values of the X and Y deltas so that if * the points aren't in the same place on the screen we get @@ -212,8 +213,8 @@ void brw_clip_interp_vertex( struct brw_clip_compile *c, */ brw_ADD(p, brw_writemask(t_nopersp, WRITEMASK_XY), - brw_abs(brw_swizzle(t_nopersp, 0, 2, 0, 0)), - brw_abs(brw_swizzle(t_nopersp, 1, 3, 0, 0))); + brw_abs(brw_swizzle(t_nopersp, BRW_SWIZZLE_XZXZ)), + brw_abs(brw_swizzle(t_nopersp, BRW_SWIZZLE_YWYW))); brw_set_default_access_mode(p, BRW_ALIGN_1); /* If the points are in the same place, just substitute a @@ -234,7 +235,7 @@ void brw_clip_interp_vertex( struct brw_clip_compile *c, brw_MUL(p, vec1(t_nopersp), vec1(t_nopersp), vec1(suboffset(t_nopersp, 1))); brw_set_default_access_mode(p, BRW_ALIGN_16); - brw_MOV(p, t_nopersp, brw_swizzle(t_nopersp, 0, 0, 0, 0)); + brw_MOV(p, t_nopersp, brw_swizzle(t_nopersp, BRW_SWIZZLE_)); brw_set_default_access_mode(p, BRW_ALIGN_1); release_tmp(c, tmp); diff --git a/src/mesa/drivers/dri/i965/brw_eu_emit.c b/src/mesa/drivers/dri/i965/brw_eu_emit.c index 35d8039..2e4d7be 100644 --- a/src/mesa/drivers/dri/i965/brw_eu_emit.c +++ b/src/mesa/drivers/dri/i965/brw_eu_emit.c @@ -3399,7 +3399,7 @@ brw_broadcast(struct brw_codegen *p, */ inst = brw_MOV(p, brw_null_reg(), -stride(brw_swizzle1(idx, 0), 0, 4, 1)); +stride(brw_swizzle(idx, BRW_SWIZZLE_), 0, 4, 1)); brw_inst_set_pred_control(devinfo, inst, BRW_PREDICATE_NONE); brw_inst_set_cond_modifier(devinfo, inst, BRW_CONDITIONAL_NZ); brw_inst_set_flag_reg_nr(devinfo, inst, 1); diff --git a/src/mesa/drivers/dri/i965/brw_reg.h b/src/mesa/drivers/dri/i965/brw_reg.h index a2a4a40..a4bcfca 100644 --- a/src/mesa/drivers/dri/i965/brw_reg.h +++ b/src/mesa/drivers/dri/i965/brw_reg.h @@ -81,7 +81,9 @@ struct brw_device_info; #define BRW_SWIZZLE_ BRW_SWIZZLE4(2,2,2,2) #define BRW_SWIZZLE_ BRW_SWIZZLE4(3,3,3,3) #define BRW_SWIZZLE_XYXY BRW_SWIZZLE4(0,1,0,1) +#define BRW_SWIZZLE_XZXZ BRW_SWIZZLE4(0,2,0,2) #define BRW_SWIZZLE_YZXW BRW_SWIZZLE4(1,2,0,3) +#define BRW_SWIZZLE_YWYW BRW_SWIZZLE4(1,3,1,3) #define BRW_SWIZZLE_ZXYW BRW_SWIZZLE4(2,0,1,3) #define