fixed a bug in texture memory manager when in UMA mode
authorDaniel Borca <dborca@users.sourceforge.net>
Wed, 14 Jan 2004 07:10:12 +0000 (07:10 +0000)
committerDaniel Borca <dborca@users.sourceforge.net>
Wed, 14 Jan 2004 07:10:12 +0000 (07:10 +0000)
src/mesa/drivers/glide/fxdd.c
src/mesa/drivers/glide/fxtexman.c

index d7d347abae62c520d43007432b637578cccdb87c..0ee4216cb1f29209f6b40f52d554ba1613c05b1c 100644 (file)
@@ -1347,14 +1347,16 @@ fxDDInitFxMesaContext(fxMesaContext fxMesa)
     do {
         textureLevels++;
     } while ((textureSize >>= 0x1) & 0x7ff);
-    fxMesa->textureMaxLod = textureLevels - 1;
     ctx->Const.MaxTextureLevels = textureLevels;
+#if 1||FX_RESCALE_BIG_TEXURES
+    fxMesa->textureMaxLod = textureLevels - 1;
     if ((env = getenv("MESA_FX_MAXLOD")) != NULL) {
        int maxLevels = atoi(env) + 1;
        if ((maxLevels <= MAX_TEXTURE_LEVELS) && (maxLevels > textureLevels)) {
           ctx->Const.MaxTextureLevels = maxLevels;
        }
     }
+#endif
    }
    ctx->Const.MaxTextureCoordUnits =
    ctx->Const.MaxTextureImageUnits = fxMesa->haveTwoTMUs ? 2 : 1;
index 2f4a855b309869bed7330248b25be8f0b0a6ea2d..560a0f4d1be12614f031018c45ee5f86fc5f651f 100644 (file)
@@ -197,7 +197,6 @@ fxTMFindStartAddr(fxMesaContext fxMesa, GLint tmu, int size)
    int result;
    struct gl_texture_object *obj;
 
-   int real_tmu = tmu;
    if (fxMesa->HaveTexUma) {
       tmu = FX_TMU0;
    }
@@ -228,7 +227,7 @@ fxTMFindStartAddr(fxMesaContext fxMesa, GLint tmu, int size)
       if (TDFX_DEBUG & VERBOSE_TEXTURE) {
         fprintf(stderr, "fxTMFindStartAddr: No free space. Discard oldest\n");
       }
-      obj = fxTMFindOldestObject(fxMesa, real_tmu);
+      obj = fxTMFindOldestObject(fxMesa, tmu);
       if (!obj) {
         fprintf(stderr, "fxTMFindStartAddr: ERROR: No space for texture\n");
         return -1;
@@ -336,8 +335,12 @@ fxTMFindOldestObject(fxMesaContext fxMesa, int tmu)
       info = fxTMGetTexInfo(tmp);
 
       if (info && info->isInTM &&
-         ((info->whichTMU == tmu) || (info->whichTMU == FX_TMU_BOTH) ||
-          (info->whichTMU == FX_TMU_SPLIT))) {
+         ((info->whichTMU == tmu) ||
+          (info->whichTMU == FX_TMU_BOTH) ||
+          (info->whichTMU == FX_TMU_SPLIT) ||
+          fxMesa->HaveTexUma
+         )
+        ) {
         lasttime = info->lastTimeUsed;
 
         if (lasttime > bindnumber)
@@ -367,7 +370,9 @@ fxTMFindOldestObject(fxMesaContext fxMesa, int tmu)
    }
    else {
        if (TDFX_DEBUG & VERBOSE_TEXTURE) {
-          fprintf(stderr, "fxTMFindOldestObject: %d age=%d\n", obj->Name, old);
+          if (obj != NULL) {
+             fprintf(stderr, "fxTMFindOldestObject: %d age=%d\n", obj->Name, old);
+          }
        }
        return obj;
    }