Kaynağa Gözat

fixed a bug in texture memory manager when in UMA mode

tags/R300_DRIVER_0
Daniel Borca 22 yıl önce
ebeveyn
işleme
43ed92b3a1

+ 3
- 1
src/mesa/drivers/glide/fxdd.c Dosyayı Görüntüle

@@ -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;

+ 10
- 5
src/mesa/drivers/glide/fxtexman.c Dosyayı Görüntüle

@@ -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;
}

Loading…
İptal
Kaydet