xf86-video-intel: 4 commits - configure.ac NEWS src/sna/sna_accel.c

Chris Wilson ickle at kemper.freedesktop.org
Sat Feb 1 11:01:31 PST 2014


 NEWS                |   12 ++++++++++++
 configure.ac        |    2 +-
 src/sna/sna_accel.c |   24 +++++++++++++-----------
 3 files changed, 26 insertions(+), 12 deletions(-)

New commits:
commit 2c4b2ed558bec3b71077fb12cc4e008cccc819fa
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date:   Sat Feb 1 17:59:29 2014 +0000

    2.99.909 snapshot

diff --git a/NEWS b/NEWS
index 83bf809..63655d3 100644
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,15 @@
+Snapshot 2.99.909 (2013-02-01)
+==============================
+Pass the brown paper bag. Ridiculously stupid bug in last minute coding.
+
+  * Add Xv support using glamor acceleration in addition to adaptors
+    provided by the UXA backend.
+
+  * Fix overeager discarding of CPU damage
+    Regression in 2.99.908 :(
+    https://bugs.freedesktop.org/show_bug.cgi?id=74327
+
+
 Snapshot 2.99.908 (2013-01-31)
 ==============================
 A couple of regressions dashed the hopes that .907 was to be the final
diff --git a/configure.ac b/configure.ac
index 4e93f95..f7a6d32 100644
--- a/configure.ac
+++ b/configure.ac
@@ -23,7 +23,7 @@
 # Initialize Autoconf
 AC_PREREQ([2.60])
 AC_INIT([xf86-video-intel],
-        [2.99.908],
+        [2.99.909],
         [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg],
         [xf86-video-intel])
 AC_CONFIG_SRCDIR([Makefile.am])
commit 495bf89496a96eff0b2c5b6a95aa29df8d7fbc81
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date:   Sat Feb 1 18:57:06 2014 +0000

    sna: Apply drawable offsets to partial CPU damage being replaced
    
    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 1fbbddc..aecae51 100644
--- a/src/sna/sna_accel.c
+++ b/src/sna/sna_accel.c
@@ -2424,6 +2424,9 @@ sna_drawable_move_region_to_cpu(DrawablePtr drawable,
 		    priv->cpu_bo && !priv->cpu_bo->flush &&
 		    __kgem_bo_is_busy(&sna->kgem, priv->cpu_bo)) {
 			if (!region_subsumes_pixmap(region, pixmap)) {
+				if (get_drawable_deltas(drawable, pixmap, &dx, &dy))
+					RegionTranslate(region, dx, dy);
+
 				sna_damage_subtract(&priv->cpu_damage, region);
 				if (sna_pixmap_move_to_gpu(pixmap, MOVE_READ | MOVE_ASYNC_HINT)) {
 					sna_pixmap_free_cpu(sna, priv, false);
commit 2ba8d40bf7e4d3e8fa541c001f82aa65f26bed3a
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date:   Sat Feb 1 18:13:04 2014 +0000

    sna: Don't discard the GPU prior to using it for stashing CPU damage
    
    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 7d219a4..1fbbddc 100644
--- a/src/sna/sna_accel.c
+++ b/src/sna/sna_accel.c
@@ -2412,30 +2412,31 @@ sna_drawable_move_region_to_cpu(DrawablePtr drawable,
 	if (sna_damage_is_all(&priv->cpu_damage,
 			      pixmap->drawable.width,
 			      pixmap->drawable.height)) {
+		bool discard_gpu = priv->cpu;
+
 		DBG(("%s: pixmap=%ld all damaged on CPU\n",
 		     __FUNCTION__, pixmap->drawable.serialNumber));
 		assert(!priv->clear);
 
 		sna_damage_destroy(&priv->gpu_damage);
 
-		if (flags & MOVE_WRITE)
-			sna_pixmap_free_gpu(sna, priv);
-
 		if ((flags & MOVE_READ) == 0 &&
 		    priv->cpu_bo && !priv->cpu_bo->flush &&
 		    __kgem_bo_is_busy(&sna->kgem, priv->cpu_bo)) {
 			if (!region_subsumes_pixmap(region, pixmap)) {
-				if (priv->gpu_bo) {
-					sna_damage_subtract(&priv->cpu_damage, region);
-					if (sna_pixmap_move_to_gpu(pixmap, MOVE_READ | MOVE_ASYNC_HINT)) {
-						sna_pixmap_free_cpu(sna, priv, false);
-						sna_damage_add(&priv->cpu_damage, region);
-					}
+				sna_damage_subtract(&priv->cpu_damage, region);
+				if (sna_pixmap_move_to_gpu(pixmap, MOVE_READ | MOVE_ASYNC_HINT)) {
+					sna_pixmap_free_cpu(sna, priv, false);
+					sna_damage_add(&priv->cpu_damage, region);
+					discard_gpu = false;
 				}
 			} else
 				sna_pixmap_free_cpu(sna, priv, false);
 		}
 
+		if (flags & MOVE_WRITE && discard_gpu)
+			sna_pixmap_free_gpu(sna, priv);
+
 		sna_pixmap_unmap(pixmap, priv);
 		assert(priv->mapped == MAPPED_NONE);
 		if (pixmap->devPrivate.ptr == NULL &&
commit 534f19dc5a302828fe60d0f4747ad0dc9617e1a9
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date:   Sat Feb 1 17:56:58 2014 +0000

    sna: Remark the region as damaged after uploading the rest to the GPU
    
    If we upload outside of the replaced region to the GPU, we need to
    remark the region of operation as dirty.
    
    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 f91ca29..7d219a4 100644
--- a/src/sna/sna_accel.c
+++ b/src/sna/sna_accel.c
@@ -2424,17 +2424,15 @@ sna_drawable_move_region_to_cpu(DrawablePtr drawable,
 		if ((flags & MOVE_READ) == 0 &&
 		    priv->cpu_bo && !priv->cpu_bo->flush &&
 		    __kgem_bo_is_busy(&sna->kgem, priv->cpu_bo)) {
-			bool free_cpu = false;
-
 			if (!region_subsumes_pixmap(region, pixmap)) {
 				if (priv->gpu_bo) {
 					sna_damage_subtract(&priv->cpu_damage, region);
-					free_cpu = sna_pixmap_move_to_gpu(pixmap, MOVE_READ | MOVE_ASYNC_HINT);
+					if (sna_pixmap_move_to_gpu(pixmap, MOVE_READ | MOVE_ASYNC_HINT)) {
+						sna_pixmap_free_cpu(sna, priv, false);
+						sna_damage_add(&priv->cpu_damage, region);
+					}
 				}
 			} else
-				free_cpu = true;
-
-			if (free_cpu)
 				sna_pixmap_free_cpu(sna, priv, false);
 		}
 


More information about the xorg-commit mailing list