More texture format updates.  Drivers now need only plug an appropriate
format into texImage->TexFormat, the rest is handled by core Mesa.
diff --git a/src/mesa/main/mtypes.h b/src/mesa/main/mtypes.h
index 5aa3619..6ecb33d 100644
--- a/src/mesa/main/mtypes.h
+++ b/src/mesa/main/mtypes.h
@@ -1,4 +1,4 @@
-/* $Id: mtypes.h,v 1.33 2001/03/27 19:18:02 gareth Exp $ */
+/* $Id: mtypes.h,v 1.34 2001/03/28 20:40:51 gareth Exp $ */
 
 /*
  * Mesa 3-D graphics library
@@ -777,10 +777,10 @@
 
 /* Texture format record */
 struct gl_texture_format {
-   GLint IntFormat;		/* One of the MESA_FORMAT_* values */
+   GLint MesaFormat;		/* One of the MESA_FORMAT_* values */
 
-   GLenum BaseFormat;
-   GLenum BaseType;
+   GLenum IntFormat;		/* Internal format as GL enum value */
+   GLenum Type;			/* Internal type as GL enum value */
 
    GLubyte RedBits;		/* Bits per texel component */
    GLubyte GreenBits;
@@ -804,8 +804,6 @@
 				 * GL_INTENSITY, GL_RGB, GL_RGBA,
                                  * GL_COLOR_INDEX or GL_DEPTH_COMPONENT only.
 				 */
-   GLenum Type;			/* Texel type: GL_UNSIGNED_BYTE, etc. */
-   GLenum IntFormat;		/* Internal format as given by the user */
    GLuint Border;		/* 0 or 1 */
    GLuint Width;		/* = 2^WidthLog2 + 2*Border */
    GLuint Height;		/* = 2^HeightLog2 + 2*Border */
diff --git a/src/mesa/main/texformat.c b/src/mesa/main/texformat.c
index d24f683..ec8aecc 100644
--- a/src/mesa/main/texformat.c
+++ b/src/mesa/main/texformat.c
@@ -1,4 +1,4 @@
-/* $Id: texformat.c,v 1.5 2001/03/27 20:26:37 brianp Exp $ */
+/* $Id: texformat.c,v 1.6 2001/03/28 20:40:51 gareth Exp $ */
 
 /*
  * Mesa 3-D graphics library
@@ -73,9 +73,9 @@
  */
 
 const struct gl_texture_format _mesa_texformat_rgba = {
-   MESA_FORMAT_RGBA,			/* IntFormat */
-   GL_RGBA,				/* BaseFormat */
-   CHAN_TYPE,				/* BaseType */
+   MESA_FORMAT_RGBA,			/* MesaFormat */
+   GL_RGBA,				/* IntFormat */
+   CHAN_TYPE,				/* Type */
    CHAN_BITS,				/* RedBits */
    CHAN_BITS,				/* GreenBits */
    CHAN_BITS,				/* BlueBits */
@@ -91,9 +91,9 @@
 };
 
 const struct gl_texture_format _mesa_texformat_rgb = {
-   MESA_FORMAT_RGB,			/* IntFormat */
-   GL_RGB,				/* BaseFormat */
-   CHAN_TYPE,				/* BaseType */
+   MESA_FORMAT_RGB,			/* MesaFormat */
+   GL_RGB,				/* IntFormat */
+   CHAN_TYPE,				/* Type */
    CHAN_BITS,				/* RedBits */
    CHAN_BITS,				/* GreenBits */
    CHAN_BITS,				/* BlueBits */
@@ -109,9 +109,9 @@
 };
 
 const struct gl_texture_format _mesa_texformat_alpha = {
-   MESA_FORMAT_ALPHA,			/* IntFormat */
-   GL_ALPHA,				/* BaseFormat */
-   CHAN_TYPE,				/* BaseType */
+   MESA_FORMAT_ALPHA,			/* MesaFormat */
+   GL_ALPHA,				/* IntFormat */
+   CHAN_TYPE,				/* Type */
    0,					/* RedBits */
    0,					/* GreenBits */
    0,					/* BlueBits */
@@ -127,9 +127,9 @@
 };
 
 const struct gl_texture_format _mesa_texformat_luminance = {
-   MESA_FORMAT_LUMINANCE,		/* IntFormat */
-   GL_LUMINANCE,			/* BaseFormat */
-   CHAN_TYPE,				/* BaseType */
+   MESA_FORMAT_LUMINANCE,		/* MesaFormat */
+   GL_LUMINANCE,			/* IntFormat */
+   CHAN_TYPE,				/* Type */
    0,					/* RedBits */
    0,					/* GreenBits */
    0,					/* BlueBits */
@@ -145,9 +145,9 @@
 };
 
 const struct gl_texture_format _mesa_texformat_luminance_alpha = {
-   MESA_FORMAT_LUMINANCE_ALPHA,		/* IntFormat */
-   GL_LUMINANCE_ALPHA,			/* BaseFormat */
-   CHAN_TYPE,				/* BaseType */
+   MESA_FORMAT_LUMINANCE_ALPHA,		/* MesaFormat */
+   GL_LUMINANCE_ALPHA,			/* IntFormat */
+   CHAN_TYPE,				/* Type */
    0,					/* RedBits */
    0,					/* GreenBits */
    0,					/* BlueBits */
@@ -163,9 +163,9 @@
 };
 
 const struct gl_texture_format _mesa_texformat_intensity = {
-   MESA_FORMAT_INTENSITY,		/* IntFormat */
-   GL_INTENSITY,			/* BaseFormat */
-   CHAN_TYPE,				/* BaseType */
+   MESA_FORMAT_INTENSITY,		/* MesaFormat */
+   GL_INTENSITY,			/* IntFormat */
+   CHAN_TYPE,				/* Type */
    0,					/* RedBits */
    0,					/* GreenBits */
    0,					/* BlueBits */
@@ -181,9 +181,9 @@
 };
 
 const struct gl_texture_format _mesa_texformat_color_index = {
-   MESA_FORMAT_COLOR_INDEX,		/* IntFormat */
-   GL_COLOR_INDEX,			/* BaseFormat */
-   CHAN_TYPE,				/* BaseType */
+   MESA_FORMAT_COLOR_INDEX,		/* MesaFormat */
+   GL_COLOR_INDEX,			/* IntFormat */
+   CHAN_TYPE,				/* Type */
    0,					/* RedBits */
    0,					/* GreenBits */
    0,					/* BlueBits */
@@ -199,9 +199,9 @@
 };
 
 const struct gl_texture_format _mesa_texformat_depth_component = {
-   MESA_FORMAT_DEPTH_COMPONENT,		/* IntFormat */
-   GL_DEPTH_COMPONENT,			/* BaseFormat */
-   GL_FLOAT,				/* BaseType */
+   MESA_FORMAT_DEPTH_COMPONENT,		/* MesaFormat */
+   GL_DEPTH_COMPONENT,			/* IntFormat */
+   GL_FLOAT,				/* Type */
    0,					/* RedBits */
    0,					/* GreenBits */
    0,					/* BlueBits */
@@ -222,9 +222,9 @@
  */
 
 const struct gl_texture_format _mesa_texformat_rgba8888 = {
-   MESA_FORMAT_RGBA8888,		/* IntFormat */
-   GL_RGBA,				/* BaseFormat */
-   GL_UNSIGNED_BYTE,			/* BaseType */
+   MESA_FORMAT_RGBA8888,		/* MesaFormat */
+   GL_RGBA,				/* IntFormat */
+   GL_UNSIGNED_INT_8_8_8_8,		/* Type */
    8,					/* RedBits */
    8,					/* GreenBits */
    8,					/* BlueBits */
@@ -240,9 +240,9 @@
 };
 
 const struct gl_texture_format _mesa_texformat_argb8888 = {
-   MESA_FORMAT_ARGB8888,		/* IntFormat */
-   GL_RGBA,				/* BaseFormat */
-   GL_UNSIGNED_BYTE, /* FIXME: ??? */	/* BaseType */
+   MESA_FORMAT_ARGB8888,		/* MesaFormat */
+   GL_BGRA,				/* IntFormat */
+   GL_UNSIGNED_INT_8_8_8_8_REV,		/* Type */
    8,					/* RedBits */
    8,					/* GreenBits */
    8,					/* BlueBits */
@@ -258,9 +258,9 @@
 };
 
 const struct gl_texture_format _mesa_texformat_rgb888 = {
-   MESA_FORMAT_RGB888,			/* IntFormat */
-   GL_RGB,				/* BaseFormat */
-   GL_UNSIGNED_BYTE,			/* BaseType */
+   MESA_FORMAT_RGB888,			/* MesaFormat */
+   GL_BGR,				/* IntFormat */
+   GL_UNSIGNED_BYTE,			/* Type */
    8,					/* RedBits */
    8,					/* GreenBits */
    8,					/* BlueBits */
@@ -276,9 +276,9 @@
 };
 
 const struct gl_texture_format _mesa_texformat_rgb565 = {
-   MESA_FORMAT_RGB565,			/* IntFormat */
-   GL_RGB,				/* BaseFormat */
-   GL_UNSIGNED_SHORT_5_6_5,		/* BaseType */
+   MESA_FORMAT_RGB565,			/* MesaFormat */
+   GL_RGB,				/* IntFormat */
+   GL_UNSIGNED_SHORT_5_6_5,		/* Type */
    5,					/* RedBits */
    6,					/* GreenBits */
    5,					/* BlueBits */
@@ -294,9 +294,9 @@
 };
 
 const struct gl_texture_format _mesa_texformat_argb4444 = {
-   MESA_FORMAT_ARGB4444,		/* IntFormat */
-   GL_RGBA,				/* BaseFormat */
-   GL_UNSIGNED_SHORT_4_4_4_4_REV,	/* BaseType */
+   MESA_FORMAT_ARGB4444,		/* MesaFormat */
+   GL_BGRA,				/* IntFormat */
+   GL_UNSIGNED_SHORT_4_4_4_4_REV,	/* Type */
    4,					/* RedBits */
    4,					/* GreenBits */
    4,					/* BlueBits */
@@ -312,9 +312,9 @@
 };
 
 const struct gl_texture_format _mesa_texformat_argb1555 = {
-   MESA_FORMAT_ARGB1555,		/* IntFormat */
-   GL_RGBA,				/* BaseFormat */
-   GL_UNSIGNED_SHORT_1_5_5_5_REV,	/* BaseType */
+   MESA_FORMAT_ARGB1555,		/* MesaFormat */
+   GL_BGRA,				/* IntFormat */
+   GL_UNSIGNED_SHORT_1_5_5_5_REV,	/* Type */
    5,					/* RedBits */
    5,					/* GreenBits */
    5,					/* BlueBits */
@@ -330,9 +330,9 @@
 };
 
 const struct gl_texture_format _mesa_texformat_al88 = {
-   MESA_FORMAT_AL88,			/* IntFormat */
-   GL_LUMINANCE_ALPHA,			/* BaseFormat */
-   GL_UNSIGNED_BYTE,			/* BaseType */
+   MESA_FORMAT_AL88,			/* MesaFormat */
+   GL_LUMINANCE_ALPHA,			/* IntFormat */
+   GL_UNSIGNED_BYTE,			/* Type */
    0,					/* RedBits */
    0,					/* GreenBits */
    0,					/* BlueBits */
@@ -348,9 +348,9 @@
 };
 
 const struct gl_texture_format _mesa_texformat_rgb332 = {
-   MESA_FORMAT_RGB332,			/* IntFormat */
-   GL_RGB,				/* BaseFormat */
-   GL_UNSIGNED_BYTE_3_3_2,		/* BaseType */
+   MESA_FORMAT_RGB332,			/* MesaFormat */
+   GL_RGB,				/* IntFormat */
+   GL_UNSIGNED_BYTE_3_3_2,		/* Type */
    3,					/* RedBits */
    3,					/* GreenBits */
    2,					/* BlueBits */
@@ -366,9 +366,9 @@
 };
 
 const struct gl_texture_format _mesa_texformat_a8 = {
-   MESA_FORMAT_A8,			/* IntFormat */
-   GL_ALPHA,				/* BaseFormat */
-   GL_UNSIGNED_BYTE,			/* BaseType */
+   MESA_FORMAT_A8,			/* MesaFormat */
+   GL_ALPHA,				/* IntFormat */
+   GL_UNSIGNED_BYTE,			/* Type */
    0,					/* RedBits */
    0,					/* GreenBits */
    0,					/* BlueBits */
@@ -384,9 +384,9 @@
 };
 
 const struct gl_texture_format _mesa_texformat_l8 = {
-   MESA_FORMAT_L8,			/* IntFormat */
-   GL_LUMINANCE,			/* BaseFormat */
-   GL_UNSIGNED_BYTE,			/* BaseType */
+   MESA_FORMAT_L8,			/* MesaFormat */
+   GL_LUMINANCE,			/* IntFormat */
+   GL_UNSIGNED_BYTE,			/* Type */
    0,					/* RedBits */
    0,					/* GreenBits */
    0,					/* BlueBits */
@@ -402,9 +402,9 @@
 };
 
 const struct gl_texture_format _mesa_texformat_i8 = {
-   MESA_FORMAT_I8,			/* IntFormat */
-   GL_INTENSITY,			/* BaseFormat */
-   GL_UNSIGNED_BYTE,			/* BaseType */
+   MESA_FORMAT_I8,			/* MesaFormat */
+   GL_INTENSITY,			/* IntFormat */
+   GL_UNSIGNED_BYTE,			/* Type */
    0,					/* RedBits */
    0,					/* GreenBits */
    0,					/* BlueBits */
@@ -420,9 +420,9 @@
 };
 
 const struct gl_texture_format _mesa_texformat_ci8 = {
-   MESA_FORMAT_CI8,			/* IntFormat */
-   GL_COLOR_INDEX,			/* BaseFormat */
-   GL_UNSIGNED_BYTE,			/* BaseType */
+   MESA_FORMAT_CI8,			/* MesaFormat */
+   GL_COLOR_INDEX,			/* IntFormat */
+   GL_UNSIGNED_BYTE,			/* Type */
    0,					/* RedBits */
    0,					/* GreenBits */
    0,					/* BlueBits */
@@ -443,9 +443,9 @@
  */
 
 const struct gl_texture_format _mesa_null_texformat = {
-   -1,					/* IntFormat */
-   0,					/* BaseFormat */
-   0,					/* BaseType */
+   -1,					/* MesaFormat */
+   0,					/* IntFormat */
+   0,					/* Type */
    0,					/* RedBits */
    0,					/* GreenBits */
    0,					/* BlueBits */
@@ -472,8 +472,6 @@
 {
    const struct gl_texture_format *texFormat;
 
-   texImage->IntFormat = internalFormat;
-
    /* Ask the driver for the base format, if it doesn't know, it will
     * return -1;
     */
@@ -583,10 +581,5 @@
       return;
    }
 
-   /* Initialize the base format and type.
-    */
-   texImage->Format = texFormat->BaseFormat;
-   texImage->Type = texFormat->BaseType;
-
    texImage->TexFormat = texFormat;
 }
diff --git a/src/mesa/main/teximage.c b/src/mesa/main/teximage.c
index a92172a..4f9e276 100644
--- a/src/mesa/main/teximage.c
+++ b/src/mesa/main/teximage.c
@@ -1,4 +1,4 @@
-/* $Id: teximage.c,v 1.87 2001/03/26 20:02:38 brianp Exp $ */
+/* $Id: teximage.c,v 1.88 2001/03/28 20:40:51 gareth Exp $ */
 
 /*
  * Mesa 3-D graphics library
@@ -108,7 +108,7 @@
 /*
  * Compute log base 2 of n.
  * If n isn't an exact power of two return -1.
- * If n<0 return -1.
+ * If n < 0 return -1.
  */
 static int
 logbase2( int n )
@@ -116,7 +116,7 @@
    GLint i = 1;
    GLint log2 = 0;
 
-   if (n<0) {
+   if (n < 0) {
       return -1;
    }
 
@@ -143,10 +143,10 @@
 GLint
 _mesa_base_tex_format( GLcontext *ctx, GLint format )
 {
-  /*
-   * Ask the driver for the base format, if it doesn't
-   * know, it will return -1;
-   */
+   /*
+    * Ask the driver for the base format, if it doesn't
+    * know, it will return -1;
+    */
    if (ctx->Driver.BaseCompressedTexFormat) {
       GLint ifmt = (*ctx->Driver.BaseCompressedTexFormat)(ctx, format);
       if (ifmt >= 0) {
@@ -558,8 +558,6 @@
 {
    ASSERT(img);
    img->Format = 0;
-   img->Type = 0;
-   img->IntFormat = 0;
    img->Border = 0;
    img->Width = 0;
    img->Height = 0;
@@ -588,8 +586,7 @@
                      GLint border, GLenum internalFormat)
 {
    ASSERT(img);
-
-   img->IntFormat = internalFormat;
+   img->Format = _mesa_base_tex_format( ctx, internalFormat );
    img->Border = border;
    img->Width = width;
    img->Height = height;
@@ -747,18 +744,17 @@
       return GL_TRUE;
    }
 
-   if (!is_compressed_format(ctx, internalFormat)) {
-      if (!_mesa_is_legal_format_and_type( format, type )) {
-         /* Yes, generate GL_INVALID_OPERATION, not GL_INVALID_ENUM, if there
-          * is a type/format mismatch.  See 1.2 spec page 94, sec 3.6.4.
-          */
-         if (!isProxy) {
-            char message[100];
-            sprintf(message, "glTexImage%dD(format or type)", dimensions);
-            _mesa_error(ctx, GL_INVALID_OPERATION, message);
-         }
-         return GL_TRUE;
+   if (!is_compressed_format( ctx, internalFormat ) &&
+       !_mesa_is_legal_format_and_type( format, type )) {
+      /* Yes, generate GL_INVALID_OPERATION, not GL_INVALID_ENUM, if there
+       * is a type/format mismatch.  See 1.2 spec page 94, sec 3.6.4.
+       */
+      if (!isProxy) {
+	 char message[100];
+	 sprintf(message, "glTexImage%dD(format or type)", dimensions);
+	 _mesa_error(ctx, GL_INVALID_OPERATION, message);
       }
+      return GL_TRUE;
    }
 
    /* if we get here, the parameters are OK */
@@ -870,19 +866,18 @@
          _mesa_error(ctx, GL_INVALID_VALUE, "glTexSubImage3D(zoffset)");
          return GL_TRUE;
       }
-      if (zoffset + depth  > (GLint) (destTex->Depth+destTex->Border)) {
+      if (zoffset + depth  > (GLint) (destTex->Depth + destTex->Border)) {
          _mesa_error(ctx, GL_INVALID_VALUE, "glTexSubImage3D(zoffset+depth)");
          return GL_TRUE;
       }
    }
 
-   if (!is_compressed_format(ctx, destTex->IntFormat)) {
-      if (!_mesa_is_legal_format_and_type(format, type)) {
-         char message[100];
-         sprintf(message, "glTexSubImage%dD(format or type)", dimensions);
-         _mesa_error(ctx, GL_INVALID_ENUM, message);
-         return GL_TRUE;
-      }
+   if (!is_compressed_format(ctx, destTex->TexFormat->IntFormat) &&
+       !_mesa_is_legal_format_and_type(format, type)) {
+      char message[100];
+      sprintf(message, "glTexSubImage%dD(format or type)", dimensions);
+      _mesa_error(ctx, GL_INVALID_ENUM, message);
+      return GL_TRUE;
    }
 
    return GL_FALSE;
@@ -923,7 +918,7 @@
    }
 
    /* Border */
-   if (border!=0 && border!=1) {
+   if (border != 0 && border != 1) {
       char message[100];
       sprintf(message, "glCopyTexImage%dD(border)", dimensions);
       _mesa_error(ctx, GL_INVALID_VALUE, message);
@@ -960,7 +955,7 @@
    }
 
    /* Level */
-   if (level<0 || level>=ctx->Const.MaxTextureLevels) {
+   if (level < 0 || level>=ctx->Const.MaxTextureLevels) {
       char message[100];
       sprintf(message, "glCopyTexImage%dD(level=%d)", dimensions, level);
       _mesa_error(ctx, GL_INVALID_VALUE, message);
@@ -1050,7 +1045,7 @@
       _mesa_error(ctx, GL_INVALID_VALUE, message);
       return GL_TRUE;
    }
-   if (xoffset+width > (GLint) (teximage->Width+teximage->Border)) {
+   if (xoffset + width > (GLint) (teximage->Width + teximage->Border)) {
       char message[100];
       sprintf(message, "glCopyTexSubImage%dD(xoffset+width)", dimensions);
       _mesa_error(ctx, GL_INVALID_VALUE, message);
@@ -1064,7 +1059,7 @@
          return GL_TRUE;
       }
       /* NOTE: we're adding the border here, not subtracting! */
-      if (yoffset+height > (GLint) (teximage->Height+teximage->Border)) {
+      if (yoffset + height > (GLint) (teximage->Height + teximage->Border)) {
          char message[100];
          sprintf(message, "glCopyTexSubImage%dD(yoffset+height)", dimensions);
          _mesa_error(ctx, GL_INVALID_VALUE, message);
@@ -1079,7 +1074,7 @@
          _mesa_error(ctx, GL_INVALID_VALUE, message);
          return GL_TRUE;
       }
-      if (zoffset > (GLint) (teximage->Depth+teximage->Border)) {
+      if (zoffset > (GLint) (teximage->Depth + teximage->Border)) {
          char message[100];
          sprintf(message, "glCopyTexSubImage%dD(zoffset+depth)", dimensions);
          _mesa_error(ctx, GL_INVALID_VALUE, message);
@@ -1349,13 +1344,8 @@
          }
       }
 
-#if 0
-      /* one of these has to be non-zero! */
-      ASSERT(texImage->RedBits || texImage->IndexBits || texImage->AlphaBits ||
-             texImage->LuminanceBits || texImage->IntensityBits ||
-             texImage->DepthBits);
-      ASSERT(texImage->FetchTexel);
-#endif
+      ASSERT(texImage->TexFormat);
+      texImage->FetchTexel = texImage->TexFormat->FetchTexel1D;
 
       /* state update */
       texObj->Complete = GL_FALSE;
@@ -1404,7 +1394,7 @@
 
    if (is_color_format(internalFormat)) {
       _mesa_adjust_image_for_convolution(ctx, 2, &postConvWidth,
-                                         &postConvHeight);
+					 &postConvHeight);
    }
 
    if (target == GL_TEXTURE_2D ||
@@ -1463,13 +1453,8 @@
          }
       }
 
-#if 0
-      /* one of these has to be non-zero! */
-      ASSERT(texImage->RedBits || texImage->IndexBits || texImage->AlphaBits ||
-             texImage->LuminanceBits || texImage->IntensityBits ||
-             texImage->DepthBits);
-      ASSERT(texImage->FetchTexel);
-#endif
+      ASSERT(texImage->TexFormat);
+      texImage->FetchTexel = texImage->TexFormat->FetchTexel2D;
 
       /* state update */
       texObj->Complete = GL_FALSE;
@@ -1478,8 +1463,8 @@
    else if (target == GL_PROXY_TEXTURE_2D) {
       /* Proxy texture: check for errors and update proxy state */
       GLenum error = texture_error_check(ctx, target, level, internalFormat,
-                                    format, type, 2,
-                                    postConvWidth, postConvHeight, 1, border);
+				format, type, 2,
+				postConvWidth, postConvHeight, 1, border);
       if (!error) {
          struct gl_texture_unit *texUnit;
          struct gl_texture_image *texImage;
@@ -1571,13 +1556,8 @@
          }
       }
 
-#if 0
-      /* one of these has to be non-zero! */
-      ASSERT(texImage->RedBits || texImage->IndexBits || texImage->AlphaBits ||
-             texImage->LuminanceBits || texImage->IntensityBits ||
-             texImage->DepthBits);
-      ASSERT(texImage->FetchTexel);
-#endif
+      ASSERT(texImage->TexFormat);
+      texImage->FetchTexel = texImage->TexFormat->FetchTexel3D;
 
       /* state update */
       texObj->Complete = GL_FALSE;
diff --git a/src/mesa/main/texstate.c b/src/mesa/main/texstate.c
index 93d12e7..5e98965 100644
--- a/src/mesa/main/texstate.c
+++ b/src/mesa/main/texstate.c
@@ -1,4 +1,4 @@
-/* $Id: texstate.c,v 1.39 2001/03/26 19:42:40 brianp Exp $ */
+/* $Id: texstate.c,v 1.40 2001/03/28 20:40:51 gareth Exp $ */
 
 /*
  * Mesa 3-D graphics library
@@ -956,8 +956,8 @@
       case GL_TEXTURE_DEPTH:
          *params = img->Depth;
          return;
-      case GL_TEXTURE_COMPONENTS:
-         *params = img->IntFormat;
+      case GL_TEXTURE_INTERNAL_FORMAT:
+         *params = img->TexFormat->IntFormat;
          return;
       case GL_TEXTURE_BORDER:
          *params = img->Border;
diff --git a/src/mesa/main/texstore.c b/src/mesa/main/texstore.c
index c1d9dfc..0647b2c 100644
--- a/src/mesa/main/texstore.c
+++ b/src/mesa/main/texstore.c
@@ -1,4 +1,4 @@
-/* $Id: texstore.c,v 1.20 2001/03/27 20:26:10 brianp Exp $ */
+/* $Id: texstore.c,v 1.21 2001/03/28 20:40:51 gareth Exp $ */
 
 /*
  * Mesa 3-D graphics library
@@ -406,7 +406,6 @@
 
    /* setup the teximage struct's fields */
    _mesa_init_tex_format( ctx, internalFormat, texImage );
-   texImage->FetchTexel = texImage->TexFormat->FetchTexel1D;
 
    texelBytes = texImage->TexFormat->TexelBytes;
 
@@ -450,7 +449,6 @@
 
    /* setup the teximage struct's fields */
    _mesa_init_tex_format( ctx, internalFormat, texImage );
-   texImage->FetchTexel = texImage->TexFormat->FetchTexel2D;
 
    texelBytes = texImage->TexFormat->TexelBytes;
 
@@ -490,7 +488,6 @@
 
    /* setup the teximage struct's fields */
    _mesa_init_tex_format( ctx, internalFormat, texImage );
-   texImage->FetchTexel = texImage->TexFormat->FetchTexel3D;
 
    texelBytes = texImage->TexFormat->TexelBytes;
 
@@ -542,12 +539,10 @@
                           struct gl_texture_object *texObj,
                           struct gl_texture_image *texImage)
 {
-   const GLint components = components_in_intformat(texImage->IntFormat);
-   const GLint compSize = _mesa_sizeof_type(texImage->Type);
    _mesa_transfer_teximage(ctx, 2, texImage->Format, texImage->Data,
                            width, height, 1, /* src size */
                            xoffset, yoffset, 0, /* dest offsets */
-                           texImage->Width * components * compSize,
+                           texImage->Width * texImage->TexFormat->TexelBytes,
                            0, /* dstImageStride */
                            format, type, pixels, packing);
 }
@@ -565,14 +560,12 @@
                           struct gl_texture_object *texObj,
                           struct gl_texture_image *texImage)
 {
-   const GLint components = components_in_intformat(texImage->IntFormat);
-   const GLint compSize = _mesa_sizeof_type(texImage->Type);
+   const GLint texelBytes = texImage->TexFormat->TexelBytes;
    _mesa_transfer_teximage(ctx, 3, texImage->Format, texImage->Data,
                            width, height, depth, /* src size */
                            xoffset, yoffset, xoffset, /* dest offsets */
-                           texImage->Width * components * compSize,
-                           texImage->Width * texImage->Height * components
-                           * compSize,
+                           texImage->Width * texelBytes,
+                           texImage->Width * texImage->Height * texelBytes,
                            format, type, pixels, packing);
 }
 
@@ -648,7 +641,6 @@
    struct gl_texture_unit *texUnit;
    struct gl_texture_object *texObj;
    struct gl_texture_image *texImage;
-   const struct gl_texture_format *texFormat;
 
    (void) format;
    (void) type;
@@ -665,9 +657,5 @@
    /* setup the teximage struct's fields */
    _mesa_init_tex_format( ctx, internalFormat, texImage );
 
-   texFormat = texImage->TexFormat;
-   texImage->Format = texFormat->BaseFormat;
-   texImage->Type = texFormat->BaseType;
-
    return GL_TRUE;
 }
diff --git a/src/mesa/main/texutil.c b/src/mesa/main/texutil.c
index c6bf0c3..d96af2b 100644
--- a/src/mesa/main/texutil.c
+++ b/src/mesa/main/texutil.c
@@ -1,4 +1,4 @@
-/* $Id: texutil.c,v 1.20 2001/03/27 20:32:24 brianp Exp $ */
+/* $Id: texutil.c,v 1.21 2001/03/28 20:40:51 gareth Exp $ */
 
 /*
  * Mesa 3-D graphics library
@@ -75,7 +75,7 @@
 #define DST_TEXELS_PER_DWORD	1
 
 #define CONVERT_TEXEL( dst, src )					\
-		dst = PACK_COLOR_8888( src[3], src[2], src[1], src[0] )
+	dst = PACK_COLOR_8888( src[3], src[2], src[1], src[0] )
 
 #define CONVERT_DIRECT
 
@@ -87,7 +87,7 @@
 
 
 #define CONVERT_TEXEL( dst, src )					\
-		dst = PACK_COLOR_8888( src[0], src[1], src[2], src[3] )
+	dst = PACK_COLOR_8888( src[0], src[1], src[2], src[3] )
 
 #define CONVERT_TEXEL_DWORD( dst, src )		CONVERT_TEXEL( dst, src )
 
@@ -99,7 +99,7 @@
 
 
 #define CONVERT_TEXEL( dst, src )					\
-		dst = PACK_COLOR_8888( src[0], src[1], src[2], 0xff )
+	dst = PACK_COLOR_8888( src[0], src[1], src[2], 0xff )
 
 #define CONVERT_TEXEL_DWORD( dst, src )		CONVERT_TEXEL( dst, src )
 
@@ -154,7 +154,7 @@
 #define DST_TEXELS_PER_DWORD	1
 
 #define CONVERT_TEXEL( dst, src )					\
-		dst = PACK_COLOR_8888( src[3], src[2], src[1], src[0] )
+	dst = PACK_COLOR_8888( src[3], src[2], src[1], src[0] )
 
 #define CONVERT_DIRECT
 
@@ -166,7 +166,7 @@
 
 
 #define CONVERT_TEXEL( dst, src )					\
-		dst = PACK_COLOR_8888( src[3], src[0], src[1], src[2] )
+	dst = PACK_COLOR_8888( src[3], src[0], src[1], src[2] )
 
 #define CONVERT_TEXEL_DWORD( dst, src )		CONVERT_TEXEL( dst, src )
 
@@ -178,7 +178,7 @@
 
 
 #define CONVERT_TEXEL( dst, src )					\
-		dst = PACK_COLOR_8888( 0xff, src[0], src[1], src[2] )
+	dst = PACK_COLOR_8888( 0xff, src[0], src[1], src[2] )
 
 #define CONVERT_TEXEL_DWORD( dst, src )		CONVERT_TEXEL( dst, src )
 
@@ -254,7 +254,7 @@
 #define DST_TEXELS_PER_DWORD	2
 
 #define CONVERT_TEXEL( dst, src )					\
-		dst = PACK_COLOR_565( src[0], src[1], src[2] )
+	dst = PACK_COLOR_565( src[0], src[1], src[2] )
 
 #define CONVERT_DIRECT
 
@@ -266,11 +266,11 @@
 
 
 #define CONVERT_TEXEL( dst, src )					\
-		dst = PACK_COLOR_565( src[0], src[1], src[2] )
+	dst = PACK_COLOR_565( src[0], src[1], src[2] )
 
 #define CONVERT_TEXEL_DWORD( dst, src )					\
-		dst = ((PACK_COLOR_565( src[0], src[1], src[2] )) |	\
-		 (PACK_COLOR_565( src[3], src[4], src[5] ) << 16))
+	dst = ((PACK_COLOR_565( src[0], src[1], src[2] )) |		\
+	       (PACK_COLOR_565( src[3], src[4], src[5] ) << 16))
 
 #define SRC_TEXEL_BYTES		3
 
@@ -280,11 +280,11 @@
 
 
 #define CONVERT_TEXEL( dst, src )					\
-		dst = PACK_COLOR_565( src[0], src[1], src[2] )
+	dst = PACK_COLOR_565( src[0], src[1], src[2] )
 
 #define CONVERT_TEXEL_DWORD( dst, src )					\
-		dst = ((PACK_COLOR_565( src[0], src[1], src[2] )) |	\
-		       (PACK_COLOR_565( src[4], src[5], src[6] ) << 16))
+	dst = ((PACK_COLOR_565( src[0], src[1], src[2] )) |		\
+	       (PACK_COLOR_565( src[4], src[5], src[6] ) << 16))
 
 #define SRC_TEXEL_BYTES		4
 
@@ -336,7 +336,7 @@
 #define DST_TEXELS_PER_DWORD	2
 
 #define CONVERT_TEXEL( dst, src )					\
-		dst = PACK_COLOR_4444( src[3], src[0], src[1], src[2] )
+	dst = PACK_COLOR_4444( src[3], src[0], src[1], src[2] )
 
 #define CONVERT_DIRECT
 
@@ -348,15 +348,15 @@
 
 
 #define CONVERT_TEXEL( dst, src )					\
-		dst = PACK_COLOR_4444( src[3], src[0], src[1], src[2] )
+	dst = PACK_COLOR_4444( src[3], src[0], src[1], src[2] )
 
 #define CONVERT_TEXEL_DWORD( dst, src )					\
-		dst = ((PACK_COLOR_4444( src[3], src[0], src[1], src[2] )) |\
-		   (PACK_COLOR_4444( src[7], src[4], src[5], src[6] ) << 16))
+	dst = ((PACK_COLOR_4444( src[3], src[0], src[1], src[2] )) |	\
+	       (PACK_COLOR_4444( src[7], src[4], src[5], src[6] ) << 16))
 
 #define SRC_TEXEL_BYTES		4
 
-#define TAG(x) x##_rgba8888_to_argb4444
+#define TAG(x) x##_abgr8888_to_argb4444
 #include "texutil_tmp.h"
 
 
@@ -375,7 +375,7 @@
    else if ( convert->format == GL_RGBA &&				\
 	     convert->type == GL_UNSIGNED_BYTE )			\
    {									\
-      tab = name##_tab_rgba8888_to_argb4444;				\
+      tab = name##_tab_abgr8888_to_argb4444;				\
    }									\
    else									\
    {									\
@@ -399,7 +399,7 @@
 #define DST_TEXELS_PER_DWORD	2
 
 #define CONVERT_TEXEL( dst, src )					\
-		dst = PACK_COLOR_1555( src[3], src[0], src[1], src[2] )
+	dst = PACK_COLOR_1555( src[3], src[0], src[1], src[2] )
 
 #define CONVERT_DIRECT
 
@@ -411,13 +411,13 @@
 
 
 #define CONVERT_TEXEL( dst, src )					\
-		{ const GLushort s = *(GLushort *)src;			\
-		  dst = (s >> 1) | ((s & 1) << 15); }
+	{ const GLushort s = *(GLushort *)src;				\
+	  dst = (s >> 1) | ((s & 1) << 15); }
 
 #define CONVERT_TEXEL_DWORD( dst, src )					\
-		{ const GLuint s = *(GLuint *)src;			\
-		  dst = (((s & 0xfffefffe) >> 1) |			\
-			 ((s & 0x00010001) << 15)); }
+	{ const GLuint s = *(GLuint *)src;				\
+	  dst = (((s & 0xfffefffe) >> 1) |				\
+		 ((s & 0x00010001) << 15)); }
 
 #define SRC_TEXEL_BYTES		2
 
@@ -427,15 +427,15 @@
 
 
 #define CONVERT_TEXEL( dst, src )					\
-		dst = PACK_COLOR_1555( src[3], src[0], src[1], src[2] )
+	dst = PACK_COLOR_1555( src[3], src[0], src[1], src[2] )
 
 #define CONVERT_TEXEL_DWORD( dst, src )					\
-		dst = ((PACK_COLOR_1555( src[3], src[0], src[1], src[2] )) |\
-		   (PACK_COLOR_1555( src[7], src[4], src[5], src[6] ) << 16))
+	dst = ((PACK_COLOR_1555( src[3], src[0], src[1], src[2] )) |	\
+	       (PACK_COLOR_1555( src[7], src[4], src[5], src[6] ) << 16))
 
 #define SRC_TEXEL_BYTES		4
 
-#define TAG(x) x##_rgba8888_to_argb1555
+#define TAG(x) x##_abgr8888_to_argb1555
 #include "texutil_tmp.h"
 
 
@@ -459,7 +459,7 @@
    else if ( convert->format == GL_RGBA &&				\
 	     convert->type == GL_UNSIGNED_BYTE )			\
    {									\
-      tab = name##_tab_rgba8888_to_argb1555;				\
+      tab = name##_tab_abgr8888_to_argb1555;				\
    }									\
    else									\
    {									\
@@ -483,7 +483,7 @@
 #define DST_TEXELS_PER_DWORD	2
 
 #define CONVERT_TEXEL( dst, src )					\
-		dst = PACK_COLOR_88( src[0], src[1] )
+	dst = PACK_COLOR_88( src[0], src[1] )
 
 #define CONVERT_DIRECT
 
@@ -495,11 +495,11 @@
 
 
 #define CONVERT_TEXEL( dst, src )					\
-		dst = PACK_COLOR_88( src[0], 0x00 )
+	dst = PACK_COLOR_88( src[0], 0x00 )
 
 #define CONVERT_TEXEL_DWORD( dst, src )					\
-		dst = ((PACK_COLOR_88( src[0], 0x00 )) |		\
-		       (PACK_COLOR_88( src[1], 0x00 ) << 16))
+	dst = ((PACK_COLOR_88( src[0], 0x00 )) |			\
+	       (PACK_COLOR_88( src[1], 0x00 ) << 16))
 
 #define SRC_TEXEL_BYTES		1
 
@@ -509,11 +509,11 @@
 
 
 #define CONVERT_TEXEL( dst, src )					\
-		dst = PACK_COLOR_88( 0xff, src[0] )
+	dst = PACK_COLOR_88( 0xff, src[0] )
 
 #define CONVERT_TEXEL_DWORD( dst, src )					\
-		dst = ((PACK_COLOR_88( 0xff, src[0] )) |		\
-		       (PACK_COLOR_88( 0xff, src[1] ) << 16))
+	dst = ((PACK_COLOR_88( 0xff, src[0] )) |			\
+	       (PACK_COLOR_88( 0xff, src[1] ) << 16))
 
 #define SRC_TEXEL_BYTES		1
 
@@ -523,11 +523,11 @@
 
 
 #define CONVERT_TEXEL( dst, src )					\
-		dst = PACK_COLOR_88( src[3], src[0] )
+	dst = PACK_COLOR_88( src[3], src[0] )
 
 #define CONVERT_TEXEL_DWORD( dst, src )					\
-		dst = ((PACK_COLOR_88( src[3], src[0] )) |		\
-		       (PACK_COLOR_88( src[7], src[1] ) << 16))
+	dst = ((PACK_COLOR_88( src[3], src[0] )) |			\
+	       (PACK_COLOR_88( src[7], src[1] ) << 16))
 
 #define SRC_TEXEL_BYTES		4
 
@@ -743,13 +743,12 @@
 }
 
 
-/*
- * Convert a user's 2D image into a texture image.  This basically repacks
- * pixel data into the special texture formats used by core Mesa and the DRI
- * drivers.  This function can do full images or subimages.
+/* Convert a user's 2D image into a texture image.  This basically
+ * repacks pixel data into the special texture formats used by core Mesa
+ * and the DRI drivers.  This function can do full images or subimages.
  *
- * We return a boolean because this function may not accept some kinds of
- * source image formats and/or types.  For example, if the incoming
+ * We return a boolean because this function may not accept some kinds
+ * of source image formats and/or types.  For example, if the incoming
  * format/type = GL_BGR, GL_UNSIGNED_INT this function probably won't
  * be able to do the conversion.
  *