xf86-video-intel: 2 commits - src/sna/sna_accel.c src/sna/sna_display.c

Chris Wilson ickle at kemper.freedesktop.org
Wed Jun 18 10:47:56 PDT 2014


 src/sna/sna_accel.c   |   29 ++++++++++++++++++-----------
 src/sna/sna_display.c |    2 +-
 2 files changed, 19 insertions(+), 12 deletions(-)

New commits:
commit 273c82a574896885f9f4a78a7463cc4620803624
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date:   Wed Jun 18 18:47:14 2014 +0100

    sna: Fix DBG compilation
    
    Missed updaing the DBG message in
    
    commit 83c0f034454ef0f474126a3398e5e790ac5ef842
    Author: Chris Wilson <chris at chris-wilson.co.uk>
    Date:   Wed Jun 18 16:51:46 2014 +0100
    
        sna: Pass desired CRTC viewport for completing single CRTC flips
    
    References: https://bugs.freedesktop.org/show_bug.cgi?id=80157
    Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>

diff --git a/src/sna/sna_display.c b/src/sna/sna_display.c
index f97e83e..b62fda1 100644
--- a/src/sna/sna_display.c
+++ b/src/sna/sna_display.c
@@ -6331,7 +6331,7 @@ fixup_shadow:
 				DBG(("%s: changing pitch (%d == %d) or offset (%x == %x)\n",
 				     __FUNCTION__,
 				     flip_bo->pitch, crtc->bo->pitch,
-				     crtc_offset, crtc->offset));
+				     y << 16 | x, crtc->offset));
 fixup_flip:
 				if (sna_crtc_flip(sna, crtc, flip_bo, x, y)) {
 					assert(flip_bo != crtc->bo);
commit 62aaf2ff4f8597067cf387865707baa00ed9a123
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date:   Wed Jun 18 18:41:15 2014 +0100

    sna: Skip redundant copies when already cloned
    
    References: https://bugs.freedesktop.org/show_bug.cgi?id=77436
    Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>

diff --git a/src/sna/sna_accel.c b/src/sna/sna_accel.c
index a2e93c2..c021652 100644
--- a/src/sna/sna_accel.c
+++ b/src/sna/sna_accel.c
@@ -6120,18 +6120,25 @@ sna_copy_boxes(DrawablePtr src, DrawablePtr dst, GCPtr gc,
 		goto fallback;
 	}
 
-	/* XXX hack for firefox -- subsequent uses of src will be corrupt! */
-	if (src_priv &&
-	    COW(src_priv->cow) == COW(dst_priv->cow) &&
-	    IS_COW_OWNER(dst_priv->cow)) {
-		DBG(("%s: ignoring cow reference for cousin copy\n",
-		     __FUNCTION__));
-		assert(src_priv->cpu_damage == NULL);
-		assert(dst_priv->move_to_gpu == NULL);
-		bo = dst_priv->gpu_bo;
-		damage = NULL;
+	if (src_priv && COW(src_priv->cow) == COW(dst_priv->cow) && alu == GXcopy) {
+		if ((dx | dy) == 0) {
+			DBG(("%s: ignoring cow for no op\n",
+			     __FUNCTION__));
+			return;
+		} else if (IS_COW_OWNER(dst_priv->cow)) {
+			/* XXX hack for firefox -- subsequent uses of src will be corrupt! */
+			DBG(("%s: ignoring cow reference for cousin copy\n",
+			     __FUNCTION__));
+			assert(src_priv->cpu_damage == NULL);
+			assert(dst_priv->move_to_gpu == NULL);
+			bo = dst_priv->gpu_bo;
+			damage = NULL;
+		} else
+			goto discard_cow;
 	} else {
-		unsigned hint = copy_prefer_gpu(sna, dst_priv, src_priv, region, src_dx, src_dy);
+		unsigned hint;
+discard_cow:
+		hint = copy_prefer_gpu(sna, dst_priv, src_priv, region, src_dx, src_dy);
 		if (replaces) {
 			discard_cpu_damage(sna, dst_priv);
 			hint |= REPLACES | IGNORE_CPU;


More information about the xorg-commit mailing list