accomodate FetchTexel and fix some memory leak bugs
authorDaniel Borca <dborca@users.sourceforge.net>
Mon, 26 Jan 2004 10:38:46 +0000 (10:38 +0000)
committerDaniel Borca <dborca@users.sourceforge.net>
Mon, 26 Jan 2004 10:38:46 +0000 (10:38 +0000)
src/mesa/drivers/glide/fxapi.c
src/mesa/drivers/glide/fxdd.c
src/mesa/drivers/glide/fxddtex.c
src/mesa/drivers/glide/fxsetup.c
src/mesa/drivers/glide/fxtexman.c

index 50f783f3b252e7f3cbb6703225a19a3bb166d546..61c69853e6a90d0df27237ab32287dbcca78f1a7 100644 (file)
@@ -784,13 +784,21 @@ fxMesaDestroyContext(fxMesaContext fxMesa)
 
    glbTotNumCtx--;
 
+   /* [dBorca]
+    * close the hardware first, so we can debug
+    * atexit problems (memory leaks, etc).
+    * NB: fxDDDestroyFxMesaContext must be called
+    * before _mesa_destroy_context; which must be
+    * called before fxTMClose!
+    */
+   grSstWinClose(fxMesa->glideContext);
+   fxCloseHardware();
+
    fxDDDestroyFxMesaContext(fxMesa);
    _mesa_destroy_visual(fxMesa->glVis);
    _mesa_destroy_context(fxMesa->glCtx);
    _mesa_destroy_framebuffer(fxMesa->glBuffer);
-
-   grSstWinClose(fxMesa->glideContext);
-   fxCloseHardware();
+   fxTMClose(fxMesa);
 
    FREE(fxMesa);
 
index a07a27bad4972d2dc20d365bf9d556442de974ab..447fbfa8819b818e225d40ff5dfde95d71c82601 100644 (file)
@@ -1422,7 +1422,6 @@ fxDDDestroyFxMesaContext(fxMesaContext fxMesa)
       FREE(fxMesa->state);
    if (fxMesa->fogTable)
       FREE(fxMesa->fogTable);
-   fxTMClose(fxMesa);
    fxFreeVB(fxMesa->glCtx);
 }
 
index a6a5dc5aa79cebe885314f2864d9e77f02cf87ae..f1dd2dd38744d45e98636fe700c7ebde76b61679 100644 (file)
@@ -285,7 +285,7 @@ fxDDTexParam(GLcontext * ctx, GLenum target, struct gl_texture_object *tObj,
       default:
         break;
       }
-      fxTexInvalidate(ctx, tObj);
+      fxMesa->new_state |= FX_NEW_TEXTURING;
       break;
 
    case GL_TEXTURE_WRAP_S:
@@ -666,9 +666,8 @@ fxIsTexSupported(GLenum target, GLint internalFormat,
 
 static void
 fetch_intensity8(const struct gl_texture_image *texImage,
-                GLint i, GLint j, GLint k, GLvoid * texelOut)
+                GLint i, GLint j, GLint k, GLchan *rgba)
 {
-   GLchan *rgba = (GLchan *) texelOut;
    const tfxMipMapLevel *mml = FX_MIPMAP_DATA(texImage);
    const GLubyte *texel;
 
@@ -685,9 +684,8 @@ fetch_intensity8(const struct gl_texture_image *texImage,
 
 static void
 fetch_luminance8(const struct gl_texture_image *texImage,
-                GLint i, GLint j, GLint k, GLvoid * texelOut)
+                GLint i, GLint j, GLint k, GLchan *rgba)
 {
-   GLchan *rgba = (GLchan *) texelOut;
    const tfxMipMapLevel *mml = FX_MIPMAP_DATA(texImage);
    const GLubyte *texel;
 
@@ -704,9 +702,8 @@ fetch_luminance8(const struct gl_texture_image *texImage,
 
 static void
 fetch_alpha8(const struct gl_texture_image *texImage,
-            GLint i, GLint j, GLint k, GLvoid * texelOut)
+            GLint i, GLint j, GLint k, GLchan *rgba)
 {
-   GLchan *rgba = (GLchan *) texelOut;
    const tfxMipMapLevel *mml = FX_MIPMAP_DATA(texImage);
    const GLubyte *texel;
 
@@ -723,9 +720,8 @@ fetch_alpha8(const struct gl_texture_image *texImage,
 
 static void
 fetch_index8(const struct gl_texture_image *texImage,
-            GLint i, GLint j, GLint k, GLvoid * texelOut)
+            GLint i, GLint j, GLint k, GLchan *indexOut)
 {
-   GLchan *indexOut = (GLchan *) texelOut;
    const tfxMipMapLevel *mml = FX_MIPMAP_DATA(texImage);
    const GLubyte *texel;
 
@@ -739,9 +735,8 @@ fetch_index8(const struct gl_texture_image *texImage,
 
 static void
 fetch_luminance8_alpha8(const struct gl_texture_image *texImage,
-                       GLint i, GLint j, GLint k, GLvoid * texelOut)
+                       GLint i, GLint j, GLint k, GLchan *rgba)
 {
-   GLchan *rgba = (GLchan *) texelOut;
    const tfxMipMapLevel *mml = FX_MIPMAP_DATA(texImage);
    const GLubyte *texel;
 
@@ -758,9 +753,8 @@ fetch_luminance8_alpha8(const struct gl_texture_image *texImage,
 
 static void
 fetch_r5g6b5(const struct gl_texture_image *texImage,
-            GLint i, GLint j, GLint k, GLvoid * texelOut)
+            GLint i, GLint j, GLint k, GLchan *rgba)
 {
-   GLchan *rgba = (GLchan *) texelOut;
    const tfxMipMapLevel *mml = FX_MIPMAP_DATA(texImage);
    const GLushort *texel;
 
@@ -777,9 +771,8 @@ fetch_r5g6b5(const struct gl_texture_image *texImage,
 
 static void
 fetch_r4g4b4a4(const struct gl_texture_image *texImage,
-              GLint i, GLint j, GLint k, GLvoid * texelOut)
+              GLint i, GLint j, GLint k, GLchan *rgba)
 {
-   GLchan *rgba = (GLchan *) texelOut;
    const tfxMipMapLevel *mml = FX_MIPMAP_DATA(texImage);
    const GLushort *texel;
 
@@ -796,9 +789,8 @@ fetch_r4g4b4a4(const struct gl_texture_image *texImage,
 
 static void
 fetch_r5g5b5a1(const struct gl_texture_image *texImage,
-              GLint i, GLint j, GLint k, GLvoid * texelOut)
+              GLint i, GLint j, GLint k, GLchan *rgba)
 {
-   GLchan *rgba = (GLchan *) texelOut;
    const tfxMipMapLevel *mml = FX_MIPMAP_DATA(texImage);
    const GLushort *texel;
 
@@ -815,9 +807,8 @@ fetch_r5g5b5a1(const struct gl_texture_image *texImage,
 
 static void
 fetch_a8r8g8b8(const struct gl_texture_image *texImage,
-              GLint i, GLint j, GLint k, GLvoid * texelOut)
+              GLint i, GLint j, GLint k, GLchan *rgba)
 {
-    GLchan *rgba = (GLchan *) texelOut;
     const tfxMipMapLevel *mml = FX_MIPMAP_DATA(texImage);
     const GLuint *texel;
 
@@ -1167,7 +1158,7 @@ fxGlideFormat(GLint mesaFormat)
 }
 
 
-static FetchTexelFunc
+static FetchTexelFuncC
 fxFetchFunction(GLint mesaFormat)
 {
    switch (mesaFormat) {
@@ -1397,7 +1388,7 @@ fxDDTexImage2D(GLcontext * ctx, GLenum target, GLint level,
    }
 
    ti->info.format = mml->glideFormat;
-   texImage->FetchTexel = fxFetchFunction(texImage->TexFormat->MesaFormat);
+   texImage->FetchTexelc = fxFetchFunction(texImage->TexFormat->MesaFormat);
 
    /* [dBorca]
     * Hack alert: unsure...
@@ -1608,7 +1599,7 @@ fxDDCompressedTexImage2D (GLcontext *ctx, GLenum target,
 #endif
 
    ti->info.format = mml->glideFormat;
-   texImage->FetchTexel = fxFetchFunction(texImage->TexFormat->MesaFormat);
+   texImage->FetchTexelc = fxFetchFunction(texImage->TexFormat->MesaFormat);
 
    /* [dBorca] Hack alert:
     * what about different size/texel? other anomalies? SW rescaling?
index 45883f465ba3003db8250bd17c76284b76ddfc6d..cdfef4755646a2910a12b1c7e7744f9e57e53970 100644 (file)
@@ -161,35 +161,6 @@ fxTexValidate(GLcontext * ctx, struct gl_texture_object *tObj)
 
    ti->baseLevelInternalFormat = tObj->Image[minl]->Format;
 
-   switch (tObj->WrapS) {
-   case GL_MIRRORED_REPEAT:
-      ti->sClamp = GR_TEXTURECLAMP_MIRROR_EXT;
-      break;
-   case GL_CLAMP_TO_EDGE: /* CLAMP discarding border */
-   case GL_CLAMP:
-      ti->sClamp = GR_TEXTURECLAMP_CLAMP;
-      break;
-   case GL_REPEAT:
-      ti->sClamp = GR_TEXTURECLAMP_WRAP;
-      break;
-   default:
-      ;                                /* silence compiler warning */
-   }
-   switch (tObj->WrapT) {
-   case GL_MIRRORED_REPEAT:
-      ti->tClamp = GR_TEXTURECLAMP_MIRROR_EXT;
-      break;
-   case GL_CLAMP_TO_EDGE: /* CLAMP discarding border */
-   case GL_CLAMP:
-      ti->tClamp = GR_TEXTURECLAMP_CLAMP;
-      break;
-   case GL_REPEAT:
-      ti->tClamp = GR_TEXTURECLAMP_WRAP;
-      break;
-   default:
-      ;                                /* silence compiler warning */
-   }
-
    ti->validated = GL_TRUE;
 
    ti->info.data = NULL;
index 560a0f4d1be12614f031018c45ee5f86fc5f651f..66f6f443e14e8982976efab4c968f0957949c2b1 100644 (file)
@@ -773,10 +773,6 @@ fxTMFreeTexture(fxMesaContext fxMesa, struct gl_texture_object *tObj)
    for (i = 0; i < MAX_TEXTURE_LEVELS; i++) {
       struct gl_texture_image *texImage = tObj->Image[i];
       if (texImage) {
-         if (texImage->Data) {
-            MESA_PBUFFER_FREE(texImage->Data);
-            texImage->Data = NULL;
-         }
          if (texImage->DriverData) {
             FREE(texImage->DriverData);
             texImage->DriverData = NULL;