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

Chris Wilson ickle at kemper.freedesktop.org
Fri May 24 04:05:11 PDT 2013


 src/sna/sna_accel.c |   34 +++++++++++++++++++++-------------
 1 file changed, 21 insertions(+), 13 deletions(-)

New commits:
commit dbe2b5896ec2cd00a456236467b221c9fafdd2f7
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date:   Fri May 24 12:03:41 2013 +0100

    sna: Correct assertion for reusing COW
    
    Reported-by: Jiri Slaby <jirislaby at gmail.com>
    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=47597
    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 ef95049..64981a4 100644
--- a/src/sna/sna_accel.c
+++ b/src/sna/sna_accel.c
@@ -4637,7 +4637,7 @@ sna_copy_boxes(DrawablePtr src, DrawablePtr dst, GCPtr gc,
 
 	/* XXX hack for firefox -- subsequent uses of src will be corrupt! */
 	if (src_priv && src_priv->cow && src_priv->gpu_bo == dst_priv->gpu_bo) {
-		assert(DAMAGE_IS_ALL(src_priv->gpu_damage));
+		assert(src_priv->cpu_damage == NULL);
 		bo = dst_priv->gpu_bo;
 		damage = NULL;
 	} else
commit 2005b273e10f2b946f79c602b55a7bf585c936de
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date:   Fri May 24 11:02:20 2013 +0100

    sna: Check for NULL damage before dereferencing
    
    Fixes regression from
    commit 16a64649e9c440ab9457467fe04be25719a73e7c [2.21.7]
    Author: Chris Wilson <chris at chris-wilson.co.uk>
    Date:   Fri May 10 15:48:58 2013 +0100
    
        sna: Basic copy-on-write support for cloning pixmaps
    
    Reported-by: Axel Rohde
    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 49d0ba3..ef95049 100644
--- a/src/sna/sna_accel.c
+++ b/src/sna/sna_accel.c
@@ -2716,9 +2716,13 @@ sna_pixmap_move_area_to_gpu(PixmapPtr pixmap, const BoxRec *box, unsigned int fl
 		unsigned cow = MOVE_READ;
 
 		if ((flags & MOVE_READ) == 0) {
-			r.extents = *box;
-			r.data = NULL;
-			if (region_subsumes_damage(&r, priv->gpu_damage))
+			if (priv->gpu_damage) {
+				r.extents = *box;
+				r.data = NULL;
+				if (region_subsumes_damage(&r,
+							   priv->gpu_damage))
+					cow = 0;
+			} else
 				cow = 0;
 		}
 
@@ -2961,15 +2965,19 @@ sna_drawable_use_bo(DrawablePtr drawable, unsigned flags, const BoxRec *box,
 		unsigned cow = MOVE_READ;
 
 		if (flags & IGNORE_CPU) {
-			get_drawable_deltas(drawable, pixmap, &dx, &dy);
-
-			region.extents = *box;
-			region.extents.x1 += dx;
-			region.extents.x2 += dx;
-			region.extents.y1 += dy;
-			region.extents.y2 += dy;
-			region.data = NULL;
-			if (region_subsumes_damage(&region, priv->gpu_damage))
+			if (priv->gpu_damage) {
+				get_drawable_deltas(drawable, pixmap, &dx, &dy);
+
+				region.extents = *box;
+				region.extents.x1 += dx;
+				region.extents.x2 += dx;
+				region.extents.y1 += dy;
+				region.extents.y2 += dy;
+				region.data = NULL;
+				if (region_subsumes_damage(&region,
+							   priv->gpu_damage))
+					cow = 0;
+			} else
 				cow = 0;
 		}
 


More information about the xorg-commit mailing list