[PATCH] crtc: match full preferred modes if possible when choosing an initial config
Alex Deucher
alexdeucher at gmail.com
Thu Oct 13 12:50:55 PDT 2011
On Thu, Oct 13, 2011 at 3:01 PM, Jesse Barnes <jbarnes at virtuousgeek.org> wrote:
> It's fairly common to have multiple, identical monitors plugged in. In
> that case, it's preferable to run the monitor's preferred mode on each
> output, rather than just matching the width & height and end up with
> different timings or refresh rates.
>
> Signed-off-by: Jesse Barnes <jbarnes at virtuousgeek.org>
Makes sense to me.
Reviewed-by: Alex Deucher <alexdeucher at gmail.com>
> ---
> hw/xfree86/modes/xf86Crtc.c | 25 ++++++++++++++++++++-----
> 1 files changed, 20 insertions(+), 5 deletions(-)
>
> diff --git a/hw/xfree86/modes/xf86Crtc.c b/hw/xfree86/modes/xf86Crtc.c
> index 3fae039..d75cd77 100644
> --- a/hw/xfree86/modes/xf86Crtc.c
> +++ b/hw/xfree86/modes/xf86Crtc.c
> @@ -2060,13 +2060,28 @@ xf86TargetPreferred(ScrnInfoPtr scrn, xf86CrtcConfigPtr config,
> if (o == p)
> continue;
>
> - for (mode = output->probed_modes; mode; mode = mode->next) {
> - Rotation r = output->initial_rotation;
> - if (xf86ModeWidth(mode, r) == pref_width &&
> - xf86ModeHeight(mode, r) == pref_height) {
> + /*
> + * First see if the preferred mode matches on the next
> + * output as well. This catches the common case of identical
> + * monitors and makes sure they all have the same timings
> + * and refresh. If that fails, we fall back to trying to
> + * match just width & height.
> + */
> + mode = xf86OutputHasPreferredMode(output, pref_width,
> + pref_height);
> + if (mode && xf86ModesEqual(mode, preferred[p])) {
> preferred[o] = mode;
> match = TRUE;
> - }
> + } else {
> + for (mode = output->probed_modes; mode;
> + mode = mode->next) {
> + Rotation r = output->initial_rotation;
> + if (xf86ModeWidth(mode, r) == pref_width &&
> + xf86ModeHeight(mode, r) == pref_height) {
> + preferred[o] = mode;
> + match = TRUE;
> + }
> + }
> }
>
> all_match &= match;
> --
> 1.7.4.1
>
> _______________________________________________
> xorg-devel at lists.x.org: X.Org development
> Archives: http://lists.x.org/archives/xorg-devel
> Info: http://lists.x.org/mailman/listinfo/xorg-devel
>
More information about the xorg-devel
mailing list