xf86-video-intel: src/intel_display.c src/sna/sna_display.c
Chris Wilson
ickle at kemper.freedesktop.org
Fri Sep 14 02:03:07 PDT 2012
src/intel_display.c | 9 +++++++--
src/sna/sna_display.c | 9 +++++++--
2 files changed, 14 insertions(+), 4 deletions(-)
New commits:
commit 0fc3d020f3086b5c6ecef1fed1aaedef7aa52b01
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date: Fri Sep 14 09:49:00 2012 +0100
Skip adding unknown special modes
In light of the discussion on how to add stereo modes it was revealed
that we would happily add modes with unknown and unhandled strange
flags. Adam Jackson mentioned that he has plans to fix that with some
upcoming work, but as a first step we can simply eradicate them whilst
pondering how to support the stereoscopic vision of the future.
Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
diff --git a/src/intel_display.c b/src/intel_display.c
index 0372f9f..bf16049 100644
--- a/src/intel_display.c
+++ b/src/intel_display.c
@@ -52,6 +52,8 @@
#include "intel_glamor.h"
+#define KNOWN_MODE_FLAGS ((1<<14)-1)
+
struct intel_mode {
int fd;
uint32_t fb_id;
@@ -316,7 +318,7 @@ mode_from_kmode(ScrnInfoPtr scrn,
mode->VTotal = kmode->vtotal;
mode->VScan = kmode->vscan;
- mode->Flags = kmode->flags; //& FLAG_BITS;
+ mode->Flags = kmode->flags;
mode->name = strdup(kmode->name);
if (kmode->type & DRM_MODE_TYPE_DRIVER)
@@ -324,6 +326,9 @@ mode_from_kmode(ScrnInfoPtr scrn,
if (kmode->type & DRM_MODE_TYPE_PREFERRED)
mode->type |= M_T_PREFERRED;
+ if (mode->status == MODE_OK && kmode->flags & ~KNOWN_MODE_FLAGS)
+ mode->status = MODE_BAD; /* unknown flags => unhandled */
+
xf86SetModeCrtc (mode, scrn->adjustFlags);
}
@@ -347,7 +352,7 @@ mode_to_kmode(ScrnInfoPtr scrn,
kmode->vtotal = mode->VTotal;
kmode->vscan = mode->VScan;
- kmode->flags = mode->Flags; //& FLAG_BITS;
+ kmode->flags = mode->Flags;
if (mode->name)
strncpy(kmode->name, mode->name, DRM_DISPLAY_MODE_LEN);
kmode->name[DRM_DISPLAY_MODE_LEN-1] = 0;
diff --git a/src/sna/sna_display.c b/src/sna/sna_display.c
index a9c5440..36122e2 100644
--- a/src/sna/sna_display.c
+++ b/src/sna/sna_display.c
@@ -51,6 +51,8 @@
#include "intel_options.h"
+#define KNOWN_MODE_FLAGS ((1<<14)-1)
+
#if 0
#define __DBG DBG
#else
@@ -549,7 +551,7 @@ mode_from_kmode(ScrnInfoPtr scrn,
mode->VTotal = kmode->vtotal;
mode->VScan = kmode->vscan;
- mode->Flags = kmode->flags; //& FLAG_BITS;
+ mode->Flags = kmode->flags;
mode->name = strdup(kmode->name);
if (kmode->type & DRM_MODE_TYPE_DRIVER)
@@ -557,6 +559,9 @@ mode_from_kmode(ScrnInfoPtr scrn,
if (kmode->type & DRM_MODE_TYPE_PREFERRED)
mode->type |= M_T_PREFERRED;
+ if (mode->status == MODE_OK && kmode->flags & ~KNOWN_MODE_FLAGS)
+ mode->status = MODE_BAD; /* unknown flags => unhandled */
+
xf86SetModeCrtc (mode, scrn->adjustFlags);
}
@@ -578,7 +583,7 @@ mode_to_kmode(struct drm_mode_modeinfo *kmode, DisplayModePtr mode)
kmode->vtotal = mode->VTotal;
kmode->vscan = mode->VScan;
- kmode->flags = mode->Flags; //& FLAG_BITS;
+ kmode->flags = mode->Flags;
if (mode->name)
strncpy(kmode->name, mode->name, DRM_DISPLAY_MODE_LEN);
kmode->name[DRM_DISPLAY_MODE_LEN-1] = 0;
More information about the xorg-commit
mailing list