mesa: Branch 'master' - 2 commits

Nicolai Hähnle nh at kemper.freedesktop.org
Sat Mar 24 13:43:20 UTC 2007


 src/mesa/drivers/dri/r300/r300_state.c |   12 ++++++++----
 src/mesa/swrast/s_context.c            |    4 +---
 2 files changed, 9 insertions(+), 7 deletions(-)

New commits:
diff-tree d4dd5a95a8a467a696e5160f3c9c72711829d95e (from 8f90822b7264a6e569707fb187a77de57a6e6dac)
Author: Nicolai Haehnle <nhaehnle at gmail.com>
Date:   Sat Mar 24 13:01:57 2007 +0100

    r300: Fix: KIL instruction don't require textures
    
    When no textures were enabled, a KIL instruction triggered an assertion
    in r300_setup_rs_unit.

diff --git a/src/mesa/drivers/dri/r300/r300_state.c b/src/mesa/drivers/dri/r300/r300_state.c
index 47f1546..ef23a61 100644
--- a/src/mesa/drivers/dri/r300/r300_state.c
+++ b/src/mesa/drivers/dri/r300/r300_state.c
@@ -1210,7 +1210,7 @@ void r300_setup_textures(GLcontext *ctx)
 	r300ContextPtr r300 = R300_CONTEXT(ctx);
 	int hw_tmu=0;
 	int last_hw_tmu=-1; /* -1 translates into no setup costs for fields */
-	int tmu_mappings[R300_MAX_TEXTURE_UNITS] = { -1 };
+	int tmu_mappings[R300_MAX_TEXTURE_UNITS] = { -1, };
 	struct r300_fragment_program *rp =
 		(struct r300_fragment_program *)
 		(char *)ctx->FragmentProgram._Current;
@@ -1307,10 +1307,14 @@ void r300_setup_textures(GLcontext *ctx)
 		val = rp->tex.inst[i];
 		val &= ~R300_FPITX_IMAGE_MASK;
 
-		assert(tmu_mappings[unit] >= 0);
+		if (((val >> R300_FPITX_OPCODE_SHIFT) & 7) == R300_FPITX_OP_KIL) {
+			r300->hw.fpt.cmd[R300_FPT_INSTR_0+i] = val;
+		} else {
+			assert(tmu_mappings[unit] >= 0);
 
-		val |= tmu_mappings[unit] << R300_FPITX_IMAGE_SHIFT;
-		r300->hw.fpt.cmd[R300_FPT_INSTR_0+i] = val;
+			val |= tmu_mappings[unit] << R300_FPITX_IMAGE_SHIFT;
+			r300->hw.fpt.cmd[R300_FPT_INSTR_0+i] = val;
+		}
 	}
 
 	r300->hw.fpt.cmd[R300_FPT_CMD_0] = cmdpacket0(R300_PFS_TEXI_0, rp->tex.length);
diff-tree 8f90822b7264a6e569707fb187a77de57a6e6dac (from ea3d11a3d8901d650eb2a858ce30abae2d20d278)
Author: Nicolai Haehnle <nhaehnle at gmail.com>
Date:   Sat Mar 24 14:41:59 2007 +0100

    swrast: Fix crash when sampling from a non-existing texture object

diff --git a/src/mesa/swrast/s_context.c b/src/mesa/swrast/s_context.c
index 1c9a098..f5f04b0 100644
--- a/src/mesa/swrast/s_context.c
+++ b/src/mesa/swrast/s_context.c
@@ -505,9 +505,7 @@ _swrast_update_texture_samplers(GLcontex
 
    for (u = 0; u < ctx->Const.MaxTextureImageUnits; u++) {
       const struct gl_texture_object *tObj = ctx->Texture.Unit[u]._Current;
-      if (tObj)
-         swrast->TextureSample[u] =
-            _swrast_choose_texture_sample_func(ctx, tObj);
+      swrast->TextureSample[u] = _swrast_choose_texture_sample_func(ctx, tObj);
    }
 }
 



More information about the mesa-commit mailing list