Mesa (master): llvmpipe: clean-up lp_surface_copy()

Brian Paul brianp at kemper.freedesktop.org
Fri Apr 16 19:07:50 UTC 2010


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

Author: Brian Paul <brianp at vmware.com>
Date:   Fri Apr 16 13:07:15 2010 -0600

llvmpipe: clean-up lp_surface_copy()

Remove unreachable code, etc from previous revisions.

---

 src/gallium/drivers/llvmpipe/lp_surface.c |  138 +++++++++++++---------------
 1 files changed, 64 insertions(+), 74 deletions(-)

diff --git a/src/gallium/drivers/llvmpipe/lp_surface.c b/src/gallium/drivers/llvmpipe/lp_surface.c
index 381c58e..5fcbad4 100644
--- a/src/gallium/drivers/llvmpipe/lp_surface.c
+++ b/src/gallium/drivers/llvmpipe/lp_surface.c
@@ -56,6 +56,10 @@ lp_surface_copy(struct pipe_context *pipe,
                 struct pipe_surface *src, unsigned srcx, unsigned srcy,
                 unsigned width, unsigned height)
 {
+   struct llvmpipe_resource *src_tex = llvmpipe_resource(src->texture);
+   struct llvmpipe_resource *dst_tex = llvmpipe_resource(dst->texture);
+   const enum pipe_format format = src_tex->base.format;
+
    llvmpipe_flush_texture(pipe,
                           dst->texture, dst->face, dst->level,
                           0, /* flush_flags */
@@ -70,91 +74,77 @@ lp_surface_copy(struct pipe_context *pipe,
                           FALSE, /* cpu_access */
                           FALSE); /* do_not_flush */
 
-   /* Look for special case in which we're copying from a tiled image
-    * to a linear image.
-    */
+   /*
+   printf("surface copy from %u to %u: %u,%u to %u,%u %u x %u\n",
+          src_tex->id, dst_tex->id,
+          srcx, srcy, dstx, dsty, width, height);
+   */
+
+   /* set src tiles to linear layout */
    {
-      struct llvmpipe_resource *src_tex = llvmpipe_resource(src->texture);
-      struct llvmpipe_resource *dst_tex = llvmpipe_resource(dst->texture);
-      enum pipe_format format = src_tex->base.format;
-
-      /*
-      printf("surface copy from %u to %u: %u,%u to %u,%u %u x %u\n",
-             src_tex->id, dst_tex->id,
-             srcx, srcy, dstx, dsty, width, height);
-      */
-
-      /* set src tiles to linear layout */
-      {
-         unsigned tx, ty, tw, th;
-         unsigned x, y;
-
-         adjust_to_tile_bounds(srcx, srcy, width, height, &tx, &ty, &tw, &th);
-
-         for (y = 0; y < th; y += TILE_SIZE) {
-            for (x = 0; x < tw; x += TILE_SIZE) {
-               (void) llvmpipe_get_texture_tile_linear(src_tex,
-                                                       src->face, src->level,
+      unsigned tx, ty, tw, th;
+      unsigned x, y;
+
+      adjust_to_tile_bounds(srcx, srcy, width, height, &tx, &ty, &tw, &th);
+
+      for (y = 0; y < th; y += TILE_SIZE) {
+         for (x = 0; x < tw; x += TILE_SIZE) {
+            (void) llvmpipe_get_texture_tile_linear(src_tex,
+                                                    src->face, src->level,
                                                        LP_TEX_USAGE_READ,
-                                                       tx + x, ty + y);
-            }
+                                                    tx + x, ty + y);
          }
       }
+   }
 
-      /* set dst tiles to linear layout */
-      {
-         unsigned tx, ty, tw, th;
-         unsigned x, y;
-         enum lp_texture_usage usage;
-
-         /* XXX for the tiles which are completely contained by the
-          * dest rectangle, we could set the usage mode to WRITE_ALL.
-          * Just test for the case of replacing the whole dest region for now.
-          */
-         if (width == dst_tex->base.width0 && height == dst_tex->base.height0)
-            usage = LP_TEX_USAGE_WRITE_ALL;
-         else
-            usage = LP_TEX_USAGE_READ_WRITE;
-
-         adjust_to_tile_bounds(dstx, dsty, width, height, &tx, &ty, &tw, &th);
-
-         for (y = 0; y < th; y += TILE_SIZE) {
-            for (x = 0; x < tw; x += TILE_SIZE) {
-               (void) llvmpipe_get_texture_tile_linear(dst_tex,
-                                                       dst->face, dst->level,
-                                                       usage,
-                                                       tx + x, ty + y);
-            }
+   /* set dst tiles to linear layout */
+   {
+      unsigned tx, ty, tw, th;
+      unsigned x, y;
+      enum lp_texture_usage usage;
+
+      /* XXX for the tiles which are completely contained by the
+       * dest rectangle, we could set the usage mode to WRITE_ALL.
+       * Just test for the case of replacing the whole dest region for now.
+       */
+      if (width == dst_tex->base.width0 && height == dst_tex->base.height0)
+         usage = LP_TEX_USAGE_WRITE_ALL;
+      else
+         usage = LP_TEX_USAGE_READ_WRITE;
+
+      adjust_to_tile_bounds(dstx, dsty, width, height, &tx, &ty, &tw, &th);
+
+      for (y = 0; y < th; y += TILE_SIZE) {
+         for (x = 0; x < tw; x += TILE_SIZE) {
+            (void) llvmpipe_get_texture_tile_linear(dst_tex,
+                                                    dst->face, dst->level,
+                                                    usage,
+                                                    tx + x, ty + y);
          }
       }
-
-      /* copy */
-      {
-         const ubyte *src_linear_ptr
-            = llvmpipe_get_texture_image_address(src_tex, src->face,
-                                                 src->level,
-                                                 LP_TEX_LAYOUT_LINEAR);
-         ubyte *dst_linear_ptr
-            = llvmpipe_get_texture_image_address(dst_tex, dst->face,
-                                                 dst->level,
-                                                 LP_TEX_LAYOUT_LINEAR);
-
-         util_copy_rect(dst_linear_ptr, format,
-                        dst_tex->stride[dst->level],
-                        dstx, dsty,
-                        width, height,
-                        src_linear_ptr, src_tex->stride[src->level],
-                        srcx, srcy);
-      }
-      return;
    }
 
-   util_surface_copy(pipe, FALSE,
-                     dst, dstx, dsty,
-                     src, srcx, srcy,
-                     width, height);
+   /* copy */
+   {
+      const ubyte *src_linear_ptr
+         = llvmpipe_get_texture_image_address(src_tex, src->face,
+                                              src->level,
+                                              LP_TEX_LAYOUT_LINEAR);
+      ubyte *dst_linear_ptr
+         = llvmpipe_get_texture_image_address(dst_tex, dst->face,
+                                              dst->level,
+                                              LP_TEX_LAYOUT_LINEAR);
+
+      util_copy_rect(dst_linear_ptr, format,
+                     dst_tex->stride[dst->level],
+                     dstx, dsty,
+                     width, height,
+                     src_linear_ptr, src_tex->stride[src->level],
+                     srcx, srcy);
+   }
 }
 
+
 void
 lp_init_surface_functions(struct llvmpipe_context *lp)
 {




More information about the mesa-commit mailing list