EnvMode GL_BLEND and tex invalidate changes from Daryll
authorBrian Paul <brian.paul@tungstengraphics.com>
Thu, 4 May 2000 16:15:33 +0000 (16:15 +0000)
committerBrian Paul <brian.paul@tungstengraphics.com>
Thu, 4 May 2000 16:15:33 +0000 (16:15 +0000)
src/mesa/drivers/glide/fxdd.c
src/mesa/drivers/glide/fxddtex.c

index 4f179a7..d37943f 100644 (file)
@@ -966,8 +966,14 @@ static GLboolean fxIsInHardware(GLcontext *ctx)
     }
 
     if (ctx->Texture.ReallyEnabled & TEXTURE0_2D) {
-      if (ctx->Texture.Unit[0].EnvMode == GL_BLEND)
+      if (ctx->Texture.Unit[0].EnvMode == GL_BLEND &&
+         (ctx->Texture.ReallyEnabled & TEXTURE1_2D ||
+          ctx->Texture.Unit[0].EnvColor[0] != 0 ||
+          ctx->Texture.Unit[0].EnvColor[1] != 0 ||
+          ctx->Texture.Unit[0].EnvColor[2] != 0 ||
+          ctx->Texture.Unit[0].EnvColor[3] != 1)) {
         return GL_FALSE;
+      }
       if (ctx->Texture.Unit[0].Current->Image[0]->Border > 0)
         return GL_FALSE;
     }
index 01a67c4..55e0be6 100644 (file)
@@ -95,9 +95,9 @@ static void fxTexInvalidate(GLcontext *ctx, struct gl_texture_object *tObj)
   fxMesaContext fxMesa=(fxMesaContext)ctx->DriverCtx;
   tfxTexInfo *ti;
 
-  fxTMMoveOutTM(fxMesa,tObj); /* TO DO: SLOW but easy to write */
-
   ti=fxTMGetTexInfo(tObj);
+  if (ti->isInTM)   fxTMMoveOutTM(fxMesa,tObj); /* TO DO: SLOW but easy to write */
+
   ti->validated=GL_FALSE;
   fxMesa->new_state|=FX_NEW_TEXTURING;
   ctx->Driver.RenderStart = fxSetupFXUnits;