xf86-video-intel: 2 commits - src/sna/sna_accel.c src/sna/sna_display.c
Chris Wilson
ickle at kemper.freedesktop.org
Wed Apr 9 01:55:07 PDT 2014
src/sna/sna_accel.c | 15 +++++----------
src/sna/sna_display.c | 41 ++++++++++++++++++++++++++++++++---------
2 files changed, 37 insertions(+), 19 deletions(-)
New commits:
commit 9f40d7e91281b74df43f49885472ee352ea4b389
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date: Tue Apr 8 18:28:46 2014 +0100
sna: Fix build for older Xorg without OsBlockSIGIO support
OsBlockSIGIO/OsReleaseSIGIO was only introduced in xorg-server-1.13.0,
so we need a compat layer.
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 e1814f7..664d42c 100644
--- a/src/sna/sna_display.c
+++ b/src/sna/sna_display.c
@@ -3238,16 +3238,39 @@ sna_realize_cursor(xf86CursorInfoPtr info, CursorPtr cursor)
return NULL;
}
+#if XORG_VERSION_CURRENT >= XORG_VERSION_NUMERIC(1,12,99,901,0)
+static inline int sigio_block(void)
+{
+ OsBlockSIGIO();
+ return 0;
+}
+static inline void sigio_unblock(int was_blocked)
+{
+ OsReleaseSIGIO();
+ (void)was_blocked;
+}
+#else
+#include <xf86_OSproc.h>
+static inline int sigio_block(void)
+{
+ return xf86BlockSIGIO();
+}
+static inline void sigio_unblock(int was_blocked)
+{
+ xf86UnblockSIGIO(was_blocked);
+}
+#endif
+
static void
sna_show_cursors(ScrnInfoPtr scrn)
{
xf86CrtcConfigPtr xf86_config = XF86_CRTC_CONFIG_PTR(scrn);
struct sna *sna = to_sna(scrn);
- int c;
+ int sigio, c;
__DBG(("%s\n", __FUNCTION__));
- OsBlockSIGIO();
+ sigio = sigio_block();
for (c = 0; c < xf86_config->num_crtc; c++) {
xf86CrtcPtr crtc = xf86_config->crtc[c];
struct sna_crtc *sna_crtc = to_sna_crtc(crtc);
@@ -3282,7 +3305,7 @@ sna_show_cursors(ScrnInfoPtr scrn)
if (drmIoctl(sna->kgem.fd, DRM_IOCTL_MODE_CURSOR, &arg) == 0)
sna_crtc->cursor = cursor;
}
- OsReleaseSIGIO();
+ sigio_unblock(sigio);
}
static void
@@ -3311,11 +3334,11 @@ sna_hide_cursors(ScrnInfoPtr scrn)
{
xf86CrtcConfigPtr xf86_config = XF86_CRTC_CONFIG_PTR(scrn);
struct sna *sna = to_sna(scrn);
- int c;
+ int sigio, c;
__DBG(("%s\n", __FUNCTION__));
- OsBlockSIGIO();
+ sigio = sigio_block();
for (c = 0; c < xf86_config->num_crtc; c++) {
xf86CrtcPtr crtc = xf86_config->crtc[c];
struct sna_crtc *sna_crtc = to_sna_crtc(crtc);
@@ -3346,7 +3369,7 @@ sna_hide_cursors(ScrnInfoPtr scrn)
gem_close(sna->kgem.fd, cursor->handle);
free(cursor);
}
- OsReleaseSIGIO();
+ sigio_unblock(sigio);
}
static void
@@ -3354,11 +3377,11 @@ sna_set_cursor_position(ScrnInfoPtr scrn, int x, int y)
{
xf86CrtcConfigPtr xf86_config = XF86_CRTC_CONFIG_PTR(scrn);
struct sna *sna = to_sna(scrn);
- int c;
+ int sigio, c;
__DBG(("%s(%d, %d)\n", __FUNCTION__, x, y));
- OsBlockSIGIO();
+ sigio = sigio_block();
sna->cursor.last_x = x;
sna->cursor.last_y = y;
@@ -3435,7 +3458,7 @@ disable:
drmIoctl(sna->kgem.fd, DRM_IOCTL_MODE_CURSOR, &arg) == 0)
sna_crtc->cursor = cursor;
}
- OsReleaseSIGIO();
+ sigio_unblock(sigio);
}
static void
commit 5db8717b8d9f089412b9a7529725c9c41e3e44fb
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date: Tue Apr 8 18:00:47 2014 +0100
sna: Refactor 3 similar CPU migration promotion checks into one
References: https://bugs.freedesktop.org/show_bug.cgi?id=77178
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 55eef79..8abfdd0 100644
--- a/src/sna/sna_accel.c
+++ b/src/sna/sna_accel.c
@@ -2500,16 +2500,11 @@ sna_drawable_move_region_to_cpu(DrawablePtr drawable,
flags |= MOVE_INPLACE_HINT;
}
- if ((flags & (MOVE_WHOLE_HINT | MOVE_READ)) == (MOVE_WHOLE_HINT | MOVE_READ))
- return _sna_pixmap_move_to_cpu(pixmap, flags);
-
- if (flags & MOVE_WHOLE_HINT && priv->gpu_damage == NULL && priv->cpu_damage == NULL)
- return _sna_pixmap_move_to_cpu(pixmap, flags);
-
- if (priv->gpu_damage == NULL &&
- (priv->create & KGEM_CAN_CREATE_GPU) == 0 &&
- flags & MOVE_WRITE)
- return _sna_pixmap_move_to_cpu(pixmap, flags);
+ if (flags & MOVE_READ || (priv->gpu_damage == NULL && priv->cpu_damage == NULL)) {
+ if (flags & MOVE_WHOLE_HINT ||
+ (flags & MOVE_WRITE && (priv->create & KGEM_CAN_CREATE_GPU) == 0))
+ return _sna_pixmap_move_to_cpu(pixmap, flags);
+ }
if (get_drawable_deltas(drawable, pixmap, &dx, &dy)) {
DBG(("%s: delta=(%d, %d)\n", __FUNCTION__, dx, dy));
More information about the xorg-commit
mailing list