xf86-video-intel: src/sna/fb src/sna/sna_accel.c

Chris Wilson ickle at kemper.freedesktop.org
Sat Oct 20 10:02:03 PDT 2012


 src/sna/fb/fbblt.c  |    2 +-
 src/sna/sna_accel.c |   16 +++++++++-------
 2 files changed, 10 insertions(+), 8 deletions(-)

New commits:
commit 60e4e009f90543bfd57f6a4e51ebc5b32b4af33b
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date:   Sat Oct 20 17:59:45 2012 +0100

    sna: Move the source region to the CPU for a self-copy fallback CopyArea
    
    Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>

diff --git a/src/sna/fb/fbblt.c b/src/sna/fb/fbblt.c
index d4d20b6..287ea40 100644
--- a/src/sna/fb/fbblt.c
+++ b/src/sna/fb/fbblt.c
@@ -270,7 +270,7 @@ fbBlt(FbBits *srcLine, FbStride srcStride, int srcX,
       int alu, FbBits pm, int bpp,
       Bool reverse, Bool upsidedown)
 {
-	DBG(("%s %dx%d, alu=%d, pm=%d, bpp=%d (reverse=%d, upsidedown=%d)\n",
+	DBG(("%s %dx%d, alu=%d, pm=%x, bpp=%d (reverse=%d, upsidedown=%d)\n",
 	     __FUNCTION__, width, height, alu, pm, bpp, reverse, upsidedown));
 
 	if (alu == GXcopy && pm == FB_ALLONES && ((srcX|dstX|width) & 7) == 0) {
diff --git a/src/sna/sna_accel.c b/src/sna/sna_accel.c
index 593eb42..8d2a3f9 100644
--- a/src/sna/sna_accel.c
+++ b/src/sna/sna_accel.c
@@ -5016,16 +5016,17 @@ sna_fallback_copy_boxes(DrawablePtr src, DrawablePtr dst, GCPtr gc,
 	if (!sna_gc_move_to_cpu(gc, dst, region))
 		return;
 
+	RegionTranslate(region, dx, dy);
+	if (!sna_drawable_move_region_to_cpu(src, region, MOVE_READ))
+		goto out_gc;
+	RegionTranslate(region, -dx, -dy);
+
 	if (src == dst ||
 	    get_drawable_pixmap(src) == get_drawable_pixmap(dst)) {
+		DBG(("%s: self-copy\n", __FUNCTION__));
 		if (!sna_drawable_move_to_cpu(dst, MOVE_WRITE | MOVE_READ))
 			goto out_gc;
 	} else {
-		RegionTranslate(region, dx, dy);
-		if (!sna_drawable_move_region_to_cpu(src, region, MOVE_READ))
-			goto out_gc;
-		RegionTranslate(region, -dx, -dy);
-
 		if (!sna_drawable_move_region_to_cpu(dst, region,
 						     drawable_gc_flags(dst, gc, false)))
 			goto out_gc;
@@ -5051,10 +5052,11 @@ sna_copy_area(DrawablePtr src, DrawablePtr dst, GCPtr gc,
 	if (gc->planemask == 0)
 		return NULL;
 
-	DBG(("%s: src=(%d, %d)x(%d, %d)+(%d, %d) -> dst=(%d, %d)+(%d, %d)\n",
+	DBG(("%s: src=(%d, %d)x(%d, %d)+(%d, %d) -> dst=(%d, %d)+(%d, %d); alu=%d, pm=%lx\n",
 	     __FUNCTION__,
 	     src_x, src_y, width, height, src->x, src->y,
-	     dst_x, dst_y, dst->x, dst->y));
+	     dst_x, dst_y, dst->x, dst->y,
+	     gc->alu, gc->planemask));
 
 	if (FORCE_FALLBACK || !ACCEL_COPY_AREA || wedged(sna) ||
 	    !PM_IS_SOLID(dst, gc->planemask))


More information about the xorg-commit mailing list