diff options
| -rw-r--r-- | src/mesa/drivers/dri/unichrome/via_state.c | 16 | 
1 files changed, 14 insertions, 2 deletions
| diff --git a/src/mesa/drivers/dri/unichrome/via_state.c b/src/mesa/drivers/dri/unichrome/via_state.c index 6b16a17f96..a40aba4369 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; | 
