[Mesa-dev] [PATCH] intel: Kill dead code in intel_miptree_copy_teximage()

Chad Versace chad at chad-versace.us
Mon Oct 24 14:03:38 PDT 2011


Kill the code paths taken when src_mt is null. It is never null, otherwise
there would be a segfault on line 4 of this function:
    GLuint width = src_mt->level[level].width;

(Some interleaved lines in the diff make the real diff non-obvious. All
I did was delete some code and then left-shifted what remained to correct
the indentation.)

Signed-off-by: Chad Versace <chad at chad-versace.us>
---
 src/mesa/drivers/dri/intel/intel_mipmap_tree.c |   88 ++++++++----------------
 1 files changed, 28 insertions(+), 60 deletions(-)

diff --git a/src/mesa/drivers/dri/intel/intel_mipmap_tree.c b/src/mesa/drivers/dri/intel/intel_mipmap_tree.c
index 9eb81de..2bccfbf 100644
--- a/src/mesa/drivers/dri/intel/intel_mipmap_tree.c
+++ b/src/mesa/drivers/dri/intel/intel_mipmap_tree.c
@@ -371,74 +371,42 @@ intel_miptree_copy_teximage(struct intel_context *intel,
       intel_miptree_get_image_offset(dst_mt, level, face, slice,
 				     &dst_x, &dst_y);
 
-      if (src_mt) {
-	 /* Copy potentially with the blitter:
-	  */
-	 intel_miptree_get_image_offset(src_mt, level, face, slice,
-					&src_x, &src_y);
-
-	 DBG("validate blit mt %p %d,%d/%d -> mt %p %d,%d/%d (%dx%d)\n",
-	     src_mt, src_x, src_y, src_mt->region->pitch * src_mt->region->cpp,
-	     dst_mt, dst_x, dst_y, dst_mt->region->pitch * dst_mt->region->cpp,
-	     width, height);
-
-	 if (!intelEmitCopyBlit(intel,
-				dst_mt->region->cpp,
-				src_mt->region->pitch, src_mt->region->bo,
-				0, src_mt->region->tiling,
-				dst_mt->region->pitch, dst_mt->region->bo,
-				0, dst_mt->region->tiling,
-				src_x, src_y,
-				dst_x, dst_y,
-				width, height,
-				GL_COPY)) {
-
-	    fallback_debug("miptree validate blit for %s failed\n",
-			   _mesa_get_format_name(intelImage->base.Base.TexFormat));
-	    dst = intel_region_map(intel, dst_mt->region, GL_MAP_WRITE_BIT);
-	    src = intel_region_map(intel, src_mt->region, GL_MAP_READ_BIT);
-
-	    _mesa_copy_rect(dst,
-			    dst_mt->cpp,
-			    dst_mt->region->pitch,
-			    dst_x, dst_y,
-			    width, height,
-			    src, src_mt->region->pitch,
-			    src_x, src_y);
-
-	    intel_region_unmap(intel, dst_mt->region);
-	    intel_region_unmap(intel, src_mt->region);
-	 }
-      } else {
+      /* Copy potentially with the blitter:
+       */
+      intel_miptree_get_image_offset(src_mt, level, face, slice,
+				     &src_x, &src_y);
+
+      DBG("validate blit mt %p %d,%d/%d -> mt %p %d,%d/%d (%dx%d)\n",
+	  src_mt, src_x, src_y, src_mt->region->pitch * src_mt->region->cpp,
+	  dst_mt, dst_x, dst_y, dst_mt->region->pitch * dst_mt->region->cpp,
+	  width, height);
+
+      if (!intelEmitCopyBlit(intel,
+			     dst_mt->region->cpp,
+			     src_mt->region->pitch, src_mt->region->bo,
+			     0, src_mt->region->tiling,
+			     dst_mt->region->pitch, dst_mt->region->bo,
+			     0, dst_mt->region->tiling,
+			     src_x, src_y,
+			     dst_x, dst_y,
+			     width, height,
+			     GL_COPY)) {
+
+	 fallback_debug("miptree validate blit for %s failed\n",
+			_mesa_get_format_name(intelImage->base.Base.TexFormat));
 	 dst = intel_region_map(intel, dst_mt->region, GL_MAP_WRITE_BIT);
-
-	 DBG("validate upload mt %p -> mt %p %d,%d/%d (%dx%d)\n",
-	     src,
-	     dst_mt, dst_x, dst_y, dst_mt->region->pitch * dst_mt->region->cpp,
-	     width, height);
-
-	 src = intelImage->base.Data;
-	 src += (intelImage->base.RowStride *
-		 intelImage->base.Base.Height *
-		 dst_mt->region->cpp *
-		 slice);
+	 src = intel_region_map(intel, src_mt->region, GL_MAP_READ_BIT);
 
 	 _mesa_copy_rect(dst,
-			 dst_mt->region->cpp,
+			 dst_mt->cpp,
 			 dst_mt->region->pitch,
 			 dst_x, dst_y,
 			 width, height,
-			 src,
-			 intelImage->base.RowStride,
-			 0, 0);
+			 src, src_mt->region->pitch,
+			 src_x, src_y);
 
 	 intel_region_unmap(intel, dst_mt->region);
-      }
-   }
-
-   if (!src_mt && intelImage->base.Data) {
-      _mesa_align_free(intelImage->base.Data);
-      intelImage->base.Data = NULL;
+	 intel_region_unmap(intel, src_mt->region);
    }
 
    intel_miptree_reference(&intelImage->mt, dst_mt);
-- 
1.7.6.4



More information about the mesa-dev mailing list