Mesa (master): nv50: fix TEX for WriteMask not equal 0xf

Christoph Bumiller chrisbmr at kemper.freedesktop.org
Fri Sep 25 09:02:06 UTC 2009


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

Author: Christoph Bumiller <e0425955 at student.tuwien.ac.at>
Date:   Fri Sep 25 10:53:01 2009 +0200

nv50: fix TEX for WriteMask not equal 0xf

If you e.g. only need alpha, it ends up in the first reg,
not the last, as it would when reading rgb too.

---

 src/gallium/drivers/nv50/nv50_program.c |    9 +++++----
 1 files changed, 5 insertions(+), 4 deletions(-)

diff --git a/src/gallium/drivers/nv50/nv50_program.c b/src/gallium/drivers/nv50/nv50_program.c
index 272fd8d..576d075 100644
--- a/src/gallium/drivers/nv50/nv50_program.c
+++ b/src/gallium/drivers/nv50/nv50_program.c
@@ -1166,10 +1166,11 @@ emit_tex(struct nv50_pc *pc, struct nv50_reg **dst, unsigned mask,
 	emit(pc, e);
 
 #if 1
-	if (mask & 1) emit_mov(pc, dst[0], t[0]);
-	if (mask & 2) emit_mov(pc, dst[1], t[1]);
-	if (mask & 4) emit_mov(pc, dst[2], t[2]);
-	if (mask & 8) emit_mov(pc, dst[3], t[3]);
+	c = 0;
+	if (mask & 1) emit_mov(pc, dst[0], t[c++]);
+	if (mask & 2) emit_mov(pc, dst[1], t[c++]);
+	if (mask & 4) emit_mov(pc, dst[2], t[c++]);
+	if (mask & 8) emit_mov(pc, dst[3], t[c]);
 
 	free_temp4(pc, t);
 #else




More information about the mesa-commit mailing list