mirror of
https://gitlab.freedesktop.org/xorg/xserver.git
synced 2025-12-25 14:10:06 +01:00
hw/xfree86: Require only one working CRTC to start the server.
Instead of requiring every mode set to complete successfully, start up as long as at least one CRTC is working. This avoids failures when one or more CRTCs can't start due to mode setting conflicts. Signed-off-by: Keith Packard <keithp@keithp.com> Reviewed-by: Dave Airlie <airlied@redhat.com>
This commit is contained in:
parent
8b328d4ee3
commit
6703a7c7cf
1 changed files with 11 additions and 4 deletions
|
|
@ -2605,6 +2605,7 @@ xf86SetDesiredModes(ScrnInfoPtr scrn)
|
|||
xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR(scrn);
|
||||
xf86CrtcPtr crtc = config->crtc[0];
|
||||
int c;
|
||||
int enabled = 0;
|
||||
|
||||
/* A driver with this hook will take care of this */
|
||||
if (!crtc->funcs->set_mode_major) {
|
||||
|
|
@ -2655,14 +2656,20 @@ xf86SetDesiredModes(ScrnInfoPtr scrn)
|
|||
transform = &crtc->desiredTransform;
|
||||
else
|
||||
transform = NULL;
|
||||
if (!xf86CrtcSetModeTransform
|
||||
if (xf86CrtcSetModeTransform
|
||||
(crtc, &crtc->desiredMode, crtc->desiredRotation, transform,
|
||||
crtc->desiredX, crtc->desiredY))
|
||||
return FALSE;
|
||||
crtc->desiredX, crtc->desiredY)) {
|
||||
++enabled;
|
||||
} else {
|
||||
for (o = 0; o < config->num_output; o++)
|
||||
if (config->output[o]->crtc == crtc)
|
||||
config->output[o]->crtc = NULL;
|
||||
crtc->enabled = FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
xf86DisableUnusedFunctions(scrn);
|
||||
return TRUE;
|
||||
return enabled != 0;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue