Mesa (master): r600g: Handle texture fetch instructions with neg or abs on source register

Henri Verbeet hverbeet at kemper.freedesktop.org
Sun Mar 27 13:00:55 UTC 2011


Module: Mesa
Branch: master
Commit: da5b4764b28a1efd2e9dbf0741247288da36f546
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=da5b4764b28a1efd2e9dbf0741247288da36f546

Author: Fabian Bieler <der.fabe at gmx.net>
Date:   Wed Mar 23 23:26:41 2011 +0100

r600g: Handle texture fetch instructions with neg or abs on source register

Signed-off-by: Henri Verbeet <hverbeet at gmail.com>

---

 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;




More information about the mesa-commit mailing list