Mesa (master): nv50: fix TEXLOD sequence and use it only in FPs

Christoph Bumiller chrisbmr at kemper.freedesktop.org
Thu Dec 31 05:38:08 PST 2009


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

Author: Christoph Bumiller <e0425955 at student.tuwien.ac.at>
Date:   Thu Dec 31 13:38:53 2009 +0100

nv50: fix TEXLOD sequence and use it only in FPs

---

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

diff --git a/src/gallium/drivers/nv50/nv50_program.c b/src/gallium/drivers/nv50/nv50_program.c
index cc15f45..6733347 100644
--- a/src/gallium/drivers/nv50/nv50_program.c
+++ b/src/gallium/drivers/nv50/nv50_program.c
@@ -1566,7 +1566,13 @@ emit_texlod_sequence(struct nv50_pc *pc, struct nv50_reg *tlod,
 		     struct nv50_reg *src, struct nv50_program_exec *tex)
 {
 	struct nv50_program_exec *join_at;
-	unsigned i, target = pc->p->exec_size + 7 * 2;
+	unsigned i, target = pc->p->exec_size + 9 * 2;
+
+	if (pc->p->type != PIPE_SHADER_FRAGMENT) {
+		emit(pc, tex);
+		return;
+	}
+	pc->allow32 = FALSE;
 
 	/* Subtract lod of each pixel from lod of top left pixel, jump
 	 * texlod insn if result is 0, then repeat for 2 other pixels.
@@ -1692,6 +1698,7 @@ emit_tex(struct nv50_pc *pc, struct nv50_reg **dst, unsigned mask,
 		emit(pc, e);
 	} else
 	if (bias_lod < 0) {
+		assert(pc->p->type == PIPE_SHADER_FRAGMENT);
 		e->inst[0] |= arg << 22;
 		e->inst[1] |= 0x20000000; /* texbias */
 		emit_mov(pc, t[arg], src[3]);



More information about the mesa-commit mailing list