mirror of
https://gitlab.freedesktop.org/xorg/xserver.git
synced 2025-12-25 20:00:06 +01:00
Fix reduced-blanking mode filtering in RANDR 1.2.
If the monitor isn't reduced-blanking (either through EDID logic, or
config file setting), then remove RB modes from the default pool. Any
RB modes from the driver and config file pools will stick around though;
you asked for them, you got them.
(cherry picked from commit 0178b6a4ab)
This commit is contained in:
parent
e644d2e73f
commit
5efe36f7af
3 changed files with 33 additions and 1 deletions
|
|
@ -1475,7 +1475,14 @@ xf86ProbeOutputModes (ScrnInfoPtr scrn, int maxX, int maxY)
|
|||
}
|
||||
default_modes = xf86GetDefaultModes (output->interlaceAllowed,
|
||||
output->doubleScanAllowed);
|
||||
|
||||
|
||||
/*
|
||||
* If this is not an RB monitor, remove RB modes from the default
|
||||
* pool. RB modes from the config or the monitor itself are fine.
|
||||
*/
|
||||
if (!mon_rec.reducedblanking)
|
||||
xf86ValidateModesReducedBlanking (scrn, default_modes);
|
||||
|
||||
if (sync_source == sync_config)
|
||||
{
|
||||
/*
|
||||
|
|
|
|||
|
|
@ -513,6 +513,28 @@ xf86ValidateModesBandwidth(ScrnInfoPtr pScrn, DisplayModePtr modeList,
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Marks as bad any reduced-blanking modes.
|
||||
*
|
||||
* \param modeList doubly-linked list of modes.
|
||||
*/
|
||||
_X_EXPORT void
|
||||
xf86ValidateModesReducedBlanking(ScrnInfoPtr pScrn, DisplayModePtr modeList)
|
||||
{
|
||||
Bool mode_is_reduced = FALSE;
|
||||
DisplayModePtr mode;
|
||||
|
||||
for (mode = modeList; mode != NULL; mode = mode->next) {
|
||||
/* gratuitous duplication from pre-randr validation code */
|
||||
if ((((mode->HDisplay * 5 / 4) & ~0x07) > mode->HTotal) &&
|
||||
((mode->HTotal - mode->HDisplay) == 160) &&
|
||||
((mode->HSyncEnd - mode->HDisplay) == 80) &&
|
||||
((mode->HSyncEnd - mode->HSyncStart) == 32) &&
|
||||
((mode->VSyncStart - mode->VDisplay) == 3))
|
||||
mode->status = MODE_NO_REDUCED;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Frees any modes from the list with a status other than MODE_OK.
|
||||
*
|
||||
|
|
|
|||
|
|
@ -84,6 +84,9 @@ void
|
|||
xf86ValidateModesBandwidth(ScrnInfoPtr pScrn, DisplayModePtr modeList,
|
||||
unsigned int bandwidth, int depth);
|
||||
|
||||
void
|
||||
xf86ValidateModesReducedBlanking(ScrnInfoPtr pScrn, DisplayModePtr modeList);
|
||||
|
||||
void
|
||||
xf86PruneInvalidModes(ScrnInfoPtr pScrn, DisplayModePtr *modeList,
|
||||
Bool verbose);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue