gallium: fix do_flip bug in sp_surface_copy()
authorBrian Paul <brian.paul@tungstengraphics.com>
Tue, 19 Aug 2008 23:41:34 +0000 (17:41 -0600)
committerBrian Paul <brian.paul@tungstengraphics.com>
Tue, 19 Aug 2008 23:41:34 +0000 (17:41 -0600)
Surfaces are always in y=0=top raster order so the caller should invert
the Y coordinate if needed; don't do it in sp_surface_copy().

Fixes a glCopyTexture regression.

src/gallium/drivers/softpipe/sp_surface.c

index 7dc15c38d1026eeaabb7f639554fe41fdcef0809..4f1bb881cb553cd6502ee2bfdab4c99833d511f5 100644 (file)
@@ -39,6 +39,9 @@
  * Copy a rectangular region from one surface to another.
  * Surfaces must have same bpp.
  *
+ * Note that it's always the case that Y=0=top of the raster.
+ * If do_flip is non-zero, the region being copied will be flipped vertically.
+ *
  * Assumes all values are within bounds -- no checking at this level -
  * do it higher up if required.
  */
@@ -72,7 +75,7 @@ sp_surface_copy(struct pipe_context *pipe,
                   width, height,
                   src_map,
                   do_flip ? -(int) src->stride : src->stride,
-                  srcx, do_flip ? src->height - 1 - srcy : srcy);
+                  srcx, srcy);
 
    pipe->screen->surface_unmap(pipe->screen, src);
    pipe->screen->surface_unmap(pipe->screen, dst);