xserver: Branch 'master' - 11 commits

Adam Jackson ajax at kemper.freedesktop.org
Fri Jul 17 12:00:21 PDT 2009


 hw/xfree86/common/xf86Config.c       |   10 ---
 hw/xfree86/common/xf86Helper.c       |   36 ------------
 hw/xfree86/common/xf86Mode.c         |  102 -----------------------------------
 hw/xfree86/common/xf86Module.h       |    1 
 hw/xfree86/doc/man/xorg.conf.man.pre |    5 -
 hw/xfree86/fbdevhw/fbdevhw.c         |   26 --------
 hw/xfree86/loader/loader.c           |   12 ----
 hw/xfree86/loader/loadmod.c          |   12 +---
 hw/xfree86/modes/xf86Modes.c         |   25 +-------
 9 files changed, 10 insertions(+), 219 deletions(-)

New commits:
commit 053bb92145045e06f8d72c3bddb75806432faa1c
Author: Adam Jackson <ajax at redhat.com>
Date:   Thu Jul 16 14:29:05 2009 -0400

    xfree86: Remove xf86SetPriority
    
    GetClocks is pretty doomed to begin with, this really isn't going to
    make it worse.

diff --git a/hw/xfree86/common/xf86Helper.c b/hw/xfree86/common/xf86Helper.c
index eac819b..d677548 100644
--- a/hw/xfree86/common/xf86Helper.c
+++ b/hw/xfree86/common/xf86Helper.c
@@ -201,14 +201,6 @@ xf86AllocateScreen(DriverPtr drv, int flags)
     xf86Screens[i]->CurrentAccess = &xf86CurrentAccess;
     xf86Screens[i]->resourceType = MEM_IO;
 
-    /* OOps -- What's this ? */
-    DebugF("xf86AllocateScreen - xf86Screens[%d]->pScreen = %p\n",
-	   i, xf86Screens[i]->pScreen );
-    if ( NULL != xf86Screens[i]->pScreen ) {
-      DebugF("xf86Screens[%d]->pScreen->CreateWindow = %p\n",
-	     i, xf86Screens[i]->pScreen->CreateWindow );
-    }
-
     xf86Screens[i]->DriverFunc = drv->driverFunc;
 
     return xf86Screens[i];
@@ -1940,30 +1932,6 @@ xf86MatchPciInstances(const char *driverName, int vendorID,
     return numFound;
 }
 
-static void
-xf86SetPriority(Bool up)
-{
-    static int saved_nice;
-
-    if (up) {
-#ifdef HAS_SETPRIORITY
-	saved_nice = getpriority(PRIO_PROCESS, 0);
-	setpriority(PRIO_PROCESS, 0, -20);
-#endif
-#if defined(SYSV) || defined(SVR4) || defined(linux)
-	saved_nice = nice(0);
-	nice(-20 - saved_nice);
-#endif
-    } else {
-#ifdef HAS_SETPRIORITY
-	setpriority(PRIO_PROCESS, 0, saved_nice);
-#endif
-#if defined(SYSV) || defined(SVR4) || defined(linux)
-	nice(20 + saved_nice);
-#endif
-    }
-}
-
 /*
  * xf86GetClocks -- get the dot-clocks via a BIG BAD hack ...
  */
@@ -1979,8 +1947,6 @@ xf86GetClocks(ScrnInfoPtr pScrn, int num, Bool (*ClockFunc)(ScrnInfoPtr, int),
     /* First save registers that get written on */
     (*ClockFunc)(pScrn, CLK_REG_SAVE);
 
-    xf86SetPriority(TRUE);
-
     if (num > MAXCLOCKS)
 	num = MAXCLOCKS;
 
@@ -2028,8 +1994,6 @@ finish:
             (*BlankScreen)(pScrn, TRUE);
     }
 
-    xf86SetPriority(FALSE);
-
     for (i = 0; i < num; i++)
     {
 	if (i != knownclkindex)
commit 3637945a45d55385335833197b18703379892884
Author: Adam Jackson <ajax at redhat.com>
Date:   Thu Jul 16 14:10:45 2009 -0400

    loader: Remove a useless check.

diff --git a/hw/xfree86/loader/loader.c b/hw/xfree86/loader/loader.c
index 892c70a..6a4c089 100644
--- a/hw/xfree86/loader/loader.c
+++ b/hw/xfree86/loader/loader.c
@@ -117,11 +117,6 @@ _LoaderListPop(int handle)
 void
 LoaderInit(void)
 {
-    char *ld_bind_now = getenv("LD_BIND_NOW");
-    if (ld_bind_now && *ld_bind_now) {
-        xf86Msg(X_ERROR, "LD_BIND_NOW is set, dlloader will NOT work!\n");
-    }
-
     xf86MsgVerb(X_INFO, 2, "Loader magic: %p\n", (void *)xorg_symbols);
     xf86MsgVerb(X_INFO, 2, "Module ABI versions:\n");
     xf86ErrorFVerb(2, "\t%s: %d.%d\n", ABI_CLASS_ANSIC,
commit ef2bb08c76f0d1eed0c8b3e4937648f0b6ae01e5
Author: Adam Jackson <ajax at redhat.com>
Date:   Thu Jul 16 13:53:00 2009 -0400

    loader: remove dead LoaderCheckUnresolved

diff --git a/hw/xfree86/common/xf86Module.h b/hw/xfree86/common/xf86Module.h
index 4c64c35..28da22b 100644
--- a/hw/xfree86/common/xf86Module.h
+++ b/hw/xfree86/common/xf86Module.h
@@ -194,7 +194,6 @@ extern _X_EXPORT char **LoaderListDirs(const char **, const char **);
 extern _X_EXPORT void LoaderFreeDirList(char **);
 extern _X_EXPORT void LoaderErrorMsg(const char *, const char *, int, int);
 extern _X_EXPORT void LoadExtension(ExtensionModule *, Bool);
-extern _X_EXPORT int LoaderCheckUnresolved(int);
 extern _X_EXPORT void LoaderGetOS(const char **name, int *major, int *minor, int *teeny);
 extern _X_EXPORT Bool LoaderShouldIgnoreABI(void);
 extern _X_EXPORT int LoaderGetABIVersion(const char *abiclass);
diff --git a/hw/xfree86/loader/loader.c b/hw/xfree86/loader/loader.c
index 47c8c2e..892c70a 100644
--- a/hw/xfree86/loader/loader.c
+++ b/hw/xfree86/loader/loader.c
@@ -257,13 +257,6 @@ LoaderSymbol(const char *sym)
     return (DLFindSymbol(sym));
 }
 
-/* more stub */
-int
-LoaderCheckUnresolved(int delay_flag)
-{
-    return 0;
-}
-
 int
 LoaderUnload(int handle)
 {
commit 06a2784232b5d0e2440ed365d272abdfa1f5d35f
Author: Adam Jackson <ajax at redhat.com>
Date:   Thu Jul 16 13:40:48 2009 -0400

    loader: Remove useless TestFree() macro

diff --git a/hw/xfree86/loader/loadmod.c b/hw/xfree86/loader/loadmod.c
index fccb3b1..0b220f1 100644
--- a/hw/xfree86/loader/loadmod.c
+++ b/hw/xfree86/loader/loadmod.c
@@ -68,8 +68,6 @@
 #include <dirent.h>
 #include <limits.h>
 
-#define TestFree(a) if (a) { xfree (a); a = NULL; }
-
 typedef struct _pattern {
     const char *pattern;
     regex_t rex;
@@ -1020,9 +1018,9 @@ doLoadModule(const char *module, const char *path, const char **subdirlist,
   LoadModule_exit:
     FreePathList(pathlist);
     FreePatterns(patterns);
-    TestFree(found);
-    TestFree(name);
-    TestFree(p);
+    xfree(found);
+    xfree(name);
+    xfree(p);
 
     return ret;
 }
@@ -1098,7 +1096,7 @@ UnloadModuleOrDriver(ModuleDescPtr mod)
 	UnloadModuleOrDriver(mod->child);
     if (mod->sib)
 	UnloadModuleOrDriver(mod->sib);
-    TestFree(mod->name);
+    xfree(mod->name);
     xfree(mod);
 }
 
@@ -1121,7 +1119,7 @@ UnloadSubModule(pointer _mod)
     if (mod->child)
 	UnloadModuleOrDriver(mod->child);
 
-    TestFree(mod->name);
+    xfree(mod->name);
     xfree(mod);
 }
 
commit 087745b809b9a834751e5c719b9d87967194369b
Author: Adam Jackson <ajax at redhat.com>
Date:   Thu Jul 16 10:51:53 2009 -0400

    fbdevhw: Remove pointless OS check, this never gets built on non-Linux

diff --git a/hw/xfree86/fbdevhw/fbdevhw.c b/hw/xfree86/fbdevhw/fbdevhw.c
index 213b246..00ebd6b 100644
--- a/hw/xfree86/fbdevhw/fbdevhw.c
+++ b/hw/xfree86/fbdevhw/fbdevhw.c
@@ -59,20 +59,7 @@ _X_EXPORT XF86ModuleData fbdevhwModuleData = {
 static pointer
 fbdevhwSetup(pointer module, pointer opts, int *errmaj, int *errmin)
 {
-	const char *osname;
-
-	/* Check that we're being loaded on a Linux system */
-	LoaderGetOS(&osname, NULL, NULL, NULL);
-	if (!osname || strcmp(osname, "linux") != 0) {
-		if (errmaj)
-			*errmaj = LDR_BADOS;
-		if (errmin)
-			*errmin = 0;
-		return NULL;
-	} else {
-		/* OK */
-		return (pointer)1;
-	}
+    return (pointer)1;
 }
 
 #include <fcntl.h>
commit 892c93553aa0b03aeb3f4c27d952cc4bb7120aff
Author: Adam Jackson <ajax at redhat.com>
Date:   Thu Jul 16 10:51:27 2009 -0400

    fbdevhw: Remove a #if 0

diff --git a/hw/xfree86/fbdevhw/fbdevhw.c b/hw/xfree86/fbdevhw/fbdevhw.c
index e863015..213b246 100644
--- a/hw/xfree86/fbdevhw/fbdevhw.c
+++ b/hw/xfree86/fbdevhw/fbdevhw.c
@@ -17,12 +17,7 @@
 #include "fbdevhw.h"
 #include "fbpriv.h"
 
-#if 0
-/* kernel header doesn't work with -ansi */
-# include "asm/page.h"	/* #define for PAGE_* */
-#else
-# define PAGE_MASK               (~(getpagesize() - 1))
-#endif
+#define PAGE_MASK               (~(getpagesize() - 1))
 
 #include "globals.h"
 #include <X11/extensions/dpmsconst.h>
commit e5712f2926abf33b146a4ccfcf6e89c914dad37b
Author: Adam Jackson <ajax at redhat.com>
Date:   Thu Jul 16 10:49:22 2009 -0400

    fbdevhw: simplify some #if 1

diff --git a/hw/xfree86/fbdevhw/fbdevhw.c b/hw/xfree86/fbdevhw/fbdevhw.c
index 2b7e36a..e863015 100644
--- a/hw/xfree86/fbdevhw/fbdevhw.c
+++ b/hw/xfree86/fbdevhw/fbdevhw.c
@@ -233,10 +233,8 @@ xfree2fbdev_timing(DisplayModePtr mode, struct fb_var_screeninfo *var)
 		var->sync |= FB_SYNC_VERT_HIGH_ACT;
 	if (mode->Flags & V_PCSYNC)
 		var->sync |= FB_SYNC_COMP_HIGH_ACT;
-#if 1 /* Badly needed for PAL/NTSC on Amiga (amifb)!! [geert] */
 	if (mode->Flags & V_BCAST)
 		var->sync |= FB_SYNC_BROADCAST;
-#endif
 	if (mode->Flags & V_INTERLACE)
 		var->vmode = FB_VMODE_INTERLACED;
 	else if (mode->Flags & V_DBLSCAN)
@@ -280,10 +278,8 @@ fbdev2xfree_timing(struct fb_var_screeninfo *var, DisplayModePtr mode)
 	mode->Flags |= var->sync & FB_SYNC_HOR_HIGH_ACT ? V_PHSYNC : V_NHSYNC;
 	mode->Flags |= var->sync & FB_SYNC_VERT_HIGH_ACT ? V_PVSYNC : V_NVSYNC;
 	mode->Flags |= var->sync & FB_SYNC_COMP_HIGH_ACT ? V_PCSYNC : V_NCSYNC;
-#if 1 /* Badly needed for PAL/NTSC on Amiga (amifb)!! [geert] */
 	if (var->sync & FB_SYNC_BROADCAST)
 		mode->Flags |= V_BCAST;
-#endif
 	if ((var->vmode & FB_VMODE_MASK) == FB_VMODE_INTERLACED)
 		mode->Flags |= V_INTERLACE;
 	else if ((var->vmode & FB_VMODE_MASK) == FB_VMODE_DOUBLE)
commit 8868bb4131be25340bf65ec61b998d353965bab6
Author: Adam Jackson <ajax at redhat.com>
Date:   Thu Jul 16 10:44:24 2009 -0400

    randr: Un-duplicate the reduced blanking check.

diff --git a/hw/xfree86/modes/xf86Modes.c b/hw/xfree86/modes/xf86Modes.c
index 0ea6c81..d105b48 100644
--- a/hw/xfree86/modes/xf86Modes.c
+++ b/hw/xfree86/modes/xf86Modes.c
@@ -530,17 +530,9 @@ xf86ModeIsReduced(const DisplayModeRec *mode)
 void
 xf86ValidateModesReducedBlanking(ScrnInfoPtr pScrn, DisplayModePtr modeList)
 {
-    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;
-    }
+    for (; modeList != NULL; modeList = modeList->next)
+	if (xf86ModeIsReduced(modeList))
+	    modeList->status = MODE_NO_REDUCED;
 }
 
 /**
commit 453ee39bc6a6b46e6cda11512cfcd431ba32a4b7
Author: Adam Jackson <ajax at redhat.com>
Date:   Thu Jul 16 10:39:37 2009 -0400

    xfree86: Fix some misleading comments

diff --git a/hw/xfree86/modes/xf86Modes.c b/hw/xfree86/modes/xf86Modes.c
index 0449af2..0ea6c81 100644
--- a/hw/xfree86/modes/xf86Modes.c
+++ b/hw/xfree86/modes/xf86Modes.c
@@ -48,8 +48,6 @@ extern XF86ConfigPtr xf86configptr;
 
 /**
  * Calculates the horizontal sync rate of a mode.
- *
- * Exact copy of xf86Mode.c's.
  */
 double
 xf86ModeHSync(const DisplayModeRec *mode)
@@ -66,8 +64,6 @@ xf86ModeHSync(const DisplayModeRec *mode)
 
 /**
  * Calculates the vertical refresh rate of a mode.
- *
- * Exact copy of xf86Mode.c's.
  */
 double
 xf86ModeVRefresh(const DisplayModeRec *mode)
@@ -151,8 +147,6 @@ xf86SetModeDefaultName(DisplayModePtr mode)
  *
  * Initialises the Crtc parameters for a mode.  The initialisation includes
  * adjustments for interlaced and double scan modes.
- *
- * Exact copy of xf86Mode.c's.
  */
 void
 xf86SetModeCrtc(DisplayModePtr p, int adjustFlags)
@@ -260,8 +254,6 @@ xf86DuplicateModes(ScrnInfoPtr pScrn, DisplayModePtr modeList)
  *
  * This doesn't use Crtc values, as it might be used on ModeRecs without the
  * Crtc values set.  So, it's assumed that the other numbers are enough.
- *
- * This isn't in xf86Modes.c, but it might deserve to be there.
  */
 Bool
 xf86ModesEqual(const DisplayModeRec *pMode1, const DisplayModeRec *pMode2)
@@ -285,7 +277,6 @@ xf86ModesEqual(const DisplayModeRec *pMode1, const DisplayModeRec *pMode2)
      }
 }
 
-/* exact copy of xf86Mode.c */
 static void
 add(char **p, char *new)
 {
@@ -296,8 +287,6 @@ add(char **p, char *new)
 
 /**
  * Print out a modeline.
- *
- * Convenient VRefresh printing was added, though, compared to xf86Mode.c
  */
 void
 xf86PrintModeline(int scrnIndex,DisplayModePtr mode)
commit 2c57a7aa07fdf52be315ecb498341776268c1a10
Author: Adam Jackson <ajax at redhat.com>
Date:   Thu Jul 16 10:32:53 2009 -0400

    xfree86: Remove some #if 0
    
    This code all lives in xf86Modes.c now anyway

diff --git a/hw/xfree86/common/xf86Mode.c b/hw/xfree86/common/xf86Mode.c
index 104ccd1..0e43946 100644
--- a/hw/xfree86/common/xf86Mode.c
+++ b/hw/xfree86/common/xf86Mode.c
@@ -1836,53 +1836,6 @@ xf86SetCrtcForModes(ScrnInfoPtr scrp, int adjustFlags)
     } while (p != NULL && p != scrp->modes);
 }
 
-
-#if 0
-static void
-add(char **p, char *new)
-{
-    *p = xnfrealloc(*p, strlen(*p) + strlen(new) + 2);
-    strcat(*p, " ");
-    strcat(*p, new);
-}
-
-void
-xf86PrintModeline(int scrnIndex,DisplayModePtr mode)
-{
-    char tmp[256];
-    char *flags = xnfcalloc(1, 1);
-
-    if (mode->HSkew) { 
-	snprintf(tmp, 256, "hskew %i", mode->HSkew); 
-	add(&flags, tmp);
-    }
-    if (mode->VScan) { 
-	snprintf(tmp, 256, "vscan %i", mode->VScan); 
-	add(&flags, tmp);
-    }
-    if (mode->Flags & V_INTERLACE) add(&flags, "interlace");
-    if (mode->Flags & V_CSYNC) add(&flags, "composite");
-    if (mode->Flags & V_DBLSCAN) add(&flags, "doublescan");
-    if (mode->Flags & V_BCAST) add(&flags, "bcast");
-    if (mode->Flags & V_PHSYNC) add(&flags, "+hsync");
-    if (mode->Flags & V_NHSYNC) add(&flags, "-hsync");
-    if (mode->Flags & V_PVSYNC) add(&flags, "+vsync");
-    if (mode->Flags & V_NVSYNC) add(&flags, "-vsync");
-    if (mode->Flags & V_PCSYNC) add(&flags, "+csync");
-    if (mode->Flags & V_NCSYNC) add(&flags, "-csync");
-#if 0
-    if (mode->Flags & V_CLKDIV2) add(&flags, "vclk/2");
-#endif
-    xf86DrvMsgVerb(scrnIndex, X_INFO, 3,
-		   "Modeline \"%s\"  %6.2f  %i %i %i %i  %i %i %i %i%s\n",
-		   mode->name, mode->Clock/1000., mode->HDisplay,
-		   mode->HSyncStart, mode->HSyncEnd, mode->HTotal,
-		   mode->VDisplay, mode->VSyncStart, mode->VSyncEnd,
-		   mode->VTotal, flags);
-    xfree(flags);
-}
-#endif
-
 void
 xf86PrintModes(ScrnInfoPtr scrp)
 {
@@ -1951,29 +1904,3 @@ xf86PrintModes(ScrnInfoPtr scrp)
 	p = p->next;
     } while (p != NULL && p != scrp->modes);
 }
-
-#if 0
-/**
- * Adds the new mode into the mode list, and returns the new list
- *
- * \param modes doubly-linked mode list.
- */
-DisplayModePtr
-xf86ModesAdd(DisplayModePtr modes, DisplayModePtr new)
-{
-    if (modes == NULL)
-	return new;
-
-    if (new) {
-        DisplayModePtr mode = modes;
-
-        while (mode->next)
-            mode = mode->next;
-
-        mode->next = new;
-        new->prev = mode;
-    }
-
-    return modes;
-}
-#endif
commit 1a8c89683ff40cdd1d33da89ab47e7bd240b9bb7
Author: Adam Jackson <ajax at redhat.com>
Date:   Thu Jul 16 10:15:41 2009 -0400

    xfree86: Remove TargetRefresh option
    
    This was a vestige from the days before we'd make the mode list from the
    EDID data, and from CRT technology when you could reasonably assume that
    higher refresh rates were better.  Also it did not function as advertised,
    acting as a high-pass filter instead of a band-pass.

diff --git a/hw/xfree86/common/xf86Config.c b/hw/xfree86/common/xf86Config.c
index 60e66ab..e81eb0f 100644
--- a/hw/xfree86/common/xf86Config.c
+++ b/hw/xfree86/common/xf86Config.c
@@ -1863,16 +1863,6 @@ configScreen(confScreenPtr screenp, XF86ConfScreenPtr conf_screen, int scrnum,
 
 	bzero(&defMon, sizeof(defMon));
 	defMon.mon_identifier = "<default monitor>";
-	/*
-	 * TARGET_REFRESH_RATE may be defined to effectively limit the
-	 * default resolution to the largest that has a "good" refresh
-	 * rate.
-	 */
-#ifdef TARGET_REFRESH_RATE
-	defMon.mon_option_lst = xf86ReplaceRealOption(defMon.mon_option_lst,
-						      "TargetRefresh",
-						      TARGET_REFRESH_RATE);
-#endif
 	if (!configMonitor(screenp->monitor, &defMon))
 	    return FALSE;
 	defaultMonitor = TRUE;
diff --git a/hw/xfree86/common/xf86Mode.c b/hw/xfree86/common/xf86Mode.c
index 6dcebe1..104ccd1 100644
--- a/hw/xfree86/common/xf86Mode.c
+++ b/hw/xfree86/common/xf86Mode.c
@@ -1200,7 +1200,6 @@ xf86ValidateModes(ScrnInfoPtr scrp, DisplayModePtr availModes,
     PixmapFormatRec *BankFormat;
     ClockRangePtr cp;
     ClockRangesPtr storeClockRanges;
-    double targetRefresh = 0.0;
     int numTimings = 0;
     range hsync[MAX_HSYNC];
     range vrefresh[MAX_VREFRESH];
@@ -1460,26 +1459,6 @@ xf86ValidateModes(ScrnInfoPtr scrp, DisplayModePtr availModes,
     }
 
     /*
-     * Go through the mode pool and see if any modes match the target
-     * refresh rate, (if specified).  If no modes match, abandon the target.
-     */
-    targetRefresh = xf86SetRealOption(scrp->options,
-				      "TargetRefresh", 0.0);
-    if (targetRefresh > 0.0) {
-	for (p = scrp->modePool; p != NULL; p = p->next) {
-	    if (xf86ModeVRefresh(p) > targetRefresh * (1.0 - SYNC_TOLERANCE))
-		break;
-	}
-	if (!p)
-	    targetRefresh = 0.0;
-    }
-
-    if (targetRefresh > 0.0) {
-	xf86DrvMsg(scrp->scrnIndex, X_CONFIG,
-		   "Target refresh rate is %.1f Hz\n", targetRefresh);
-    }
-
-    /*
      * Allocate one entry in scrp->modes for each named mode.
      */
     while (scrp->modes)
@@ -1552,14 +1531,6 @@ xf86ValidateModes(ScrnInfoPtr scrp, DisplayModePtr availModes,
 			    ((double)q->HTotal / (double)q->HDisplay) < 1.15)
 			    continue;
 
-			/*
-			 * If there is a target refresh rate, skip modes that
-			 * don't match up.
-			 */
-			if (xf86ModeVRefresh(q) <
-			    (1.0 - SYNC_TOLERANCE) * targetRefresh)
-			    continue;
-
 			if (modeSize < (q->HDisplay * q->VDisplay)) {
 			    r = q;
 			    modeSize = q->HDisplay * q->VDisplay;
diff --git a/hw/xfree86/doc/man/xorg.conf.man.pre b/hw/xfree86/doc/man/xorg.conf.man.pre
index fbb2c6b..943009c 100644
--- a/hw/xfree86/doc/man/xorg.conf.man.pre
+++ b/hw/xfree86/doc/man/xorg.conf.man.pre
@@ -1389,11 +1389,6 @@ This option controls whether the video card should drive the sync signal
 on the green color pin.  Not all cards support this option, and most
 monitors do not require it.  The default is off.
 .TP 7
-.BI "Option " "\*qTargetRefresh\*q  " \*qrate\*q
-This optional entry specifies the vertical refresh rate that the server
-should aim for when selecting video modes.  Without this option, the
-default is to prefer modes with higher refresh rates.
-.TP 7
 .BI "Option " "\*qPreferredMode\*q  " \*qstring\*q
 This optional entry specifies a mode to be marked as the preferred initial mode
 of the monitor.


More information about the xorg-commit mailing list