mesa: use _mesa_get_texstore_func()
authorBrian Paul <brianp@vmware.com>
Mon, 28 Sep 2009 00:38:50 +0000 (18:38 -0600)
committerBrian Paul <brianp@vmware.com>
Mon, 28 Sep 2009 00:38:50 +0000 (18:38 -0600)
src/mesa/drivers/dri/intel/intel_tex_image.c
src/mesa/drivers/dri/intel/intel_tex_subimage.c
src/mesa/drivers/dri/radeon/radeon_texture.c
src/mesa/drivers/dri/tdfx/tdfx_tex.c
src/mesa/drivers/dri/unichrome/via_tex.c

index 66201b1f465f82bf7d284b1c24fb6d8d3e056ec3..aa36390689255d735b30554f79ef7cb997e8b123 100644 (file)
@@ -8,6 +8,7 @@
 #include "main/context.h"
 #include "main/texcompress.h"
 #include "main/texformat.h"
+#include "main/texstore.h"
 #include "main/texgetimage.h"
 #include "main/texobj.h"
 #include "main/texstore.h"
@@ -513,6 +514,9 @@ intelTexImage(GLcontext * ctx,
     * conversion and copy:
     */
    if (pixels) {
+      StoreTexImageFunc storeImage =
+         _mesa_get_texstore_func(texImage->TexFormat->MesaFormat);
+
        if (compressed) {
           if (intelImage->mt) {
               struct intel_region *dst = intelImage->mt->region;
@@ -525,14 +529,14 @@ intelTexImage(GLcontext * ctx,
                               0, 0);
           } else
               memcpy(texImage->Data, pixels, imageSize);
-       } else if (!texImage->TexFormat->StoreImage(ctx, dims, 
-                                                  texImage->_BaseFormat, 
-                                                  texImage->TexFormat, 
-                                                  texImage->Data, 0, 0, 0, /* dstX/Y/Zoffset */
-                                                  dstRowStride,
-                                                  texImage->ImageOffsets,
-                                                  width, height, depth,
-                                                  format, type, pixels, unpack)) {
+       } else if (!storeImage(ctx, dims, 
+                              texImage->_BaseFormat, 
+                              texImage->TexFormat, 
+                              texImage->Data, 0, 0, 0, /* dstX/Y/Zoffset */
+                              dstRowStride,
+                              texImage->ImageOffsets,
+                              width, height, depth,
+                              format, type, pixels, unpack)) {
           _mesa_error(ctx, GL_OUT_OF_MEMORY, "glTexImage");
        }
    }
index 751ec2c98c278c50a2a21e98f15a09ed23d66742..f75d2ae004b6d474df5dc4a6feb00bc587ca948b 100644 (file)
@@ -109,14 +109,17 @@ intelTexSubimage(GLcontext * ctx,
         memcpy(texImage->Data, pixels, imageSize);
    }
    else {
-      if (!texImage->TexFormat->StoreImage(ctx, dims, texImage->_BaseFormat,
-                                           texImage->TexFormat,
-                                           texImage->Data,
-                                           xoffset, yoffset, zoffset,
-                                           dstRowStride,
-                                           texImage->ImageOffsets,
-                                           width, height, depth,
-                                           format, type, pixels, packing)) {
+      StoreTexImageFunc storeImage =
+         _mesa_get_texstore_func(texImage->TexFormat->MesaFormat);
+
+      if (!storeImage(ctx, dims, texImage->_BaseFormat,
+                      texImage->TexFormat,
+                      texImage->Data,
+                      xoffset, yoffset, zoffset,
+                      dstRowStride,
+                      texImage->ImageOffsets,
+                      width, height, depth,
+                      format, type, pixels, packing)) {
          _mesa_error(ctx, GL_OUT_OF_MEMORY, "intelTexSubImage");
       }
    }
index 049284ef8c588062d261ddabed6a2e5c826c3351..4a22131486147825a2543ec8dadc1c8523c0a4fc 100644 (file)
@@ -624,6 +624,8 @@ static void radeon_teximage(
                } else {
                        GLuint dstRowStride;
                        GLuint *dstImageOffsets;
+                       StoreTexImageFunc storeImage =
+                               _mesa_get_texstore_func(texImage->TexFormat->MesaFormat);
 
                        if (image->mt) {
                                radeon_mipmap_level *lvl = &image->mt->levels[image->mtlevel];
@@ -646,7 +648,7 @@ static void radeon_teximage(
                                dstImageOffsets = texImage->ImageOffsets;
                        }
 
-                       if (!texImage->TexFormat->StoreImage(ctx, dims,
+                       if (!storeImage(ctx, dims,
                                                texImage->_BaseFormat,
                                                texImage->TexFormat,
                                                texImage->Data, 0, 0, 0, /* dstX/Y/Zoffset */
@@ -778,7 +780,10 @@ static void radeon_texsubimage(GLcontext* ctx, int dims, GLenum target, int leve
                        copy_rows(img_start, dstRowStride,  pixels, srcRowStride, rows,  bytesPerRow);
                        
                } else {
-                       if (!texImage->TexFormat->StoreImage(ctx, dims, texImage->_BaseFormat,
+                       StoreTexImageFunc storeImage =
+                               _mesa_get_texstore_func(texImage->TexFormat->MesaFormat);
+
+                       if (!storeImage(ctx, dims, texImage->_BaseFormat,
                                                             texImage->TexFormat, texImage->Data,
                                                             xoffset, yoffset, zoffset,
                                                             dstRowStride,
index f6a48b3ae12a7f2fdb448ed4041eb61d9446b182..91650088b9842e38c04cced6d8a66af2a9ab88c5 100644 (file)
@@ -138,9 +138,12 @@ _mesa_halve2x2_teximage2d ( GLcontext *ctx,
    }
 
    if (bpt) {
+      StoreTexImageFunc storeImage =
+         _mesa_get_texstore_func(texImage->TexFormat->MesaFormat);
+
       src = _s;
       dst = _d;
-      texImage->TexFormat->StoreImage(ctx, 2, texImage->_BaseFormat,
+      storeImage(ctx, 2, texImage->_BaseFormat,
                                       texImage->TexFormat, dstImage,
                                       0, 0, 0, /* dstX/Y/Zoffset */
                                       dstWidth * bpt,
@@ -1228,18 +1231,21 @@ adjust2DRatio (GLcontext *ctx,
 
    if (!texImage->IsCompressed) {
       GLubyte *destAddr;
+      StoreTexImageFunc storeImage =
+         _mesa_get_texstore_func(texImage->TexFormat->MesaFormat);
+
       tempImage = MALLOC(width * height * texelBytes);
       if (!tempImage) {
          return GL_FALSE;
       }
 
-      texImage->TexFormat->StoreImage(ctx, 2, texImage->_BaseFormat,
-                                      texImage->TexFormat, tempImage,
-                                      0, 0, 0, /* dstX/Y/Zoffset */
-                                      width * texelBytes, /* dstRowStride */
-                                      &dstImageOffsets,
-                                      width, height, 1,
-                                      format, type, pixels, packing);
+      storeImage(ctx, 2, texImage->_BaseFormat,
+                 texImage->TexFormat, tempImage,
+                 0, 0, 0, /* dstX/Y/Zoffset */
+                 width * texelBytes, /* dstRowStride */
+                 &dstImageOffsets,
+                 width, height, 1,
+                 format, type, pixels, packing);
 
       /* now rescale */
       /* compute address of dest subimage within the overal tex image */
@@ -1256,6 +1262,9 @@ adjust2DRatio (GLcontext *ctx,
    } else {
       const GLint rawBytes = 4;
       GLvoid *rawImage = MALLOC(width * height * rawBytes);
+      StoreTexImageFunc storeImage =
+         _mesa_get_texstore_func(texImage->TexFormat->MesaFormat);
+
       if (!rawImage) {
          return GL_FALSE;
       }
@@ -1278,13 +1287,13 @@ adjust2DRatio (GLcontext *ctx,
                                width, height, /* src */
                                newWidth, newHeight, /* dst */
                                rawImage /*src*/, tempImage /*dst*/ );
-      texImage->TexFormat->StoreImage(ctx, 2, texImage->_BaseFormat,
-                                      texImage->TexFormat, texImage->Data,
-                                      xoffset * mml->wScale, yoffset * mml->hScale, 0, /* dstX/Y/Zoffset */
-                                      dstRowStride,
-                                      &dstImageOffsets,
-                                      newWidth, newHeight, 1,
-                                      GL_RGBA, CHAN_TYPE, tempImage, &ctx->DefaultPacking);
+      storeImage(ctx, 2, texImage->_BaseFormat,
+                 texImage->TexFormat, texImage->Data,
+                 xoffset * mml->wScale, yoffset * mml->hScale, 0, /* dstX/Y/Zoffset */
+                 dstRowStride,
+                 &dstImageOffsets,
+                 newWidth, newHeight, 1,
+                 GL_RGBA, CHAN_TYPE, tempImage, &ctx->DefaultPacking);
       FREE(rawImage);
    }
 
@@ -1437,13 +1446,16 @@ tdfxTexImage2D(GLcontext *ctx, GLenum target, GLint level,
        else {
           /* no rescaling needed */
           /* unpack image, apply transfer ops and store in texImage->Data */
-          texImage->TexFormat->StoreImage(ctx, 2, texImage->_BaseFormat,
-                                          texImage->TexFormat, texImage->Data,
-                                          0, 0, 0, /* dstX/Y/Zoffset */
-                                          dstRowStride,
-                                          texImage->ImageOffsets,
-                                          width, height, 1,
-                                          format, type, pixels, packing);
+          StoreTexImageFunc storeImage =
+             _mesa_get_texstore_func(texImage->TexFormat->MesaFormat);
+
+          storeImage(ctx, 2, texImage->_BaseFormat,
+                     texImage->TexFormat, texImage->Data,
+                     0, 0, 0, /* dstX/Y/Zoffset */
+                     dstRowStride,
+                     texImage->ImageOffsets,
+                     width, height, 1,
+                     format, type, pixels, packing);
        }
     }
 
@@ -1507,13 +1519,16 @@ tdfxTexSubImage2D(GLcontext *ctx, GLenum target, GLint level,
     }
     else {
         /* no rescaling needed */
-        texImage->TexFormat->StoreImage(ctx, 2, texImage->_BaseFormat,
-                                        texImage->TexFormat, texImage->Data,
-                                        xoffset, yoffset, 0,
-                                        dstRowStride,
-                                        texImage->ImageOffsets,
-                                        width, height, 1,
-                                        format, type, pixels, packing);
+       StoreTexImageFunc storeImage =
+          _mesa_get_texstore_func(texImage->TexFormat->MesaFormat);
+
+        storeImage(ctx, 2, texImage->_BaseFormat,
+                   texImage->TexFormat, texImage->Data,
+                   xoffset, yoffset, 0,
+                   dstRowStride,
+                   texImage->ImageOffsets,
+                   width, height, 1,
+                   format, type, pixels, packing);
     }
 
     ti->reloadImages = GL_TRUE; /* signal the image needs to be reloaded */
index 54073e76918d0b97899ee70d40775fa99a79c8aa..388fd9392cfa4fc6821ccf466daea42fe2d10fb8 100644 (file)
@@ -797,22 +797,25 @@ static void viaTexImage(GLcontext *ctx,
    else {
       GLint dstRowStride;
       GLboolean success;
+      StoreTexImageFunc storeImage =
+         _mesa_get_texstore_func(texImage->TexFormat->MesaFormat);
+
       if (texImage->IsCompressed) {
          dstRowStride = _mesa_compressed_row_stride(texImage->TexFormat->MesaFormat, width);
       }
       else {
          dstRowStride = postConvWidth * texImage->TexFormat->TexelBytes;
       }
-      ASSERT(texImage->TexFormat->StoreImage);
-      success = texImage->TexFormat->StoreImage(ctx, dims,
-                                                texImage->_BaseFormat,
-                                                texImage->TexFormat,
-                                                texImage->Data,
-                                                0, 0, 0,  /* dstX/Y/Zoffset */
-                                                dstRowStride,
-                                                texImage->ImageOffsets,
-                                                width, height, 1,
-                                                format, type, pixels, packing);
+      ASSERT(storeImage);
+      success = storeImage(ctx, dims,
+                           texImage->_BaseFormat,
+                           texImage->TexFormat,
+                           texImage->Data,
+                           0, 0, 0,  /* dstX/Y/Zoffset */
+                           dstRowStride,
+                           texImage->ImageOffsets,
+                           width, height, 1,
+                           format, type, pixels, packing);
       if (!success) {
          _mesa_error(ctx, GL_OUT_OF_MEMORY, "glTexImage");
       }