code cleanup heheh
authorDaniel Borca <dborca@users.sourceforge.net>
Mon, 29 Mar 2004 06:51:41 +0000 (06:51 +0000)
committerDaniel Borca <dborca@users.sourceforge.net>
Mon, 29 Mar 2004 06:51:41 +0000 (06:51 +0000)
docs/README.3DFX
src/mesa/drivers/glide/fxapi.c
src/mesa/drivers/glide/fxdd.c
src/mesa/drivers/glide/fxddtex.c
src/mesa/drivers/glide/fxdrv.h
src/mesa/drivers/glide/fxg.c
src/mesa/drivers/glide/fxg.h
src/mesa/drivers/glide/fxsetup.c
src/mesa/drivers/glide/fxvb.c

index 3169d29..e70aea7 100644 (file)
@@ -51,8 +51,29 @@ Linux:
 
 
 
-Tuning:
--------
+Compilation defines:
+--------------------
+
+FX_DEBUG
+       enable driver debug code
+FX_TRAP_GLIDE
+       enable Glide trace code
+FX_TC_NAPALM
+       map GL_COMPRESSED_RGB[A] to FXT1. This will have effect on Napalm
+       only (can coexist with FX_TC_NCC, but has higher priority)
+FX_TC_NCC
+       map GL_COMPRESSED_RGB[A] to NCC. This will have effect on any 3dfx
+       HW (can coexist with FX_TC_NAPALM, but has lesser priority)
+FX_COMPRESS_S3TC_AS_FXT1_HACK
+       map S3TC to FXT1
+FX_RESCALE_BIG_TEXURES_HACK
+       fake textures larger than HW can support
+       (see MESA_FX_MAXLOD environment variable)
+
+
+
+Environment variables:
+----------------------
 
 The following environment variables affect MesaFX. Those that affect Glide
 only, are beyond the scope of this file. Entries that don't have a "Value"
index 0474de9..5d7bcdb 100644 (file)
@@ -386,14 +386,7 @@ fxMesaCreateContext(GLuint win,
                       Glide->txMipQuantize &&
                       Glide->txPalToNcc && !getenv("MESA_FX_IGNORE_TEXUS2");
 
- /*
-  * Pixel tables are used during pixel read-back
-  * Either initialize them for RGB or BGR order;
-  * However, 32bit capable cards have the right order.
-  * As a consequence, 32bit read-back is not swizzled!
-  * Also determine if we need vertex snapping.
-  */
- /* number of SLI units and AA Samples per chip */
+ /* Determine if we need vertex swapping, RGB order and SLI/AA */
  sliaa = 0;
  switch (fxMesa->type) {
         case GR_SSTTYPE_VOODOO:
@@ -408,6 +401,7 @@ fxMesaCreateContext(GLuint win,
              break;
         case GR_SSTTYPE_Voodoo4:
         case GR_SSTTYPE_Voodoo5:
+             /* number of SLI units and AA Samples per chip */
              if ((str = Glide->grGetRegistryOrEnvironmentStringExt("SSTH3_SLI_AA_CONFIGURATION")) != NULL) {
                 sliaa = atoi(str);
              }
index 245654c..510b9ce 100644 (file)
@@ -1362,7 +1362,7 @@ fxDDInitFxMesaContext(fxMesaContext fxMesa)
         textureLevels++;
     } while ((textureSize >>= 0x1) & 0x7ff);
     ctx->Const.MaxTextureLevels = textureLevels;
-#if 1||FX_RESCALE_BIG_TEXURES
+#if FX_RESCALE_BIG_TEXURES_HACK
     fxMesa->textureMaxLod = textureLevels - 1;
     if ((env = getenv("MESA_FX_MAXLOD")) != NULL) {
        int maxLevels = atoi(env) + 1;
index bbf7dfa..b8e5d81 100644 (file)
@@ -1233,7 +1233,7 @@ fxDDTexImage2D(GLcontext * ctx, GLenum target, GLint level,
    mml->width = width * mml->wScale;
    mml->height = height * mml->hScale;
 
-#if 0 && FX_COMPRESS_S3TC_AS_FXT1_HACK
+#if FX_COMPRESS_S3TC_AS_FXT1_HACK
    /* [koolsmoky] substitute FXT1 for DXTn and Legacy S3TC */
    /* [dBorca] we should update texture's attribute, then,
     * because if the application asks us to decompress, we
@@ -1257,16 +1257,6 @@ fxDDTexImage2D(GLcontext * ctx, GLenum target, GLint level,
      }
    }
 #endif
-#if 0 && FX_COMPRESS_DXT5_AS_DXT3_HACK
-   /* [dBorca] either VSA is stupid at DXT5, 
-    * or our compression tool is broken. See
-    * above for caveats.
-    */
-   if ((texImage->IsCompressed) &&
-       (internalFormat == GL_COMPRESSED_RGBA_S3TC_DXT5_EXT)) {
-       internalFormat = GL_COMPRESSED_RGBA_S3TC_DXT3_EXT;
-   }
-#endif
 
    /* choose the texture format */
    assert(ctx->Driver.ChooseTextureFormat);
index a619cf1..ff5601f 100644 (file)
@@ -730,4 +730,8 @@ extern int TDFX_DEBUG;
 #define TDFX_DEBUG             0
 #endif
 
+/* dirty hacks */
+#define FX_RESCALE_BIG_TEXURES_HACK   1
+#define FX_COMPRESS_S3TC_AS_FXT1_HACK 0
+
 #endif
index d49878a..b7408a7 100644 (file)
@@ -38,7 +38,7 @@
 #include <stdarg.h>
 #include <assert.h>
 
-#define DEBUG_TRAP_internal
+#define FX_TRAP_GLIDE_internal
 #include "fxg.h"
 
 
@@ -46,7 +46,7 @@
 /****************************************************************************\
 * logging                                                                    *
 \****************************************************************************/
-#if DEBUG_TRAP
+#if FX_TRAP_GLIDE
 #define TRAP_LOG trp_printf
 #ifdef __GNUC__
 __attribute__ ((format(printf, 1, 2)))
@@ -66,17 +66,17 @@ int trp_printf (const char *format, ...)
  va_end(arg);
  return n;
 }
-#else  /* DEBUG_TRAP */
+#else  /* FX_TRAP_GLIDE */
 #ifdef __GNUC__
 #define TRAP_LOG(format, ...) do {} while (0)
 #else  /* __GNUC__ */
 #define TRAP_LOG              0 && (unsigned long)
 #endif /* __GNUC__ */
-#endif /* DEBUG_TRAP */
+#endif /* FX_TRAP_GLIDE */
 
 
 
-#if DEBUG_TRAP
+#if FX_TRAP_GLIDE
 /****************************************************************************\
 * helpers                                                                    *
 \****************************************************************************/
@@ -2242,15 +2242,15 @@ void FX_CALL fake_grTexNCCTableExt (GrChipID_t   tmu,
 \****************************************************************************/
 void tdfx_hook_glide (struct tdfx_glide *Glide)
 {
-#if DEBUG_TRAP
+#if FX_TRAP_GLIDE
 #define GET_EXT_ADDR(name) *(GrProc *)&real_##name = grGetProcAddress(#name), Glide->name = trap_##name
 #define GET_EXT_FAKE(name) GET_EXT_ADDR(name); if (real_##name == NULL) real_##name = fake_##name
 #define GET_EXT_NULL(name) GET_EXT_ADDR(name); if (real_##name == NULL) Glide->name = NULL
-#else  /* DEBUG_TRAP */
+#else  /* FX_TRAP_GLIDE */
 #define GET_EXT_ADDR(name) *(GrProc *)&Glide->name = grGetProcAddress(#name)
 #define GET_EXT_FAKE(name) GET_EXT_ADDR(name); if (Glide->name == NULL) Glide->name = fake_##name
 #define GET_EXT_NULL(name) GET_EXT_ADDR(name)
-#endif /* DEBUG_TRAP */
+#endif /* FX_TRAP_GLIDE */
 
  /*
  ** glide extensions
index 57a891b..f282296 100644 (file)
 #include <glide.h>
 #include <g3ext.h>
 
-#define DEBUG_TRAP 0
+#ifndef FX_TRAP_GLIDE
+#define FX_TRAP_GLIDE 0
+#endif
 
-#if DEBUG_TRAP
+#if FX_TRAP_GLIDE
 /*
 ** rendering functions
 */
@@ -171,7 +173,7 @@ void FX_CALL trap_guFogGenerateExp (GrFog_t *fogtable, float density);
 void FX_CALL trap_guFogGenerateExp2 (GrFog_t *fogtable, float density);
 void FX_CALL trap_guFogGenerateLinear (GrFog_t *fogtable, float nearZ, float farZ);
 
-#ifndef DEBUG_TRAP_internal
+#ifndef FX_TRAP_GLIDE_internal
 /*
 ** rendering functions
 */
@@ -302,8 +304,8 @@ void FX_CALL trap_guFogGenerateLinear (GrFog_t *fogtable, float nearZ, float far
 #define guFogGenerateExp                trap_guFogGenerateExp
 #define guFogGenerateExp2               trap_guFogGenerateExp2
 #define guFogGenerateLinear             trap_guFogGenerateLinear
-#endif /* DEBUG_TRAP_internal */
-#endif /* DEBUG_TRAP */
+#endif /* FX_TRAP_GLIDE_internal */
+#endif /* FX_TRAP_GLIDE */
 
 
 
index 7714e3c..12a525a 100644 (file)
@@ -65,85 +65,79 @@ fxTexValidate(GLcontext * ctx, struct gl_texture_object *tObj)
    minl = ti->minLevel = tObj->BaseLevel;
    maxl = ti->maxLevel = MIN2(tObj->MaxLevel, tObj->Image[0][0]->MaxLog2);
 
-#if 1||FX_RESCALE_BIG_TEXURES
+#if FX_RESCALE_BIG_TEXURES_HACK
 {
-   extern void _mesa_rescale_teximage2d( GLuint bytesPerPixel,
-                                         GLuint dstRowStride,
-                                         GLint srcWidth, GLint srcHeight,
-                                         GLint dstWidth, GLint dstHeight,
-                                         const GLvoid *srcImage, GLvoid *dstImage );
-   fxMesaContext fxMesa = FX_CONTEXT(ctx);
-   if (maxl - minl > fxMesa->textureMaxLod) {
-      /* [dBorca]
-       * Ooooooook! Here's a(nother) long story.
-       * We get here because we need to handle a texture larger
-       * than hardware can support. Two cases:
-       * 1) we have mipmaps. Then we just push up to the first supported
-       *    LOD. A possible drawback is that Mesa will ignore the skipped
-       *    LODs on further texture handling.
-       *    Will this interfere with GL_TEXTURE_[MIN|BASE]_LEVEL? How?
-       * 2) we don't have mipmaps. We need to rescale texture; two ways:
-       *    a) create a new LOD and push up ti->minLevel and tObj->BaseLevel
-       *       but this means we need to rescale on both axes, which
-       *       yield unnecessary ugly texture. Also, same issues as 1)
-       *    b) rescale the biggest LOD in place and go two ways:
-       *       - update texImage->Width and texImage->Height, then
-       *         decrease maxLevel, so we won't rescale again on the
-       *         next validation. Changing texImage-> parameters is
-       *         not quite legal here (see convolution), but...
-       *       - leaving texImage-> parameters alone, while rescaling
-       *         texture and decreasing maxLevel makes Mesa puke. Also
-       *         this approach requires that mml->[wh]Scale go below 1,
-       *         otherwise bad ju-ju will be in our future (see fetch_texel)
-       *       Will this interfere with GL_TEXTURE_MAX_LEVEL? How?
-       *       The above approach is somehow dumb! we might have rescaled
-       *       once in TexImage2D to accomodate aspect ratio, and now we
-       *       are rescaling again. The thing is, in TexImage2D we don't
-       *       know whether we'll hit 1) or 2) by the time of validation.
-       * NB: we could handle mml->[wh]Scale nicely, using (biased) shifts.
-       *
-       * Which brings me to another issue. How can we handle NPOT textures?
-       * - rescaling NPOT to the next bigger POT (mml->[wh]Scale can't shift)
-       * - upping the max LOD to the next power-of-two, in fxTexGetInfo; then
-       *   choosing non-power-of-two values for ti->[st]Scale... Anyhow, we
-       *   still need to align mipmaps correctly in texture memory!
-       */
-      if ((tObj->MinFilter == GL_NEAREST) || (tObj->MinFilter == GL_LINEAR)) {
-         /* no mipmaps! need to rescale */
-         struct gl_texture_image *texImage = tObj->Image[0][minl];
-         tfxMipMapLevel *mml = FX_MIPMAP_DATA(texImage);
-         GLint texelBytes = texImage->TexFormat->TexelBytes;
-         GLvoid *texImage_Data = texImage->Data;
-         GLint _w = MIN2(mml->width, 1 << fxMesa->textureMaxLod);
-         GLint _h = MIN2(mml->height, 1 << fxMesa->textureMaxLod);
-         if (TDFX_DEBUG & VERBOSE_TEXTURE) {
-            fprintf(stderr, "fxTexValidate: rescaling %d x %d -> %d x %d\n",
-                            mml->width, mml->height,
-                            _w, _h);
-         }
-         fxTexGetInfo(_w, _h, NULL, NULL, NULL, NULL,
-                      &(mml->wScale), &(mml->hScale));
-         texImage->Width = _w / mml->wScale;
-         texImage->Height = _h / mml->hScale;
-         texImage->Data = MESA_PBUFFER_ALLOC(_w * _h * texelBytes);
-         _mesa_rescale_teximage2d(texelBytes,
-                                  _w * texelBytes, /* dst stride */
-                                  mml->width, mml->height, /* src */
-                                  _w, _h, /* dst */
-                                  texImage_Data /*src*/, texImage->Data /*dst*/ );
-         MESA_PBUFFER_FREE(texImage_Data);
-         mml->width = _w;
-         mml->height = _h;
-         maxl = ti->maxLevel = tObj->Image[0][0]->MaxLog2 = minl + fxMesa->textureMaxLod;
-      } else {
-         /* skip a certain number of LODs */
-         minl += maxl - fxMesa->textureMaxLod;
-         if (TDFX_DEBUG & VERBOSE_TEXTURE) {
-            fprintf(stderr, "fxTexValidate: skipping %d LODs\n", minl - ti->minLevel);
-         }
-         ti->minLevel = tObj->BaseLevel = minl;
-      }
-   }
+   extern void _mesa_rescale_teximage2d( GLuint bytesPerPixel,\r
+                                         GLuint dstRowStride,\r
+                                         GLint srcWidth, GLint srcHeight,\r
+                                         GLint dstWidth, GLint dstHeight,\r
+                                         const GLvoid *srcImage, GLvoid *dstImage );\r
+   fxMesaContext fxMesa = FX_CONTEXT(ctx);\r
+   /* [dBorca]\r
+    * Ooooooook! Here's a(nother) long story.\r
+    * We get here because we need to handle a texture larger\r
+    * than hardware can support. Two cases:\r
+    * 1) we have mipmaps. Then we just push up to the first supported\r
+    *    LOD. A possible drawback is that Mesa will ignore the skipped\r
+    *    LODs on further texture handling.\r
+    *    Will this interfere with GL_TEXTURE_[MIN|BASE]_LEVEL? How?\r
+    * 2) we don't have mipmaps. We need to rescale the big LOD in place.\r
+    *    The above approach is somehow dumb! we might have rescaled\r
+    *    once in TexImage2D to accomodate aspect ratio, and now we\r
+    *    are rescaling again. The thing is, in TexImage2D we don't\r
+    *    know whether we'll hit 1) or 2) by the time of validation.\r
+    * NB: we could handle mml->[wh]Scale nicely, using (biased) shifts.\r
+    *\r
+    * Which brings me to another issue. How can we handle NPOT textures?\r
+    * - rescaling NPOT to the next bigger POT (mml->[wh]Scale can't shift)\r
+    * - upping the max LOD to the next power-of-two, in fxTexGetInfo; then\r
+    *   choosing non-power-of-two values for ti->[st]Scale... Anyhow, we\r
+    *   still need to align mipmaps correctly in texture memory!\r
+    */\r
+   if ((tObj->MinFilter == GL_NEAREST) || (tObj->MinFilter == GL_LINEAR)) {\r
+      /* no mipmaps! */\r
+      struct gl_texture_image *texImage = tObj->Image[0][minl];\r
+      tfxMipMapLevel *mml = FX_MIPMAP_DATA(texImage);\r
+      GLint _w, _h, maxSize = 1 << fxMesa->textureMaxLod;\r
+      if ((mml->width > maxSize) || (mml->height > maxSize)) {\r
+         /* need to rescale */\r
+         GLint texelBytes = texImage->TexFormat->TexelBytes;\r
+         GLvoid *texImage_Data = texImage->Data;\r
+         _w = MIN2(texImage->Width, maxSize);\r
+         _h = MIN2(texImage->Height, maxSize);\r
+         if (TDFX_DEBUG & VERBOSE_TEXTURE) {\r
+            fprintf(stderr, "fxTexValidate: rescaling %d x %d -> %d x %d\n",\r
+                            texImage->Width, texImage->Height, _w, _h);\r
+         }\r
+         /* we should leave these as is and... (!) */\r
+         texImage->Width = _w;\r
+         texImage->Height = _h;\r
+         fxTexGetInfo(_w, _h, NULL, NULL, NULL, NULL,\r
+                      &(mml->wScale), &(mml->hScale));\r
+         _w *= mml->wScale;\r
+         _h *= mml->hScale;\r
+         texImage->Data = MESA_PBUFFER_ALLOC(_w * _h * texelBytes);\r
+         _mesa_rescale_teximage2d(texelBytes,\r
+                                  _w * texelBytes, /* dst stride */\r
+                                  mml->width, mml->height, /* src */\r
+                                  _w, _h, /* dst */\r
+                                  texImage_Data /*src*/, texImage->Data /*dst*/ );\r
+         MESA_PBUFFER_FREE(texImage_Data);\r
+         mml->width = _w;\r
+         mml->height = _h;\r
+         /* (!) ... and set mml->wScale = _w / texImage->Width */\r
+      }\r
+   } else {\r
+      /* mipmapping */\r
+      if (maxl - minl > fxMesa->textureMaxLod) {\r
+         /* skip a certain number of LODs */\r
+         minl += maxl - fxMesa->textureMaxLod;\r
+         if (TDFX_DEBUG & VERBOSE_TEXTURE) {\r
+            fprintf(stderr, "fxTexValidate: skipping %d LODs\n", minl - ti->minLevel);\r
+         }\r
+         ti->minLevel = tObj->BaseLevel = minl;\r
+      }\r
+   }\r
 }
 #endif
 
index 7a275ad..ac2574a 100644 (file)
@@ -481,9 +481,8 @@ void fxBuildVertices( GLcontext *ctx, GLuint start, GLuint count,
       if (newinputs & VERT_BIT_COLOR0)
         ind |= SETUP_RGBA;
       
-      if (newinputs & VERT_BIT_COLOR1) {
+      if (newinputs & VERT_BIT_COLOR1)
         ind |= SETUP_SPEC;
-      }
 
       if (newinputs & VERT_BIT_TEX0) 
         ind |= SETUP_TMU0;