Mesa (master): intel: Drop texture border support code.

Eric Anholt anholt at kemper.freedesktop.org
Wed Oct 26 12:44:23 PDT 2011


Module: Mesa
Branch: master
Commit: 4ad8a0adec588b4c2c5a8f93265ed46cee5d3ff6
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=4ad8a0adec588b4c2c5a8f93265ed46cee5d3ff6

Author: Eric Anholt <eric at anholt.net>
Date:   Mon Oct 17 14:53:13 2011 -0700

intel: Drop texture border support code.

Now that texture borders are gone, we never need to allocate our
textures through non-miptrees, which simplifies some irritating paths.

v2: Remove the !mt support case from intel_map_texture_image()

Reviewed-by: Kenneth Graunke <kenneth at whitecape.org> (v1)
Reviewed-by: Brian Paul <brianp at vmware.com>

---

 src/mesa/drivers/dri/i965/brw_fallback.c        |   17 +------
 src/mesa/drivers/dri/intel/intel_mipmap_tree.c  |    4 --
 src/mesa/drivers/dri/intel/intel_tex.c          |   58 ++++++++---------------
 src/mesa/drivers/dri/intel/intel_tex_image.c    |   36 +++-----------
 src/mesa/drivers/dri/intel/intel_tex_validate.c |    7 ---
 5 files changed, 29 insertions(+), 93 deletions(-)

diff --git a/src/mesa/drivers/dri/i965/brw_fallback.c b/src/mesa/drivers/dri/i965/brw_fallback.c
index ae08cf5..708bd0e 100644
--- a/src/mesa/drivers/dri/i965/brw_fallback.c
+++ b/src/mesa/drivers/dri/i965/brw_fallback.c
@@ -42,7 +42,6 @@
 static bool do_check_fallback(struct brw_context *brw)
 {
    struct gl_context *ctx = &brw->intel.ctx;
-   GLuint i;
 
    if (brw->intel.no_rast) {
       DBG("FALLBACK: rasterization disabled\n");
@@ -56,20 +55,6 @@ static bool do_check_fallback(struct brw_context *brw)
       return true;
    }
 
-   /* _NEW_TEXTURE:
-    */
-   for (i = 0; i < BRW_MAX_TEX_UNIT; i++) {
-      struct gl_texture_unit *texUnit = &ctx->Texture.Unit[i];
-      if (texUnit->_ReallyEnabled) {
-	 struct gl_texture_object *tex_obj = texUnit->_Current;
-	 struct gl_texture_image *texImage = tex_obj->Image[0][tex_obj->BaseLevel];
-	 if (texImage->Border) {
-	    DBG("FALLBACK: texture border\n");
-	    return true;
-	 }
-      }
-   }
-
    return false;
 }
 
@@ -80,7 +65,7 @@ static void check_fallback(struct brw_context *brw)
 
 const struct brw_tracked_state brw_check_fallback = {
    .dirty = {
-      .mesa = _NEW_RENDERMODE | _NEW_TEXTURE | _NEW_STENCIL,
+      .mesa = _NEW_RENDERMODE | _NEW_STENCIL,
       .brw  = 0,
       .cache = 0
    },
diff --git a/src/mesa/drivers/dri/intel/intel_mipmap_tree.c b/src/mesa/drivers/dri/intel/intel_mipmap_tree.c
index 54f73e8..19f151f 100644
--- a/src/mesa/drivers/dri/intel/intel_mipmap_tree.c
+++ b/src/mesa/drivers/dri/intel/intel_mipmap_tree.c
@@ -246,10 +246,6 @@ intel_miptree_match_image(struct intel_mipmap_tree *mt,
    GLuint level = intelImage->base.Base.Level;
    int width, height, depth;
 
-   /* Images with borders are never pulled into mipmap trees. */
-   if (image->Border)
-      return false;
-
    if (image->TexFormat != mt->format)
       return false;
 
diff --git a/src/mesa/drivers/dri/intel/intel_tex.c b/src/mesa/drivers/dri/intel/intel_tex.c
index 5806659..7af5138 100644
--- a/src/mesa/drivers/dri/intel/intel_tex.c
+++ b/src/mesa/drivers/dri/intel/intel_tex.c
@@ -61,6 +61,8 @@ intel_alloc_texture_image_buffer(struct gl_context *ctx,
    struct intel_texture_object *intel_texobj = intel_texture_object(texobj);
    GLuint slices;
 
+   assert(image->Border == 0);
+
    /* Because the driver uses AllocTextureImageBuffer() internally, it may end
     * up mismatched with FreeTextureImageBuffer(), but that is safe to call
     * multiple times.
@@ -93,8 +95,7 @@ intel_alloc_texture_image_buffer(struct gl_context *ctx,
       DBG("%s: alloc obj %p level %d %dx%dx%d using object's miptree %p\n",
           __FUNCTION__, texobj, image->Level,
           width, height, depth, intel_texobj->mt);
-      return true;
-   } else if (image->Border == 0) {
+   } else {
       intel_image->mt = intel_miptree_create_for_teximage(intel, intel_texobj,
                                                           intel_image,
                                                           false);
@@ -114,14 +115,9 @@ intel_alloc_texture_image_buffer(struct gl_context *ctx,
       DBG("%s: alloc obj %p level %d %dx%dx%d using new miptree %p\n",
           __FUNCTION__, texobj, image->Level,
           width, height, depth, intel_image->mt);
-      return true;
    }
 
-   DBG("%s: alloc obj %p level %d %dx%dx%d using swrast\n",
-       __FUNCTION__, texobj, image->Level, width, height, depth);
-
-   return _swrast_alloc_texture_image_buffer(ctx, image, format,
-					     width, height, depth);
+   return true;
 }
 
 static void
@@ -168,6 +164,11 @@ intel_map_texture_image(struct gl_context *ctx,
    struct intel_texture_image *intel_image = intel_texture_image(tex_image);
    struct intel_mipmap_tree *mt = intel_image->mt;
    unsigned int bw, bh;
+   void *base;
+   unsigned int image_x, image_y;
+
+   /* Our texture data is always stored in a miptree. */
+   assert(mt);
 
    /* Check that our caller wasn't confused about how to map a 1D texture. */
    assert(tex_image->TexObject->Target != GL_TEXTURE_1D_ARRAY ||
@@ -190,36 +191,18 @@ intel_map_texture_image(struct gl_context *ctx,
    assert(y % bh == 0);
    y /= bh;
 
-   if (likely(mt)) {
-      void *base = intel_region_map(intel, mt->region, mode);
-      unsigned int image_x, image_y;
-
-      intel_miptree_get_image_offset(mt, tex_image->Level, tex_image->Face,
-				     slice, &image_x, &image_y);
-      x += image_x;
-      y += image_y;
+   base = intel_region_map(intel, mt->region, mode);
+   intel_miptree_get_image_offset(mt, tex_image->Level, tex_image->Face,
+				  slice, &image_x, &image_y);
+   x += image_x;
+   y += image_y;
 
-      *stride = mt->region->pitch * mt->cpp;
-      *map = base + y * *stride + x * mt->cpp;
+   *stride = mt->region->pitch * mt->cpp;
+   *map = base + y * *stride + x * mt->cpp;
 
-      DBG("%s: %d,%d %dx%d from mt %p %d,%d = %p/%d\n", __FUNCTION__,
-	  x - image_x, y - image_y, w, h,
-	  mt, x, y, *map, *stride);
-   } else {
-      /* texture data is in malloc'd memory */
-      GLuint width = tex_image->Width;
-      GLuint height = ALIGN(tex_image->Height, bh) / bh;
-      GLuint texelSize = _mesa_get_format_bytes(tex_image->TexFormat);
-
-      assert(map);
-
-      *stride = _mesa_format_row_stride(tex_image->TexFormat, width);
-      *map = intel_image->base.Buffer + (slice * height + y) * *stride + x * texelSize;
-
-      DBG("%s: %d,%d %dx%d from data %p = %p/%d\n", __FUNCTION__,
-	  x, y, w, h,
-	  intel_image->base.Buffer, *map, *stride);
-   }
+   DBG("%s: %d,%d %dx%d from mt %p %d,%d = %p/%d\n", __FUNCTION__,
+       x - image_x, y - image_y, w, h,
+       mt, x, y, *map, *stride);
 }
 
 static void
@@ -229,8 +212,7 @@ intel_unmap_texture_image(struct gl_context *ctx,
    struct intel_context *intel = intel_context(ctx);
    struct intel_texture_image *intel_image = intel_texture_image(tex_image);
 
-   if (intel_image->mt)
-      intel_region_unmap(intel, intel_image->mt->region);
+   intel_region_unmap(intel, intel_image->mt->region);
 
    if (intel_image->stencil_rb) {
       /*
diff --git a/src/mesa/drivers/dri/intel/intel_tex_image.c b/src/mesa/drivers/dri/intel/intel_tex_image.c
index d052684..eaf034a 100644
--- a/src/mesa/drivers/dri/intel/intel_tex_image.c
+++ b/src/mesa/drivers/dri/intel/intel_tex_image.c
@@ -26,24 +26,8 @@
 
 #define FILE_DEBUG_FLAG DEBUG_TEXTURE
 
-/* Functions to store texture images.  Where possible, mipmap_tree's
- * will be created or further instantiated with image data, otherwise
- * images will be stored in malloc'd memory.  A validation step is
- * required to pull those images into a mipmap tree, or otherwise
- * decide a fallback is required.
- */
-
-
-
-/* Otherwise, store it in memory if (Border != 0) or (any dimension ==
- * 1).
- *    
- * Otherwise, if max_level >= level >= min_level, create tree with
- * space for textures from min_level down to max_level.
- *
- * Otherwise, create tree with space for textures from (level
- * 0)..(1x1).  Consider pruning this tree at a validation if the
- * saving is worth it.
+/* Work back from the specified level of the image to the baselevel and create a
+ * miptree of that size.
  */
 struct intel_mipmap_tree *
 intel_miptree_create_for_teximage(struct intel_context *intel,
@@ -61,9 +45,6 @@ intel_miptree_create_for_teximage(struct intel_context *intel,
 
    DBG("%s\n", __FUNCTION__);
 
-   if (intelImage->base.Base.Border)
-      return NULL;
-
    if (intelImage->base.Base.Level > intelObj->base.BaseLevel &&
        (width == 1 ||
         (intelObj->base.Target != GL_TEXTURE_1D && height == 1) ||
@@ -350,14 +331,13 @@ intelTexImage(struct gl_context * ctx,
               GLenum target, GLint level,
               GLint internalFormat,
               GLint width, GLint height, GLint depth,
-              GLint border,
               GLenum format, GLenum type, const void *pixels,
               const struct gl_pixelstore_attrib *unpack,
               struct gl_texture_object *texObj,
               struct gl_texture_image *texImage, GLsizei imageSize)
 {
-   DBG("%s target %s level %d %dx%dx%d border %d\n", __FUNCTION__,
-       _mesa_lookup_enum_by_nr(target), level, width, height, depth, border);
+   DBG("%s target %s level %d %dx%dx%d\n", __FUNCTION__,
+       _mesa_lookup_enum_by_nr(target), level, width, height, depth);
 
    /* Attempt to use the blitter for PBO image uploads.
     */
@@ -371,7 +351,7 @@ intelTexImage(struct gl_context * ctx,
        __FUNCTION__, width, height, depth, pixels);
 
    _mesa_store_teximage3d(ctx, target, level, internalFormat,
-			  width, height, depth, border,
+			  width, height, depth, 0,
 			  format, type, pixels,
 			  unpack, texObj, texImage);
 }
@@ -389,7 +369,7 @@ intelTexImage3D(struct gl_context * ctx,
                 struct gl_texture_image *texImage)
 {
    intelTexImage(ctx, 3, target, level,
-                 internalFormat, width, height, depth, border,
+                 internalFormat, width, height, depth,
                  format, type, pixels, unpack, texObj, texImage, 0);
 }
 
@@ -405,7 +385,7 @@ intelTexImage2D(struct gl_context * ctx,
                 struct gl_texture_image *texImage)
 {
    intelTexImage(ctx, 2, target, level,
-                 internalFormat, width, height, 1, border,
+                 internalFormat, width, height, 1,
                  format, type, pixels, unpack, texObj, texImage, 0);
 }
 
@@ -421,7 +401,7 @@ intelTexImage1D(struct gl_context * ctx,
                 struct gl_texture_image *texImage)
 {
    intelTexImage(ctx, 1, target, level,
-                 internalFormat, width, 1, 1, border,
+                 internalFormat, width, 1, 1,
                  format, type, pixels, unpack, texObj, texImage, 0);
 }
 
diff --git a/src/mesa/drivers/dri/intel/intel_tex_validate.c b/src/mesa/drivers/dri/intel/intel_tex_validate.c
index 6639de9..a657732 100644
--- a/src/mesa/drivers/dri/intel/intel_tex_validate.c
+++ b/src/mesa/drivers/dri/intel/intel_tex_validate.c
@@ -52,13 +52,6 @@ intel_finalize_mipmap_tree(struct intel_context *intel, GLuint unit)
    intel_update_max_level(intelObj, sampler);
    firstImage = intel_texture_image(tObj->Image[0][tObj->BaseLevel]);
 
-   /* Fallback case:
-    */
-   if (firstImage->base.Base.Border) {
-      intel_miptree_release(&intelObj->mt);
-      return false;
-   }
-
    intel_miptree_get_dimensions_for_image(&firstImage->base.Base,
                                           &width, &height, &depth);
 



More information about the mesa-commit mailing list