xf86-video-intel: 3 commits - configure.ac src/sna/sna_accel.c src/sna/sna_display.c src/sna/sna_dri.c
Chris Wilson
ickle at kemper.freedesktop.org
Mon Dec 16 03:29:28 PST 2013
configure.ac | 1 +
src/sna/sna_accel.c | 1 -
src/sna/sna_display.c | 1 +
src/sna/sna_dri.c | 20 ++++++++++++++++++++
4 files changed, 22 insertions(+), 1 deletion(-)
New commits:
commit 660fbdac8da1f43749007f126201681023a677e1
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date: Sun Dec 15 10:41:22 2013 +0000
sna: Remove stale assertion
Now that we do not remove the move-to-gpu for a plain read from the
TearFree buffer, it is viable to use that buffer as source for cloning.
So we need to kill the stale assertion.
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 5df49b3..f1be82a 100644
--- a/src/sna/sna_accel.c
+++ b/src/sna/sna_accel.c
@@ -1762,7 +1762,6 @@ sna_pixmap_make_cow(struct sna *sna,
struct sna_cow *cow;
assert(src_priv->gpu_bo);
- assert(src_priv->move_to_gpu == NULL);
if (!USE_COW)
return false;
diff --git a/src/sna/sna_display.c b/src/sna/sna_display.c
index 15e32df..5810dd1 100644
--- a/src/sna/sna_display.c
+++ b/src/sna/sna_display.c
@@ -4357,6 +4357,7 @@ static bool wait_for_shadow(struct sna *sna, struct sna_pixmap *priv, unsigned f
return true;
assert(sna->mode.shadow_active);
+ assert(bo == sna->mode.shadow);
assert(priv->gpu_bo->refcnt >= 1);
sna->mode.shadow = priv->gpu_bo;
commit 989198f3ddc763000702bd1eaeb54002e18a8f04
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date: Sun Dec 15 09:45:24 2013 +0000
intel-virtual-output: Disable build if timerfd is not present
Otherwise the build breaks on *BSD.
Reported-by: Yuta SATOH <nigoro.gentoo at 0x100.com>
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=72707
Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
diff --git a/configure.ac b/configure.ac
index dcb09fb..9eece7a 100644
--- a/configure.ac
+++ b/configure.ac
@@ -184,6 +184,7 @@ PKG_CHECK_MODULES(TOOL, [xinerama xrandr xdamage xfixes xcursor xtst xrender xex
if test "x$tools" = "xyes"; then
AC_CHECK_HEADER([sys/ipc.h], [], [tools=no])
AC_CHECK_HEADER([sys/shm.h], [], [tools=no])
+ AC_CHECK_HEADER([sys/timerfd.h], [], [tools=no])
if test "$ac_cv_header_sys_ipc_h" = "yes" -a "$ac_cv_header_sys_shm_h" = "yes"; then
AC_MSG_CHECKING(whether shmctl IPC_RMID allows subsequent attaches)
commit c8e339edd31859820907115c8d618b0fec3ef227
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date: Sun Dec 15 09:39:54 2013 +0000
sna: Avoid recursive out-of-order operations in the middle of TearFree
During TearFree, if we have to wait for the shadow flip to complete, we
run the event handler for the device. This can then cause us to evaluate
pending completed vblank events, which may in turn then attempt to use
the shadow bo and recurse into the TearFree handler. Try to prevent this
and requeue the vblank event.
Reported-by: Pascal de Bruijn <pmjdebruijn at pcode.nl>
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=72690
Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
diff --git a/src/sna/sna_dri.c b/src/sna/sna_dri.c
index 34d2044..bf970e0 100644
--- a/src/sna/sna_dri.c
+++ b/src/sna/sna_dri.c
@@ -1353,6 +1353,24 @@ void sna_dri_vblank_handler(struct sna *sna, struct drm_event_vblank *event)
if (draw == NULL)
goto done;
+ if (sna->mode.shadow_flip && !sna->mode.shadow_damage) {
+ drmVBlank vbl;
+
+ /* recursed from wait_for_shadow(), simply requeue */
+ VG_CLEAR(vbl);
+ vbl.request.type =
+ DRM_VBLANK_RELATIVE |
+ DRM_VBLANK_EVENT |
+ pipe_select(info->pipe);
+ vbl.request.sequence = 1;
+ vbl.request.signal = (unsigned long)info;
+
+ if (sna_wait_vblank(sna, &vbl))
+ goto done;
+
+ return;
+ }
+
switch (info->type) {
case DRI2_FLIP:
/* If we can still flip... */
@@ -1617,6 +1635,8 @@ static void sna_dri_flip_event(struct sna *sna,
flip->fe_tv_usec,
flip->type));
+ assert(!sna->mode.shadow_flip);
+
if (flip->scanout[1].bo) {
struct dri_bo *c = NULL;
More information about the xorg-commit
mailing list