xf86-video-ati: Branch 'master' - 2 commits

Alex Deucher agd5f at kemper.freedesktop.org
Tue Sep 19 21:02:16 EEST 2006


 src/radeon_mergedfb.c |   30 ++++++++++++++++++++++++------
 1 files changed, 24 insertions(+), 6 deletions(-)

New commits:
diff-tree 9fa176c7989030e7340cc9b85d0b6a7b34303091 (from e742aeb28c7d9d6e75932c408bcc7c44af52e303)
Author: Alex Deucher <alex at samba.(none)>
Date:   Tue Sep 19 13:58:17 2006 -0400

    Provide all resolutions (instead only the largest one) in MergedFB clone
    mode without config file (Henry Zhao)

diff --git a/src/radeon_mergedfb.c b/src/radeon_mergedfb.c
index 6f3288f..7b01c82 100644
--- a/src/radeon_mergedfb.c
+++ b/src/radeon_mergedfb.c
@@ -537,15 +537,27 @@ RADEONGenerateModeList(ScrnInfoPtr pScrn
    if(str != NULL) {
       return(RADEONGenerateModeListFromMetaModes(pScrn, str, i, j, srel));
    } else {
-      xf86DrvMsg(pScrn->scrnIndex, X_INFO,
-	"No MetaModes given, linking %s modes by default\n",
-	(srel == radeonClone) ? "largest common" :
-	   (info->NonRect ?
+        if (srel == radeonClone ) {
+           DisplayModePtr p, q, result = NULL;
+
+           xf86DrvMsg(pScrn->scrnIndex, X_INFO,
+                "Clone mode, list all common modes\n");
+           for (p = i; p->next != i; p = p->next)
+                for (q = j; q->next != j; q = q->next)
+                   if ((p->HDisplay == q->HDisplay) &&
+                        (p->VDisplay == q->VDisplay))
+                        result = RADEONCopyModeNLink(pScrn, result, p, q, srel);
+           return result;
+        } else {
+           xf86DrvMsg(pScrn->scrnIndex, X_INFO,
+                "No MetaModes given, linking %s modes by default\n",
+                (info->NonRect ?
 		(((srel == radeonLeftOf) || (srel == radeonRightOf)) ? "widest" :  "tallest")
 		:
 		(((srel == radeonLeftOf) || (srel == radeonRightOf)) ? "widest common" :  "tallest common")) );
-      return(RADEONGenerateModeListFromLargestModes(pScrn, i, j, srel));
-   }
+           return(RADEONGenerateModeListFromLargestModes(pScrn, i, j, srel));
+        }
+    }
 }
 
 void
diff-tree e742aeb28c7d9d6e75932c408bcc7c44af52e303 (from 9c0c805704f1df1b66adc2a6b9313597ae5b86cc)
Author: Alex Deucher <alex at samba.(none)>
Date:   Tue Sep 19 13:45:33 2006 -0400

    fix large negative refresh rates with mergedfb (Henry Zhao)
    fixes bug 6966

diff --git a/src/radeon_mergedfb.c b/src/radeon_mergedfb.c
index 313dda2..6f3288f 100644
--- a/src/radeon_mergedfb.c
+++ b/src/radeon_mergedfb.c
@@ -212,6 +212,12 @@ RADEONCopyModeNLink(ScrnInfoPtr pScrn, D
     mode->VSyncEnd += dy;
     mode->VTotal += dy;
 
+    /* This is needed for not generating negative refesh rates in xrandr with the
+       faked DotClock below
+     */
+    if (!(mode->VRefresh))
+        mode->VRefresh = mode->Clock * 1000.0 / mode->HTotal / mode->VTotal;
+
      /* 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



More information about the xorg-commit mailing list