mesa: lift _mesa_set_fetch_functions() calls out of drivers
authorBrian Paul <brianp@vmware.com>
Mon, 5 Oct 2009 23:12:36 +0000 (17:12 -0600)
committerBrian Paul <brianp@vmware.com>
Mon, 5 Oct 2009 23:12:40 +0000 (17:12 -0600)
Call it from in the main Mesa glTexImage functions.

src/mesa/drivers/dri/intel/intel_tex_image.c
src/mesa/drivers/dri/radeon/radeon_texture.c
src/mesa/drivers/dri/unichrome/via_tex.c
src/mesa/main/texfetch.c
src/mesa/main/teximage.c
src/mesa/main/texstore.c

index dd436becab28976d4a919e5f5ec196a4ab8531c6..f32ff0dd05bac1fb79320abf8b3fd35dad71511d 100644 (file)
@@ -7,7 +7,6 @@
 #include "main/convolve.h"
 #include "main/context.h"
 #include "main/texcompress.h"
-#include "main/texfetch.h"
 #include "main/texformat.h"
 #include "main/texstore.h"
 #include "main/texgetimage.h"
@@ -336,8 +335,6 @@ intelTexImage(GLcontext * ctx,
    texImage->TexFormat = intelChooseTextureFormat(ctx, internalFormat,
                                                   format, type);
 
-   _mesa_set_fetch_functions(texImage, dims);
-
    if (_mesa_is_format_compressed(texImage->TexFormat)) {
       texelBytes = 0;
    }
@@ -794,7 +791,6 @@ intelSetTexBuffer2(__DRIcontext *pDRICtx, GLint target,
    intelImage->level = level;
    texImage->TexFormat = intelChooseTextureFormat(&intel->ctx, internalFormat,
                                                   type, format);
-   _mesa_set_fetch_functions(texImage, 2);
    texImage->RowStride = rb->region->pitch;
    intel_miptree_reference(&intelImage->mt, intelObj->mt);
 
index 2c28011057d360d4a723da85ac5be5571881dbc0..17e42e72eefdbcbd3feaacf9aa5400e72a0f1910 100644 (file)
@@ -34,7 +34,6 @@
 #include "main/convolve.h"
 #include "main/mipmap.h"
 #include "main/texcompress.h"
-#include "main/texfetch.h"
 #include "main/texformat.h"
 #include "main/texstore.h"
 #include "main/teximage.h"
@@ -140,7 +139,6 @@ static void map_override(GLcontext *ctx, radeonTexObj *t)
        radeon_bo_map(t->bo, GL_FALSE);
 
        img->base.Data = t->bo->ptr;
-       _mesa_set_fetch_functions(&img->base, 2);
 }
 
 static void unmap_override(GLcontext *ctx, radeonTexObj *t)
@@ -543,7 +541,6 @@ static void radeon_teximage(
 
        /* Choose and fill in the texture format for this image */
        texImage->TexFormat = radeonChooseTextureFormat(ctx, internalFormat, format, type, 0);
-       _mesa_set_fetch_functions(texImage, dims);
 
        if (_mesa_is_format_compressed(texImage->TexFormat)) {
                texelBytes = 0;
index a99aa9debc95669d26c0d216c6064afe1c0d1c0b..fa7542c5cbf8f2e5cb8a020427074a3e151896d5 100644 (file)
@@ -37,7 +37,6 @@
 #include "main/mipmap.h"
 #include "main/simple_list.h"
 #include "main/texcompress.h"
-#include "main/texfetch.h"
 #include "main/texformat.h"
 #include "main/texobj.h"
 #include "main/texstore.h"
@@ -692,8 +691,6 @@ static void viaTexImage(GLcontext *ctx,
 
    assert(texImage->TexFormat);
 
-   _mesa_set_fetch_functions(texImage, dims);
-
    texelBytes = _mesa_get_format_bytes(texImage->TexFormat);
 
    if (texelBytes == 0) {
index 6b7db584f81bb7732f6b6b626aa65bd76667f49c..851659e9c53dac88eca0ac717c680c93ea145495 100644 (file)
@@ -595,6 +595,7 @@ fetch_texel_float_to_chan(const struct gl_texture_image *texImage,
 }
 
 
+#if 0
 /**
  * Adaptor for fetching a float texel from a GLchan-valued texture.
  */
@@ -620,6 +621,7 @@ fetch_texel_chan_to_float(const struct gl_texture_image *texImage,
       texelOut[3] = CHAN_TO_FLOAT(temp[3]);
    }
 }
+#endif
 
 
 /**
@@ -631,17 +633,15 @@ _mesa_set_fetch_functions(struct gl_texture_image *texImage, GLuint dims)
    ASSERT(dims == 1 || dims == 2 || dims == 3);
    ASSERT(texImage->TexFormat);
 
-   texImage->FetchTexelf =
-      _mesa_get_texel_fetch_func(texImage->TexFormat, dims);
+   if (!texImage->FetchTexelf) {
+      texImage->FetchTexelf =
+         _mesa_get_texel_fetch_func(texImage->TexFormat, dims);
+   }
 
    /* now check if we need to use a float/chan adaptor */
    if (!texImage->FetchTexelc) {
       texImage->FetchTexelc = fetch_texel_float_to_chan;
    }
-   else if (!texImage->FetchTexelf) {
-      texImage->FetchTexelf = fetch_texel_chan_to_float;
-   }
-
 
    ASSERT(texImage->FetchTexelc);
    ASSERT(texImage->FetchTexelf);
index 438a316b9c19f8eb06aa48fd0c5cbdaba17eb2cf..457380b8fab659f5ec867ff6991f556e5d973a33 100644 (file)
@@ -43,6 +43,7 @@
 #include "macros.h"
 #include "state.h"
 #include "texcompress.h"
+#include "texfetch.h"
 #include "texformat.h"
 #include "teximage.h"
 #include "texstate.h"
@@ -997,6 +998,9 @@ _mesa_init_teximage_fields(GLcontext *ctx, GLenum target,
       img->HeightScale = (GLfloat) img->Height;
       img->DepthScale = (GLfloat) img->Depth;
    }
+
+   img->FetchTexelc = NULL;
+   img->FetchTexelf = NULL;
 }
 
 
@@ -2200,6 +2204,8 @@ _mesa_TexImage1D( GLenum target, GLint level, GLint internalFormat,
 
             ASSERT(texImage->TexFormat);
 
+            _mesa_set_fetch_functions(texImage, 1);
+
             check_gen_mipmap(ctx, target, texObj, level);
 
             update_fbo_texture(ctx, texObj, face, level);
@@ -2314,6 +2320,8 @@ _mesa_TexImage2D( GLenum target, GLint level, GLint internalFormat,
 
             ASSERT(texImage->TexFormat);
 
+            _mesa_set_fetch_functions(texImage, 2);
+
             check_gen_mipmap(ctx, target, texObj, level);
 
             update_fbo_texture(ctx, texObj, face, level);
@@ -2424,6 +2432,8 @@ _mesa_TexImage3D( GLenum target, GLint level, GLint internalFormat,
 
             ASSERT(texImage->TexFormat);
 
+            _mesa_set_fetch_functions(texImage, 3);
+
             check_gen_mipmap(ctx, target, texObj, level);
 
             update_fbo_texture(ctx, texObj, face, level);
@@ -2732,6 +2742,8 @@ _mesa_CopyTexImage1D( GLenum target, GLint level,
 
          ASSERT(texImage->TexFormat);
 
+         _mesa_set_fetch_functions(texImage, 1);
+
          check_gen_mipmap(ctx, target, texObj, level);
 
          update_fbo_texture(ctx, texObj, face, level);
@@ -2807,6 +2819,8 @@ _mesa_CopyTexImage2D( GLenum target, GLint level, GLenum internalFormat,
 
          ASSERT(texImage->TexFormat);
 
+         _mesa_set_fetch_functions(texImage, 2);
+
          check_gen_mipmap(ctx, target, texObj, level);
 
          update_fbo_texture(ctx, texObj, face, level);
@@ -3259,6 +3273,8 @@ _mesa_CompressedTexImage1DARB(GLenum target, GLint level,
                                              imageSize, data,
                                              texObj, texImage);
 
+            _mesa_set_fetch_functions(texImage, 1);
+
             check_gen_mipmap(ctx, target, texObj, level);
 
             /* state update */
@@ -3363,6 +3379,8 @@ _mesa_CompressedTexImage2DARB(GLenum target, GLint level,
                                              border, imageSize, data,
                                              texObj, texImage);
 
+            _mesa_set_fetch_functions(texImage, 2);
+
             check_gen_mipmap(ctx, target, texObj, level);
 
             /* state update */
@@ -3467,6 +3485,8 @@ _mesa_CompressedTexImage3DARB(GLenum target, GLint level,
                                              border, imageSize, data,
                                              texObj, texImage);
 
+            _mesa_set_fetch_functions(texImage, 3);
+
             check_gen_mipmap(ctx, target, texObj, level);
 
             /* state update */
index 133b0370c8f639d2c89f8def9bf0828bdc98bf59..52502b70331983bc2b9ce9695d5e21af5f4aba6a 100644 (file)
@@ -64,7 +64,6 @@
 #include "texcompress.h"
 #include "texcompress_fxt1.h"
 #include "texcompress_s3tc.h"
-#include "texfetch.h"
 #include "texformat.h"
 #include "teximage.h"
 #include "texstore.h"
@@ -3213,8 +3212,6 @@ _mesa_store_teximage1d(GLcontext *ctx, GLenum target, GLint level,
       = ctx->Driver.ChooseTextureFormat(ctx, internalFormat, format, type);
    ASSERT(texImage->TexFormat);
 
-   _mesa_set_fetch_functions(texImage, 1);
-
    /* allocate memory */
    sizeInBytes = texture_size(texImage);
    texImage->Data = _mesa_alloc_texmemory(sizeInBytes);
@@ -3276,8 +3273,6 @@ _mesa_store_teximage2d(GLcontext *ctx, GLenum target, GLint level,
       = ctx->Driver.ChooseTextureFormat(ctx, internalFormat, format, type);
    ASSERT(texImage->TexFormat);
 
-   _mesa_set_fetch_functions(texImage, 2);
-
    /* allocate memory */
    sizeInBytes = texture_size(texImage);
    texImage->Data = _mesa_alloc_texmemory(sizeInBytes);
@@ -3335,8 +3330,6 @@ _mesa_store_teximage3d(GLcontext *ctx, GLenum target, GLint level,
       = ctx->Driver.ChooseTextureFormat(ctx, internalFormat, format, type);
    ASSERT(texImage->TexFormat);
 
-   _mesa_set_fetch_functions(texImage, 3);
-
    /* allocate memory */
    sizeInBytes = texture_size(texImage);
    texImage->Data = _mesa_alloc_texmemory(sizeInBytes);
@@ -3539,8 +3532,6 @@ _mesa_store_compressed_teximage2d(GLcontext *ctx, GLenum target, GLint level,
       = ctx->Driver.ChooseTextureFormat(ctx, internalFormat, 0, 0);
    ASSERT(texImage->TexFormat);
 
-   _mesa_set_fetch_functions(texImage, 2);
-
    /* allocate storage */
    texImage->Data = _mesa_alloc_texmemory(imageSize);
    if (!texImage->Data) {