mergedfb refresh rates

Henry Zhao henry.zhao at sun.com
Mon Apr 23 15:10:29 PDT 2007


 > metamode0:
 > head0: 1024x768 at 60 and head1: 1024x768 at 85
 > metamode1:
 > head0: 1024x768 at 85 and head1: 1024x768 at 60
 > metamode2:
 > head0: 1024x768 at 60 and head1: 1024x768 at 60
 > metamode3:
 > head0: 1024x768 at 85 and head1: 1024x768 at 85

There are 3 versions under old randr,

(1)
    if (!(mode->VRefresh))
         mode->VRefresh = mode->Clock * 1000.0 / mode->HTotal /
         mode->VTotal;

(2)
/* Provide a sophisticated fake DotClock in order to trick the vidmode
  * extension to allow selecting among a number of modes whose merged
    result
  * looks identical but consists of different modes for CRT1 and CRT2
  */
     mode->Clock = (((i->Clock >> 3) + i->HTotal) << 16) | ((j->Clock >> 

          + j->HTotal);
     mode->Clock ^= ((i->VTotal << 19) | (j->VTotal << 3));

(3)
     mode->VRefresh = (float)((i->Clock * 1000.0 / i->HTotal / i->VTotal)
          * 100 + (j->Clock * 1000.0 / j->HTotal / j->VTotal));

(1) can't distinguish metamodes having same refresh rates on primary
     head, In the example above, there will be only two metamodes with
     refresh rates 60 and 85 respectively.

(2) can distinguish metamodes having same refresh rates on primary, but
     results in negative refresh rates.

(3) can distinguish metamodes having same refresh rates on primary with
     a somewhat meaning reading. In the example above, there will be four
     metamodes with refresh rates 6085, 8560, 6060 and 8585 respectively.
     This is the current code.

> metamode0:
> head0: 1024x768 at 60 and head1: 1024x768 at 85
> metamode1:
> head0: 1024x768 at 85 and head1: 1024x768 at 60
> metamode2:
> head0: 1024x768 at 60 and head1: 1024x768 at 60
> metamode3:
> head0: 1024x768 at 85 and head1: 1024x768 at 85
> 
> what would the metamodes be for this scenario?  The driver used to do
> generate random unique numbers to try and keep each metamode unique.
> However, this led to negative refresh rates in some situations which
> caused problems with some utilities.  Henry committed a fix to keep
> the numbers positive, but I suspect that may be what's causing the
> problem now.  Either that or some new interaction with the randr1.2
> code in the server.
> See bug:
> https://bugs.freedesktop.org/show_bug.cgi?id=6966
> 
> Alex

The new randr (1.2) is capable of handling multiple outputs, and should
have a proper way of dealing this.

-Henry


More information about the xorg-driver-ati mailing list