Mesa (master): r300/compiler: Don't use presubtract in TEX instructions

Tom Stellard tstellar at kemper.freedesktop.org
Sat Sep 11 02:54:10 UTC 2010


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

Author: Tom Stellard <tstellar at gmail.com>
Date:   Thu Sep  9 10:19:52 2010 -0700

r300/compiler: Don't use presubtract in TEX instructions

---

 .../drivers/dri/r300/compiler/radeon_optimize.c    |    7 ++++++-
 1 files changed, 6 insertions(+), 1 deletions(-)

diff --git a/src/mesa/drivers/dri/r300/compiler/radeon_optimize.c b/src/mesa/drivers/dri/r300/compiler/radeon_optimize.c
index 88aac94..0c6b1bd 100644
--- a/src/mesa/drivers/dri/r300/compiler/radeon_optimize.c
+++ b/src/mesa/drivers/dri/r300/compiler/radeon_optimize.c
@@ -192,7 +192,7 @@ static void copy_propagate(struct radeon_compiler * c, struct rc_instruction * i
 		/* It is possible to do copy propigation in this situation,
 		 * just not right now, see peephole_add_presub_inv() */
 		if (inst_mov->U.I.PreSub.Opcode != RC_PRESUB_NONE &&
-						info->NumSrcRegs > 2) {
+				(info->NumSrcRegs > 2 || info->HasTexture)) {
 			return;
 		}
 
@@ -559,6 +559,11 @@ static int presub_helper(
 				break;
 			}
 
+			if (info->HasTexture) {
+				can_remove = 0;
+				break;
+			}
+
 			/* We can't use more than one presubtract value in an
 			 * instruction, unless the two prsubtract operations
 			 * are the same and read from the same registers. */




More information about the mesa-commit mailing list