On Tue, May 14, 2002 at 03:18:19PM +0100, Michael wrote:
> On Tue, May 14, 2002 at 04:02:20PM +0200, Dieter N�tzel wrote:
> > 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?
>
> Nod, but I figured the release version of 4.2 was where this bug was
> biting, and anyone who wanted interim fixes would likely use this bug
> fix branch - otherwise what is xf_4_2-branch for?
>
> I was going to propogate the fix forwards to whatever is the latest CVS
> version if it works (it might not even be a bug anymore) but I'll do
> that now if it'll help you test.
>
> I've a fix for the q3demo change setup or /vid_restart crash as well.
Looks like that's already fixed in trunk...here's the patch against
trunk for the low tex mem hang...
--
Michael.
Index: lib/GL/mesa/src/drv/tdfx/tdfx_texman.c
===================================================================
RCS file: /cvsroot/dri/xc/xc/lib/GL/mesa/src/drv/tdfx/tdfx_texman.c,v
retrieving revision 1.11
diff -u -3 -p -r1.11 tdfx_texman.c
--- lib/GL/mesa/src/drv/tdfx/tdfx_texman.c 14 Feb 2002 01:59:59 -0000 1.11
+++ lib/GL/mesa/src/drv/tdfx/tdfx_texman.c 14 May 2002 20:45:12 -0000
@@ -396,7 +396,9 @@ FindOldestObject(tdfxContextPtr fxMesa,
(info->whichTMU == TDFX_TMU_SPLIT))) {
GLuint age, lasttime;
- assert(info->tm[0]);
+/* assert(info->tm[0]);*/
+ if (!info->tm[tmu])
+ return NULL;
lasttime = info->lastTimeUsed;
if (lasttime > bindnumber)
@@ -625,7 +627,8 @@ AllocTexMem(tdfxContextPtr fxMesa, FxU32
sprintf(err, "AllocTexMem returned NULL! tmu=%d texmemsize=%d\n",
(int) tmu, (int) texmemsize);
_mesa_problem(fxMesa->glCtx, err);
- return NULL;
+ UNLOCK_HARDWARE( fxMesa );
+ exit(1);
}
else {
tdfxMemRange *range;
Index: programs/Xserver/hw/xfree86/drivers/tdfx/tdfx_driver.c
===================================================================
RCS file: /cvsroot/dri/xc/xc/programs/Xserver/hw/xfree86/drivers/tdfx/tdfx_driver.c,v
retrieving revision 1.61
diff -u -3 -p -r1.61 tdfx_driver.c
--- programs/Xserver/hw/xfree86/drivers/tdfx/tdfx_driver.c 27 Jan 2002 20:05:36
-0000 1.61
+++ programs/Xserver/hw/xfree86/drivers/tdfx/tdfx_driver.c 14 May 2002 20:45:19
+-0000
@@ -1954,8 +1954,11 @@ static void allocateMemory(ScrnInfoPtr p
/* for giggles. */
pTDFX->fbOffset = pTDFX->fifoOffset + pTDFX->fifoSize;
pTDFX->texOffset = pTDFX->fbOffset + fbSize;
+ pTDFX->texSize = pTDFX->backOffset - pTDFX->texOffset;
+
if (pTDFX->depthOffset <= pTDFX->texOffset ||
- pTDFX->backOffset <= pTDFX->texOffset) {
+ pTDFX->backOffset <= pTDFX->texOffset ||
+ pTDFX->texSize < 256*256*6 ) {
/*
* pTDFX->texSize < 0 means that the DRI is disabled. pTDFX->backOffset
* is used to calculate the maximum amount of memory available for
@@ -1970,7 +1973,6 @@ static void allocateMemory(ScrnInfoPtr p
"\tand/or back buffer. Disabling DRI. To use DRI try lower\n"
"\tresolution modes and/or a smaller virtual screen size\n");
} else {
- pTDFX->texSize = pTDFX->backOffset - pTDFX->texOffset;
xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Textures Memory %0.02f MB\n",
(float)pTDFX->texSize/1024.0/1024.0);
}