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

Chris Wilson ickle at kemper.freedesktop.org
Wed Jan 30 13:41:07 PST 2013


 src/sna/sna_accel.c |    6 +++++-
 src/sna/sna_dri.c   |    9 +++++++--
 2 files changed, 12 insertions(+), 3 deletions(-)

New commits:
commit c2d06c407e1c2cbbf3f7f6c4989710a799cd43d0
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date:   Wed Jan 30 21:17:42 2013 +0000

    sna: Improve DBG output for damaged slave outputs
    
    After computing the intersection of the damage with the slave, give the
    region extents.
    
    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 58d8c19..d34a4f9 100644
--- a/src/sna/sna_accel.c
+++ b/src/sna/sna_accel.c
@@ -1019,7 +1019,6 @@ sna_share_pixmap_backing(PixmapPtr pixmap, ScreenPtr slave, void **fd_handle)
 	assert((priv->gpu_bo->pitch & 255) == 0);
 
 	/* And export the bo->pitch via pixmap->devKind */
-	assert(!priv->mapped);
 	pixmap->devPrivate.ptr = kgem_bo_map__async(&sna->kgem, priv->gpu_bo);
 	if (pixmap->devPrivate.ptr == NULL)
 		return FALSE;
@@ -13819,6 +13818,11 @@ static void sna_accel_post_damage(struct sna *sna)
 		RegionTranslate(&region, -dirty->x, -dirty->y);
 		DamageRegionAppend(&dirty->slave_dst->drawable, &region);
 
+		DBG(("%s: slave:  ((%d, %d), (%d, %d))x%d\n", __FUNCTION__,
+		     region.extents.x1, region.extents.y1,
+		     region.extents.x2, region.extents.y2,
+		     RegionNumRects(&region.extents)));
+
 		box = REGION_RECTS(&region);
 		n = REGION_NUM_RECTS(&region);
 		if (wedged(sna)) {
commit 8867aa6a46c33fd2abf3b3f0b1d6115bad6c8017
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date:   Wed Jan 30 21:15:55 2013 +0000

    sna/dri: Handle change of BackBuffer across a pending flip
    
    If we encounter a delayed flip with a different back buffer than the
    current, simply update the info rather than bug out.
    
    Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>

diff --git a/src/sna/sna_dri.c b/src/sna/sna_dri.c
index e33cd78..f951d13 100644
--- a/src/sna/sna_dri.c
+++ b/src/sna/sna_dri.c
@@ -1862,10 +1862,15 @@ sna_dri_schedule_flip(ClientPtr client, DrawablePtr draw,
 		DBG(("%s: performing immediate swap on pipe %d, pending? %d, mode: %d\n",
 		     __FUNCTION__, pipe, info != NULL, info ? info->mode : 0));
 
-		if (info && info->draw == draw) {
+		if (info &&
+		    info->draw == draw) {
 			assert(info->type == DRI2_FLIP_THROTTLE);
 			assert(info->front == front);
-			assert(info->back == back);
+			if (info->back != back) {
+				_sna_dri_destroy_buffer(sna, info->back);
+				info->back = back;
+				sna_dri_reference_buffer(back);
+			}
 			if (current_msc >= *target_msc) {
 				DBG(("%s: executing xchg of pending flip\n",
 				     __FUNCTION__));


More information about the xorg-commit mailing list