check if _Current == NULL for TXB
authorBrian <brian@yutani.localnet.net>
Mon, 8 Jan 2007 23:49:43 +0000 (16:49 -0700)
committerBrian <brian@yutani.localnet.net>
Mon, 8 Jan 2007 23:49:43 +0000 (16:49 -0700)
src/mesa/swrast/s_fragprog.c

index c59e24debedc4a4893040644bef5f6f44baebbba..517b63c91b2da322594a355005a46635f7c712b9 100644 (file)
@@ -1358,6 +1358,8 @@ execute_program( GLcontext *ctx,
          case OPCODE_TXB: /* GL_ARB_fragment_program only */
             /* Texel lookup with LOD bias */
             {
+               const struct gl_texture_unit *texUnit
+                  = &ctx->Texture.Unit[inst->TexSrcUnit];
                GLfloat coord[4], color[4], lambda, bias;
                if (inst->SrcReg[0].File == PROGRAM_INPUT &&
                    inst->SrcReg[0].Index == FRAG_ATTRIB_TEX0+inst->TexSrcUnit)
@@ -1366,9 +1368,9 @@ execute_program( GLcontext *ctx,
                   lambda = 0.0;
                fetch_vector4(ctx, &inst->SrcReg[0], machine, program, coord);
                /* coord[3] is the bias to add to lambda */
-               bias = ctx->Texture.Unit[inst->TexSrcUnit].LodBias
-                    + ctx->Texture.Unit[inst->TexSrcUnit]._Current->LodBias
-                    + coord[3];
+               bias = texUnit->LodBias + coord[3];
+               if (texUnit->_Current)
+                  bias += texUnit->_Current->LodBias;
                fetch_texel(ctx, coord, lambda + bias, inst->TexSrcUnit, color);
                store_vector4( inst, machine, color );
             }