Hello, currently r600g ignores relative constant addressing when splitting constant accesses into multiple instructions which is fixed by the attached patch. I noticed it when messing with vp-tris arl.txt of git://anongit.freedesktop.org/mesa/demos (I modified "arr[addr.x-2]" into "arr[addr.x]" in arl.txt to get rid of the negative register indices) Cheers Stephan Schmid
From 200cf6884ca06ecd4f3a8dcbf8f88e2d04ebab32 Mon Sep 17 00:00:00 2001 From: Stephan Schmid <stephan_2303@xxxxxx> Date: Mon, 11 Oct 2010 15:49:56 +0200 Subject: [PATCH] r600g: fix relative addressing when splitting constant accesses --- src/gallium/drivers/r600/r600_shader.c | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-) diff --git a/src/gallium/drivers/r600/r600_shader.c b/src/gallium/drivers/r600/r600_shader.c index 3418003..df2789d 100644 --- a/src/gallium/drivers/r600/r600_shader.c +++ b/src/gallium/drivers/r600/r600_shader.c @@ -796,6 +796,7 @@ static int tgsi_split_constant(struct r600_shader_ctx *ctx, struct r600_bc_alu_s alu.inst = CTX_INST(V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_MOV); alu.src[0].sel = r600_src[i].sel; alu.src[0].chan = k; + alu.src[0].rel = r600_src[i].rel; alu.dst.sel = treg; alu.dst.chan = k; alu.dst.write = 1; @@ -806,6 +807,7 @@ static int tgsi_split_constant(struct r600_shader_ctx *ctx, struct r600_bc_alu_s return r; } r600_src[i].sel = treg; + r600_src[i].rel =0; j--; } } -- 1.7.1
_______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/dri-devel