56 lines
2.6 KiB
Diff
56 lines
2.6 KiB
Diff
commit c71fa34728ef4eddd074aeb2bee49ae6a7acb3d1
|
|
Author: Brian Paul <brian.paul@tungstengraphics.com>
|
|
Date: Tue Jul 8 15:11:23 2008 -0600
|
|
|
|
added null texObj ptr check (bug 15567)
|
|
|
|
diff --git a/src/mesa/swrast/s_fragprog.c b/src/mesa/swrast/s_fragprog.c
|
|
index ecace9c..bf7a1de 100644
|
|
--- a/src/mesa/swrast/s_fragprog.c
|
|
+++ b/src/mesa/swrast/s_fragprog.c
|
|
@@ -44,7 +44,8 @@ fetch_texel_lod( GLcontext *ctx, const GLfloat texcoord[4], GLfloat lambda,
|
|
SWcontext *swrast = SWRAST_CONTEXT(ctx);
|
|
const struct gl_texture_object *texObj = ctx->Texture.Unit[unit]._Current;
|
|
|
|
- lambda = CLAMP(lambda, texObj->MinLod, texObj->MaxLod);
|
|
+ if (texObj)
|
|
+ lambda = CLAMP(lambda, texObj->MinLod, texObj->MaxLod);
|
|
|
|
/* XXX use a float-valued TextureSample routine here!!! */
|
|
swrast->TextureSample[unit](ctx, texObj, 1, (const GLfloat (*)[4]) texcoord,
|
|
@@ -68,20 +69,23 @@ fetch_texel_deriv( GLcontext *ctx, const GLfloat texcoord[4],
|
|
{
|
|
SWcontext *swrast = SWRAST_CONTEXT(ctx);
|
|
const struct gl_texture_object *texObj = ctx->Texture.Unit[unit]._Current;
|
|
- const struct gl_texture_image *texImg = texObj->Image[0][texObj->BaseLevel];
|
|
- const GLfloat texW = (GLfloat) texImg->WidthScale;
|
|
- const GLfloat texH = (GLfloat) texImg->HeightScale;
|
|
+ GLfloat lambda;
|
|
GLchan rgba[4];
|
|
|
|
- GLfloat lambda
|
|
- = _swrast_compute_lambda(texdx[0], texdy[0], /* ds/dx, ds/dy */
|
|
- texdx[1], texdy[1], /* dt/dx, dt/dy */
|
|
- texdx[3], texdy[2], /* dq/dx, dq/dy */
|
|
- texW, texH,
|
|
- texcoord[0], texcoord[1], texcoord[3],
|
|
- 1.0F / texcoord[3]) + lodBias;
|
|
+ if (texObj) {
|
|
+ const struct gl_texture_image *texImg = texObj->Image[0][texObj->BaseLevel];
|
|
+ const GLfloat texW = (GLfloat) texImg->WidthScale;
|
|
+ const GLfloat texH = (GLfloat) texImg->HeightScale;
|
|
|
|
- lambda = CLAMP(lambda, texObj->MinLod, texObj->MaxLod);
|
|
+ lambda = _swrast_compute_lambda(texdx[0], texdy[0], /* ds/dx, ds/dy */
|
|
+ texdx[1], texdy[1], /* dt/dx, dt/dy */
|
|
+ texdx[3], texdy[2], /* dq/dx, dq/dy */
|
|
+ texW, texH,
|
|
+ texcoord[0], texcoord[1], texcoord[3],
|
|
+ 1.0F / texcoord[3]) + lodBias;
|
|
+
|
|
+ lambda = CLAMP(lambda, texObj->MinLod, texObj->MaxLod);
|
|
+ }
|
|
|
|
swrast->TextureSample[unit](ctx, texObj, 1, (const GLfloat (*)[4]) texcoord,
|
|
&lambda, &rgba);
|