2015-06-22 12:01 GMT+02:00 Piotr Redlewski <[email protected]>: > > > 2015-06-22 9:49 GMT+02:00 Michel Dänzer <[email protected]>: > >> On 21.06.2015 23:30, Piotr Redlewski wrote: >> > When turning the outputs off (DPMSModeOff), CRTCs stayed enabled. This >> led >> > to higher card temperatures than with fglrx driver. >> > >> > Signed-off-by: Piotr Redlewski <[email protected]> >> > --- >> > src/drmmode_display.c | 9 ++++++++- >> > 1 file changed, 8 insertions(+), 1 deletion(-) >> > >> > diff --git a/src/drmmode_display.c b/src/drmmode_display.c >> > index 3564853..04b4341 100644 >> > --- a/src/drmmode_display.c >> > +++ b/src/drmmode_display.c >> > @@ -342,7 +342,14 @@ drmmode_do_crtc_dpms(xf86CrtcPtr crtc, int mode) >> > static void >> > >> >> drmmode_crtc_dpms(xf86CrtcPtr crtc, int mode) >> > { >> > - /* Nothing to do. drmmode_do_crtc_dpms() is called as appropriate >> */ >> > + drmmode_crtc_private_ptr drmmode_crtc = crtc->driver_private; >> > + drmmode_ptr drmmode = drmmode_crtc->drmmode; >> > + >> > + /* Disable unused CRTCs */ >> > + if (!crtc->enabled && mode != DPMSModeOn) { >> >> Maybe this should be >> >> if (!crtc->enabled || mode != DPMSModeOn) { >> >> or can it actually happen that >> >> !crtc->enabled and mode == DPMSModeOn? >> >> Just wanted to be safe here, but I think you are right. I'll send v2 > later today. > > I wanted to test changes before sending v2 and I stumbled on one issue. Everything works as expected when xrandr is used, but problem starts when screensaver comes into play. X calls drmmode_crtc_dpms() to on/off screensaver, so when it is supposed to be enabled, function is called with mode=DPMSModeOff and we call drmModeSetCrtc() to set crtc's mode to NULL. Problem is when X wants to disable screensaver: drmmode_crtc_dpms() is called with mode=DPMSModeOn and... nothing happens as there is no logic for this scenario - we should call drmModeSetCrtc() to set valid mode, but we don't know what this mode should be. Effect is that we are stuck with blanked output.
Because of the situation with the screensaver I think that original version of the patch is ok (it solves the problem with CRTC staying enabled when using xrandr to disable the output). > >> > + drmModeSetCrtc(drmmode->fd, >> drmmode_crtc->mode_crtc->crtc_id, >> > + 0, 0, 0, NULL, 0, NULL); >> > + } >> > } >> > >> > static PixmapPtr >> > >> >> Other than that, looks good to me. >> >> >> -- >> Earthling Michel Dänzer | http://www.amd.com >> Libre software enthusiast | Mesa and X developer >> >> >
_______________________________________________ xorg-driver-ati mailing list [email protected] http://lists.x.org/mailman/listinfo/xorg-driver-ati
