busted randr refresh rate breaks radeon mergedfb

Dave Airlie airlied at gmail.com
Mon Apr 23 00:58:44 PDT 2007


I'm running a master server and latest ATI driver, and when I use
mergedfb I'm having trouble getting it to switch modes using randr
1.0, this used to work with the older radeon driver, but some changes
to report a more likely refresh rate seem to have screwed this up..

[root at starflyer xserver]# xrandr
 SZ:    Pixels          Physical       Refresh
 0   2048 x 768    ( 916mm x 356mm )   612
*1   2704 x 1050   ( 916mm x 356mm )  *22

is what I get reported, however mode->VRefresh is actually 6073 in both cases.

So when randr -s goes to check the mode list of course 612 doesn't
equal 6073 at any point,

This happens in xf86RandRSetConfig
	if (mode->HDisplay == pSize->width &&
	    mode->VDisplay == pSize->height &&
	    (rate == 0 || xf86RandRModeRefresh (mode) == rate))

So the rate is 612 and the refresh is 6073 and guess what happens?

This is mainly cause by there being two functions, one DIX and one DDX

xf86RandRModeRefresh (DisplayModePtr *mode)
RRVerticalRefresh (xRRModeInfo *mode)

The RRVerticalRefresh seems to get called by the new randr-1.2 code
when talking to a randr-1.0 driver/server,
 * Convert 1.2 monitor data into 1.0 screen data
static RR10DataPtr
RR10GetData (ScreenPtr pScreen, RROutputPtr output)

calls it..

I've no idea who is mainly at fault or what the best way to fix this
regression quickly ..


More information about the xorg mailing list