i915: Fix overlapping CopyPixels with negative pixel zoom.
authorEric Anholt <eric@anholt.net>
Mon, 22 Sep 2008 01:26:45 +0000 (18:26 -0700)
committerEric Anholt <eric@anholt.net>
Tue, 23 Sep 2008 20:31:12 +0000 (13:31 -0700)
Fixes a failure in pixel-pos.c oglconform test.

src/mesa/drivers/dri/intel/intel_pixel_copy.c

index 3fb8a31..1b3cb5a 100644 (file)
@@ -135,10 +135,20 @@ do_texture_copypixels(GLcontext * ctx,
       srcbox.x2 = srcx + width;
       srcbox.y2 = srcy + height;
 
-      dstbox.x1 = dstx;
-      dstbox.y1 = dsty;
-      dstbox.x2 = dstx + width * ctx->Pixel.ZoomX;
-      dstbox.y2 = dsty + height * ctx->Pixel.ZoomY;
+      if (ctx->Pixel.ZoomX > 0) {
+        dstbox.x1 = dstx;
+        dstbox.x2 = dstx + width * ctx->Pixel.ZoomX;
+      } else {
+        dstbox.x1 = dstx + width * ctx->Pixel.ZoomX;
+        dstbox.x2 = dstx;
+      }
+      if (ctx->Pixel.ZoomY > 0) {
+        dstbox.y1 = dsty;
+        dstbox.y2 = dsty + height * ctx->Pixel.ZoomY;
+      } else {
+        dstbox.y1 = dsty + height * ctx->Pixel.ZoomY;
+        dstbox.y2 = dsty;
+      }
 
       DBG("src %d,%d %d,%d\n", srcbox.x1, srcbox.y1, srcbox.x2, srcbox.y2);
       DBG("dst %d,%d %d,%d (%dx%d) (%f,%f)\n", dstbox.x1, dstbox.y1, dstbox.x2, dstbox.y2,