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