From 86f1439f82e499f1d8de965510a503404426ad9e Mon Sep 17 00:00:00 2001 From: Felix Kuehling Date: Mon, 10 Jan 2005 22:49:00 +0000 Subject: Fixes to cope with the lack of AGP textures. This is all that's needed to support PCI Savages on the Mesa side. Bumped driver date. --- src/mesa/drivers/dri/savage/savage_xmesa.c | 31 ++++++++++++++++++------------ src/mesa/drivers/dri/savage/savagedd.c | 2 +- src/mesa/drivers/dri/savage/savagetex.c | 2 +- 3 files changed, 21 insertions(+), 14 deletions(-) diff --git a/src/mesa/drivers/dri/savage/savage_xmesa.c b/src/mesa/drivers/dri/savage/savage_xmesa.c index a4000b2a75..b3cf3a9982 100644 --- a/src/mesa/drivers/dri/savage/savage_xmesa.c +++ b/src/mesa/drivers/dri/savage/savage_xmesa.c @@ -176,15 +176,17 @@ savageInitDriver(__DRIscreenPrivate *sPriv) savageScreen->agpTextures.handle = gDRIPriv->agpTextureHandle; savageScreen->agpTextures.size = gDRIPriv->agpTextureSize; - if (drmMap(sPriv->fd, - savageScreen->agpTextures.handle, - savageScreen->agpTextures.size, - (drmAddress *)&(savageScreen->agpTextures.map)) != 0) - { - Xfree(savageScreen); - sPriv->private = NULL; - return GL_FALSE; - } + if (gDRIPriv->agpTextureSize) { + if (drmMap(sPriv->fd, + savageScreen->agpTextures.handle, + savageScreen->agpTextures.size, + (drmAddress *)&(savageScreen->agpTextures.map)) != 0) { + Xfree(savageScreen); + sPriv->private = NULL; + return GL_FALSE; + } + } else + savageScreen->agpTextures.map = NULL; savageScreen->texVirtual[SAVAGE_CARD_HEAP] = (drmAddress)(((unsigned int)sPriv->pFB)+gDRIPriv->textureOffset); @@ -361,7 +363,12 @@ savageCreateContext( const __GLcontextModes *mesaVis, break; } ctx->Const.MaxTextureLevels = maxTextureLevels; - assert (ctx->Const.MaxTextureLevels > 6); /*spec requires at least 64x64*/ + if (ctx->Const.MaxTextureLevels <= 6) { /*spec requires at least 64x64*/ + __driUtilMessage("Not enough texture memory. " + "Falling back to indirect rendering."); + Xfree(imesa); + return GL_FALSE; + } #if 0 ctx->Const.MinLineWidth = 1.0; @@ -401,7 +408,7 @@ savageCreateContext( const __GLcontextModes *mesaVis, { int i; - for(i=0;ilastTexHeap;i++) { imesa->texHeap[i] = mmInit( 0, savageScreen->textureSize[i] ); make_empty_list(&imesa->TexObjList[i]); @@ -503,7 +510,7 @@ savageDestroyContext(__DRIcontextPrivate *driContextPriv) /* update for multi-tex*/ { int i; - for(i=0;ilastTexHeap;i++) foreach_s (t, next_t, &(imesa->TexObjList[i])) savageDestroyTexObj(imesa, t); } diff --git a/src/mesa/drivers/dri/savage/savagedd.c b/src/mesa/drivers/dri/savage/savagedd.c index 312f6f62f4..1878bef524 100644 --- a/src/mesa/drivers/dri/savage/savagedd.c +++ b/src/mesa/drivers/dri/savage/savagedd.c @@ -41,7 +41,7 @@ #include "utils.h" -#define DRIVER_DATE "20050101" +#define DRIVER_DATE "20050110" /*************************************** * Mesa's Driver Functions diff --git a/src/mesa/drivers/dri/savage/savagetex.c b/src/mesa/drivers/dri/savage/savagetex.c index 2650f66e46..62031f76c3 100644 --- a/src/mesa/drivers/dri/savage/savagetex.c +++ b/src/mesa/drivers/dri/savage/savagetex.c @@ -760,7 +760,7 @@ int savageUploadTexImages( savageContextPtr imesa, savageTextureObjectPtr t ) t->MemBlock = mmAllocMem( imesa->texHeap[heap], t->totalSize, 12, 0 ); if (t->MemBlock) break; - else + else if (imesa->lastTexHeap == 2) { heap = t->heap = SAVAGE_AGP_HEAP; t->MemBlock = mmAllocMem( imesa->texHeap[heap], t->totalSize, 12, 0 ); -- cgit v1.2.3