On Tuesday 14 May 2002 00:25, Michel wrote: > I've left in a hack to allow export TDFX_DEBUG_TEXTURE=something to > make it easy to switch on/off texture debugging. > > Should apply against xf_4_2-branch.
Ugh, Michel you are working with a somewhat "outdated" codebase. May I force you to work with the DRI CVS trunk branch? I rediffed against the DRI CVS trunk (see below). So I had to fix some stuff here and there. Hopefully I did it right. DEBUG_VERBOSE_TEXTURE wasn't anylonger defined and tdfxTMDumpTexMem is undefined. Mesa/demos> ./gears libGL: XF86DRIGetClientDriverName: 1.0.0 tdfx (screen 0) libGL: OpenDriver: trying /usr/X11R6/lib/modules/dri/tdfx_dri.so libGL error: dlopen failed: /usr/X11R6/lib/modules/dri/tdfx_dri.so: undefined symbol: tdfxTMDumpTexMem Regards, Dieter -- Dieter Nützel Graduate Student, Computer Science University of Hamburg Department of Computer Science @home: [EMAIL PROTECTED]
diff -ru dri/xc/xc/lib/GL/mesa/src/drv/tdfx/tdfx_context.c dri-tdfx/xc/xc/lib/GL/mesa/src/drv/tdfx/tdfx_context.c --- dri/xc/xc/lib/GL/mesa/src/drv/tdfx/tdfx_context.c Sat Feb 16 17:35:22 2002 +++ dri-tdfx/xc/xc/lib/GL/mesa/src/drv/tdfx/tdfx_context.c Tue May 14 15:03:53 2002 @@ -154,6 +154,10 @@ FREE(fxMesa); return GL_FALSE; } + + if (getenv("TDFX_DEBUG_TEXTURE")) + TDFX_DEBUG |= DEBUG_VERBOSE_TEXTURE; + driContextPriv->driverPrivate = fxMesa; /* Mirror some important DRI state diff -ru dri/xc/xc/lib/GL/mesa/src/drv/tdfx/tdfx_context.h dri-tdfx/xc/xc/lib/GL/mesa/src/drv/tdfx/tdfx_context.h --- dri/xc/xc/lib/GL/mesa/src/drv/tdfx/tdfx_context.h Fri Mar 1 15:17:14 2002 +++ dri-tdfx/xc/xc/lib/GL/mesa/src/drv/tdfx/tdfx_context.h Tue May 14 04:34:40 2002 @@ -1008,7 +1008,7 @@ } } -#define DO_DEBUG 0 +#define DO_DEBUG 1 #if DO_DEBUG extern int TDFX_DEBUG; #else @@ -1022,6 +1022,7 @@ #define DEBUG_VERBOSE_DRI 0x10 #define DEBUG_VERBOSE_IOCTL 0x20 #define DEBUG_VERBOSE_2D 0x40 +#define DEBUG_VERBOSE_TEXTURE 0x80 #endif /* GLX_DIRECT_RENDERING */ diff -ru dri/xc/xc/lib/GL/mesa/src/drv/tdfx/tdfx_texman.c dri-tdfx/xc/xc/lib/GL/mesa/src/drv/tdfx/tdfx_texman.c --- dri/xc/xc/lib/GL/mesa/src/drv/tdfx/tdfx_texman.c Sat Feb 16 17:35:23 2002 +++ dri-tdfx/xc/xc/lib/GL/mesa/src/drv/tdfx/tdfx_texman.c Tue May 14 15:03:53 2002 @@ -64,16 +64,16 @@ int totalUsed = 0; for (block = shared->tmFree[tmu]; block; block = block->next) { - assert( block->endAddr > 0 ); - assert( block->startAddr <= shared->totalTexMem[tmu] ); - assert( block->endAddr <= shared->totalTexMem[tmu] ); - assert( (int) block->startAddr > prevStart ); - assert( (int) block->startAddr >= prevEnd ); + ASSERT( block->endAddr > 0 ); + ASSERT( block->startAddr <= shared->totalTexMem[tmu] ); + ASSERT( block->endAddr <= shared->totalTexMem[tmu] ); + ASSERT( (int) block->startAddr > prevStart ); + ASSERT( (int) block->startAddr >= prevEnd ); prevStart = (int) block->startAddr; prevEnd = (int) block->endAddr; totalFree += (block->endAddr - block->startAddr); } - assert(totalFree == shared->freeTexMem[tmu]); + ASSERT(totalFree == shared->freeTexMem[tmu]); { struct gl_texture_object *obj; @@ -83,12 +83,12 @@ if (ti) { if (ti->isInTM) { numRes++; - assert(ti->tm[0]); - if (ti->tm[tmu]) +/* ASSERT(ti->tm[0]); */ + if (ti->tm[tmu]) totalUsed += (ti->tm[tmu]->endAddr - ti->tm[tmu]->startAddr); } else { - assert(!ti->tm[0]); + ASSERT(!ti->tm[0]); } } } @@ -98,7 +98,7 @@ shared->freeTexMem[tmu], totalUsed, shared->totalTexMem[tmu], numObj, numRes); - assert(totalUsed + totalFree == shared->totalTexMem[tmu]); + ASSERT(totalUsed + totalFree == shared->totalTexMem[tmu]); } @@ -121,7 +121,7 @@ printf(" isInTM=%d whichTMU=%d lastTimeUsed=%d\n", info->isInTM, info->whichTMU, info->lastTimeUsed); printf(" tm[0] = %p", info->tm[0]); - assert(info->tm[0]); +/* ASSERT(info->tm[0]); */ if (info->tm[0]) { printf(" tm startAddr = %d endAddr = %d", info->tm[0]->startAddr, @@ -396,7 +396,11 @@ (info->whichTMU == TDFX_TMU_SPLIT))) { GLuint age, lasttime; - assert(info->tm[0]); +/* ASSERT(info->tm[0]); */ + if (! info->tm[unit] ) { + tdfxTMDumpTexMem ( fxMesa ); + return NULL; + } lasttime = info->lastTimeUsed; if (lasttime > bindnumber) @@ -469,7 +473,7 @@ #endif if (shared->umaTexMemory) { - assert(tmu == TDFX_TMU0); + ASSERT(tmu == TDFX_TMU0); } _glthread_LOCK_MUTEX(mesaShared->Mutex); @@ -545,7 +549,7 @@ tdfxMemRange *block, *prev; if (shared->umaTexMemory) { - assert(tmu == TDFX_TMU0); + ASSERT(tmu == TDFX_TMU0); } if (!range) @@ -561,7 +565,7 @@ prev = NULL; block = shared->tmFree[tmu]; while (block) { - assert(range->startAddr != block->startAddr); + ASSERT(range->startAddr != block->startAddr); if (range->startAddr > block->startAddr) { prev = block; block = block->next; @@ -624,6 +628,10 @@ char err[100]; sprintf(err, "AllocTexMem returned NULL! tmu=%d texmemsize=%d\n", (int) tmu, (int) texmemsize); + + UNLOCK_HARDWARE( fxMesa ); + exit( 1 ); + _mesa_problem(fxMesa->glCtx, err); return NULL; } @@ -647,9 +655,9 @@ GLint l; FxU32 targetTMU; - assert(tObj); + ASSERT(tObj); ti = TDFX_TEXTURE_DATA(tObj); - assert(ti); + ASSERT(ti); targetTMU = ti->whichTMU; switch (targetTMU) { @@ -900,7 +908,7 @@ break; case TDFX_TMU_SPLIT: case TDFX_TMU_BOTH: - assert(!shared->umaTexMemory); + ASSERT(!shared->umaTexMemory); RemoveRange_NoLock(fxMesa, TDFX_TMU0, ti->tm[TDFX_TMU0]); RemoveRange_NoLock(fxMesa, TDFX_TMU1, ti->tm[TDFX_TMU1]); break; diff -ru dri/xc/xc/programs/Xserver/hw/xfree86/drivers/tdfx/tdfx_driver.c dri-tdfx/xc/xc/programs/Xserver/hw/xfree86/drivers/tdfx/tdfx_driver.c --- dri/xc/xc/programs/Xserver/hw/xfree86/drivers/tdfx/tdfx_driver.c Wed Jan 30 06:13:32 2002 +++ dri-tdfx/xc/xc/programs/Xserver/hw/xfree86/drivers/tdfx/tdfx_driver.c Tue May 14 15:03:53 2002 @@ -1971,6 +1971,8 @@ "\tresolution modes and/or a smaller virtual screen size\n"); } else { pTDFX->texSize = pTDFX->backOffset - pTDFX->texOffset; + if (pTDFX->texSize > 256*256*6) + pTDFX->texSize = 256*256*6; xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Textures Memory %0.02f MB\n", (float)pTDFX->texSize/1024.0/1024.0); }