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