Mesa (master): r600g: fix constant splitting

Dave Airlie airlied at kemper.freedesktop.org
Tue Aug 31 00:47:36 UTC 2010


Module: Mesa
Branch: master
Commit: 9bbc54a10d225679a180a085f7ca5bb88ee2bd15
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=9bbc54a10d225679a180a085f7ca5bb88ee2bd15

Author: Dave Airlie <airlied at redhat.com>
Date:   Tue Aug 31 10:43:04 2010 +1000

r600g: fix constant splitting

constant splitting was broken for multi-constant cases, fixes fp1 CMP+MAD, vp1 CMP.

---

 src/gallium/drivers/r600/r600_shader.c |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/gallium/drivers/r600/r600_shader.c b/src/gallium/drivers/r600/r600_shader.c
index 2210f83..2197a16 100644
--- a/src/gallium/drivers/r600/r600_shader.c
+++ b/src/gallium/drivers/r600/r600_shader.c
@@ -650,7 +650,7 @@ static int tgsi_split_constant(struct r600_shader_ctx *ctx, struct r600_bc_alu_s
 			for (k = 0; k < 4; k++) {
 				memset(&alu, 0, sizeof(struct r600_bc_alu));
 				alu.inst = V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_MOV;
-				alu.src[0].sel = r600_src[0].sel;
+				alu.src[0].sel = r600_src[j].sel;
 				alu.src[0].chan = k;
 				alu.dst.sel = ctx->temp_reg + j;
 				alu.dst.chan = k;
@@ -661,7 +661,7 @@ static int tgsi_split_constant(struct r600_shader_ctx *ctx, struct r600_bc_alu_s
 				if (r)
 					return r;
 			}
-			r600_src[0].sel = ctx->temp_reg + j;
+			r600_src[j].sel = ctx->temp_reg + j;
 			j--;
 		}
 	}




More information about the mesa-commit mailing list