[Mesa-dev] [PATCH 1/5] mesa: consolidate internal glTexImage1/2/3D code

Brian Paul brianp at vmware.com
Wed Jun 6 00:35:31 CEST 2012


The functions for handling 1D, 2D and 3D texture images were nearly
identical.  This folds them all together.
---
 src/mesa/drivers/common/driverfuncs.c          |    4 +-
 src/mesa/drivers/dri/intel/intel_tex_image.c   |   60 ++----------------
 src/mesa/drivers/dri/nouveau/nouveau_texture.c |   43 +++-----------
 src/mesa/drivers/dri/radeon/radeon_texture.c   |   41 ++----------
 src/mesa/main/dd.h                             |   44 +++----------
 src/mesa/main/teximage.c                       |   36 ++---------
 src/mesa/main/texobj.c                         |   28 +-------
 src/mesa/main/texstore.c                       |   78 ++++--------------------
 src/mesa/main/texstore.h                       |   31 ++-------
 src/mesa/state_tracker/st_cb_texture.c         |   51 +++-------------
 10 files changed, 73 insertions(+), 343 deletions(-)

diff --git a/src/mesa/drivers/common/driverfuncs.c b/src/mesa/drivers/common/driverfuncs.c
index ca12057..54e5221 100644
--- a/src/mesa/drivers/common/driverfuncs.c
+++ b/src/mesa/drivers/common/driverfuncs.c
@@ -91,9 +91,7 @@ _mesa_init_driver_functions(struct dd_function_table *driver)
 
    /* Texture functions */
    driver->ChooseTextureFormat = _mesa_choose_tex_format;
-   driver->TexImage1D = _mesa_store_teximage1d;
-   driver->TexImage2D = _mesa_store_teximage2d;
-   driver->TexImage3D = _mesa_store_teximage3d;
+   driver->TexImage = _mesa_store_teximage;
    driver->TexSubImage1D = _mesa_store_texsubimage1d;
    driver->TexSubImage2D = _mesa_store_texsubimage2d;
    driver->TexSubImage3D = _mesa_store_texsubimage3d;
diff --git a/src/mesa/drivers/dri/intel/intel_tex_image.c b/src/mesa/drivers/dri/intel/intel_tex_image.c
index abd75c5..6e7e7018 100644
--- a/src/mesa/drivers/dri/intel/intel_tex_image.c
+++ b/src/mesa/drivers/dri/intel/intel_tex_image.c
@@ -203,13 +203,12 @@ try_pbo_upload(struct gl_context *ctx,
 
 static void
 intelTexImage(struct gl_context * ctx,
-              GLint dims,
+              GLuint dims,
               struct gl_texture_image *texImage,
               GLint internalFormat,
-              GLint width, GLint height, GLint depth,
+              GLint width, GLint height, GLint depth, GLint border,
               GLenum format, GLenum type, const void *pixels,
-              const struct gl_pixelstore_attrib *unpack,
-              GLsizei imageSize)
+              const struct gl_pixelstore_attrib *unpack)
 {
    DBG("%s target %s level %d %dx%dx%d\n", __FUNCTION__,
        _mesa_lookup_enum_by_nr(texImage->TexObject->Target),
@@ -226,52 +225,9 @@ intelTexImage(struct gl_context * ctx,
    DBG("%s: upload image %dx%dx%d pixels %p\n",
        __FUNCTION__, width, height, depth, pixels);
 
-   _mesa_store_teximage3d(ctx, texImage, internalFormat,
-			  width, height, depth, 0,
-			  format, type, pixels, unpack);
-}
-
-
-static void
-intelTexImage3D(struct gl_context * ctx,
-                struct gl_texture_image *texImage,
-                GLint internalFormat,
-                GLint width, GLint height, GLint depth,
-                GLint border,
-                GLenum format, GLenum type, const void *pixels,
-                const struct gl_pixelstore_attrib *unpack)
-{
-   intelTexImage(ctx, 3, texImage,
-                 internalFormat, width, height, depth,
-                 format, type, pixels, unpack, 0);
-}
-
-
-static void
-intelTexImage2D(struct gl_context * ctx,
-                struct gl_texture_image *texImage,
-                GLint internalFormat,
-                GLint width, GLint height, GLint border,
-                GLenum format, GLenum type, const void *pixels,
-                const struct gl_pixelstore_attrib *unpack)
-{
-   intelTexImage(ctx, 2, texImage,
-                 internalFormat, width, height, 1,
-                 format, type, pixels, unpack, 0);
-}
-
-
-static void
-intelTexImage1D(struct gl_context * ctx,
-                struct gl_texture_image *texImage,
-                GLint internalFormat,
-                GLint width, GLint border,
-                GLenum format, GLenum type, const void *pixels,
-                const struct gl_pixelstore_attrib *unpack)
-{
-   intelTexImage(ctx, 1, texImage,
-                 internalFormat, width, 1, 1,
-                 format, type, pixels, unpack, 0);
+   _mesa_store_teximage(ctx, dims, texImage, internalFormat,
+                        width, height, depth, 0,
+                        format, type, pixels, unpack);
 }
 
 
@@ -398,9 +354,7 @@ intel_image_target_texture_2d(struct gl_context *ctx, GLenum target,
 void
 intelInitTextureImageFuncs(struct dd_function_table *functions)
 {
-   functions->TexImage1D = intelTexImage1D;
-   functions->TexImage2D = intelTexImage2D;
-   functions->TexImage3D = intelTexImage3D;
+   functions->TexImage = intelTexImage;
 
 #if FEATURE_OES_EGL_image
    functions->EGLImageTargetTexture2D = intel_image_target_texture_2d;
diff --git a/src/mesa/drivers/dri/nouveau/nouveau_texture.c b/src/mesa/drivers/dri/nouveau/nouveau_texture.c
index a2e96aa..e5ef3d3 100644
--- a/src/mesa/drivers/dri/nouveau/nouveau_texture.c
+++ b/src/mesa/drivers/dri/nouveau/nouveau_texture.c
@@ -540,41 +540,16 @@ nouveau_teximage(struct gl_context *ctx, GLint dims,
 	context_dirty_i(ctx, TEX_ENV, ctx->Texture.CurrentUnit);
 }
 
-static void
-nouveau_teximage_1d(struct gl_context *ctx,
-		    struct gl_texture_image *ti,
-		    GLint internalFormat,
-		    GLint width, GLint border,
-		    GLenum format, GLenum type, const GLvoid *pixels,
-		    const struct gl_pixelstore_attrib *packing)
-{
-	nouveau_teximage(ctx, 1, ti, internalFormat,
-			 width, 1, 1, border, 0, format, type, pixels,
-			 packing, GL_FALSE);
-}
 
 static void
-nouveau_teximage_2d(struct gl_context *ctx,
-		    struct gl_texture_image *ti,
-		    GLint internalFormat,
-		    GLint width, GLint height, GLint border,
-		    GLenum format, GLenum type, const GLvoid *pixels,
-		    const struct gl_pixelstore_attrib *packing)
-{
-	nouveau_teximage(ctx, 2, ti, internalFormat,
-			 width, height, 1, border, 0, format, type, pixels,
-			 packing, GL_FALSE);
-}
-
-static void
-nouveau_teximage_3d(struct gl_context *ctx,
-		    struct gl_texture_image *ti,
-		    GLint internalFormat,
-		    GLint width, GLint height, GLint depth, GLint border,
-		    GLenum format, GLenum type, const GLvoid *pixels,
-		    const struct gl_pixelstore_attrib *packing)
+nouveau_teximage_123d(struct gl_context *ctx, GLuint dims,
+                      struct gl_texture_image *ti,
+                      GLint internalFormat,
+                      GLint width, GLint height, GLint depth, GLint border,
+                      GLenum format, GLenum type, const GLvoid *pixels,
+                      const struct gl_pixelstore_attrib *packing)
 {
-	nouveau_teximage(ctx, 3, ti, internalFormat,
+	nouveau_teximage(ctx, dims, ti, internalFormat,
 			 width, height, depth, border, 0, format, type, pixels,
 			 packing, GL_FALSE);
 }
@@ -756,9 +731,7 @@ nouveau_texture_functions_init(struct dd_function_table *functions)
 	functions->NewTextureImage = nouveau_teximage_new;
 	functions->FreeTextureImageBuffer = nouveau_teximage_free;
 	functions->ChooseTextureFormat = nouveau_choose_tex_format;
-	functions->TexImage1D = nouveau_teximage_1d;
-	functions->TexImage2D = nouveau_teximage_2d;
-	functions->TexImage3D = nouveau_teximage_3d;
+	functions->TexImage = nouveau_teximage_123d;
 	functions->TexSubImage1D = nouveau_texsubimage_1d;
 	functions->TexSubImage2D = nouveau_texsubimage_2d;
 	functions->TexSubImage3D = nouveau_texsubimage_3d;
diff --git a/src/mesa/drivers/dri/radeon/radeon_texture.c b/src/mesa/drivers/dri/radeon/radeon_texture.c
index ccb9956..8df5484 100644
--- a/src/mesa/drivers/dri/radeon/radeon_texture.c
+++ b/src/mesa/drivers/dri/radeon/radeon_texture.c
@@ -586,39 +586,14 @@ static void radeon_teximage(
 	const struct gl_pixelstore_attrib *packing,
 	int compressed)
 {
-	_mesa_store_teximage3d(ctx, texImage, internalFormat,
-			       width, height, depth, 0,
-			       format, type, pixels,
-			       packing);
+	_mesa_store_teximage(ctx, dims, texImage, internalFormat,
+			     width, height, depth, 0,
+			     format, type, pixels,
+			     packing);
 }
 
 static void
-radeonTexImage1D(struct gl_context * ctx,
-		      struct gl_texture_image *texImage,
-		      GLint internalFormat,
-		      GLint width, GLint border,
-		      GLenum format, GLenum type, const GLvoid * pixels,
-		      const struct gl_pixelstore_attrib *packing)
-{
-	radeon_teximage(ctx, 1, texImage, internalFormat, width, 1, 1,
-		0, format, type, pixels, packing, 0);
-}
-
-static void
-radeonTexImage2D(struct gl_context * ctx,
-		      struct gl_texture_image *texImage,
-		      GLint internalFormat,
-		      GLint width, GLint height, GLint border,
-		      GLenum format, GLenum type, const GLvoid * pixels,
-		      const struct gl_pixelstore_attrib *packing)
-
-{
-	radeon_teximage(ctx, 2, texImage, internalFormat, width, height, 1,
-		0, format, type, pixels, packing, 0);
-}
-
-static void
-radeonTexImage3D(struct gl_context * ctx,
+radeonTexImage(struct gl_context * ctx, GLuint dims,
 		      struct gl_texture_image *texImage,
 		      GLint internalFormat,
 		      GLint width, GLint height, GLint depth,
@@ -626,7 +601,7 @@ radeonTexImage3D(struct gl_context * ctx,
 		      GLenum format, GLenum type, const GLvoid * pixels,
 		      const struct gl_pixelstore_attrib *packing)
 {
-	radeon_teximage(ctx, 3, texImage, internalFormat, width, height, depth,
+	radeon_teximage(ctx, dims, texImage, internalFormat, width, height, depth,
 		0, format, type, pixels, packing, 0);
 }
 
@@ -750,9 +725,7 @@ radeon_init_common_texture_funcs(radeonContextPtr radeon,
 
 	functions->ChooseTextureFormat	= radeonChooseTextureFormat_mesa;
 
-	functions->TexImage1D = radeonTexImage1D;
-	functions->TexImage2D = radeonTexImage2D;
-	functions->TexImage3D = radeonTexImage3D;
+	functions->TexImage = radeonTexImage;
 
 	functions->CopyTexSubImage2D = radeonCopyTexSubImage2D;
 
diff --git a/src/mesa/main/dd.h b/src/mesa/main/dd.h
index 582eb5d..711143c 100644
--- a/src/mesa/main/dd.h
+++ b/src/mesa/main/dd.h
@@ -198,43 +198,21 @@ struct dd_function_table {
                                      GLenum srcFormat, GLenum srcType );
 
    /**
-    * Called by glTexImage1D().  Simply copy the source texture data into the
-    * destination texture memory.  The gl_texture_image fields, etc. will be
-    * fully initialized.
-    * The parameters are the same as glTexImage1D(), plus:
+    * Called by glTexImage[123]D() and glCopyTexImage[12]D()
+    * Allocate texture memory and copy the user's image to the buffer.
+    * The gl_texture_image fields, etc. will be fully initialized.
+    * The parameters are the same as glTexImage3D(), plus:
+    * \param dims  1, 2, or 3 indicating glTexImage1/2/3D()
     * \param packing describes how to unpack the source data.
     * \param texImage is the destination texture image.
     */
-   void (*TexImage1D)(struct gl_context *ctx,
-                      struct gl_texture_image *texImage,
-                      GLint internalFormat,
-                      GLint width, GLint border,
-                      GLenum format, GLenum type, const GLvoid *pixels,
-                      const struct gl_pixelstore_attrib *packing);
+   void (*TexImage)(struct gl_context *ctx, GLuint dims,
+                    struct gl_texture_image *texImage,
+                    GLint internalFormat,
+                    GLint width, GLint height, GLint depth, GLint border,
+                    GLenum format, GLenum type, const GLvoid *pixels,
+                    const struct gl_pixelstore_attrib *packing);
 
-   /**
-    * Called by glTexImage2D().
-    * 
-    * \sa dd_function_table::TexImage1D.
-    */
-   void (*TexImage2D)(struct gl_context *ctx,
-                      struct gl_texture_image *texImage,
-                      GLint internalFormat,
-                      GLint width, GLint height, GLint border,
-                      GLenum format, GLenum type, const GLvoid *pixels,
-                      const struct gl_pixelstore_attrib *packing);
-   
-   /**
-    * Called by glTexImage3D().
-    * 
-    * \sa dd_function_table::TexImage1D.
-    */
-   void (*TexImage3D)(struct gl_context *ctx,
-                      struct gl_texture_image *texImage,
-                      GLint internalFormat,
-                      GLint width, GLint height, GLint depth, GLint border,
-                      GLenum format, GLenum type, const GLvoid *pixels,
-                      const struct gl_pixelstore_attrib *packing);
 
    /**
     * Called by glTexSubImage1D().  Replace a subset of the target texture
diff --git a/src/mesa/main/teximage.c b/src/mesa/main/teximage.c
index 694f6fa..5bb21cd 100644
--- a/src/mesa/main/teximage.c
+++ b/src/mesa/main/teximage.c
@@ -2606,26 +2606,9 @@ teximage(struct gl_context *ctx, GLuint dims,
                                           border, internalFormat, texFormat);
 
                /* Give the texture to the driver.  <pixels> may be null. */
-               ASSERT(ctx->Driver.TexImage3D);
-               switch (dims) {
-               case 1:
-                  ctx->Driver.TexImage1D(ctx, texImage, internalFormat,
-                                         width, border, format,
-                                         type, pixels, unpack);
-                  break;
-               case 2:
-                  ctx->Driver.TexImage2D(ctx, texImage, internalFormat,
-                                         width, height, border, format,
-                                         type, pixels, unpack);
-                  break;
-               case 3:
-                  ctx->Driver.TexImage3D(ctx, texImage, internalFormat,
-                                         width, height, depth, border, format,
-                                         type, pixels, unpack);
-                  break;
-               default:
-                  _mesa_problem(ctx, "invalid dims=%u in teximage()", dims);
-               }
+               ctx->Driver.TexImage(ctx, dims, texImage, internalFormat,
+                                    width, height, depth, border, format,
+                                    type, pixels, unpack);
 
                check_gen_mipmap(ctx, target, texObj, level);
 
@@ -2968,16 +2951,9 @@ copyteximage(struct gl_context *ctx, GLuint dims,
                                        border, internalFormat, texFormat);
 
             /* Allocate texture memory (no pixel data yet) */
-            if (dims == 1) {
-               ctx->Driver.TexImage1D(ctx, texImage, internalFormat,
-                                      width, border, GL_NONE, GL_NONE, NULL,
-                                      &ctx->Unpack);
-            }
-            else {
-               ctx->Driver.TexImage2D(ctx, texImage, internalFormat,
-                                      width, height, border, GL_NONE, GL_NONE,
-                                      NULL, &ctx->Unpack);
-            }
+            ctx->Driver.TexImage(ctx, dims, texImage, internalFormat,
+                                 width, height, 1, border, GL_NONE, GL_NONE,
+                                 NULL, &ctx->Unpack);
 
             if (_mesa_clip_copytexsubimage(ctx, &dstX, &dstY, &srcX, &srcY,
                                            &width, &height)) {
diff --git a/src/mesa/main/texobj.c b/src/mesa/main/texobj.c
index a471bad..e0494c9 100644
--- a/src/mesa/main/texobj.c
+++ b/src/mesa/main/texobj.c
@@ -807,30 +807,10 @@ _mesa_get_fallback_texture(struct gl_context *ctx, gl_texture_index tex)
                                     0, /* border */
                                     GL_RGBA, texFormat);
 
-         switch (dims) {
-	 case 0:
-	    break;
-         case 1:
-            ctx->Driver.TexImage1D(ctx, texImage, GL_RGBA,
-                                   width, 0,
-                                   GL_RGBA, GL_UNSIGNED_BYTE, texel,
-                                   &ctx->DefaultPacking);
-            break;
-         case 2:
-            ctx->Driver.TexImage2D(ctx, texImage, GL_RGBA,
-                                   width, height, 0,
-                                   GL_RGBA, GL_UNSIGNED_BYTE, texel,
-                                   &ctx->DefaultPacking);
-            break;
-         case 3:
-            ctx->Driver.TexImage3D(ctx, texImage, GL_RGBA,
-                                   width, height, depth, 0,
-                                   GL_RGBA, GL_UNSIGNED_BYTE, texel,
-                                   &ctx->DefaultPacking);
-            break;
-         default:
-            _mesa_problem(ctx, "bad dims in _mesa_get_fallback_texture()");
-         }
+         ctx->Driver.TexImage(ctx, dims, texImage, GL_RGBA,
+                              width, height, depth, 0,
+                              GL_RGBA, GL_UNSIGNED_BYTE, texel,
+                              &ctx->DefaultPacking);
       }
 
       _mesa_test_texobj_completeness(ctx, texObj);
diff --git a/src/mesa/main/texstore.c b/src/mesa/main/texstore.c
index d368b18..1aa7962 100644
--- a/src/mesa/main/texstore.c
+++ b/src/mesa/main/texstore.c
@@ -4261,89 +4261,37 @@ store_texsubimage(struct gl_context *ctx,
 
 
 /**
- * This is the fallback for Driver.TexImage1D().
+ * Fallback code for ctx->Driver.TexImage().
+ * Basically, allocate storage for the texture image, then copy the
+ * user's image into it.
  */
 void
-_mesa_store_teximage1d(struct gl_context *ctx,
-                       struct gl_texture_image *texImage,
-                       GLint internalFormat,
-                       GLint width, GLint border,
-                       GLenum format, GLenum type, const GLvoid *pixels,
-                       const struct gl_pixelstore_attrib *packing)
+_mesa_store_teximage(struct gl_context *ctx,
+                     GLuint dims,
+                     struct gl_texture_image *texImage,
+                     GLint internalFormat,
+                     GLint width, GLint height, GLint depth, GLint border,
+                     GLenum format, GLenum type, const GLvoid *pixels,
+                     const struct gl_pixelstore_attrib *packing)
 {
-   if (width == 0)
-      return;
-
-   /* allocate storage for texture data */
-   if (!ctx->Driver.AllocTextureImageBuffer(ctx, texImage, texImage->TexFormat,
-                                            width, 1, 1)) {
-      _mesa_error(ctx, GL_OUT_OF_MEMORY, "glTexImage1D");
-      return;
-   }
-
-   store_texsubimage(ctx, texImage,
-                     0, 0, 0, width, 1, 1,
-                     format, type, pixels, packing, "glTexImage1D");
-}
+   assert(dims == 1 || dims == 2 || dims == 3);
 
-
-/**
- * This is the fallback for Driver.TexImage2D().
- */
-void
-_mesa_store_teximage2d(struct gl_context *ctx,
-                       struct gl_texture_image *texImage,
-                       GLint internalFormat,
-                       GLint width, GLint height, GLint border,
-                       GLenum format, GLenum type, const void *pixels,
-                       const struct gl_pixelstore_attrib *packing)
-{
-   if (width == 0 || height == 0)
-      return;
-
-   /* allocate storage for texture data */
-   if (!ctx->Driver.AllocTextureImageBuffer(ctx, texImage, texImage->TexFormat,
-                                            width, height, 1)) {
-      _mesa_error(ctx, GL_OUT_OF_MEMORY, "glTexImage2D");
-      return;
-   }
-
-   store_texsubimage(ctx, texImage,
-                     0, 0, 0, width, height, 1,
-                     format, type, pixels, packing, "glTexImage2D");
-}
-
-
-
-/**
- * This is the fallback for Driver.TexImage3D().
- */
-void
-_mesa_store_teximage3d(struct gl_context *ctx,
-                       struct gl_texture_image *texImage,
-                       GLint internalFormat,
-                       GLint width, GLint height, GLint depth, GLint border,
-                       GLenum format, GLenum type, const void *pixels,
-                       const struct gl_pixelstore_attrib *packing)
-{
    if (width == 0 || height == 0 || depth == 0)
       return;
 
    /* allocate storage for texture data */
    if (!ctx->Driver.AllocTextureImageBuffer(ctx, texImage, texImage->TexFormat,
                                             width, height, depth)) {
-      _mesa_error(ctx, GL_OUT_OF_MEMORY, "glTexImage3D");
+      _mesa_error(ctx, GL_OUT_OF_MEMORY, "glTexImage%uD", dims);
       return;
    }
 
    store_texsubimage(ctx, texImage,
                      0, 0, 0, width, height, depth,
-                     format, type, pixels, packing, "glTexImage3D");
+                     format, type, pixels, packing, "glTexImage");
 }
 
 
-
-
 /*
  * This is the fallback for Driver.TexSubImage1D().
  */
diff --git a/src/mesa/main/texstore.h b/src/mesa/main/texstore.h
index 85e33b0..b4995fb 100644
--- a/src/mesa/main/texstore.h
+++ b/src/mesa/main/texstore.h
@@ -90,30 +90,13 @@ _mesa_make_temp_float_image(struct gl_context *ctx, GLuint dims,
 			    GLbitfield transferOps);
 
 extern void
-_mesa_store_teximage1d(struct gl_context *ctx,
-                       struct gl_texture_image *texImage,
-                       GLint internalFormat,
-                       GLint width, GLint border,
-                       GLenum format, GLenum type, const GLvoid *pixels,
-                       const struct gl_pixelstore_attrib *packing);
-
-
-extern void
-_mesa_store_teximage2d(struct gl_context *ctx,
-                       struct gl_texture_image *texImage,
-                       GLint internalFormat,
-                       GLint width, GLint height, GLint border,
-                       GLenum format, GLenum type, const GLvoid *pixels,
-                       const struct gl_pixelstore_attrib *packing);
-
-
-extern void
-_mesa_store_teximage3d(struct gl_context *ctx,
-                       struct gl_texture_image *texImage,
-                       GLint internalFormat,
-                       GLint width, GLint height, GLint depth, GLint border,
-                       GLenum format, GLenum type, const GLvoid *pixels,
-                       const struct gl_pixelstore_attrib *packing);
+_mesa_store_teximage(struct gl_context *ctx,
+                     GLuint dims,
+                     struct gl_texture_image *texImage,
+                     GLint internalFormat,
+                     GLint width, GLint height, GLint depth, GLint border,
+                     GLenum format, GLenum type, const GLvoid *pixels,
+                     const struct gl_pixelstore_attrib *packing);
 
 
 extern void
diff --git a/src/mesa/state_tracker/st_cb_texture.c b/src/mesa/state_tracker/st_cb_texture.c
index b24f9a1..3ab14a1 100644
--- a/src/mesa/state_tracker/st_cb_texture.c
+++ b/src/mesa/state_tracker/st_cb_texture.c
@@ -530,48 +530,17 @@ prep_teximage(struct gl_context *ctx, struct gl_texture_image *texImage,
 
 
 static void
-st_TexImage3D(struct gl_context * ctx,
-              struct gl_texture_image *texImage,
-              GLint internalFormat,
-              GLint width, GLint height, GLint depth,
-              GLint border,
-              GLenum format, GLenum type, const void *pixels,
-              const struct gl_pixelstore_attrib *unpack)
+st_TexImage(struct gl_context * ctx, GLuint dims,
+            struct gl_texture_image *texImage,
+            GLint internalFormat,
+            GLint width, GLint height, GLint depth, GLint border,
+            GLenum format, GLenum type, const void *pixels,
+            const struct gl_pixelstore_attrib *unpack)
 {
    prep_teximage(ctx, texImage, internalFormat, width, height, depth, border,
                  format, type);
-   _mesa_store_teximage3d(ctx, texImage, internalFormat, width, height, depth,
-                          border, format, type, pixels, unpack);
-}
-
-
-static void
-st_TexImage2D(struct gl_context * ctx,
-              struct gl_texture_image *texImage,
-              GLint internalFormat,
-              GLint width, GLint height, GLint border,
-              GLenum format, GLenum type, const void *pixels,
-              const struct gl_pixelstore_attrib *unpack)
-{
-   prep_teximage(ctx, texImage, internalFormat, width, height, 1, border,
-                 format, type);
-   _mesa_store_teximage2d(ctx, texImage, internalFormat, width, height,
-                          border, format, type, pixels, unpack);
-}
-
-
-static void
-st_TexImage1D(struct gl_context * ctx,
-              struct gl_texture_image *texImage,
-              GLint internalFormat,
-              GLint width, GLint border,
-              GLenum format, GLenum type, const void *pixels,
-              const struct gl_pixelstore_attrib *unpack)
-{
-   prep_teximage(ctx, texImage, internalFormat, width, 1, 1, border,
-                 format, type);
-   _mesa_store_teximage1d(ctx, texImage, internalFormat, width,
-                          border, format, type, pixels, unpack);
+   _mesa_store_teximage(ctx, dims, texImage, internalFormat, width, height, depth,
+                        border, format, type, pixels, unpack);
 }
 
 
@@ -1427,9 +1396,7 @@ void
 st_init_texture_functions(struct dd_function_table *functions)
 {
    functions->ChooseTextureFormat = st_ChooseTextureFormat;
-   functions->TexImage1D = st_TexImage1D;
-   functions->TexImage2D = st_TexImage2D;
-   functions->TexImage3D = st_TexImage3D;
+   functions->TexImage = st_TexImage;
    functions->TexSubImage1D = _mesa_store_texsubimage1d;
    functions->TexSubImage2D = _mesa_store_texsubimage2d;
    functions->TexSubImage3D = _mesa_store_texsubimage3d;
-- 
1.7.3.4



More information about the mesa-dev mailing list