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

Chris Wilson ickle at kemper.freedesktop.org
Thu Mar 21 15:54:18 PDT 2013


 src/sna/sna_accel.c |    1 +
 src/sna/sna_dri.c   |   24 ++++++++++++++----------
 2 files changed, 15 insertions(+), 10 deletions(-)

New commits:
commit 9f8e86800345d19785eae2dd2099dd7d61a7a3b3
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date:   Thu Mar 21 22:48:06 2013 +0000

    sna/dri: Disable assertion and associated bookkeeping
    
    Due to long standing ignored bugs in DRI2, we have to accept breakage
    in the driver.
    
    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=62614
    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 a2528f6..011b50f 100644
--- a/src/sna/sna_accel.c
+++ b/src/sna/sna_accel.c
@@ -1719,6 +1719,7 @@ skip_inplace_map:
 		if (priv->cpu_bo) {
 			DBG(("%s: syncing CPU bo\n", __FUNCTION__));
 			kgem_bo_sync__cpu(&sna->kgem, priv->cpu_bo);
+			assert(pixmap->devPrivate.ptr == ((unsigned long)priv->cpu_bo->map) & ~3);
 		}
 
 		if (priv->clear_color == 0 || pixmap->drawable.bitsPerPixel == 8) {
diff --git a/src/sna/sna_dri.c b/src/sna/sna_dri.c
index 1a02449..0962e25 100644
--- a/src/sna/sna_dri.c
+++ b/src/sna/sna_dri.c
@@ -872,10 +872,10 @@ sna_dri_copy(struct sna *sna, DrawablePtr draw, RegionPtr region,
 }
 
 static bool
-can_blit(struct sna * sna,
+can_blit(struct sna *sna,
 	 DrawablePtr draw,
-	 DRI2BufferPtr front,
-	 DRI2BufferPtr back)
+	 DRI2BufferPtr dst,
+	 DRI2BufferPtr src)
 {
 	RegionPtr clip;
 	int w, h;
@@ -884,28 +884,34 @@ can_blit(struct sna * sna,
 	if (draw->type == DRAWABLE_PIXMAP)
 		return true;
 
-	if (get_private(front)->pixmap != get_drawable_pixmap(draw)) {
-		DBG(("%s: reject as front pixmap=%ld, but expecting pixmap=%ld\n",
+#if 0
+	if (get_private(dst)->pixmap != get_drawable_pixmap(draw)) {
+		DBG(("%s: reject as dst pixmap=%ld, but expecting pixmap=%ld\n",
 		     __FUNCTION__,
-		     get_private(front)->pixmap ? get_private(front)->pixmap->drawable.serialNumber : 0,
+		     get_private(dst)->pixmap ? get_private(dst)->pixmap->drawable.serialNumber : 0,
 		     get_drawable_pixmap(draw)->drawable.serialNumber));
 		return false;
 	}
 
+	assert(sna_pixmap(get_private(dst)->pixmap)->flush);
+#endif
+	assert(get_private(dst)->bo->flush);
+	assert(get_private(src)->bo->flush);
+
 	clip = &((WindowPtr)draw)->clipList;
 	w = clip->extents.x2 - draw->x;
 	h = clip->extents.y2 - draw->y;
 	if ((w|h) < 0)
 		return false;
 
-	s = get_private(front)->size;
+	s = get_private(dst)->size;
 	if ((s>>16) < h || (s&0xffff) < w) {
 		DBG(("%s: reject front size (%dx%d) < (%dx%d)\n", __func__,
 		       s&0xffff, s>>16, w, h));
 		return false;
 	}
 
-	s = get_private(back)->size;
+	s = get_private(src)->size;
 	if ((s>>16) < h || (s&0xffff) < w) {
 		DBG(("%s:reject back size (%dx%d) < (%dx%d)\n", __func__,
 		     s&0xffff, s>>16, w, h));
@@ -945,8 +951,6 @@ sna_dri_copy_region(DrawablePtr draw,
 	if (!can_blit(sna, draw, dst_buffer, src_buffer))
 		return;
 
-	assert(sna_pixmap(pixmap)->flush);
-
 	if (dst_buffer->attachment == DRI2BufferFrontLeft) {
 		dst = sna_pixmap_get_bo(pixmap);
 		copy = (void *)sna_dri_copy_to_front;


More information about the xorg-commit mailing list