[Intel-gfx] [PATCH] xf86-video-intel: deactivate unused CRTCs
Helge Bahmann
helge.bahmann at secunet.com
Thu Dec 15 13:46:28 CET 2011
Hi everyone,
would you mind putting something along the following into xf86-video-intel?
Thanks!
Helge Bahmann
---
Deactivate unused CRTCs
Have intel_crtc_dpms actually do something and deactivate CRTCs
on demand. This allows the X-Server to actually deactivate all
unused CRTCs, avoiding the following bug scenario:
- boot system with only internal LVDS display
- start X
- attach external display
- use xrandr to turn off internal LVDS, and turn on external display
- switch to console
- switch back to X
- use xrandr to turn off external display, turn an internal LVDS
At this point X believes that internal LVDS is active, when in fact it is not
displaying any image. The root cause appears to be that X and kernel disagree
on CRTC states.
This problem is verifiable on some notebooks (e.g. ThinkPad T400) but not all.
I guess this is due to varying crtc selection logic.
---
src/intel_display.c | 10 ++++++++--
1 files changed, 8 insertions(+), 2 deletions(-)
diff --git a/src/intel_display.c b/src/intel_display.c
index b6592c4..f771df8 100644
--- a/src/intel_display.c
+++ b/src/intel_display.c
@@ -324,9 +324,15 @@ mode_to_kmode(ScrnInfoPtr scrn,
}
static void
-intel_crtc_dpms(xf86CrtcPtr intel_crtc, int mode)
+intel_crtc_dpms(xf86CrtcPtr crtc, int mode)
{
-
+ struct intel_crtc *intel_crtc = crtc->driver_private;
+ struct intel_mode *modeset = intel_crtc->mode;
+ if (mode == DPMSModeOff) {
+ drmModeSetCrtc(modeset->fd, crtc_id(intel_crtc),
+ 0, 0, 0, NULL, 0,
+ NULL);
+ }
}
static Bool
--
1.7.2.5
More information about the Intel-gfx
mailing list