This fixes the following piglit tests:
glsl-complex-subscript
glsl-fs-vec4-indexing-temp-dst
glsl-fs-vec4-indexing-temp-dst-in-loop
glsl-texcoord-array
glsl-vs-arrays
glsl-vs-varying-array
glsl-vs-vec4-indexing-temp-dst
glsl-vs-vec4-indexing-temp-dst-in-loop
From eca929488701d4a8434cf4e4724c3c0066252f42 Mon Sep 17 00:00:00 2001
From: Fabian Bieler <[email protected]>
Date: Thu, 3 Mar 2011 10:08:08 +0100
Subject: [PATCH] r600g: Check for relative addressing in destination register when trying to merge instruction groups

---
 src/gallium/drivers/r600/r600_asm.c |    9 ++++++++-
 1 files changed, 8 insertions(+), 1 deletions(-)

diff --git a/src/gallium/drivers/r600/r600_asm.c b/src/gallium/drivers/r600/r600_asm.c
index 240093f..c22bd8e 100644
--- a/src/gallium/drivers/r600/r600_asm.c
+++ b/src/gallium/drivers/r600/r600_asm.c
@@ -953,10 +953,17 @@ static int merge_inst_groups(struct r600_bc *bc, struct r600_bc_alu *slots[5],
 		} else
 			result[i] = slots[i];
 
-		// let's check source gprs
 		alu = slots[i];
 		num_once_inst += is_alu_once_inst(bc, alu);
 
+		// let's check dst gpr
+		if (alu->dst.rel) {
+			if (have_mova)
+				return 0;
+			have_rel = 1;
+		}
+
+		// let's check source gprs
 		num_src = r600_bc_get_num_operands(bc, alu);
 		for (src = 0; src < num_src; ++src) {
 			if (alu->src[src].rel) {
-- 
1.7.4.1

_______________________________________________
mesa-dev mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to