xf86-video-intel: 4 commits - src/sna/gen6_common.h src/sna/kgem.c src/sna/sna_display.c src/sna/sna_driver.c src/sna/xassert.h

Chris Wilson ickle at kemper.freedesktop.org
Fri Mar 13 08:55:10 PDT 2015


 src/sna/gen6_common.h |    2 +-
 src/sna/kgem.c        |    2 +-
 src/sna/sna_display.c |   13 +++++++++----
 src/sna/sna_driver.c  |    6 ++----
 src/sna/xassert.h     |   11 +++++++++++
 5 files changed, 24 insertions(+), 10 deletions(-)

New commits:
commit 66cb6c23d110300fff0235fd07408362e8491339
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date:   Fri Mar 13 15:44:44 2015 +0000

    sna: Start demoting some assertions
    
    A few assertions are there to catch less desirable behaviour rather than
    outright errors. For these, just grab the backtrace and continue.
    
    Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>

diff --git a/src/sna/kgem.c b/src/sna/kgem.c
index d75822f..11f0828 100644
--- a/src/sna/kgem.c
+++ b/src/sna/kgem.c
@@ -6261,8 +6261,8 @@ static void *__kgem_bo_map__gtt_or_wc(struct kgem *kgem, struct kgem_bo *bo)
 	kgem_trim_vma_cache(kgem, MAP_GTT, bucket(bo));
 
 	if (bo->tiling || !kgem->has_wc_mmap) {
-		assert(num_pages(bo) <= kgem->aperture_mappable / 2);
 		assert(kgem->gen != 021 || bo->tiling != I915_TILING_Y);
+		warn_unless(num_pages(bo) <= kgem->aperture_mappable / 2);
 
 		ptr = bo->map__gtt;
 		if (ptr == NULL)
diff --git a/src/sna/xassert.h b/src/sna/xassert.h
index 1bcfd08..bac70b8 100644
--- a/src/sna/xassert.h
+++ b/src/sna/xassert.h
@@ -43,6 +43,17 @@
 	xorg_backtrace(); \
 	FatalError("%s:%d assertion '%s' failed\n", __func__, __LINE__, #E); \
 } while (0)
+
+#define warn_unless(E) do if (unlikely(!(E))) { \
+	static int __warn_once__; \
+	if (!__warn_once__) { \
+		xorg_backtrace(); \
+		ErrorF("%s:%d assertion '%s' failed\n", __func__, __LINE__, #E); \
+		__warn_once__ = 1; \
+	} \
+} while (0)
+#else
+#define warn_unless(E)
 #endif
 
 #endif /* __XASSERT_H__ */
commit 7863efebf5bee0dbdad55e5402e02413e26f7a4f
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date:   Fri Mar 13 15:21:47 2015 +0000

    sna/gen6+: Relax assertions in light of !semaphores
    
    Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>

diff --git a/src/sna/gen6_common.h b/src/sna/gen6_common.h
index b619714..bfdd66f 100644
--- a/src/sna/gen6_common.h
+++ b/src/sna/gen6_common.h
@@ -125,7 +125,7 @@ prefer_blt_ring(struct sna *sna, struct kgem_bo *bo, unsigned flags)
 		return PREFER_RENDER < 0;
 
 	assert(!force_blt_ring(sna));
-	assert(!kgem_bo_is_render(bo));
+	assert(!kgem_bo_is_render(bo) || NO_RING_SWITCH(sna));
 
 	if (kgem_bo_is_blt(bo))
 		return true;
commit 359f12312ece78333162eb8fd191968a4b0030b6
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date:   Fri Mar 13 15:21:26 2015 +0000

    sna: Fix assertions for transformed cursors
    
    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 2ddbf6d..663853f 100644
--- a/src/sna/sna_display.c
+++ b/src/sna/sna_display.c
@@ -4854,8 +4854,8 @@ static struct sna_cursor *__sna_get_cursor(struct sna *sna, xf86CrtcPtr crtc)
 	       cursor ? cursor->serial : 0,
 	       sna->cursor.serial));
 	if (cursor && cursor->serial == sna->cursor.serial) {
-		assert(cursor->size == sna->cursor.size);
-		assert(cursor->rotation == crtc->transform_in_use ? crtc->rotation : RR_Rotate_0);
+		assert(cursor->size == sna->cursor.size || cursor->transformed);
+		assert(cursor->rotation == (!to_sna_crtc(crtc)->cursor_transform && crtc->transform_in_use) ? crtc->rotation : RR_Rotate_0);
 		assert(cursor->ref);
 		return cursor;
 	}
@@ -4868,7 +4868,7 @@ static struct sna_cursor *__sna_get_cursor(struct sna *sna, xf86CrtcPtr crtc)
 	       get_cursor_argb(sna->cursor.ref) != NULL));
 
 	transformed = to_sna_crtc(crtc)->cursor_transform;
-	rotation = !transformed && crtc->transform_in_use ? crtc->rotation : RR_Rotate_0;
+	rotation = (!transformed && crtc->transform_in_use) ? crtc->rotation : RR_Rotate_0;
 
 	/* Don't allow phys cursor sharing */
 	if (sna->cursor.use_gtt && !transformed) {
commit c2381ac065e0d7fc39ae029045eda54b36766324
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date:   Fri Mar 13 14:39:56 2015 +0000

    sna: Remove redundant RRGetInfo on hotplug discovery
    
    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 fae91d7..2ddbf6d 100644
--- a/src/sna/sna_display.c
+++ b/src/sna/sna_display.c
@@ -4460,8 +4460,11 @@ void sna_mode_discover(struct sna *sna)
 			continue;
 
 		sna_output->last_detect = 0;
-		if (sna_output->serial == serial)
+		if (sna_output->serial == serial) {
+			if (sna_output_detect(output) != output->status)
+				RROutputChanged(output->randr_output, TRUE);
 			continue;
+		}
 
 		DBG(("%s: removing output %s (id=%d), serial=%u [now %u]\n",
 		     __FUNCTION__, output->name, sna_output->id,
@@ -4496,6 +4499,8 @@ void sna_mode_discover(struct sna *sna)
 
 		xf86RandR12TellChanged(screen);
 	}
+
+	RRTellChanged(screen);
 }
 
 static void copy_front(struct sna *sna, PixmapPtr old, PixmapPtr new)
diff --git a/src/sna/sna_driver.c b/src/sna/sna_driver.c
index ab9ce04..5092bfb 100644
--- a/src/sna/sna_driver.c
+++ b/src/sna/sna_driver.c
@@ -770,7 +770,6 @@ sna_handle_uevents(int fd, void *closure)
 		if (scrn->vtSema) {
 			sna_mode_discover(sna);
 			sna_mode_check(sna);
-			RRGetInfo(xf86ScrnToScreen(scrn), TRUE);
 		} else
 			sna->flags |= SNA_REPROBE;
 	}
@@ -1206,12 +1205,11 @@ static Bool sna_enter_vt(VT_FUNC_ARGS_DECL)
 		return FALSE;
 
 	if (sna->flags & SNA_REPROBE) {
-		DBG(("%s: reporting deferred hotplug event\n",
-		     __FUNCTION__));
+		DBG(("%s: reporting deferred hotplug event\n", __FUNCTION__));
 		sna_mode_discover(sna);
-		RRGetInfo(xf86ScrnToScreen(scrn), TRUE);
 		sna->flags &= ~SNA_REPROBE;
 	}
+	sna_mode_check(sna);
 
 	if (!sna_set_desired_mode(sna)) {
 		intel_put_master(sna->dev);


More information about the xorg-commit mailing list