[PATCH 2/2] r600g: DP4 also supports writemasking

Christian König deathsimple at vodafone.de
Tue Dec 14 10:32:08 PST 2010


---
 src/gallium/drivers/r600/r600_shader.c |   14 ++++++--------
 1 files changed, 6 insertions(+), 8 deletions(-)

diff --git a/src/gallium/drivers/r600/r600_shader.c b/src/gallium/drivers/r600/r600_shader.c
index d1575d1..0ad857f 100644
--- a/src/gallium/drivers/r600/r600_shader.c
+++ b/src/gallium/drivers/r600/r600_shader.c
@@ -1649,15 +1649,13 @@ static int tgsi_dp(struct r600_shader_ctx *ctx)
 			alu.src[j] = r600_src[j];
 			alu.src[j].chan = tgsi_chan(&inst->Src[j], i);
 		}
-		if(inst->Dst[0].Register.WriteMask & (1 << i)) {
-			r = tgsi_dst(ctx, &inst->Dst[0], i, &alu.dst);
-			if (r)
-				return r;
-		} else {
-			alu.dst.sel = ctx->temp_reg;
-		}
+
+		r = tgsi_dst(ctx, &inst->Dst[0], i, &alu.dst);
+		if (r)
+			return r;
+
 		alu.dst.chan = i;
-		alu.dst.write = 1;
+		alu.dst.write = (inst->Dst[0].Register.WriteMask >> i) & 1;
 		/* handle some special cases */
 		switch (ctx->inst_info->tgsi_opcode) {
 		case TGSI_OPCODE_DP2:
-- 
1.7.1


--=-8fNX+rQdwiwJYqYVTVGF--



More information about the mesa-dev mailing list