fixed glDrawBuffer(GL_NONE) bug
authorBrian Paul <brian.paul@tungstengraphics.com>
Fri, 5 May 2000 23:54:08 +0000 (23:54 +0000)
committerBrian Paul <brian.paul@tungstengraphics.com>
Fri, 5 May 2000 23:54:08 +0000 (23:54 +0000)
src/mesa/drivers/glide/fxdd.c
src/mesa/drivers/glide/fxsetup.c

index d37943f0c22c93751a163f6fc978b1e7b1e75d54..a979cad04dc9905e59503f98571201dece17fbb3 100644 (file)
@@ -286,7 +286,7 @@ static GLbitfield fxDDClear(GLcontext *ctx, GLbitfield mask, GLboolean all,
 
 /* Set the buffer used for drawing */
 /* XXX support for separate read/draw buffers hasn't been tested */
-static GLboolean fxDDSetDrawBuffer(GLcontext *ctx, GLenum mode )
+static GLboolean fxDDSetDrawBuffer(GLcontext *ctx, GLenum mode)
 {
   fxMesaContext fxMesa=(fxMesaContext)ctx->DriverCtx;
 
@@ -304,6 +304,10 @@ static GLboolean fxDDSetDrawBuffer(GLcontext *ctx, GLenum mode )
     FX_grRenderBuffer(fxMesa->currentFB);
     return GL_TRUE;
   }
+  else if (mode == GL_NONE) {
+    FX_grColorMask(FXFALSE,FXFALSE);
+    return GL_TRUE;
+  }
   else {
     return GL_FALSE;
   }
@@ -943,7 +947,7 @@ static GLboolean fxIsInHardware(GLcontext *ctx)
   if (!ctx->Hint.AllowDrawMem)
      return GL_TRUE;           /* you'll take it and like it */
 
-  if((ctx->RasterMask & STENCIL_BIT) ||
+  if((ctx->RasterMask & (STENCIL_BIT | MULTI_DRAW_BIT)) ||
      ((ctx->Color.BlendEnabled) && (ctx->Color.BlendEquation!=GL_FUNC_ADD_EXT)) ||
      ((ctx->Color.ColorLogicOpEnabled) && (ctx->Color.LogicOp!=GL_COPY)) ||
      (ctx->Light.Model.ColorControl==GL_SEPARATE_SPECULAR_COLOR) ||
index e8c75b7c4a16ffa7537c365424c1101643381622..5e82443d78d23a430b75346f0e0dbc0886c4b0a9 100644 (file)
@@ -1411,14 +1411,20 @@ static void fxSetupColorMask(GLcontext *ctx)
 {
   fxMesaContext fxMesa = FX_CONTEXT(ctx);
 
-  FX_grColorMask(ctx->Color.ColorMask[RCOMP] ||
-             ctx->Color.ColorMask[GCOMP] ||
-             ctx->Color.ColorMask[BCOMP],
-             ctx->Color.ColorMask[ACOMP] && fxMesa->haveAlphaBuffer);
+  if (ctx->Color.DrawBuffer == GL_NONE) {
+    FX_grColorMask(FXFALSE, FXFALSE);
+  }
+  else {
+    FX_grColorMask(ctx->Color.ColorMask[RCOMP] ||
+                   ctx->Color.ColorMask[GCOMP] ||
+                   ctx->Color.ColorMask[BCOMP],
+                   ctx->Color.ColorMask[ACOMP] && fxMesa->haveAlphaBuffer);
+  }
 }
 
 
 
+
 /************************************************************************/
 /**************************** Fog Mode SetUp ****************************/
 /************************************************************************/