Two questions on radeon driver
Henry Zhao
Henry.Zhao at Sun.COM
Fri May 26 17:46:51 PDT 2006
(1) In Merged FB mode, merged modes have negative refresh rates, see
[bug 6966].
When using GNOME/JDS, where, if MergedFB is used, you
will find negative refresh rates in desktop resolution selection
screen, resulting in not being able to select resolutions.
The cause of the problem seems to be inappropriate setting of clock
for the merged mode, as seen in this portion of code
mode->Clock = (((i->Clock >> 3) + i->HTotal) << 16) |
((j->Clock >> 2) + j->HTotal);
mode->Clock ^= ((i->VTotal << 19) | (j->VTotal << 3));
in RADEONCopyModeNLink() of radeon_mergedfb.c, where i and j
represent two modes to be merged, and the clock generated is a bogus
negative number. Can anyone tell me what this calculation means, and
where it comes from, this code starts showing up in version 1.5.
The clock is set to 0 prior to that.
For a testing (in clone mode), using
mode->Clock = i->Clock
seems to fix the problem.
(2) In RADEONQueryConnectedMonitors() of radeon_driver.c, when
monitor layout is found in config file, if the second head is
defined as CRT, then port info for both heads have to be
re-initialized as seen in:
if (pRADEONEnt->PortInfo[1].MonType == MT_CRT) {
pRADEONEnt->PortInfo[1].DACType = DAC_PRIMARY;
pRADEONEnt->PortInfo[1].TMDSType = TMDS_UNKNOWN;
pRADEONEnt->PortInfo[1].DDCType = DDC_VGA;
pRADEONEnt->PortInfo[1].ConnectorType = CONNECTOR_CRT;
pRADEONEnt->PortInfo[0].DACType = DAC_TVDAC;
pRADEONEnt->PortInfo[0].TMDSType = TMDS_UNKNOWN;
pRADEONEnt->PortInfo[0].DDCType = DDC_NONE_DETECTED;
pRADEONEnt->PortInfo[0].ConnectorType =
pRADEONEnt->PortInfo[0].MonType+1;
pRADEONEnt->PortInfo[0].MonInfo = NULL;
}
Why this should affect the primary head ?
-Henry
More information about the xorg
mailing list