xf86-video-intel: 3 commits - src/sna/sna_display.c

Chris Wilson ickle at kemper.freedesktop.org
Fri Mar 28 02:02:13 PDT 2014


 src/sna/sna_display.c |   26 ++++++++++++++++++--------
 1 file changed, 18 insertions(+), 8 deletions(-)

New commits:
commit 929ac66558be96a039eadd8604d444598259a0aa
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date:   Fri Mar 28 08:48:06 2014 +0000

    sna: Cursors are invariant
    
    Once created, a Cursor has a fixed size and content, so avoid upload
    unnecessarily.
    
    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 8c9f184..b850a09 100644
--- a/src/sna/sna_display.c
+++ b/src/sna/sna_display.c
@@ -3435,6 +3435,10 @@ sna_use_hw_cursor(ScreenPtr screen, CursorPtr cursor)
 {
 	struct sna *sna = to_sna_from_screen(screen);
 
+	/* cursors are invariant */
+	if (cursor == sna->cursor.ref)
+		return TRUE;
+
 	cursor->refcnt++;
 	if (sna->cursor.ref)
 		FreeCursor(sna->cursor.ref, None);
commit 26cc3cec982d316b8fe1700eae885ae2767c0110
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date:   Fri Mar 28 08:40:47 2014 +0000

    sna: drmGetCap is too recent for our supported versions of libdrm
    
    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 8b09991..8c9f184 100644
--- a/src/sna/sna_display.c
+++ b/src/sna/sna_display.c
@@ -3454,19 +3454,25 @@ sna_use_hw_cursor(ScreenPtr screen, CursorPtr cursor)
 static void
 sna_cursor_pre_init(struct sna *sna)
 {
-	uint64_t value;
+	struct local_get_cap {
+		uint64_t name;
+		uint64_t value;
+	} cap;
 
-#define DRM_CAP_CURSOR_WIDTH 8
-#define DRM_CAP_CURSOR_HEIGHT 9
+#define LOCAL_IOCTL_GET_CAP	DRM_IOWR(0x0c, struct local_get_cap)
+#define DRM_CAP_CURSOR_WIDTH	8
+#define DRM_CAP_CURSOR_HEIGHT	9
 
 	sna->cursor.max_width = SNA_CURSOR_X;
 	sna->cursor.max_height = SNA_CURSOR_Y;
 
-	if (drmGetCap(sna->kgem.fd, DRM_CAP_CURSOR_WIDTH, &value) == 0)
-		sna->cursor.max_width = value;
+	cap.name = DRM_CAP_CURSOR_WIDTH;
+	if (drmIoctl(sna->kgem.fd, LOCAL_IOCTL_GET_CAP, &cap) == 0)
+		sna->cursor.max_width = cap.value;
 
-	if (drmGetCap(sna->kgem.fd, DRM_CAP_CURSOR_HEIGHT, &value) == 0)
-		sna->cursor.max_height = value;
+	cap.name = DRM_CAP_CURSOR_HEIGHT;
+	if (drmIoctl(sna->kgem.fd, LOCAL_IOCTL_GET_CAP, &cap) == 0)
+		sna->cursor.max_height = cap.value;
 
 	xf86DrvMsg(sna->scrn->scrnIndex, X_PROBED,
 		   "Using a maximum size of %dx%d for hardware cursors\n",
commit 78805163c5f8a40a649c973ab2a08b682879f16d
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date:   Fri Mar 28 08:45:39 2014 +0000

    sna: RefCursor is too recent
    
    Replace RefCursor with the simple refcnt manipulation for compilation
    against older stacks.
    
    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 0eac267..8b09991 100644
--- a/src/sna/sna_display.c
+++ b/src/sna/sna_display.c
@@ -3435,7 +3435,7 @@ sna_use_hw_cursor(ScreenPtr screen, CursorPtr cursor)
 {
 	struct sna *sna = to_sna_from_screen(screen);
 
-	cursor = RefCursor(cursor);
+	cursor->refcnt++;
 	if (sna->cursor.ref)
 		FreeCursor(sna->cursor.ref, None);
 	sna->cursor.ref = cursor;


More information about the xorg-commit mailing list