xf86-video-intel: src/sna/sna_display.c src/sna/sna.h

Chris Wilson ickle at kemper.freedesktop.org
Thu Apr 7 20:59:13 UTC 2016


 src/sna/sna.h         |    7 ++-----
 src/sna/sna_display.c |   11 ++++++++---
 2 files changed, 10 insertions(+), 8 deletions(-)

New commits:
commit 59d371a9b215fdcd6139279435af7e1f6803309e
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date:   Thu Apr 7 21:55:13 2016 +0100

    sna: Don't limit CRTC id
    
    Don't bake in the assumption that the CRTCs will always be allocated in
    the low byte of the identifiers range. It is only used in a pair of
    other functions (Xv plane updates), so not a big deal.
    
    Reported-by: Mark Kettenis <kettenis at openbsd.org>
    Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>

diff --git a/src/sna/sna.h b/src/sna/sna.h
index c9612b4..664308f 100644
--- a/src/sna/sna.h
+++ b/src/sna/sna.h
@@ -617,6 +617,8 @@ extern bool sna_crtc_is_transformed(xf86CrtcPtr crtc);
 #define CRTC_VBLANK 0x3
 #define CRTC_ON 0x80000000
 
+uint32_t sna_crtc_id(xf86CrtcPtr crtc);
+
 static inline unsigned long *sna_crtc_flags(xf86CrtcPtr crtc)
 {
 	unsigned long *flags = crtc->driver_private;
@@ -629,11 +631,6 @@ static inline unsigned sna_crtc_pipe(xf86CrtcPtr crtc)
 	return *sna_crtc_flags(crtc) >> 8 & 0xff;
 }
 
-static inline unsigned sna_crtc_id(xf86CrtcPtr crtc)
-{
-	return *sna_crtc_flags(crtc) >> 16 & 0xff;
-}
-
 static inline bool sna_crtc_is_on(xf86CrtcPtr crtc)
 {
 	return *sna_crtc_flags(crtc) & CRTC_ON;
diff --git a/src/sna/sna_display.c b/src/sna/sna_display.c
index 6d1d446..dd1466c 100644
--- a/src/sna/sna_display.c
+++ b/src/sna/sna_display.c
@@ -192,6 +192,7 @@ struct sna_cursor {
 
 struct sna_crtc {
 	unsigned long flags;
+	uint32_t id;
 	xf86CrtcPtr base;
 	struct drm_mode_modeinfo kmode;
 	PixmapPtr slave_pixmap;
@@ -414,7 +415,12 @@ static inline unsigned __sna_crtc_pipe(struct sna_crtc *crtc)
 
 static inline unsigned __sna_crtc_id(struct sna_crtc *crtc)
 {
-	return crtc->flags >> 16 & 0xff;
+	return crtc->id;
+}
+
+uint32_t sna_crtc_id(xf86CrtcPtr crtc)
+{
+	return __sna_crtc_id(to_sna_crtc(crtc));
 }
 
 static inline bool event_pending(int fd)
@@ -3260,8 +3266,7 @@ sna_crtc_add(ScrnInfoPtr scrn, unsigned id)
 	if (sna_crtc == NULL)
 		return false;
 
-	assert(id < 256);
-	sna_crtc->flags = id << 16;
+	sna_crtc->id = id;
 
 	VG_CLEAR(get_pipe);
 	get_pipe.pipe = 0;


More information about the xorg-commit mailing list