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

Chris Wilson ickle at kemper.freedesktop.org
Fri Sep 7 08:59:10 PDT 2012


 src/sna/sna_accel.c   |    9 ++++++++-
 src/sna/sna_display.c |   36 ++++++++++++++++++------------------
 2 files changed, 26 insertions(+), 19 deletions(-)

New commits:
commit 2de7d2d8150d648815feb74a3ae2239b908b971e
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date:   Fri Sep 7 16:56:33 2012 +0100

    sna/prime: Fixup attaching the randr14 scanout pixmap
    
    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 6baa37c..792d007 100644
--- a/src/sna/sna_accel.c
+++ b/src/sna/sna_accel.c
@@ -1020,7 +1020,11 @@ sna_set_shared_pixmap_backing(PixmapPtr pixmap, void *fd_handle)
 	struct sna_pixmap *priv;
 	struct kgem_bo *bo;
 
-	DBG(("%s: pixmap=%ld\n", __FUNCTION__, pixmap->drawable.serialNumber));
+	DBG(("%s: pixmap=%ld, size=%dx%d, depth=%d/%d, stride=%d\n",
+	     __FUNCTION__, pixmap->drawable.serialNumber,
+	     pixmap->drawable.width, pixmap->drawable.height,
+	     pixmap->drawable.depth, pixmap->drawable.bitsPerPixel,
+	     pixmap->devKind));
 
 	priv = sna_pixmap(pixmap);
 	if (priv == NULL)
@@ -13691,6 +13695,9 @@ static struct sna_pixmap *sna_accel_scanout(struct sna *sna)
 	if (sna->vblank_interval == 0)
 		return NULL;
 
+	if (sna->front == NULL)
+		return NULL;
+
 	priv = sna_pixmap(sna->front);
 	return priv && priv->gpu_bo ? priv : NULL;
 }
diff --git a/src/sna/sna_display.c b/src/sna/sna_display.c
index ff24ed3..beafb3b 100644
--- a/src/sna/sna_display.c
+++ b/src/sna/sna_display.c
@@ -569,7 +569,6 @@ sna_crtc_apply(xf86CrtcPtr crtc)
 	arg.crtc_id = sna_crtc->id;
 	arg.fb_id = fb_id(sna_crtc->bo);
 	if (sna_crtc->transform) {
-		assert(sna_crtc->shadow);
 		arg.x = 0;
 		arg.y = 0;
 	} else {
@@ -714,6 +713,9 @@ static void update_flush_interval(struct sna *sna)
 			continue;
 		}
 
+		DBG(("%s: CRTC:%d (pipe %d) vrefresh=%d\n",
+		     __FUNCTION__,i, to_sna_crtc(crtc)->pipe,
+		     xf86ModeVRefresh(&crtc->mode)));
 		max_vrefresh = max(max_vrefresh, xf86ModeVRefresh(&crtc->mode));
 	}
 
@@ -942,7 +944,21 @@ static struct kgem_bo *sna_crtc_attach(xf86CrtcPtr crtc)
 	struct kgem_bo *bo;
 
 	sna_crtc->transform = false;
-	if (use_shadow(sna, crtc)) {
+	if (sna_crtc->scanout_pixmap) {
+		DBG(("%s: attaching to scanout pixmap\n", __FUNCTION__));
+
+		bo = sna_pixmap_pin(sna_crtc->scanout_pixmap, PIN_SCANOUT);
+		if (bo == NULL)
+			return NULL;
+
+		if (!get_fb(sna, bo,
+			    sna_crtc->scanout_pixmap->drawable.width,
+			    sna_crtc->scanout_pixmap->drawable.height))
+			return NULL;
+
+		sna_crtc->transform = true;
+		return kgem_bo_reference(bo);
+	} else if (use_shadow(sna, crtc)) {
 		if (!sna_crtc_enable_shadow(sna, sna_crtc))
 			return NULL;
 
@@ -963,22 +979,6 @@ static struct kgem_bo *sna_crtc_attach(xf86CrtcPtr crtc)
 
 		sna_crtc->transform = true;
 		return bo;
-	} else if (sna_crtc->scanout_pixmap) {
-		DBG(("%s: attaching to scanout pixmap\n", __FUNCTION__));
-		if (!sna_crtc_enable_shadow(sna, sna_crtc))
-			return NULL;
-
-		bo = sna_pixmap_pin(sna_crtc->scanout_pixmap, PIN_SCANOUT);
-		if (bo == NULL)
-			return NULL;
-
-		if (!get_fb(sna, bo,
-			    sna_crtc->scanout_pixmap->drawable.width,
-			    sna_crtc->scanout_pixmap->drawable.height))
-			return NULL;
-
-		sna_crtc->transform = true;
-		return kgem_bo_reference(bo);
 	} else if (sna->flags & SNA_TEAR_FREE) {
 		DBG(("%s: tear-free updates requested\n", __FUNCTION__));
 


More information about the xorg-commit mailing list