On 11/25/2013 05:47 PM, Courtney Goeltzenleuchter wrote:
Refactor to make next_mipmap_level_size defined in mipmap.c a
_mesa_ helper function that can then be used by texture_view

Signed-off-by: Courtney Goeltzenleuchter <court...@lunarg.com>
---
  src/mesa/main/mipmap.c     |  8 ++++----
  src/mesa/main/mipmap.h     |  4 ++++
  src/mesa/main/texstorage.c | 25 +++----------------------
  3 files changed, 11 insertions(+), 26 deletions(-)

diff --git a/src/mesa/main/mipmap.c b/src/mesa/main/mipmap.c
index 180f891..0330157 100644
--- a/src/mesa/main/mipmap.c
+++ b/src/mesa/main/mipmap.c
@@ -1767,8 +1767,8 @@ _mesa_generate_mipmap_level(GLenum target,
   * compute next (level+1) image size
   * \return GL_FALSE if no smaller size can be generated (eg. src is 1x1x1 
size)
   */
-static GLboolean
-next_mipmap_level_size(GLenum target, GLint border,
+GLboolean
+_mesa_next_mipmap_level_size(GLenum target, GLint border,
                         GLint srcWidth, GLint srcHeight, GLint srcDepth,
                         GLint *dstWidth, GLint *dstHeight, GLint *dstDepth)
  {
@@ -1911,7 +1911,7 @@ generate_mipmap_uncompressed(struct gl_context *ctx, 
GLenum target,
        srcDepth = srcImage->Depth;
        border = srcImage->Border;

-      nextLevel = next_mipmap_level_size(target, border,
+      nextLevel = _mesa_next_mipmap_level_size(target, border,
                                           srcWidth, srcHeight, srcDepth,
                                           &dstWidth, &dstHeight, &dstDepth);
        if (!nextLevel)
@@ -2102,7 +2102,7 @@ generate_mipmap_compressed(struct gl_context *ctx, GLenum 
target,
        srcDepth = srcImage->Depth;
        border = srcImage->Border;

-      nextLevel = next_mipmap_level_size(target, border,
+      nextLevel = _mesa_next_mipmap_level_size(target, border,
                                           srcWidth, srcHeight, srcDepth,
                                           &dstWidth, &dstHeight, &dstDepth);
        if (!nextLevel)
diff --git a/src/mesa/main/mipmap.h b/src/mesa/main/mipmap.h
index d5bd1d8..ee91df0 100644
--- a/src/mesa/main/mipmap.h
+++ b/src/mesa/main/mipmap.h
@@ -51,5 +51,9 @@ extern void
  _mesa_generate_mipmap(struct gl_context *ctx, GLenum target,
                        struct gl_texture_object *texObj);

+extern GLboolean
+_mesa_next_mipmap_level_size(GLenum target, GLint border,
+                       GLint srcWidth, GLint srcHeight, GLint srcDepth,
+                       GLint *dstWidth, GLint *dstHeight, GLint *dstDepth);

  #endif /* MIPMAP_H */
diff --git a/src/mesa/main/texstorage.c b/src/mesa/main/texstorage.c
index 84b8f82..8d472a2 100644
--- a/src/mesa/main/texstorage.c
+++ b/src/mesa/main/texstorage.c
@@ -37,6 +37,7 @@
  #include "macros.h"
  #include "teximage.h"
  #include "texobj.h"
+#include "mipmap.h"
  #include "texstorage.h"
  #include "mtypes.h"

@@ -100,27 +101,6 @@ legal_texobj_target(struct gl_context *ctx, GLuint dims, 
GLenum target)
  }


-/**
- * Compute the size of the next mipmap level.
- */
-static void
-next_mipmap_level_size(GLenum target,
-                       GLint *width, GLint *height, GLint *depth)
-{
-   if (*width > 1) {
-      *width /= 2;
-   }
-
-   if ((*height > 1) && (target != GL_TEXTURE_1D_ARRAY)) {
-      *height /= 2;
-   }
-
-   if ((*depth > 1) && (target != GL_TEXTURE_2D_ARRAY)) {
-      *depth /= 2;
-   }
-}
-
-
  /** Helper to get a particular texture image in a texture object */
  static struct gl_texture_image *
  get_tex_image(struct gl_context *ctx,
@@ -164,7 +144,8 @@ initialize_texture_fields(struct gl_context *ctx,
                                      0, internalFormat, texFormat);
        }

-      next_mipmap_level_size(target, &levelWidth, &levelHeight, &levelDepth);
+      _mesa_next_mipmap_level_size(target, 0, levelWidth, levelHeight, 
levelDepth,
+                                   &levelWidth, &levelHeight, &levelDepth);
     }
     return GL_TRUE;
  }


Reviewed-by: Brian Paul <bri...@vmware.com>

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to