[arch-commits] Commit in xorg-server/repos (4 files)

Jan de Groot jgc at archlinux.org
Sun Jun 28 11:27:00 UTC 2009


    Date: Sunday, June 28, 2009 @ 07:27:00
  Author: jgc
Revision: 43672

Merged revisions 40682,43588,43620 via svnmerge from 
svn+ssh://svn.archlinux.org/srv/svn-packages/xorg-server/trunk

........
  r40682 | jgc | 2009-05-29 19:55:34 +0200 (Fri, 29 May 2009) | 2 lines
  
  Fix FS#14408
........
  r43588 | jgc | 2009-06-25 17:24:21 +0200 (Thu, 25 Jun 2009) | 2 lines
  
  upgpkg: xorg-server 1.6.1.901-3
      Include new patches, merge the fedora patch to the pending patchset, build with mesa 7.4.4 and driproto 2.1
........
  r43620 | jgc | 2009-06-25 20:37:51 +0200 (Thu, 25 Jun 2009) | 1 line
  
  upgpkg: xorg-server 1.6.1.901-3
........

Modified:
  xorg-server/repos/extra-i686/	(properties)
  xorg-server/repos/extra-i686/PKGBUILD
  xorg-server/repos/extra-i686/pending-1.6.2.patch
  xorg-server/repos/extra-i686/server-1.6-branch.patch

-------------------------+
 PKGBUILD                |   30 ++--
 pending-1.6.2.patch     |  215 ++++++++++++++++++++++++++++++++
 server-1.6-branch.patch |  304 ++++++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 534 insertions(+), 15 deletions(-)


Property changes on: xorg-server/repos/extra-i686
___________________________________________________________________
Modified: svnmerge-integrated
   - /xorg-server/trunk:1-40344
   + /xorg-server/trunk:1-43671

Modified: extra-i686/PKGBUILD
===================================================================
--- extra-i686/PKGBUILD	2009-06-28 11:18:51 UTC (rev 43671)
+++ extra-i686/PKGBUILD	2009-06-28 11:27:00 UTC (rev 43672)
@@ -4,26 +4,26 @@
 
 pkgname=xorg-server
 pkgver=1.6.1.901
-pkgrel=1
+pkgrel=3
 pkgdesc="X.Org X servers"
 arch=('i686' 'x86_64')
 license=('custom')
 url="http://xorg.freedesktop.org"
 depends=('hal>=0.5.11' 'libgl' 'libxfont>=1.4.0' 'openssl>=0.9.8j' 'libpciaccess>=0.10.5' 'libxv>=1.0.4' 'pixman>=0.14.0' 'xcursor-themes' 'xkeyboard-config>=1.6' 'xorg-server-utils' 'xorg-fonts-misc' 'xbitmaps' 'diffutils' 'xf86-input-evdev>=2.2.2')
-makedepends=('libx11>=1.2.1' 'mesa>=7.4.2' 'xf86driproto>=2.0.4' 'xtrans>=1.2.3' 'libxkbfile>=1.0.5' 'randrproto>=1.3.0' 'renderproto>=0.9.3' 'xcmiscproto>=1.1.2' 'bigreqsproto>=1.0.2' 'resourceproto>=1.0.2' 'videoproto>=2.2.2' 'compositeproto>=0.4' 'scrnsaverproto>=1.1.0' 'libxinerama>=1.0.3' 'xf86dgaproto>=2.0.3' 'recordproto>=1.13.2' 'libgl>=7.4.2' 'glproto>=1.4.9')
+makedepends=('libx11>=1.2.1' 'mesa>=7.4.4' 'xf86driproto>=2.0.4' 'xtrans>=1.2.3' 'libxkbfile>=1.0.5' 'randrproto>=1.3.0' 'renderproto>=0.9.3' 'xcmiscproto>=1.1.2' 'bigreqsproto>=1.0.2' 'resourceproto>=1.0.2' 'videoproto>=2.2.2' 'compositeproto>=0.4' 'scrnsaverproto>=1.1.0' 'libxinerama>=1.0.3' 'xf86dgaproto>=2.0.3' 'recordproto>=1.13.2' 'libgl>=7.4.4' 'glproto>=1.4.9')
 conflicts=('catalyst-utils<=9.2')
 options=('!libtool')
 provides=('x-server')
 groups=('xorg')
 install=xorg-server.install
 source=(${url}/releases/individual/xserver/${pkgname}-${pkgver}.tar.bz2
-	xorg-redhat-die-ugly-pattern-die-die-die.patch
-	server-1.6-branch.patch
-	pending-1.6.2.patch)
+        xorg-redhat-die-ugly-pattern-die-die-die.patch
+        server-1.6-branch.patch
+      	pending-1.6.2.patch)
 md5sums=('e6cba1f07006143daa95ce3f11d999b2'
          '1a336eb22e27cbf443ec5a2ecddfa93c'
-         '99cd540797beb6245ecb7c9f3a7e0eb6'
-         '3c99aff6d7253e6828924f1b9d2fae8e')
+         '4137ebc011080b0d7afa271376653ab7'
+         '06f41b42664b6dc9b56abdc0858901e4')
 
 build() {
   cd "${srcdir}/${pkgname}-${pkgver}"
@@ -31,10 +31,10 @@
   patch -Np3 -i "${srcdir}/xorg-redhat-die-ugly-pattern-die-die-die.patch" || return 1
 
   # Upstream updates from server-1.6 branch
+  # DRI2 parts removed
   patch -Np1 -i "${srcdir}/server-1.6-branch.patch" || return 1
 
   # Pending updates for 1.6.2 - http://wiki.x.org/wiki/Server16Branch
-  # Excludes suggested DRI2 patches
   patch -Np1 -i "${srcdir}/pending-1.6.2.patch" || return 1
 
   # Fix dbus config path
@@ -49,16 +49,16 @@
               --enable-composite \
               --enable-xcsecurity \
               --enable-xorg \
-	      --enable-xephyr \
+      	      --enable-xephyr \
               --enable-glx-tls \
-	      --enable-kdrive \
+	            --enable-kdrive \
               --enable-install-setuid \
               --enable-config-hal \
-	      --enable-config-dbus \
-	      --enable-record \
-	      --disable-xfbdev \
-	      --disable-xfake \
-	      --disable-xsdl \
+      	      --enable-config-dbus \
+      	      --enable-record \
+      	      --disable-xfbdev \
+      	      --disable-xfake \
+      	      --disable-xsdl \
               --disable-static \
               --sysconfdir=/etc/X11 \
               --localstatedir=/var \

Modified: extra-i686/pending-1.6.2.patch
===================================================================
--- extra-i686/pending-1.6.2.patch	2009-06-28 11:18:51 UTC (rev 43671)
+++ extra-i686/pending-1.6.2.patch	2009-06-28 11:27:00 UTC (rev 43672)
@@ -1590,3 +1590,218 @@
 -- 
 1.6.2.4
 
+cgit v0.8.2
+From 6f9e22049862ee9ac7f604411d005d8bb1b2dd1c Mon Sep 17 00:00:00 2001
+From: Peter Hutterer <peter.hutterer at who-t.net>
+Date: Mon, 11 May 2009 02:51:40 +0000
+Subject: dix: ensure Activate/DeactivateGrab has a valid value.
+
+Xephyr doesn't manually set Activate/DeactivateGrab for new devices,
+resulting in a NULL-pointer dereference later when a grab is activated.
+Avoid the segfault by ensuring that the pointer is always valid.
+
+Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>
+---
+diff --git a/dix/devices.c b/dix/devices.c
+index afe340b..6f464e7 100644
+--- a/dix/devices.c
++++ b/dix/devices.c
+@@ -224,6 +224,8 @@ AddInputDevice(ClientPtr client, DeviceProc deviceProc, Bool autoStart)
+ 
+     /* device grab defaults */
+     dev->deviceGrab.grabTime = currentTime;
++    dev->deviceGrab.ActivateGrab = ActivateKeyboardGrab;
++    dev->deviceGrab.DeactivateGrab = DeactivateKeyboardGrab;
+ 
+     dev->coreEvents = TRUE;
+ 
+--
+cgit v0.8.2
+From b1b5ec45c1cb650ccb8c659218f9481379c777d9 Mon Sep 17 00:00:00 2001
+From: Peter Hutterer <peter.hutterer at who-t.net>
+Date: Mon, 11 May 2009 02:53:56 +0000
+Subject: kdrive: set Activate/Deactivate grab for input devices (#21591)
+
+X.Org Bug 21591 <http://bugs.freedesktop.org/show_bug.cgi?id=21591>
+---
+diff --git a/hw/kdrive/src/kinput.c b/hw/kdrive/src/kinput.c
+index 7ed3601..0d216a9 100644
+--- a/hw/kdrive/src/kinput.c
++++ b/hw/kdrive/src/kinput.c
+@@ -915,6 +915,8 @@ KdAddKeyboard (KdKeyboardInfo *ki)
+         return !Success;
+     }
+ 
++    ki->dixdev->deviceGrab.ActivateGrab = ActivateKeyboardGrab;
++    ki->dixdev->deviceGrab.DeactivateGrab = DeactivateKeyboardGrab;
+     RegisterOtherDevice(ki->dixdev);
+ 
+ #ifdef DEBUG
+@@ -984,6 +986,8 @@ KdAddPointer (KdPointerInfo *pi)
+         return BadDevice;
+     }
+ 
++    pi->dixdev->deviceGrab.ActivateGrab = ActivatePointerGrab;
++    pi->dixdev->deviceGrab.DeactivateGrab = DeactivatePointerGrab;
+     RegisterOtherDevice(pi->dixdev);
+ 
+     for (prev = &kdPointers; *prev; prev = &(*prev)->next);
+--
+cgit v0.8.2
+From e244a5991e2cc55f5aa2f6e5255f1dabf56f0235 Mon Sep 17 00:00:00 2001
+From: Federico Mena Quintero <federico at novell.com>
+Date: Tue, 09 Jun 2009 20:28:28 +0000
+Subject: dix/randr: Add missing fields to SRR*NotifyEvent()
+
+Also, remove redundant field swaps and make others match the order in which
+they are declared in the xRR*NotifyEvent structs.
+
+Signed-off-by: Federico Mena Quintero <federico at novell.com>
+Signed-off-by: Keith Packard <keithp at keithp.com>
+---
+diff --git a/randr/randr.c b/randr/randr.c
+index fd0a30a..1c1d0c4 100644
+--- a/randr/randr.c
++++ b/randr/randr.c
+@@ -115,11 +115,11 @@ SRRScreenChangeNotifyEvent(xRRScreenChangeNotifyEvent *from,
+     cpswapl(from->root, to->root);
+     cpswapl(from->window, to->window);
+     cpswaps(from->sizeID, to->sizeID);
++    cpswaps(from->subpixelOrder, to->subpixelOrder);
+     cpswaps(from->widthInPixels, to->widthInPixels);
+     cpswaps(from->heightInPixels, to->heightInPixels);
+     cpswaps(from->widthInMillimeters, to->widthInMillimeters);
+     cpswaps(from->heightInMillimeters, to->heightInMillimeters);
+-    cpswaps(from->subpixelOrder, to->subpixelOrder);
+ }
+ 
+ static void
+@@ -133,8 +133,8 @@ SRRCrtcChangeNotifyEvent(xRRCrtcChangeNotifyEvent *from,
+     cpswapl(from->window, to->window);
+     cpswapl(from->crtc, to->crtc);
+     cpswapl(from->mode, to->mode);
+-    cpswapl(from->window, to->window);
+     cpswaps(from->rotation, to->rotation);
++    /* pad1 */
+     cpswaps(from->x, to->x);
+     cpswaps(from->y, to->y);
+     cpswaps(from->width, to->width);
+@@ -155,6 +155,8 @@ SRROutputChangeNotifyEvent(xRROutputChangeNotifyEvent *from,
+     cpswapl(from->crtc, to->crtc);
+     cpswapl(from->mode, to->mode);
+     cpswaps(from->rotation, to->rotation);
++    to->connection = from->connection;
++    to->subpixelOrder = from->subpixelOrder;
+ }
+ 
+ static void
+@@ -168,6 +170,11 @@ SRROutputPropertyNotifyEvent(xRROutputPropertyNotifyEvent *from,
+     cpswapl(from->output, to->output);
+     cpswapl(from->atom, to->atom);
+     cpswapl(from->timestamp, to->timestamp);
++    to->state = from->state;
++    /* pad1 */
++    /* pad2 */
++    /* pad3 */
++    /* pad4 */
+ }
+ 
+ static void
+--
+cgit v0.8.2
+From 69a9545d1f8110841538410818df19fd960412c5 Mon Sep 17 00:00:00 2001
+From: Keith Packard <keithp at keithp.com>
+Date: Thu, 28 May 2009 21:43:27 +0000
+Subject: Make RANDR 'set' timestamps follow client specified time. Bug 21987.
+
+The lastSetTime value which indicates when the configuration within the
+server was last changed was not getting set in the appropriate RandR
+requests.
+
+Signed-off-by: Keith Packard <keithp at keithp.com>
+---
+diff --git a/randr/rrcrtc.c b/randr/rrcrtc.c
+index 287c211..32a0992 100644
+--- a/randr/rrcrtc.c
++++ b/randr/rrcrtc.c
+@@ -978,6 +978,7 @@ ProcRRSetCrtcConfig (ClientPtr client)
+ 	goto sendReply;
+     }
+     rep.status = RRSetConfigSuccess;
++    pScrPriv->lastSetTime = time;
+     
+ sendReply:
+     if (outputs)
+@@ -987,7 +988,7 @@ sendReply:
+     /* rep.status has already been filled in */
+     rep.length = 0;
+     rep.sequenceNumber = client->sequence;
+-    rep.newTimestamp = pScrPriv->lastConfigTime.milliseconds;
++    rep.newTimestamp = pScrPriv->lastSetTime.milliseconds;
+ 
+     if (client->swapped) 
+     {
+@@ -1130,6 +1131,8 @@ ProcRRSetPanning (ClientPtr client)
+     if (! pScrPriv->rrSetPanning (pScreen, crtc, &total, &tracking, border))
+ 	return BadMatch;
+ 
++    pScrPriv->lastSetTime = time;
++
+     rep.status = RRSetConfigSuccess;
+ 
+ sendReply:
+diff --git a/randr/rrscreen.c b/randr/rrscreen.c
+index 46890bf..a919ffd 100644
+--- a/randr/rrscreen.c
++++ b/randr/rrscreen.c
+@@ -946,8 +946,10 @@ ProcRRSetScreenConfig (ClientPtr client)
+ 
+     if (!RRCrtcSet (crtc, mode, 0, 0, stuff->rotation, 1, &output))
+ 	rep.status = RRSetConfigFailed;
+-    else
++    else {
++	pScrPriv->lastSetTime = time;
+ 	rep.status = RRSetConfigSuccess;
++    }
+ 
+     /*
+      * XXX Configure other crtcs to mirror as much as possible
+--
+cgit v0.8.2
+From 3323f7ac880d5a8261d5b22059374fc9de8ca683 Mon Sep 17 00:00:00 2001
+From: Peter Hutterer <peter.hutterer at who-t.net>
+Date: Wed, 25 Mar 2009 12:55:42 +1000
+Subject: [PATCH] xfree86: fix SWCursor check in xf86CursorSetCursor.
+
+Wrong check for inputInfo.pointer resulted in a SW cursor being rendered when
+the pointer left the screen (in a Xinerama setup).
+We must call the sprite rendering function if
+- SW cursors are enabled, or
+- The current device is not the VCP and not attached to the VCP.
+
+Reported-by: Gordon Yuan <GordonYuan at viatech.com.cn>
+Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>
+---
+ hw/xfree86/ramdac/xf86Cursor.c |    6 +++---
+ 1 files changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/hw/xfree86/ramdac/xf86Cursor.c b/hw/xfree86/ramdac/xf86Cursor.c
+index 2b73b16..896ed37 100644
+--- a/hw/xfree86/ramdac/xf86Cursor.c
++++ b/hw/xfree86/ramdac/xf86Cursor.c
+@@ -302,9 +302,9 @@ xf86CursorSetCursor(DeviceIntPtr pDev, ScreenPtr pScreen, CursorPtr pCurs,
+ 
+ 
+     if (pCurs == NullCursor) {	/* means we're supposed to remove the cursor */
+-        if (ScreenPriv->SWCursor || pDev != inputInfo.pointer)
+-            (*ScreenPriv->spriteFuncs->SetCursor)(pDev, pScreen, NullCursor,
+-                                                  x, y);
++        if (ScreenPriv->SWCursor ||
++            !(pDev == inputInfo.pointer || !pDev->isMaster && pDev->u.master == inputInfo.pointer))
++                (*ScreenPriv->spriteFuncs->SetCursor)(pDev, pScreen, NullCursor, x, y);
+         else if (ScreenPriv->isUp) {
+             xf86SetCursor(pScreen, NullCursor, x, y);
+             ScreenPriv->isUp = FALSE;
+-- 
+1.6.0.6
+

Modified: extra-i686/server-1.6-branch.patch
===================================================================
--- extra-i686/server-1.6-branch.patch	2009-06-28 11:18:51 UTC (rev 43671)
+++ extra-i686/server-1.6-branch.patch	2009-06-28 11:27:00 UTC (rev 43672)
@@ -471,3 +471,307 @@
          (void)DeliverEventsToWindow(dev, pWin, (xEvent *)&ke, 1,
 --
 cgit v0.8.2
+From c643d24cdeaade8d7839691a3113c4d2d17be61e Mon Sep 17 00:00:00 2001
+From: Adam Jackson <ajax at redhat.com>
+Date: Fri, 29 May 2009 22:07:48 +0000
+Subject: vfb: Fix depth setup.
+
+Initialize the depth corresponding to the root window before the
+pixmap-only depths.  Otherwise you end up with the root window depth in
+the depth list twice, which is mildly confusing for clients and
+catastrophically confusing for PanoramiXConsolidate().
+(cherry picked from commit 45530d16097459a756696e255ab4e72d6e51fbc4)
+---
+diff --git a/hw/vfb/InitOutput.c b/hw/vfb/InitOutput.c
+index 6bf6a33..fd383e1 100644
+--- a/hw/vfb/InitOutput.c
++++ b/hw/vfb/InitOutput.c
+@@ -862,8 +862,6 @@ vfbScreenInit(int index, ScreenPtr pScreen, int argc, char **argv)
+     pbits = vfbAllocateFramebufferMemory(pvfb);
+     if (!pbits) return FALSE;
+ 
+-    miSetPixmapDepths ();
+-
+     switch (pvfb->depth) {
+     case 8:
+ 	miSetVisualTypesAndMasks (8,
+@@ -875,20 +873,6 @@ vfbScreenInit(int index, ScreenPtr pScreen, int argc, char **argv)
+ 				   (1 << DirectColor)),
+ 				  8, PseudoColor, 0, 0, 0);
+ 	break;
+-#if 0
+-    /* 12bit PseudoColor with 12bit color resolution
+-     * (to simulate SGI hardware and the 12bit PseudoColor emulation layer) */
+-    case 12:
+-	miSetVisualTypesAndMasks (12,
+-				  ((1 << StaticGray) |
+-				   (1 << GrayScale) |
+-				   (1 << StaticColor) |
+-				   (1 << PseudoColor) |
+-				   (1 << TrueColor) |
+-				   (1 << DirectColor)),
+-				  12, PseudoColor, 0, 0, 0);
+-	break;
+-#endif
+     case 15:
+ 	miSetVisualTypesAndMasks (15,
+ 				  ((1 << TrueColor) |
+@@ -907,18 +891,10 @@ vfbScreenInit(int index, ScreenPtr pScreen, int argc, char **argv)
+ 				   (1 << DirectColor)),
+ 				  8, TrueColor, 0xff0000, 0x00ff00, 0x0000ff);
+ 	break;
+-#if 0
+-    /* 30bit TrueColor (to simulate Sun's XVR-1000/-4000 high quality
+-     * framebuffer series) */
+-    case 30:
+-	miSetVisualTypesAndMasks (30,
+-				  ((1 << TrueColor) |
+-				   (1 << DirectColor)),
+-				  10, TrueColor, 0x3ff00000, 0x000ffc00, 0x000003ff);
+-	break;
+-#endif
+     }
+-	
++
++    miSetPixmapDepths ();
++
+     ret = fbScreenInit(pScreen, pbits, pvfb->width, pvfb->height,
+ 		       dpix, dpiy, pvfb->paddedWidth,pvfb->bitsPerPixel);
+ #ifdef RENDER
+--
+cgit v0.8.2
+From ebca49e0fedcc1c536f1dee7c58cae9903e74fa2 Mon Sep 17 00:00:00 2001
+From: Adam Jackson <ajax at redhat.com>
+Date: Thu, 21 May 2009 14:20:48 +0000
+Subject: EDID: Be more cautious about finding vendor blocks.
+
+Many old monitors zero-fill the detailed descriptors, so check for that
+to avoid a useless warning like:
+
+(WW) RADEON(0): Unknown vendor-specific block 0
+(cherry picked from commit a2c5ee36b21c2ee5c0468f1b251e74c1412dbecb)
+---
+diff --git a/hw/xfree86/ddc/interpret_edid.c b/hw/xfree86/ddc/interpret_edid.c
+index c4d8963..191e900 100644
+--- a/hw/xfree86/ddc/interpret_edid.c
++++ b/hw/xfree86/ddc/interpret_edid.c
+@@ -284,6 +284,8 @@ get_std_timing_section(Uchar *c, struct std_timings *r,
+     }
+ }
+ 
++static const unsigned char empty_block[18];
++
+ static void
+ get_dt_md_section(Uchar *c, struct edid_version *ver, 
+ 		  struct detailed_monitor_section *det_mon)
+@@ -335,10 +337,10 @@ get_dt_md_section(Uchar *c, struct edid_version *ver,
+         det_mon[i].type = DS_UNKOWN;
+         break;
+       }
+-      if (c[3] <= 0x0F) {
++      if (c[3] <= 0x0F && memcmp(c, empty_block, sizeof(empty_block))) {
+ 	det_mon[i].type = DS_VENDOR + c[3];
+       }
+-    } else { 
++    } else {
+       det_mon[i].type = DT;
+       get_detailed_timing_section(c,&det_mon[i].section.d_timings);
+     }
+--
+cgit v0.8.2
+From db61eff891675aeaf2466c3529424de4621005dc Mon Sep 17 00:00:00 2001
+From: Adam Jackson <ajax at redhat.com>
+Date: Fri, 22 May 2009 16:01:55 +0000
+Subject: EDID: Add modes from Established Timings III descriptor to mode pool
+
+EDID 1.4, section 3.10.3.9
+(cherry picked from commit 99e22b86c5f1a3653f3caaf01368a777d2b208d0)
+---
+diff --git a/hw/xfree86/ddc/edid.h b/hw/xfree86/ddc/edid.h
+index 45caf6e..3ca402f 100644
+--- a/hw/xfree86/ddc/edid.h
++++ b/hw/xfree86/ddc/edid.h
+@@ -527,7 +527,7 @@ struct detailed_monitor_section {
+     struct whitePoints wp[2];		/* 32 */
+     /* color management data */
+     struct cvt_timings cvt[4];		/* 64 */
+-    /* established timings III */
++    Uchar est_iii[6];			/* 6 */
+   } section;				/* max: 80 */
+ };
+ 
+diff --git a/hw/xfree86/ddc/interpret_edid.c b/hw/xfree86/ddc/interpret_edid.c
+index 191e900..310606c 100644
+--- a/hw/xfree86/ddc/interpret_edid.c
++++ b/hw/xfree86/ddc/interpret_edid.c
+@@ -329,6 +329,7 @@ get_dt_md_section(Uchar *c, struct edid_version *ver,
+ 	break;
+       case ADD_EST_TIMINGS:
+ 	det_mon[i].type = DS_EST_III;
++	memcpy(det_mon[i].section.est_iii, c + 6, 6);
+ 	break;
+       case ADD_DUMMY:
+ 	det_mon[i].type = DS_DUMMY;
+diff --git a/hw/xfree86/modes/xf86EdidModes.c b/hw/xfree86/modes/xf86EdidModes.c
+index 54f2c65..087f663 100644
+--- a/hw/xfree86/modes/xf86EdidModes.c
++++ b/hw/xfree86/modes/xf86EdidModes.c
+@@ -628,6 +628,85 @@ DDCModesFromCVT(int scrnIndex, struct cvt_timings *t)
+ }
+ #endif
+ 
++static const struct {
++    short w;
++    short h;
++    short r;
++    short rb;
++} EstIIIModes[] = {
++    /* byte 6 */
++    { 640, 350, 85, 0 },
++    { 640, 400, 85, 0 },
++    { 720, 400, 85, 0 },
++    { 640, 480, 85, 0 },
++    { 848, 480, 60, 0 },
++    { 800, 600, 85, 0 },
++    { 1024, 768, 85, 0 },
++    { 1152, 864, 75, 0 },
++    /* byte 7 */
++    { 1280, 768, 60, 1 },
++    { 1280, 768, 60, 0 },
++    { 1280, 768, 75, 0 },
++    { 1280, 768, 85, 0 },
++    { 1280, 960, 60, 0 },
++    { 1280, 960, 85, 0 },
++    { 1280, 1024, 60, 0 },
++    { 1280, 1024, 85, 0 },
++    /* byte 8 */
++    { 1360, 768, 60, 0 },
++    { 1440, 900, 60, 1 },
++    { 1440, 900, 60, 0 },
++    { 1440, 900, 75, 0 },
++    { 1440, 900, 85, 0 },
++    { 1400, 1050, 60, 1 },
++    { 1400, 1050, 60, 0 },
++    { 1400, 1050, 75, 0 },
++    /* byte 9 */
++    { 1400, 1050, 85, 0 },
++    { 1680, 1050, 60, 1 },
++    { 1680, 1050, 60, 0 },
++    { 1680, 1050, 75, 0 },
++    { 1680, 1050, 85, 0 },
++    { 1600, 1200, 60, 0 },
++    { 1600, 1200, 65, 0 },
++    { 1600, 1200, 70, 0 },
++    /* byte 10 */
++    { 1600, 1200, 75, 0 },
++    { 1600, 1200, 85, 0 },
++    { 1792, 1344, 60, 0 },
++    { 1792, 1344, 85, 0 },
++    { 1856, 1392, 60, 0 },
++    { 1856, 1392, 75, 0 },
++    { 1920, 1200, 60, 1 },
++    { 1920, 1200, 60, 0 },
++    /* byte 11 */
++    { 1920, 1200, 75, 0 },
++    { 1920, 1200, 85, 0 },
++    { 1920, 1440, 60, 0 },
++    { 1920, 1440, 75, 0 },
++};
++
++static DisplayModePtr
++DDCModesFromEstIII(unsigned char *est)
++{
++    DisplayModePtr modes = NULL;
++    int i, j, m;
++
++    for (i = 0; i < 6; i++) {
++	for (j = 7; j > 0; j--) {
++	    if (est[i] & (1 << j)) {
++		m = (i * 8) + (7 - j);
++		modes = xf86ModesAdd(modes,
++				     FindDMTMode(EstIIIModes[m].w,
++						 EstIIIModes[m].h,
++						 EstIIIModes[m].r,
++						 EstIIIModes[m].rb));
++	    }
++	}
++    }
++
++    return modes;
++}
+ 
+ /*
+  * This is only valid when the sink claims to be continuous-frequency
+@@ -798,6 +877,7 @@ xf86DDCGetModes(int scrnIndex, xf86MonPtr DDC)
+     for (i = 0; i < DET_TIMINGS; i++) {
+ 	struct detailed_monitor_section *det_mon = &DDC->det_mon[i];
+ 
++	Mode = NULL;
+         switch (det_mon->type) {
+         case DT:
+             Mode = DDCModeFromDetailedTiming(scrnIndex,
+@@ -805,22 +885,23 @@ xf86DDCGetModes(int scrnIndex, xf86MonPtr DDC)
+ 					     preferred,
+ 					     quirks);
+ 	    preferred = FALSE;
+-            Modes = xf86ModesAdd(Modes, Mode);
+             break;
+         case DS_STD_TIMINGS:
+             Mode = DDCModesFromStandardTiming(det_mon->section.std_t,
+ 					      quirks, timing_level, rb);
+-            Modes = xf86ModesAdd(Modes, Mode);
+             break;
+ #if XORG_VERSION_CURRENT < XORG_VERSION_NUMERIC(7,0,0,0,0)
+ 	case DS_CVT:
+ 	    Mode = DDCModesFromCVT(scrnIndex, det_mon->section.cvt);
+-	    Modes = xf86ModesAdd(Modes, Mode);
+ 	    break;
+ #endif
++	case DS_EST_III:
++	    Mode = DDCModesFromEstIII(det_mon->section.est_iii);
++	    break;
+         default:
+             break;
+         }
++	Modes = xf86ModesAdd(Modes, Mode);
+     }
+ 
+     /* Add established timings */
+--
+cgit v0.8.2
+From dbac41b624e4aa86a6a184b7ebb52bfdd367bbf0 Mon Sep 17 00:00:00 2001
+From: Adam Jackson <ajax at redhat.com>
+Date: Fri, 19 Jun 2009 16:42:07 +0000
+Subject: pci: Dump vendor/devices ids in the printed device list
+
+(cherry picked from commit eb35402d0a5290e8a73d7d1e92f173294c364cc2)
+---
+diff --git a/hw/xfree86/common/xf86pciBus.c b/hw/xfree86/common/xf86pciBus.c
+index 467a0c3..5b29a15 100644
+--- a/hw/xfree86/common/xf86pciBus.c
++++ b/hw/xfree86/common/xf86pciBus.c
+@@ -417,18 +417,16 @@ xf86PciProbe(void)
+ 	if (xf86IsPrimaryPci(info))
+ 	    prim = "*";
+ 
+-	xf86Msg( X_PROBED, "PCI:%s(%u@%u:%u:%u) ", prim, info->domain,
+-		 info->bus, info->dev, info->func );
++	xf86Msg(X_PROBED, "PCI:%s(%u:%u:%u:%u) %04x:%04x:%04x:%04x ", prim,
++		info->domain, info->bus, info->dev, info->func,
++		info->vendor_id, info->device_id,
++		info->subvendor_id, info->subdevice_id);
+ 
+ 	if (vendorname)
+ 	    xf86ErrorF("%s ", vendorname);
+-	else
+-	    xf86ErrorF("unknown vendor (0x%04x) ", info->vendor_id);
+ 
+ 	if (chipname)
+ 	    xf86ErrorF("%s ", chipname);
+-	else
+-	    xf86ErrorF("unknown chipset (0x%04x) ", info->device_id);
+ 
+ 	xf86ErrorF("rev %d", info->revision);
+ 
+--
+cgit v0.8.2




More information about the arch-commits mailing list