From: Alan Hourihane Date: Tue, 11 Jan 2005 16:42:56 +0000 (+0000) Subject: Fix ColorMask X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=f29aaf80a47e28f03cd60ebba0948961e8a73524;p=mesa.git Fix ColorMask --- diff --git a/src/mesa/drivers/dri/unichrome/via_state.c b/src/mesa/drivers/dri/unichrome/via_state.c index 6b16a17f969..a40aba43694 100644 --- a/src/mesa/drivers/dri/unichrome/via_state.c +++ b/src/mesa/drivers/dri/unichrome/via_state.c @@ -1320,8 +1320,18 @@ static void viaChooseColorState(GLcontext *ctx) else vmesa->regHROP = HC_HROP_P; - vmesa->regHFBBMSKL = (*(GLuint *)&ctx->Color.ColorMask[0]) & 0xFFFFFF; - vmesa->regHROP |= ctx->Color.ColorMask[3]; + if (vmesa->viaScreen->bitsPerPixel == 32) { + vmesa->regHFBBMSKL = PACK_COLOR_888(ctx->Color.ColorMask[0], + ctx->Color.ColorMask[1], + ctx->Color.ColorMask[2]); + vmesa->regHROP |= ctx->Color.ColorMask[3]; + } else { + GLushort color = PACK_COLOR_565(ctx->Color.ColorMask[0], + ctx->Color.ColorMask[1], + ctx->Color.ColorMask[2]); + vmesa->regHFBBMSKL = (color & 0xFF) << 16; + vmesa->regHROP |= (color & 0xFF00) >> 8; + } if (ctx->Color.ColorMask[3]) vmesa->regEnable |= HC_HenAW_MASK; @@ -1607,12 +1617,14 @@ void viaValidateState( GLcontext *ctx ) * are incorrectly writen to the z buffer. This is a pretty big * slowdown, it would be good to find out this wasn't necessary: */ +#if 0 if (vmesa->viaScreen->deviceID == VIA_CLE266) { GLboolean fallback = (ctx->Color.AlphaEnabled && ctx->Color.AlphaFunc != GL_ALWAYS && ctx->Depth.Mask); FALLBACK( vmesa, VIA_FALLBACK_ALPHATEST, fallback ); } +#endif vmesa->newEmitState |= vmesa->newState; vmesa->newState = 0;