From 175f58baa9a758919163f9ada79306294e4139ce Mon Sep 17 00:00:00 2001 From: Corbin Simpson Date: Mon, 16 Mar 2009 17:00:27 -0700 Subject: r300-gallium: r500-fs: Properly set up TEX/OUT. --- src/gallium/drivers/r300/r300_state_shader.c | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) (limited to 'src/gallium/drivers/r300') diff --git a/src/gallium/drivers/r300/r300_state_shader.c b/src/gallium/drivers/r300/r300_state_shader.c index 7803494130..0b600b9f51 100644 --- a/src/gallium/drivers/r300/r300_state_shader.c +++ b/src/gallium/drivers/r300/r300_state_shader.c @@ -350,11 +350,21 @@ static INLINE void r500_emit_tex(struct r500_fragment_shader* fs, if (dst->DstRegister.File == TGSI_FILE_OUTPUT) { fs->instructions[i].inst2 |= - R500_TEX_DST_ADDR(assembler->temp_offset + - assembler->temp_count); - } + R500_TEX_DST_ADDR(assembler->temp_count + + assembler->temp_offset); - fs->instruction_count++; + fs->instruction_count++; + + /* Setup and emit a MOV. */ + src[0].SrcRegister.Index = assembler->temp_count; + src[0].SrcRegister.File = TGSI_FILE_TEMPORARY; + + src[1] = src[0]; + src[2] = r500_constant_zero; + r500_emit_maths(fs, assembler, src, dst, TGSI_OPCODE_MOV, 3); + } else { + fs->instruction_count++; + } } static void r500_fs_instruction(struct r500_fragment_shader* fs, -- cgit v1.2.3