From 8bbfaa7c22fb5a8ddee9d4982f46a18fd5dd7e0b Mon Sep 17 00:00:00 2001
From: Fabian Bieler <[email protected]>
Date: Wed, 23 Mar 2011 23:26:41 +0100
Subject: [PATCH 2/3] r600g: Handle texture fetch instructions with neg or abs on source register

---
 src/gallium/drivers/r600/r600_shader.c |    8 +++++---
 1 files changed, 5 insertions(+), 3 deletions(-)

diff --git a/src/gallium/drivers/r600/r600_shader.c b/src/gallium/drivers/r600/r600_shader.c
index 0fe689e..a835e1c 100644
--- a/src/gallium/drivers/r600/r600_shader.c
+++ b/src/gallium/drivers/r600/r600_shader.c
@@ -1526,10 +1526,12 @@ static int tgsi_tex(struct r600_shader_ctx *ctx)
 	unsigned src_gpr;
 	int r, i;
 	int opcode;
-	/* Texture fetch instructions can only use gprs as source. */
+	/* Texture fetch instructions can only use gprs as source.
+	 * Also they cannot negate the source or take the absolute value */
 	const boolean src_requires_loading =
-		inst->Src[0].Register.File != TGSI_FILE_TEMPORARY &&
-		inst->Src[0].Register.File != TGSI_FILE_INPUT;
+		(inst->Src[0].Register.File != TGSI_FILE_TEMPORARY &&
+		inst->Src[0].Register.File != TGSI_FILE_INPUT) ||
+		ctx->src[0].neg || ctx->src[0].abs;
 	boolean src_loaded = FALSE;
 
 	src_gpr = ctx->file_offset[inst->Src[0].Register.File] + inst->Src[0].Register.Index;
-- 
1.7.4.1

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

Reply via email to