diff options
-rw-r--r-- | src/mesa/drivers/dri/unichrome/via_context.h | 1 | ||||
-rw-r--r-- | src/mesa/drivers/dri/unichrome/via_state.c | 50 | ||||
-rw-r--r-- | src/mesa/drivers/dri/unichrome/via_texmem.c | 1 |
3 files changed, 18 insertions, 34 deletions
diff --git a/src/mesa/drivers/dri/unichrome/via_context.h b/src/mesa/drivers/dri/unichrome/via_context.h index ae3b41506d..e6140e21d0 100644 --- a/src/mesa/drivers/dri/unichrome/via_context.h +++ b/src/mesa/drivers/dri/unichrome/via_context.h @@ -286,6 +286,7 @@ struct via_context_t { GLuint agpFullCount; GLboolean strictConformance; + GLboolean clearTexCache; /* Configuration cache */ diff --git a/src/mesa/drivers/dri/unichrome/via_state.c b/src/mesa/drivers/dri/unichrome/via_state.c index 7aac5a2991..06ba531265 100644 --- a/src/mesa/drivers/dri/unichrome/via_state.c +++ b/src/mesa/drivers/dri/unichrome/via_state.c @@ -198,30 +198,24 @@ void viaEmitState(viaContextPtr vmesa) if (VIA_DEBUG) fprintf(stderr, "multi texture\n"); nDummyValue = (HC_SubA_HTXSMD << 24) | (1 << 3); - /* Clear cache flag never set: - */ - if (0) { - OUT_RING( nDummyValue | HC_HTXCHCLR_MASK ); - OUT_RING( nDummyValue ); - } - else { - OUT_RING( nDummyValue ); - OUT_RING( nDummyValue ); - } } else { if (VIA_DEBUG) fprintf(stderr, "single texture\n"); nDummyValue = (HC_SubA_HTXSMD << 24) | 0; - - if (0) { - OUT_RING( nDummyValue | HC_HTXCHCLR_MASK ); - OUT_RING( nDummyValue ); - } - else { - OUT_RING( nDummyValue ); - OUT_RING( nDummyValue ); - } } + + /* Clear cache flag never set: + */ + if (vmesa->clearTexCache) { + vmesa->clearTexCache = 0; + OUT_RING( nDummyValue | HC_HTXCHCLR_MASK ); + OUT_RING( nDummyValue ); + } + else { + OUT_RING( nDummyValue ); + OUT_RING( nDummyValue ); + } + OUT_RING( HC_HEADER2 ); OUT_RING( HC_ParaType_NotTex << 16 ); OUT_RING( (HC_SubA_HEnable << 24) | vmesa->regEnable ); @@ -1318,6 +1312,9 @@ static void viaChooseColorState(GLcontext *ctx) } } + + vmesa->regEnable &= ~HC_HenDT_MASK; + if (ctx->Color.ColorLogicOpEnabled) vmesa->regHROP = ROP[ctx->Color.LogicOp & 0xF]; else @@ -1616,21 +1613,6 @@ void viaValidateState( GLcontext *ctx ) else vmesa->regEnable &= ~HC_HenCS_MASK; - /* CLE266 gets this wrong at least: Pixels which fail alpha test - * 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 - /* Disabling now, as the main problem was that the alpha reference - * value was calculated incorrectly, it's now fixed. */ - 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; } diff --git a/src/mesa/drivers/dri/unichrome/via_texmem.c b/src/mesa/drivers/dri/unichrome/via_texmem.c index 3d0ff920f3..78153f6817 100644 --- a/src/mesa/drivers/dri/unichrome/via_texmem.c +++ b/src/mesa/drivers/dri/unichrome/via_texmem.c @@ -446,6 +446,7 @@ void viaUploadTexImages(viaContextPtr vmesa, viaTextureObjectPtr t) viaUploadTexLevel(t, i); t->dirtyImages = 0; + vmesa->clearTexCache = 1; UNLOCK_HARDWARE(vmesa); if (VIA_DEBUG) fprintf(stderr, "%s - out\n", __FUNCTION__); |