xf86-video-intel: 3 commits - src/sna/kgem.c src/sna/sna_display.c src/sna/sna_driver.c

Chris Wilson ickle at kemper.freedesktop.org
Tue Mar 5 03:15:19 PST 2013


 src/sna/kgem.c        |    2 +-
 src/sna/sna_display.c |   16 +++++++++++++++-
 src/sna/sna_driver.c  |    8 +++-----
 3 files changed, 19 insertions(+), 7 deletions(-)

New commits:
commit 60ec35b8d25ecfabf1744ea7bc81109d7f2a90e2
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date:   Tue Mar 5 11:14:37 2013 +0000

    sna: Be explicit when checking for an idle bo after CPU synchronisation
    
    Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>

diff --git a/src/sna/kgem.c b/src/sna/kgem.c
index 324df6d..16f60bb 100644
--- a/src/sna/kgem.c
+++ b/src/sna/kgem.c
@@ -4793,7 +4793,7 @@ void kgem_bo_sync__cpu_full(struct kgem *kgem, struct kgem_bo *bo, bool write)
 		set_domain.write_domain = write ? I915_GEM_DOMAIN_CPU : 0;
 
 		if (drmIoctl(kgem->fd, DRM_IOCTL_I915_GEM_SET_DOMAIN, &set_domain) == 0) {
-			if (write || bo->needs_flush)
+			if (bo->exec == NULL)
 				kgem_bo_retire(kgem, bo);
 			bo->domain = write ? DOMAIN_CPU : DOMAIN_NONE;
 		}
commit ad4901a0354efaed65bb15ef33561df067d300b7
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date:   Tue Mar 5 09:23:07 2013 +0000

    sna: Ensure that the tearfree swap is unmapped afterwards
    
    After swapping the bo for the screen pixmap, we need to make sure that
    we don't chase any dangling pointers.
    
    References: https://bugs.launchpad.net/ubuntu/+source/xserver-xorg-video-intel/+bug/1133490
    Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>

diff --git a/src/sna/sna_display.c b/src/sna/sna_display.c
index b70e055..e54c986 100644
--- a/src/sna/sna_display.c
+++ b/src/sna/sna_display.c
@@ -3278,6 +3278,20 @@ sna_crtc_redisplay(xf86CrtcPtr crtc, RegionPtr region)
 	sna_crtc_redisplay__composite(crtc, region);
 }
 
+static void set_bo(PixmapPtr pixmap, struct kgem_bo *bo)
+{
+	struct sna_pixmap *priv = sna_pixmap(pixmap);
+
+	if (priv->mapped) {
+		assert(!priv->shm && priv->stride);
+		pixmap->devPrivate.ptr = PTR(priv->ptr);
+		pixmap->devKind = priv->stride;
+		priv->mapped = false;
+	}
+
+	priv->gpu_bo = bo;
+}
+
 void sna_mode_redisplay(struct sna *sna)
 {
 	xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR(sna->scrn);
@@ -3406,7 +3420,7 @@ disable:
 						     COPY_LAST);
 			kgem_submit(&sna->kgem);
 
-			sna_pixmap(sna->front)->gpu_bo = old;
+			set_bo(sna->front, old);
 			sna_dri_pixmap_update_bo(sna, sna->front);
 
 			sna->mode.shadow = new;
commit 007a95d62fc998b3a558bb80310c82256d00b0bb
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date:   Mon Mar 4 13:52:04 2013 +0000

    sna: Drop a local variable only used to hold a constant
    
    Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>

diff --git a/src/sna/sna_driver.c b/src/sna/sna_driver.c
index 83cda8c..0458743 100644
--- a/src/sna/sna_driver.c
+++ b/src/sna/sna_driver.c
@@ -489,7 +489,6 @@ static Bool sna_pre_init(ScrnInfoPtr scrn, int flags)
 	rgb defaultWeight = { 0, 0, 0 };
 	EntityInfoPtr pEnt;
 	int preferred_depth;
-	int flags24;
 	Gamma zeros = { 0.0, 0.0, 0.0 };
 	int fd;
 
@@ -544,14 +543,13 @@ static Bool sna_pre_init(ScrnInfoPtr scrn, int flags)
 		return FALSE;
 	}
 
-
-	flags24 = Support32bppFb | PreferConvert24to32 | SupportConvert24to32;
-
 	preferred_depth = sna->info->gen < 030 ? 15 : 24;
 	if (!fb_supports_depth(fd, preferred_depth))
 		preferred_depth = 24;
 
-	if (!xf86SetDepthBpp(scrn, preferred_depth, 0, 0, flags24))
+	if (!xf86SetDepthBpp(scrn, preferred_depth, 0, 0,
+			     Support32bppFb |
+			     SupportConvert24to32 | PreferConvert24to32))
 		return FALSE;
 
 	switch (scrn->depth) {


More information about the xorg-commit mailing list