On Thu, Feb 22, 2018 at 11:42 AM, Michel Dänzer <michel at daenzer.net> wrote: > From: Michel Dänzer <michel.daenzer at amd.com> > > This might avoid modeset failures in some cases where a CRTC which isn't > used by Xorg was enabled before. > > (Ported from amdgpu commit e3aae7a24296f640c0153d1459f3e0820485468a) > > Signed-off-by: Michel Dänzer <michel.daenzer at amd.com> Reviewed-by: Alex Deucher <alexander.deucher at amd.com> > --- > src/drmmode_display.c | 33 +++++++++++++++++++++------------ > 1 file changed, 21 insertions(+), 12 deletions(-) > > diff --git a/src/drmmode_display.c b/src/drmmode_display.c > index 517ec8fbe..d8bb9cc9a 100644 > --- a/src/drmmode_display.c > +++ b/src/drmmode_display.c > @@ -2720,24 +2720,33 @@ Bool drmmode_set_desired_modes(ScrnInfoPtr pScrn, drmmode_ptr drmmode, > unsigned num_desired = 0, num_on = 0; > int c; > > + /* First, disable all unused CRTCs */ > + if (set_hw) { > + for (c = 0; c < config->num_crtc; c++) { > + xf86CrtcPtr crtc = config->crtc[c]; > + drmmode_crtc_private_ptr drmmode_crtc = crtc->driver_private; > + > + /* Skip disabled CRTCs */ > + if (crtc->enabled) > + continue; > + > + drmmode_do_crtc_dpms(crtc, DPMSModeOff); > + drmModeSetCrtc(pRADEONEnt->fd, > + drmmode_crtc->mode_crtc->crtc_id, > + 0, 0, 0, NULL, 0, NULL); > + drmmode_fb_reference(pRADEONEnt->fd, > + &drmmode_crtc->fb, NULL); > + } > + } > + > + /* Then, try setting the chosen mode on each CRTC */ > for (c = 0; c < config->num_crtc; c++) { > xf86CrtcPtr crtc = config->crtc[c]; > - drmmode_crtc_private_ptr drmmode_crtc = crtc->driver_private; > xf86OutputPtr output = NULL; > int o; > > - /* Skip disabled CRTCs */ > - if (!crtc->enabled) { > - if (set_hw) { > - drmmode_do_crtc_dpms(crtc, DPMSModeOff); > - drmModeSetCrtc(pRADEONEnt->fd, > - drmmode_crtc->mode_crtc->crtc_id, > - 0, 0, 0, NULL, 0, NULL); > - drmmode_fb_reference(pRADEONEnt->fd, > - &drmmode_crtc->fb, NULL); > - } > + if (!crtc->enabled) > continue; > - } > > if (config->output[config->compat_output]->crtc == crtc) > output = config->output[config->compat_output]; > -- > 2.16.1 > > _______________________________________________ > amd-gfx mailing list > amd-gfx at lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/amd-gfx