summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Stellard <thomas.stellard@amd.com>2012-12-20 21:20:55 +0000
committerTom Stellard <thomas.stellard@amd.com>2012-12-21 19:51:43 +0000
commitad16eb963a0eefb2be1b75a60e23482721d969a9 (patch)
tree1227a8ec32cbe2291fb2f9c05b1fe09faea898f4
parente3e346a3cd86e2fe7517a4c67c9c27286374fece (diff)
r600g: Add ar_chanindirect-wip-5
-rw-r--r--src/gallium/drivers/r600/r600_asm.c2
-rw-r--r--src/gallium/drivers/r600/r600_asm.h1
-rw-r--r--src/gallium/drivers/r600/r600_shader.c1
3 files changed, 4 insertions, 0 deletions
diff --git a/src/gallium/drivers/r600/r600_asm.c b/src/gallium/drivers/r600/r600_asm.c
index 59f0693df34..2660bb90ab9 100644
--- a/src/gallium/drivers/r600/r600_asm.c
+++ b/src/gallium/drivers/r600/r600_asm.c
@@ -1422,6 +1422,7 @@ static int load_ar_r6xx(struct r600_bytecode *bc)
memset(&alu, 0, sizeof(alu));
alu.inst = V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_MOVA_GPR_INT;
alu.src[0].sel = bc->ar_reg;
+ alu.src[0].chan = bc->ar_chan;
alu.last = 1;
alu.index_mode = INDEX_MODE_LOOP;
r = r600_bytecode_add_alu(bc, &alu);
@@ -1452,6 +1453,7 @@ static int load_ar(struct r600_bytecode *bc)
memset(&alu, 0, sizeof(alu));
alu.inst = BC_INST(bc, V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_MOVA_INT);
alu.src[0].sel = bc->ar_reg;
+ alu.src[0].chan = bc->ar_chan;
alu.last = 1;
r = r600_bytecode_add_alu(bc, &alu);
if (r)
diff --git a/src/gallium/drivers/r600/r600_asm.h b/src/gallium/drivers/r600/r600_asm.h
index 5727a7c421f..5ec6ccfed61 100644
--- a/src/gallium/drivers/r600/r600_asm.h
+++ b/src/gallium/drivers/r600/r600_asm.h
@@ -213,6 +213,7 @@ struct r600_bytecode {
struct r600_cf_callstack callstack[SQ_MAX_CALL_DEPTH];
unsigned ar_loaded;
unsigned ar_reg;
+ unsigned ar_chan;
unsigned ar_handling;
unsigned r6xx_nop_after_rel_dst;
};
diff --git a/src/gallium/drivers/r600/r600_shader.c b/src/gallium/drivers/r600/r600_shader.c
index 935fe5df876..6cb0f6f2e52 100644
--- a/src/gallium/drivers/r600/r600_shader.c
+++ b/src/gallium/drivers/r600/r600_shader.c
@@ -356,6 +356,7 @@ static unsigned r600_alu_from_byte_stream(struct r600_shader_ctx *ctx,
if (alu.inst == CTX_INST(V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_MOVA_INT)) {
ctx->bc->ar_reg = alu.src[0].sel;
+ ctx->bc->ar_chan = alu.src[0].chan;
ctx->bc->ar_loaded = 0;
return bytes_read;
}