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