[Mesa-dev] [PATCH 2/2] mesa: Introduce a globally-available minify() macro.

Eric Anholt eric at anholt.net
Fri Apr 19 11:29:37 PDT 2013


This matches u_minify()'s behavior, for consistency.
---
 src/mesa/drivers/dri/i915/i915_tex_layout.c    |   18 +++++++++---------
 src/mesa/drivers/dri/i965/brw_tex_layout.c     |    8 ++++----
 src/mesa/drivers/dri/intel/intel_tex_layout.c  |   12 ++++++------
 src/mesa/drivers/dri/intel/intel_tex_layout.h  |    6 ------
 src/mesa/drivers/dri/nouveau/nouveau_texture.c |    4 ++--
 src/mesa/main/macros.h                         |    6 ++++++
 6 files changed, 27 insertions(+), 27 deletions(-)

diff --git a/src/mesa/drivers/dri/i915/i915_tex_layout.c b/src/mesa/drivers/dri/i915/i915_tex_layout.c
index 90911a6..8be601b 100644
--- a/src/mesa/drivers/dri/i915/i915_tex_layout.c
+++ b/src/mesa/drivers/dri/i915/i915_tex_layout.c
@@ -172,9 +172,9 @@ i915_miptree_layout_3d(struct intel_mipmap_tree * mt)
 
       stack_height += MAX2(2, height);
 
-      width = minify(width);
-      height = minify(height);
-      depth = minify(depth);
+      width = minify(width, 1);
+      height = minify(height, 1);
+      depth = minify(depth, 1);
    }
 
    /* Fixup depth image_offsets: */
@@ -186,7 +186,7 @@ i915_miptree_layout_3d(struct intel_mipmap_tree * mt)
 					0, i * stack_height);
       }
 
-      depth = minify(depth);
+      depth = minify(depth, 1);
    }
 
    /* Multiply slice size by texture depth for total size.  It's
@@ -219,8 +219,8 @@ i915_miptree_layout_2d(struct intel_mipmap_tree * mt)
 
       mt->total_height += img_height;
 
-      width = minify(width);
-      height = minify(height);
+      width = minify(width, 1);
+      height = minify(height, 1);
    }
 }
 
@@ -447,9 +447,9 @@ i945_miptree_layout_3d(struct intel_mipmap_tree * mt)
 	 pack_y_pitch >>= 1;
       }
 
-      width = minify(width);
-      height = minify(height);
-      depth = minify(depth);
+      width = minify(width, 1);
+      height = minify(height, 1);
+      depth = minify(depth, 1);
    }
 }
 
diff --git a/src/mesa/drivers/dri/i965/brw_tex_layout.c b/src/mesa/drivers/dri/i965/brw_tex_layout.c
index d28e5af..f0736fa 100644
--- a/src/mesa/drivers/dri/i965/brw_tex_layout.c
+++ b/src/mesa/drivers/dri/i965/brw_tex_layout.c
@@ -48,7 +48,7 @@ brw_miptree_layout_texture_array(struct intel_context *intel,
    int h0, h1, q;
 
    h0 = ALIGN(mt->physical_height0, mt->align_h);
-   h1 = ALIGN(minify(mt->physical_height0), mt->align_h);
+   h1 = ALIGN(minify(mt->physical_height0, 1), mt->align_h);
    if (mt->array_spacing_lod0)
       qpitch = h0;
    else
@@ -131,10 +131,10 @@ brw_miptree_layout(struct intel_context *intel, struct intel_mipmap_tree *mt)
 
 
 	 mt->total_height += y;
-	 width  = minify(width);
-	 height = minify(height);
+	 width  = minify(width, 1);
+	 height = minify(height, 1);
 	 if (mt->target == GL_TEXTURE_3D)
-	    depth = minify(depth);
+	    depth = minify(depth, 1);
 
 	 if (mt->compressed) {
 	    pack_y_pitch = (height + 3) / 4;
diff --git a/src/mesa/drivers/dri/intel/intel_tex_layout.c b/src/mesa/drivers/dri/intel/intel_tex_layout.c
index 59d4bc3..fbb6520 100644
--- a/src/mesa/drivers/dri/intel/intel_tex_layout.c
+++ b/src/mesa/drivers/dri/intel/intel_tex_layout.c
@@ -170,11 +170,11 @@ void i945_miptree_layout_2d(struct intel_mipmap_tree *mt)
        GLuint mip1_width;
 
        if (mt->compressed) {
-           mip1_width = ALIGN(minify(mt->physical_width0), mt->align_w)
-               + ALIGN(minify(minify(mt->physical_width0)), mt->align_w);
+          mip1_width = ALIGN(minify(mt->physical_width0, 1), mt->align_w) +
+             ALIGN(minify(mt->physical_width0, 2), mt->align_w);
        } else {
-           mip1_width = ALIGN(minify(mt->physical_width0), mt->align_w)
-               + minify(minify(mt->physical_width0));
+          mip1_width = ALIGN(minify(mt->physical_width0, 1), mt->align_w) +
+             minify(mt->physical_width0, 2);
        }
 
        if (mip1_width > mt->total_width) {
@@ -208,7 +208,7 @@ void i945_miptree_layout_2d(struct intel_mipmap_tree *mt)
 	 y += img_height;
       }
 
-      width  = minify(width);
-      height = minify(height);
+      width  = minify(width, 1);
+      height = minify(height, 1);
    }
 }
diff --git a/src/mesa/drivers/dri/intel/intel_tex_layout.h b/src/mesa/drivers/dri/intel/intel_tex_layout.h
index 12ed16d..f353cf4 100644
--- a/src/mesa/drivers/dri/intel/intel_tex_layout.h
+++ b/src/mesa/drivers/dri/intel/intel_tex_layout.h
@@ -32,12 +32,6 @@
 
 #include "main/macros.h"
 
-
-static INLINE GLuint minify( GLuint d )
-{
-   return MAX2(1, d>>1);
-}
-
 extern void i945_miptree_layout_2d(struct intel_mipmap_tree *mt);
 
 void
diff --git a/src/mesa/drivers/dri/nouveau/nouveau_texture.c b/src/mesa/drivers/dri/nouveau/nouveau_texture.c
index 64cd23b..4e3c26b 100644
--- a/src/mesa/drivers/dri/nouveau/nouveau_texture.c
+++ b/src/mesa/drivers/dri/nouveau/nouveau_texture.c
@@ -411,8 +411,8 @@ relayout_texture(struct gl_context *ctx, struct gl_texture_object *t)
 			};
 
 			offset += size;
-			width = MAX2(1, width / 2);
-			height = MAX2(1, height / 2);
+			width = minify(width, 1);
+			height = minify(height, 1);
 		}
 
 		/* Get new storage. */
diff --git a/src/mesa/main/macros.h b/src/mesa/main/macros.h
index f6d38fb..b206aca 100644
--- a/src/mesa/main/macros.h
+++ b/src/mesa/main/macros.h
@@ -656,6 +656,12 @@ INTERP_4F(GLfloat t, GLfloat dst[4], const GLfloat out[4], const GLfloat in[4])
 #define MIN3( A, B, C ) ((A) < (B) ? MIN2(A, C) : MIN2(B, C))
 #define MAX3( A, B, C ) ((A) > (B) ? MAX2(A, C) : MAX2(B, C))
 
+static inline unsigned
+minify(unsigned value, unsigned levels)
+{
+    return MAX2(1, value >> levels);
+}
+
 /**
  * Align a value up to an alignment value
  *
-- 
1.7.10.4



More information about the mesa-dev mailing list