mesa: Branch 'master'

Nicolai Hähnle nh at kemper.freedesktop.org
Sun Mar 25 11:04:08 UTC 2007


 src/mesa/drivers/dri/r300/r300_fragprog.c |    9 +++++++--
 1 files changed, 7 insertions(+), 2 deletions(-)

New commits:
diff-tree 7143c61283e4b7bffcb27f220517ada2e2c857e5 (from 74ceaf545feb530a61f2de1554c32d6ef0bd46f8)
Author: Nicolai Haehnle <nhaehnle at gmail.com>
Date:   Sun Mar 25 13:02:26 2007 +0200

    r300: Fix regression: unnecessary node indirection
    
    The texture_rectangle fix introduced a bug where every texture instruction
    caused a new indirection.

diff --git a/src/mesa/drivers/dri/r300/r300_fragprog.c b/src/mesa/drivers/dri/r300/r300_fragprog.c
index 68a75ec..e01f56d 100644
--- a/src/mesa/drivers/dri/r300/r300_fragprog.c
+++ b/src/mesa/drivers/dri/r300/r300_fragprog.c
@@ -934,6 +934,9 @@ static void emit_tex(struct r300_fragmen
 	int hwsrc, hwdest;
 	GLuint tempreg = 0;
 
+	uin = cs->used_in_node;
+	din = cs->dest_in_node;
+
 	/* Resolve source/dest to hardware registers */
 	if (opcode != R300_FPITX_OP_KIL) {
 		if (fpi->TexSrcTarget == TEXTURE_RECT_INDEX) {
@@ -958,6 +961,10 @@ static void emit_tex(struct r300_fragmen
 			emit_arith(rp, PFS_OP_MAD, tempreg, WRITEMASK_XYZW,
 			           coord, factorreg, pfs_zero, 0);
 
+			/* Ensure correct node indirection */
+			uin = cs->used_in_node;
+			din = cs->dest_in_node;
+
 			hwsrc = t_hw_src(rp, tempreg, GL_TRUE);
 		} else {
 			hwsrc = t_hw_src(rp, coord, GL_TRUE);
@@ -986,8 +993,6 @@ static void emit_tex(struct r300_fragmen
 		hwsrc = t_hw_src(rp, coord, GL_TRUE);
 	}
 
-	din = cs->dest_in_node;
-	uin = cs->used_in_node;
 
 	/* Indirection if source has been written in this node, or if the
 	 * dest has been read/written in this node



More information about the mesa-commit mailing list