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