Add flag to clear texture caches after texture upload.
authorKeith Whitwell <keith@tungstengraphics.com>
Wed, 12 Jan 2005 17:20:29 +0000 (17:20 +0000)
committerKeith Whitwell <keith@tungstengraphics.com>
Wed, 12 Jan 2005 17:20:29 +0000 (17:20 +0000)
src/mesa/drivers/dri/unichrome/via_context.h
src/mesa/drivers/dri/unichrome/via_state.c
src/mesa/drivers/dri/unichrome/via_texmem.c

index ae3b41506dd7d2368bbd60def0e6727c79aa3e19..e6140e21d05144e3c64d85b59cacf2b52e2d4603 100644 (file)
@@ -286,6 +286,7 @@ struct via_context_t {
    GLuint agpFullCount;
 
    GLboolean strictConformance;
+   GLboolean clearTexCache;
 
    /* Configuration cache
     */
index 7aac5a2991d86d569d484e05380f939a6711213f..06ba531265b16012c4aa68b76c1fb46868715c55 100644 (file)
@@ -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;
 }
index 3d0ff920f3541531b05361a50bfdcd34dc7e30a8..78153f68177fd94cb0218a97b8c6f9b32ee21b1a 100644 (file)
@@ -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__);