Mesa (gallium-0.1): Gallium: fix for conform test

Robert Ellison papillo at kemper.freedesktop.org
Thu Dec 18 18:35:50 UTC 2008


Module: Mesa
Branch: gallium-0.1
Commit: 36c7bb697d47560e2bf4798db11afd7f1751abef
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=36c7bb697d47560e2bf4798db11afd7f1751abef

Author: Robert Ellison <papillo at tungstengraphics.com>
Date:   Thu Dec 18 09:46:53 2008 -0700

Gallium: fix for conform test

The following construction in util_surface_copy() in
gallium/auxiliary/util/u_rect.c, introduced in commit
d177c9ddda2c452cf7d6696d89cf4458ef986f98, incorrectly inverts
the Y coordinate in the last parameter to pipe_copy_rect().

      /* If do_flip, invert src_y position and pass negative src stride
*/
      pipe_copy_rect(dst_map,
                     &dst->block,
                     dst->stride,
                     dst_x, dst_y,
                     w, h,
                     src_map,
                     do_flip ? -(int) src->stride : src->stride,
                     src_x,
                     do_flip ? w - src_y : src_y);

The intention is to start at the last Y coordinate line and move
backwards, in the case of a flip; in that case, the correct
calculation is "src_y + h - 1", not "w - src_y".

This fixes a Gallium assertion failure in the conformance tests:

      u_rect.c:65:pipe_copy_rect: Assertion `src_y >= 0' failed.
      debug_get_bool_option: GALLIUM_ABORT_ON_ASSERT = TRUE
      Trace/breakpoint trap

---

 src/gallium/auxiliary/util/u_rect.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/src/gallium/auxiliary/util/u_rect.c b/src/gallium/auxiliary/util/u_rect.c
index 30f3241..fe81a68 100644
--- a/src/gallium/auxiliary/util/u_rect.c
+++ b/src/gallium/auxiliary/util/u_rect.c
@@ -223,7 +223,7 @@ util_surface_copy(struct pipe_context *pipe,
                      src_map,
                      do_flip ? -(int) src->stride : src->stride,
                      src_x,
-                     do_flip ? w - src_y : src_y);
+                     do_flip ? src_y + h - 1 : src_y);
    }
 
    pipe->screen->surface_unmap(pipe->screen, src);




More information about the mesa-commit mailing list