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