xf86-video-intel: src/sna/sna_display.c src/sna/sna_driver.c
Chris Wilson
ickle at kemper.freedesktop.org
Tue Jul 2 06:27:29 PDT 2013
src/sna/sna_display.c | 8 ++++++++
src/sna/sna_driver.c | 12 ------------
2 files changed, 8 insertions(+), 12 deletions(-)
New commits:
commit 67a6a4bfd9cd1a861911e76096923bfc652189e2
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date: Tue Jul 2 14:27:03 2013 +0100
sna: Hook into crtc_notify rather than ModeSet
ModeSet is called after updating each CRTC, unlike crtc_notify which is
called after applying all changes. The last is what we need as if we are
called too early we detect that the next CRTC doesn't match our
expectations and so we disable it, right before applying the desired
mode.
References: https://bugs.freedesktop.org/show_bug.cgi?id=66494
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 27dda3e..39d7db5 100644
--- a/src/sna/sna_display.c
+++ b/src/sna/sna_display.c
@@ -3142,6 +3142,13 @@ static bool sna_probe_initial_configuration(struct sna *sna)
return scrn->modes != NULL;
}
+static void
+sna_crtc_config_notify(ScreenPtr screen)
+{
+ DBG(("%s\n", __FUNCTION__));
+ sna_mode_update(to_sna_from_screen(screen));
+}
+
bool sna_mode_pre_init(ScrnInfoPtr scrn, struct sna *sna)
{
struct sna_mode *mode = &sna->mode;
@@ -3150,6 +3157,7 @@ bool sna_mode_pre_init(ScrnInfoPtr scrn, struct sna *sna)
mode->kmode = drmModeGetResources(sna->kgem.fd);
if (mode->kmode) {
xf86CrtcConfigInit(scrn, &sna_mode_funcs);
+ XF86_CRTC_CONFIG_PTR(sna->scrn)->xf86_crtc_notify = sna_crtc_config_notify;
for (i = 0; i < mode->kmode->count_crtcs; i++)
if (!sna_crtc_init(scrn, mode, i))
diff --git a/src/sna/sna_driver.c b/src/sna/sna_driver.c
index 7092edc..ca41e7e 100644
--- a/src/sna/sna_driver.c
+++ b/src/sna/sna_driver.c
@@ -781,14 +781,6 @@ static Bool sna_late_close_screen(CLOSE_SCREEN_ARGS_DECL)
return TRUE;
}
-static void sna_mode_set(ScrnInfoPtr scrn)
-{
- struct sna *sna = to_sna(scrn);
-
- DBG(("%s\n", __FUNCTION__));
- sna_mode_update(sna);
-}
-
static Bool
sna_register_all_privates(void)
{
@@ -1129,10 +1121,6 @@ Bool sna_init_scrn(ScrnInfoPtr scrn, int entity_num)
scrn->ValidMode = sna_valid_mode;
scrn->PMEvent = sna_pm_event;
-#if XORG_VERSION_CURRENT >= XORG_VERSION_NUMERIC(1,9,99,901,0)
- scrn->ModeSet = sna_mode_set;
-#endif
-
xf86SetEntitySharable(entity_num);
xf86SetEntityInstanceForScreen(scrn, entity_num,
xf86GetNumEntityInstances(entity_num)-1);
More information about the xorg-commit
mailing list