14850206 update to Xorg 1.13.0
authorNiveditha Rau <Niveditha.Rau@Oracle.COM>
Mon, 05 Nov 2012 16:17:08 -0800
changeset 1333 988018ca2b99
parent 1332 60ed704c76d6
child 1334 7f2921729ac5
14850206 update to Xorg 1.13.0
open-src/common/Makefile.init
open-src/driver/efb/Makefile
open-src/driver/efb/disable-xaa.patch
open-src/driver/efb/sun-src/src/compat-api.h
open-src/driver/xf86-input-mouse/6892799.patch
open-src/driver/xf86-input-mouse/Makefile
open-src/driver/xf86-input-vmmouse/Makefile
open-src/driver/xf86-video-ast/Makefile
open-src/driver/xf86-video-ast/sparc-ast.patch
open-src/driver/xf86-video-ast/sun-src/src/ast_sparc_driver.c
open-src/driver/xf86-video-ati/Makefile
open-src/driver/xf86-video-ati/disable-xaa.patch
open-src/driver/xf86-video-ati/mapfiles.patch
open-src/driver/xf86-video-cirrus/Makefile
open-src/driver/xf86-video-cirrus/mapfiles.patch
open-src/driver/xf86-video-dummy/Makefile
open-src/driver/xf86-video-intel/Makefile
open-src/driver/xf86-video-intel/libraries.patch
open-src/driver/xf86-video-intel/mapfile.externs
open-src/driver/xf86-video-mach64/113.patch
open-src/driver/xf86-video-mach64/Makefile
open-src/driver/xf86-video-mga/Makefile
open-src/driver/xf86-video-mga/libraries.patch
open-src/driver/xf86-video-mga/sparc-bus-probe.patch
open-src/driver/xf86-video-mga/sparc.patch
open-src/driver/xf86-video-nv/Makefile
open-src/driver/xf86-video-openchrome/Makefile
open-src/driver/xf86-video-openchrome/mapfile.externs
open-src/driver/xf86-video-r128/Makefile
open-src/driver/xf86-video-trident/Makefile
open-src/driver/xf86-video-trident/mapfile.externs
open-src/driver/xf86-video-vesa/Makefile
open-src/driver/xf86-video-vmware/Makefile
open-src/driver/xf86-video-vmware/compat.patch
open-src/driver/xf86-video-vmware/sun-src/src/compat-api.h
open-src/lib/libXrandr/Makefile
open-src/lib/libdrm/Makefile
open-src/lib/libdrm/atomic.patch
open-src/lib/libdrm/no-tests.patch
open-src/lib/mesa/COPYING
open-src/lib/mesa/Makefile
open-src/lib/mesa/bromolow-chipset.patch
open-src/lib/mesa/bugfix-post804.patch
open-src/lib/mesa/gallium-endian.patch
open-src/lib/mesa/gcc-bitcount.patch
open-src/lib/mesa/glsl.patch
open-src/lib/mesa/install-pc-dir.patch
open-src/lib/mesa/solaris-port.patch
open-src/lib/pixman/COPYING
open-src/lib/pixman/Makefile
open-src/lib/xcb-util-image/Makefile
open-src/lib/xcb-util-keysyms/Makefile
open-src/lib/xcb-util-wm/Makefile
open-src/lib/xcb-util/Makefile
open-src/proto/dri2proto/Makefile
open-src/proto/randrproto/Makefile
open-src/xserver/xorg/113-port.patch
open-src/xserver/xorg/COPYING
open-src/xserver/xorg/IA.patch
open-src/xserver/xorg/Makefile
open-src/xserver/xorg/SProcDRI2Connect.patch
open-src/xserver/xorg/amd64-loader-path.patch
open-src/xserver/xorg/autodetect-kernel-dev-fb.patch
open-src/xserver/xorg/dixmods-deps.patch
open-src/xserver/xorg/mapfile-Xorg-externs.i386
open-src/xserver/xorg/mapfile-Xorg-externs.sparc
open-src/xserver/xorg/patch-list
open-src/xserver/xorg/sparc-no-bus-probe.patch
open-src/xserver/xorg/studio-asm.patch
open-src/xserver/xorg/sun-paths.patch
open-src/xserver/xorg/sun-src/hw/xfree86/dixmods/iamodule.c
open-src/xserver/xorg/sun-src/hw/xfree86/dixmods/tsolmodule.c
open-src/xserver/xorg/sun-src/os/dtlogin.c
open-src/xserver/xorg/xtsol.patch
open-src/xserver/xvnc/Makefile
open-src/xserver/xvnc/sun-src/unix/xserver113.patch
open-src/xserver/xvnc/tigervnc11-xorg113.patch
pkg/manifests/x11-library-libdrm.p5m
pkg/manifests/x11-library-mesa.p5m
pkg/manifests/x11-library-xcb-util.p5m
pkg/manifests/x11-server-xorg-driver-xorg-input-mouse.p5m
pkg/manifests/x11-server-xorg-driver-xorg-video-ati.p5m
pkg/manifests/x11-server-xorg.p5m
--- a/open-src/common/Makefile.init	Fri Nov 02 15:59:08 2012 -0700
+++ b/open-src/common/Makefile.init	Mon Nov 05 16:17:08 2012 -0800
@@ -389,15 +389,15 @@
 # referenced in multiple places, so it's kept here for easy sharing.
 # 
 # Current Xorg server source tarball to use sources from:
-XORGSERVER_VERS=1.12.4
+XORGSERVER_VERS=1.13.0
 # Minimum Xorg server version that we expect to be ABI compatible with.
 # Usually .99 of the previous minor release series, as that's the convention
 # for the development snapshots of the next release series.
-MIN_XSERVER_VERS=1.11.99
+MIN_XSERVER_VERS=1.12.99
 # Next highest Xorg server version that we expect to be ABI incompatible with.
 # Usually .99 of the current release series, as Xorg tends to break ABI's
 # in each minor release train (1.8, 1.9, etc.)
-NEXT_XSERVER_VERS=1.12.99
+NEXT_XSERVER_VERS=1.13.99
 
 # Version of pkgfmt output rules to apply
 PKGFMT_OUTPUT=v2
--- a/open-src/driver/efb/Makefile	Fri Nov 02 15:59:08 2012 -0700
+++ b/open-src/driver/efb/Makefile	Mon Nov 05 16:17:08 2012 -0800
@@ -40,7 +40,8 @@
 	RAC-API-removal.patch,-p1 \
 	no-modes.patch,-p1 \
 	sparc-efb.patch,-p1 \
-	pciTag.patch
+	pciTag.patch \
+	disable-xaa.patch
 
 # Need to regenerate configure after patching Makefile.am in sparc-efb.patch
 AUTORECONF=yes
@@ -78,8 +79,8 @@
         -R$(X11_SERVERMODS_DIR)/extensions \
         -R$(X11_SERVERLIBS_DIR)$(ARCHLIBSUBDIR) \
         -R$(PROTODIR)/usr/lib$(ARCHLIBSUBDIR) \
-        -lexa -lfb -lint10 -lvbe -lvgahw -lxaa -lshadow \
-        -lpciaccess -lpixman-1 -ldrm -ldri -lglx -lm \
+        -lexa -lfb -lint10 -lvbe -lvgahw -lshadow \
+        -lpciaccess -lpixman-1 -ldrm -lglx -lm \
         -M $(XF86_VIDEO_ATI_SRC)/mapfile-bt829_drv-external \
         -M $(XF86_VIDEO_ATI_SRC)/mapfile-fi1236_drv-external \
         -M $(XF86_VIDEO_ATI_SRC)/mapfile-msp3430_drv-external \
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/open-src/driver/efb/disable-xaa.patch	Mon Nov 05 16:17:08 2012 -0800
@@ -0,0 +1,85 @@
+--- configure.ac	Fri Oct  5 10:09:46 2012
++++ configure.ac	Fri Oct  5 10:14:54 2012
+@@ -164,7 +164,7 @@
+ 	AC_DEFINE(TV_OUT, 1, [Build TV-Out support for atimisc.])
+ fi
+ 
+-AC_DEFINE(USE_XAA, 1, [Build support for XAA])
++#AC_DEFINE(USE_XAA, 1, [Build support for XAA])
+ 
+ # Properly handle EXA.
+ AC_MSG_CHECKING([whether to enable EXA support])
+--- src/radeon.h	Fri Oct  5 10:08:43 2012
++++ src/radeon.h	Fri Oct  5 10:43:28 2012
+@@ -89,6 +89,7 @@
+ #include "picturestr.h"
+ #endif
+ 
++#include "compat-api.h"
+ #include "atipcirename.h"
+ 
+ #ifndef MAX
+@@ -408,9 +409,9 @@
+ 
+     RADEONSavePtr     SavedReg;         /* Original (text) mode              */
+     RADEONSavePtr     ModeReg;          /* Current mode                      */
+-    Bool              (*CloseScreen)(int, ScreenPtr);
++    Bool              (*CloseScreen)(CLOSE_SCREEN_ARGS_DECL);
+ 
+-    void              (*BlockHandler)(int, pointer, pointer, pointer);
++    void              (*BlockHandler)(BLOCKHANDLER_ARGS_DECL);
+ 
+     Bool              PaletteSavedOnVT; /* Palette saved on last VT switch   */
+ 
+--- src/radeon_driver.c	Fri Oct  5 10:23:49 2012
++++ src/radeon_driver.c	Fri Oct  5 10:48:25 2012
+@@ -120,7 +120,7 @@
+ #endif /* __sparc__ */
+ 
+ 				/* Forward definitions for driver functions */
+-static Bool RADEONCloseScreen(int scrnIndex, ScreenPtr pScreen);
++static Bool RADEONCloseScreen(CLOSE_SCREEN_ARGS_DECL);
+ static Bool RADEONSaveScreen(ScreenPtr pScreen, int mode);
+ static void RADEONSave(ScrnInfoPtr pScrn);
+ 
+@@ -3037,15 +3037,14 @@
+ #endif
+ }
+ 
+-static void RADEONBlockHandler(int i, pointer blockData,
+-			       pointer pTimeout, pointer pReadmask)
++static void RADEONBlockHandler(BLOCKHANDLER_ARGS_DECL)
+ {
+-    ScreenPtr      pScreen = screenInfo.screens[i];
+-    ScrnInfoPtr    pScrn   = xf86Screens[i];
++    SCREEN_PTR(arg);
++    ScrnInfoPtr    pScrn   = xf86ScreenToScrn(pScreen);
+     RADEONInfoPtr  info    = RADEONPTR(pScrn);
+ 
+     pScreen->BlockHandler = info->BlockHandler;
+-    (*pScreen->BlockHandler) (i, blockData, pTimeout, pReadmask);
++    (*pScreen->BlockHandler) (BLOCKHANDLER_ARGS);
+     pScreen->BlockHandler = RADEONBlockHandler;
+ 
+     if (info->VideoTimerCallback)
+@@ -5149,9 +5148,9 @@
+  * text mode, unmap video memory, and unwrap and call the saved
+  * CloseScreen function.
+  */
+-static Bool RADEONCloseScreen(int scrnIndex, ScreenPtr pScreen)
++static Bool RADEONCloseScreen(CLOSE_SCREEN_ARGS_DECL)
+ {
+-    ScrnInfoPtr    pScrn = xf86Screens[scrnIndex];
++    ScrnInfoPtr    pScrn = xf86ScreenToScrn(pScreen);
+     RADEONInfoPtr  info  = RADEONPTR(pScrn);
+ 
+     xf86DrvMsgVerb(pScrn->scrnIndex, X_INFO, RADEON_LOGLEVEL_DEBUG,
+@@ -5240,7 +5239,7 @@
+ 
+     pScreen->BlockHandler = info->BlockHandler;
+     pScreen->CloseScreen = info->CloseScreen;
+-    return (*pScreen->CloseScreen)(scrnIndex, pScreen);
++    return (*pScreen->CloseScreen)(CLOSE_SCREEN_ARGS);
+ }
+ 
+ void RADEONFreeScreen(int scrnIndex, int flags)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/open-src/driver/efb/sun-src/src/compat-api.h	Mon Nov 05 16:17:08 2012 -0800
@@ -0,0 +1,94 @@
+/*
+ * Copyright 2012 Red Hat, Inc.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ *
+ * Author: Dave Airlie <[email protected]>
+ */
+
+/* this file provides API compat between server post 1.13 and pre it,
+   it should be reused inside as many drivers as possible */
+#ifndef COMPAT_API_H
+#define COMPAT_API_H
+
+#ifndef GLYPH_HAS_GLYPH_PICTURE_ACCESSOR
+#define GetGlyphPicture(g, s) GlyphPicture((g))[(s)->myNum]
+#define SetGlyphPicture(g, s, p) GlyphPicture((g))[(s)->myNum] = p
+#endif
+
+#ifndef XF86_HAS_SCRN_CONV
+#define xf86ScreenToScrn(s) xf86Screens[(s)->myNum]
+#define xf86ScrnToScreen(s) screenInfo.screens[(s)->scrnIndex]
+#endif
+
+#ifndef XF86_SCRN_INTERFACE
+
+#define SCRN_ARG_TYPE int
+#define SCRN_INFO_PTR(arg1) ScrnInfoPtr pScrn = xf86Screens[(arg1)]
+
+#define SCREEN_ARG_TYPE int
+#define SCREEN_PTR(arg1) ScreenPtr pScreen = screenInfo.screens[(arg1)]
+
+#define SCREEN_INIT_ARGS_DECL int i, ScreenPtr pScreen, int argc, char **argv
+
+#define BLOCKHANDLER_ARGS_DECL int arg, pointer blockData, pointer pTimeout, pointer pReadmask
+#define BLOCKHANDLER_ARGS arg, blockData, pTimeout, pReadmask
+
+#define CLOSE_SCREEN_ARGS_DECL int scrnIndex, ScreenPtr pScreen
+#define CLOSE_SCREEN_ARGS scrnIndex, pScreen
+
+#define ADJUST_FRAME_ARGS_DECL int arg, int x, int y, int flags
+
+#define SWITCH_MODE_ARGS_DECL int arg, DisplayModePtr mode, int flags
+
+#define FREE_SCREEN_ARGS_DECL int arg, int flags
+
+#define VT_FUNC_ARGS_DECL int arg, int flags
+#define VT_FUNC_ARGS(flags) pScrn->scrnIndex, (flags)
+
+#define XF86_ENABLEDISABLEFB_ARG(x) ((x)->scrnIndex)
+#else
+#define SCRN_ARG_TYPE ScrnInfoPtr
+#define SCRN_INFO_PTR(arg1) ScrnInfoPtr pScrn = (arg1)
+
+#define SCREEN_ARG_TYPE ScreenPtr
+#define SCREEN_PTR(arg1) ScreenPtr pScreen = (arg1)
+
+#define SCREEN_INIT_ARGS_DECL ScreenPtr pScreen, int argc, char **argv
+
+#define BLOCKHANDLER_ARGS_DECL ScreenPtr arg, pointer pTimeout, pointer pReadmask
+#define BLOCKHANDLER_ARGS arg, pTimeout, pReadmask
+
+#define CLOSE_SCREEN_ARGS_DECL ScreenPtr pScreen
+#define CLOSE_SCREEN_ARGS pScreen
+
+#define ADJUST_FRAME_ARGS_DECL ScrnInfoPtr arg, int x, int y
+#define SWITCH_MODE_ARGS_DECL ScrnInfoPtr arg, DisplayModePtr mode
+
+#define FREE_SCREEN_ARGS_DECL ScrnInfoPtr arg
+
+#define VT_FUNC_ARGS_DECL ScrnInfoPtr arg
+#define VT_FUNC_ARGS(flags) pScrn
+
+#define XF86_ENABLEDISABLEFB_ARG(x) (x)
+
+#endif
+
+#endif
--- a/open-src/driver/xf86-input-mouse/6892799.patch	Fri Nov 02 15:59:08 2012 -0700
+++ b/open-src/driver/xf86-input-mouse/6892799.patch	Mon Nov 05 16:17:08 2012 -0800
@@ -19,46 +19,44 @@
 # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
 # DEALINGS IN THE SOFTWARE.
 
-diff --git a/src/mouse.c b/src/mouse.c
-index f4c7c82..0e577b3 100644
---- a/src/mouse.c
-+++ b/src/mouse.c
-@@ -1616,13 +1616,14 @@ MouseProc(DeviceIntPtr device, int what)
- 	ErrorF("assigning %p atom=%d name=%s\n", device, pInfo->atom,
- 		pInfo->name);
+--- a/src/mouse.c	Wed Sep 26 13:43:27 2012
++++ b/src/mouse.c	Wed Sep 26 13:45:30 2012
+@@ -1727,13 +1727,14 @@
+                 pInfo->name);
  #endif
--	break;
--
--    case DEVICE_ON:
- 	pInfo->fd = xf86OpenSerial(pInfo->options);
- 	if (pInfo->fd == -1)
- 	    xf86Msg(X_WARNING, "%s: cannot open input device\n", pInfo->name);
--	else {
-+
-+	break;
+         MouseInitProperties(device);
++	pInfo->fd = xf86OpenSerial(pInfo->options);
++	if (pInfo->fd == -1)
++	    xf86Msg(X_WARNING, "%s: cannot open input device\n", pInfo->name);
 +
-+    case DEVICE_ON:
-+	if (pInfo->fd != -1) {
- 	    if (pMse->xisbscale)
- 		pMse->buffer = XisbNew(pInfo->fd, pMse->xisbscale * 4);
- 	    else
-@@ -1678,8 +1679,6 @@ MouseProc(DeviceIntPtr device, int what)
- 		XisbFree(pMse->buffer);
- 		pMse->buffer = NULL;
- 	    }
--	    xf86CloseSerial(pInfo->fd);
--	    pInfo->fd = -1;
- 	    if (pMse->emulate3Buttons || pMse->emulate3ButtonsSoft)
- 	    {
- 		RemoveBlockAndWakeupHandlers (MouseBlockHandler,
-@@ -1690,6 +1689,10 @@ MouseProc(DeviceIntPtr device, int what)
- 	device->public.on = FALSE;
- 	break;
+         break;
+ 
+     case DEVICE_ON:
+-        pInfo->fd = xf86OpenSerial(pInfo->options);
+-        if (pInfo->fd == -1)
+-            xf86Msg(X_WARNING, "%s: cannot open input device\n", pInfo->name);
+-        else {
++	if (pInfo->fd != -1) { 
+             if (pMse->xisbscale)
+                 pMse->buffer = XisbNew(pInfo->fd, pMse->xisbscale * 4);
+             else
+@@ -1789,8 +1790,6 @@
+                 XisbFree(pMse->buffer);
+                 pMse->buffer = NULL;
+             }
+-            xf86CloseSerial(pInfo->fd);
+-            pInfo->fd = -1;
+             if (pMse->emulate3Buttons || pMse->emulate3ButtonsSoft)
+             {
+                 RemoveBlockAndWakeupHandlers (MouseBlockHandler,
+@@ -1801,6 +1800,10 @@
+         device->public.on = FALSE;
+         break;
      case DEVICE_CLOSE:
-+ 	if (pInfo->fd != -1) {
-+	    xf86CloseSerial(pInfo->fd);
-+	    pInfo->fd = -1;
-+	}
- 	free(pMse->mousePriv);
- 	pMse->mousePriv = NULL;
- 	break;
++        if (pInfo->fd != -1) {
++            xf86CloseSerial(pInfo->fd);
++            pInfo->fd = -1;
++        }
+         free(pMse->mousePriv);
+         pMse->mousePriv = NULL;
+         break;
--- a/open-src/driver/xf86-input-mouse/Makefile	Fri Nov 02 15:59:08 2012 -0700
+++ b/open-src/driver/xf86-input-mouse/Makefile	Mon Nov 05 16:17:08 2012 -0800
@@ -29,12 +29,12 @@
 MODULE_NAME=xf86-input-mouse
 
 # Version number (used in path names)
-MODULE_VERSION=1.7.2
+MODULE_VERSION=1.8.1
 
 # Checksums for upstream tarball
-TARBALL_MD5    = 871c828b88e9c973f1457724b35576fb
-TARBALL_SHA1   = 0da6390c6f3d7d636110a52f08193739929ae4ae
-TARBALL_SHA256 = 332b7357c18e6b9daba51c8ed48ce118e9b51fb5990b6a2a68637be62da7413b
+TARBALL_MD5    = f314c56e4ac6c8fc0cc2710892d5776e
+TARBALL_SHA1   = e00e825c9506b7b9c31bf4b8a3a609df8ef408c1
+TARBALL_SHA256 = f5b97aac9aab8fa8b933e960631441ae23b18681c8bf3d5007c00da838f9c9c8
 
 # Patches to apply to source after unpacking, in order
 SOURCE_PATCHES  = \
@@ -50,6 +50,10 @@
 # Additional install rules beyond what upstream installs
 MODULE_ADD_INSTALL_TARGETS=install_docs
 
+# Install xorg-mouse.pc to /usr/share
+MODULE_PKGCONFIG_DIR=$(PKGCONFIG_DIR_SHARE)
+MODULE_PKGCONFIG_DIR_SET=yes
+
 include ../Makefile.inc
 
 install_docs: $(PROTODIR)$(X11_DOC_DIR)/README.mouse
--- a/open-src/driver/xf86-input-vmmouse/Makefile	Fri Nov 02 15:59:08 2012 -0700
+++ b/open-src/driver/xf86-input-vmmouse/Makefile	Mon Nov 05 16:17:08 2012 -0800
@@ -29,12 +29,12 @@
 MODULE_NAME=xf86-input-vmmouse
 
 # Version number (used in path names)
-MODULE_VERSION=12.8.0
+MODULE_VERSION=12.9.0
 
 # Checksums for upstream tarball
-TARBALL_MD5   = 15fce165117706cd5e774a8aa58122ce
-TARBALL_SHA1  = ecca90d5e992f9358f7932e0c46e92ebe715f9de
-TARBALL_SHA256= a8a6ec0b567c48c130ccb830e15dfc2b201831841de0c2cc56bd87256d2d869a
+TARBALL_MD5   = 2b3bfea9ba1f73d9d68bddd0d6b20112
+TARBALL_SHA1  = 83500beddba2da390389705d482131872fe9be8b
+TARBALL_SHA256= fbcf00f6bfee38bc65e0f0b812a4d076f7e203e81ed908e57de4026792b299bf
 
 # Patches to apply to source after unpacking, in order
 SOURCE_PATCHES = libraries.patch,-p1
--- a/open-src/driver/xf86-video-ast/Makefile	Fri Nov 02 15:59:08 2012 -0700
+++ b/open-src/driver/xf86-video-ast/Makefile	Mon Nov 05 16:17:08 2012 -0800
@@ -29,16 +29,15 @@
 MODULE_NAME=xf86-video-ast
 
 # Version number (used in path names)
-MODULE_VERSION=0.93.10
+MODULE_VERSION=0.97.0
 
 # Checksums for upstream tarball
-TARBALL_MD5   = de0bf8e0c8ab67be42c14f07ca427271
-TARBALL_SHA1  = 40e8acd04ccf670b196be74a2c806d064f7b68db
-TARBALL_SHA256= c9d466fef391bdf960f79b82f1f776a1c1ab870e93475c3d1b3d028531fac4e0
+TARBALL_MD5   = 2b630ed7d7864045b324b39cd58da367
+TARBALL_SHA1  = 11cb9a687cec6f0943ad6b9a47434815334d2a20
+TARBALL_SHA256= 28fcd4781676485293f6dcd46e0797866f6219e22e1851c9796b037589998e76
 
 # Patches to apply to source after unpacking, in order
-SOURCE_PATCHES += sparc-ast.patch,-p1 \
-		  7164238.patch
+SOURCE_PATCHES += sparc-ast.patch,-p1
 
 # Link in additional source files from sun-src directory
 ADDITIONAL_SOURCE_DIR=sun-src
@@ -53,7 +52,7 @@
 # Libraries/modules to link with
 AST_LIBRARIES_sparc = # nothing extra
 AST_LIBRARIES_i386 = -lint10 -lpciaccess -lvbe -lvgahw
-AST_LIBRARIES = -lfb -lxaa $(AST_LIBRARIES_$(MACH))
+AST_LIBRARIES = -lfb $(AST_LIBRARIES_$(MACH))
 MODULE_LD_OPTIONS= \
 	-L$(PROTODIR)$(X11_SERVERMODS_DIR) \
 	-R$(X11_SERVERMODS_DIR) \
--- a/open-src/driver/xf86-video-ast/sparc-ast.patch	Fri Nov 02 15:59:08 2012 -0700
+++ b/open-src/driver/xf86-video-ast/sparc-ast.patch	Mon Nov 05 16:17:08 2012 -0800
@@ -1,19 +1,14 @@
-diff --git a/src/Makefile.am b/src/Makefile.am
-index 4cd7075..58274df 100644
---- a/src/Makefile.am
-+++ b/src/Makefile.am
-@@ -42,4 +42,5 @@ ast_drv_la_SOURCES =	\
- 	ast_pcirename.h \
+--- a/src/Makefile.am	Fri Oct  5 08:24:21 2012
++++ b/src/Makefile.am	Fri Oct  5 08:24:40 2012
+@@ -43,4 +43,5 @@
  	ast_tool.c 	\
  	ast_vgatool.c 	\
--	ast_vgatool.h
-+	ast_vgatool.h	\
-+	ast_sparc_driver.c
-diff --git a/src/ast.h b/src/ast.h
-index 7ceee31..a6af228 100644
---- a/src/ast.h
-+++ b/src/ast.h
-@@ -20,8 +20,17 @@
+ 	ast_vgatool.h   \
++	ast_sparc_driver.c   \
+         compat-api.h
+--- a/src/ast.h	Fri Oct  5 08:25:02 2012
++++ b/src/ast.h	Fri Oct  5 08:38:59 2012
+@@ -20,9 +20,17 @@
   * PERFORMANCE OF THIS SOFTWARE.
   */
  
@@ -23,38 +18,22 @@
  #include <string.h>
  #include <stdlib.h>
 +#include <sys/visual_io.h>
-+
+ 
 +#ifdef __sparc
 +#define __sparc__ 1
 +#endif
 +
- 
- #include "ast_pcirename.h"
- 
-@@ -90,6 +99,15 @@ typedef CARD32  	ULONG;
- typedef struct _ASTRegRec {
-     UCHAR 	ExtCRTC[0x50];
-     ULONG	GFX[12];
-+
-+#if	(defined(__sparc__))
-+    UCHAR 	MISC;	
-+    UCHAR 	SEQ[4];
-+    UCHAR 	CRTC[25];
-+    UCHAR 	AR[20];	    
-+    UCHAR 	GR[9];
-+    UCHAR	DAC[256][3];
-+#endif
- } ASTRegRec, *ASTRegPtr;
- 
- typedef struct _VIDEOMODE {
-@@ -249,12 +267,94 @@ typedef struct _ASTRec {
+ #ifdef HAVE_XAA_H
+ #include "xaa.h"
+ #endif
+@@ -267,12 +275,93 @@
      Atom		xvGammaRed, xvGammaGreen, xvGammaBlue;
  #endif
  
 +#if defined(__sparc__)
-+    char 		*deviceName;
-+    int  		fd;
-+#endif /* __sparc__ */
++    char               *deviceName;
++    int                fd;
++#endif
 +
  } ASTRec, *ASTRecPtr, *ASTPtr;
  
@@ -78,24 +57,24 @@
 +} vis_video_mode_t;
 +
 +
-+#define VIS_GETPCICONFIG		(VIOC | 14)
++#define VIS_GETPCICONFIG               (VIOC | 14)
 +
 +typedef struct  vis_pci_cfg {
-+        uint16_t        VendorID;
++       uint16_t        VendorID;
 +        uint16_t        DeviceID;
 +        uint16_t        Command;
 +        uint16_t        Status;
 +        uint8_t         RevisionID;
 +        uint8_t         ProgIF;
 +        uint8_t         SubClass;
-+        uint8_t         BaseClass;
++       uint8_t         BaseClass;
 +
 +        uint8_t         CacheLineSize;
 +        uint8_t         LatencyTimer;
 +        uint8_t         HeaderType;
 +        uint8_t         BIST;
 +
-+        uint32_t        bar[6];
++       uint32_t        bar[6];
 +        uint32_t        CIS;
 +        uint16_t        SubVendorID;
 +        uint16_t        SubSystemID;
@@ -105,12 +84,12 @@
 +        uint8_t         Reserved_1[3];
 +        uint32_t        Reserved_2;
 +
-+        uint8_t         InterruptLine;
++       uint8_t         InterruptLine;
 +        uint8_t         InterruptPin;
 +        uint8_t         MinimumGrant;
 +        uint8_t         MaximumLatency;
 +
-+        uint8_t         pad[100];
++       uint8_t         pad[100];
 +} vis_pci_cfg_t;
 +
 +
@@ -122,16 +101,14 @@
 +        uchar_t         value;
 +} vis_io_reg_t;
 +#endif
-+
-+
 +extern struct pci_device *ASTGetPciInfo(ASTRecPtr);
 +extern ScrnInfoPtr        ASTAllocScreen(DriverPtr, GDevPtr);
-+extern pointer		  ASTMapVidMem(ScrnInfoPtr, unsigned int, PCITAG,
-+						unsigned long, unsigned long);
-+extern void		  ASTUnmapVidMem(ScrnInfoPtr, pointer, unsigned long);
-+extern void		  ASTNotifyModeChanged(ScrnInfoPtr);
-+extern void		  ASTSaveHW(ScrnInfoPtr);
-+extern void		  ASTRestoreHW(ScrnInfoPtr);
++extern pointer           ASTMapVidMem(ScrnInfoPtr, unsigned int, PCITAG,
++                                               unsigned long, unsigned long);
++extern void              ASTUnmapVidMem(ScrnInfoPtr, pointer, unsigned long);
++extern void              ASTNotifyModeChanged(ScrnInfoPtr);
++extern void              ASTSaveHW(ScrnInfoPtr);
++extern void              ASTRestoreHW(ScrnInfoPtr);
 +
 +#endif
 +
@@ -142,53 +119,33 @@
  #include "ast_cursor.h"
 +
 +#endif /* AST_H */
-diff --git a/src/ast_accel.c b/src/ast_accel.c
-index 2d3dab3..74ca45d 100644
---- a/src/ast_accel.c
-+++ b/src/ast_accel.c
-@@ -189,7 +189,12 @@ ASTAccelInit(ScreenPtr pScreen)
-     {    
-         infoPtr->SetupForSolidFill = ASTSetupForSolidFill;
-         infoPtr->SubsequentSolidFillRect = ASTSubsequentSolidFillRect;
 +
-+#if defined(__sparc__)
-+        infoPtr->SolidFillFlags = NO_PLANEMASK | BIT_ORDER_IN_BYTE_MSBFIRST;
-+#else
-         infoPtr->SolidFillFlags = NO_PLANEMASK;
-+#endif /* __sparc__ */
-     } 
-         
-     /* Solid Lines */
-diff --git a/src/ast_cursor.c b/src/ast_cursor.c
-index b3f2061..9b7f1c8 100644
---- a/src/ast_cursor.c
-+++ b/src/ast_cursor.c
-@@ -87,7 +87,11 @@ ASTCursorInit(ScreenPtr pScreen)
+--- a/src/ast_cursor.c	Fri Oct  5 08:39:16 2012
++++ b/src/ast_cursor.c	Fri Oct  5 08:40:03 2012
+@@ -86,7 +86,11 @@
  
      infoPtr->Flags = HARDWARE_CURSOR_TRUECOLOR_AT_8BPP |
                       HARDWARE_CURSOR_INVERT_MASK |        
 +#if     !defined(__sparc__)
                       HARDWARE_CURSOR_BIT_ORDER_MSBFIRST;
 +#else
-+                     0;
++		     0;
 +#endif
  
      infoPtr->MaxWidth  = MAX_HWC_WIDTH;
      infoPtr->MaxHeight = MAX_HWC_HEIGHT;
-diff --git a/src/ast_driver.c b/src/ast_driver.c
-index 896f22c..c4afa21 100644
---- a/src/ast_driver.c
-+++ b/src/ast_driver.c
-@@ -106,7 +106,7 @@ static void ASTFreeScreen(int scrnIndex, int flags);
- static ModeStatus ASTValidMode(int scrnIndex, DisplayModePtr mode, Bool verbose, int flags);
+--- a/src/ast_driver.c	Fri Oct  5 08:40:19 2012
++++ b/src/ast_driver.c	Fri Oct  5 08:46:21 2012
+@@ -106,7 +106,7 @@
+ static ModeStatus ASTValidMode(SCRN_ARG_TYPE arg, DisplayModePtr mode, Bool verbose, int flags);
  
  /* Internally used functions */
 -static Bool ASTGetRec(ScrnInfoPtr pScrn);
 +extern Bool ASTGetRec(ScrnInfoPtr pScrn);
  static void ASTFreeRec(ScrnInfoPtr pScrn);
  static Bool ASTSaveScreen(ScreenPtr pScreen, Bool unblack);
- static Bool ASTCloseScreen(int scrnIndex, ScreenPtr pScreen);
-@@ -270,7 +270,7 @@ ASTProbe(DriverPtr drv, int flags)
+ static Bool ASTCloseScreen(CLOSE_SCREEN_ARGS_DECL);
+@@ -270,7 +270,7 @@
        return FALSE;
      }
  
@@ -197,98 +154,67 @@
     /*
      * This probing is just checking the PCI data the server already
      * collected.
-@@ -280,6 +280,7 @@ ASTProbe(DriverPtr drv, int flags)
+@@ -280,6 +280,8 @@
      }
  #endif
  
 +#if !defined(__sparc__)
++
      numUsed = xf86MatchPciInstances(AST_NAME, PCI_VENDOR_AST,
  				   ASTChipsets, ASTPciChipsets,
  				   devSections, numDevSections,
-@@ -323,6 +324,37 @@ ASTProbe(DriverPtr drv, int flags)
+@@ -338,7 +340,39 @@
      } /* end of if flags */	   
  
      free(usedChips);
 +#else
-+
+ 
 +    if (flags & PROBE_DETECT) {
 +        foundScreen = TRUE;
 +    } else {
 +        for (i = 0; i < numDevSections; i++) {
 +
-+	    ScrnInfoPtr pScrn = NULL;
++           ScrnInfoPtr pScrn = NULL;
 +
-+	    /* Allocate new ScrnInfoRec and claim the slot */
-+	    if (pScrn = ASTAllocScreen(drv, devSections[i])) {
-+		pScrn->driverVersion = AST_VERSION;
-+		pScrn->driverName = AST_DRIVER_NAME;
-+		pScrn->name = AST_NAME;
++           /* Allocate new ScrnInfoRec and claim the slot */
++           if (pScrn = ASTAllocScreen(drv, devSections[i])) {
++               pScrn->driverVersion = AST_VERSION;
++               pScrn->driverName = AST_DRIVER_NAME;
++               pScrn->name = AST_NAME;
 +
-+		pScrn->Probe = ASTProbe;
-+		pScrn->PreInit = ASTPreInit;
-+		pScrn->ScreenInit = ASTScreenInit;
-+		pScrn->SwitchMode = ASTSwitchMode;
-+		pScrn->AdjustFrame = ASTAdjustFrame;
-+		pScrn->EnterVT = ASTEnterVT;
-+		pScrn->LeaveVT = ASTLeaveVT;
-+		pScrn->FreeScreen = ASTFreeScreen;
-+		pScrn->ValidMode = ASTValidMode;
++               pScrn->Probe = ASTProbe;
++               pScrn->PreInit = ASTPreInit;
++               pScrn->ScreenInit = ASTScreenInit;
++               pScrn->SwitchMode = ASTSwitchMode;
++               pScrn->AdjustFrame = ASTAdjustFrame;
++               pScrn->EnterVT = ASTEnterVT;
++               pScrn->LeaveVT = ASTLeaveVT;
++               pScrn->FreeScreen = ASTFreeScreen;
++               pScrn->ValidMode = ASTValidMode;
 +
-+		foundScreen = TRUE;
-+	    }
-+	}
++               foundScreen = TRUE;
++           }
++       }
 +    }
 +    free(devSections);
 +#endif
- 
++
++
      return foundScreen;
  }
-@@ -338,7 +370,9 @@ static Bool
- ASTPreInit(ScrnInfoPtr pScrn, int flags)
- {
-    EntityInfoPtr pEnt;
-+#if !defined(__sparc__)
-    vgaHWPtr hwp;
-+#endif
-    int flags24;
-    rgb defaultWeight = { 0, 0, 0 };
-       
-@@ -355,6 +389,10 @@ ASTPreInit(ScrnInfoPtr pScrn, int flags)
+ 
+@@ -372,6 +406,10 @@
  
     pEnt = xf86GetEntityInfo(pScrn->entityList[0]);
  
 +#if defined(__sparc__)
 +   pEnt->location.type = BUS_PCI;
-+#endif /* __sparc__ */
++#endif 
 +
     if (flags & PROBE_DETECT) {
         ASTProbeDDC(pScrn, pEnt->index);
         return TRUE;
-@@ -368,19 +406,23 @@ ASTPreInit(ScrnInfoPtr pScrn, int flags)
-        return FALSE;
- #endif
- 
-+#if !(defined(__sparc__))
-    /* The vgahw module should be loaded here when needed */
-    if (!xf86LoadSubModule(pScrn, "vgahw"))
-       return FALSE;
-+#endif
- 
-    /* The fb module should be loaded here when needed */
-    if (!xf86LoadSubModule(pScrn, "fb"))
-       return FALSE;
-    	
-+#if !(defined(__sparc__))
-    /* Allocate a vgaHWRec */
-    if (!vgaHWGetHWRec(pScrn))
-        return FALSE;
-    hwp = VGAHWPTR(pScrn);
-    vgaHWSetStdFuncs(hwp);
-+#endif
- 
-    /* Color Depth Check */
-    flags24 = Support32bppFb;
-@@ -453,7 +495,12 @@ ASTPreInit(ScrnInfoPtr pScrn, int flags)
+@@ -474,7 +512,12 @@
     /* Fill AST Info */
     pAST = ASTPTR(pScrn);
     pAST->pEnt    = xf86GetEntityInfo(pScrn->entityList[0]);
@@ -301,10 +227,11 @@
  #ifndef XSERVER_LIBPCIACCESS
     pAST->PciTag  = pciTag(pAST->PciInfo->bus, pAST->PciInfo->device,
  			  pAST->PciInfo->func);
-@@ -508,11 +555,13 @@ ASTPreInit(ScrnInfoPtr pScrn, int flags)
+@@ -528,12 +571,13 @@
+     /* "Patch" the PIOOffset inside vgaHW in order to force
       * the vgaHW module to use our relocated i/o ports.
       */
- 
+-
 +#if !(defined(__sparc__))
  #if GET_ABI_MAJOR(ABI_VIDEODRV_VERSION) < 12
      VGAHWPTR(pScrn)->PIOOffset = /* ... */
@@ -315,88 +242,18 @@
  	
      pAST->RelocateIO = (IOADDRESS)(PCI_REGION_BASE(pAST->PciInfo, 2, REGION_IO) + pAST->IODBase);
  	
-@@ -757,7 +806,9 @@ ASTScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
- {
-    ScrnInfoPtr pScrn;
-    ASTRecPtr pAST;
-+#if (!defined(__sparc__))
-    vgaHWPtr hwp;   
-+#endif
-    VisualPtr visual;
-  
-    /* for FB Manager */
-@@ -766,7 +817,9 @@ ASTScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
- 
-    pScrn = xf86Screens[pScreen->myNum];
-    pAST = ASTPTR(pScrn);
-+#if (!defined(__sparc__))
-    hwp = VGAHWPTR(pScrn);
-+#endif
- 
-    if (!ASTMapMem(pScrn)) {
-       xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "Map FB Memory Failed \n");      	
-@@ -795,7 +848,9 @@ ASTScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
- 
-    }
-        
-+#if (!defined(__sparc__))
-    vgaHWGetIOBase(hwp);
-+#endif
+@@ -823,6 +867,10 @@
  
     vFillASTModeInfo (pScrn);      
  
-@@ -836,6 +891,10 @@ ASTScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
-               
-    }
- 
 +#if (defined(__sparc__))
 +   ASTNotifyModeChanged(pScrn);
 +#endif
 +
-    if (pScrn->bitsPerPixel > 8) {
-       /* Fixup RGB ordering */
-       visual = pScreen->visuals + pScreen->numVisuals;
-@@ -999,7 +1058,9 @@ ASTLeaveVT(int scrnIndex, int flags)
- 	
-    ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
-    ASTRecPtr pAST = ASTPTR(pScrn);
-+#if (!defined(__sparc__))
-    vgaHWPtr hwp = VGAHWPTR(pScrn);
-+#endif
- 
- #ifdef	HWC
-    if (pAST->pHWCPtr) {
-@@ -1022,7 +1083,9 @@ ASTLeaveVT(int scrnIndex, int flags)
-    if (pAST->jChipType == AST1180)
-        ASTBlankScreen(pScrn, 0);
- 
-+#if (!defined(__sparc__))
-    vgaHWLock(hwp);	
-+#endif
- 
- }
- 
-@@ -1030,8 +1093,11 @@ static void
- ASTFreeScreen(int scrnIndex, int flags)
- {
-    ASTFreeRec(xf86Screens[scrnIndex]);
-+
-+#if (!defined(__sparc__))
-    if (xf86LoaderCheckSymbol("vgaHWFreeHWRec"))
-       vgaHWFreeHWRec(xf86Screens[scrnIndex]);   
-+#endif
- }
- 
- static ModeStatus
-@@ -1122,7 +1188,6 @@ ASTValidMode(int scrnIndex, DisplayModePtr mode, Bool verbose, int flags)
-    return Flags;
- }
- 
--/* Internal used modules */
- /*
-  * ASTGetRec and ASTFreeRec --
-  *
-@@ -1130,7 +1195,7 @@ ASTValidMode(int scrnIndex, DisplayModePtr mode, Bool verbose, int flags)
+    ASTSave(pScrn);     
+    if (!ASTModeInit(pScrn, pScrn->currentMode)) {
+       xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "Mode Init Failed \n");      	  	
+@@ -1166,7 +1214,7 @@
   * These two functions create and destroy that private data.
   *
   */
@@ -405,216 +262,9 @@
  ASTGetRec(ScrnInfoPtr pScrn)
  {
     if (pScrn->driverPrivate)
-@@ -1140,6 +1205,8 @@ ASTGetRec(ScrnInfoPtr pScrn)
-    return TRUE;
- }
- 
-+/* Internal used modules */
-+
- static void
- ASTFreeRec(ScrnInfoPtr pScrn)
- {
-@@ -1171,7 +1238,9 @@ static Bool
- ASTCloseScreen(int scrnIndex, ScreenPtr pScreen)
- {
-    ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
-+#if (!defined(__sparc__))
-    vgaHWPtr hwp = VGAHWPTR(pScrn);
-+#endif
-    ASTRecPtr pAST = ASTPTR(pScrn);
- 
-    if (pScrn->vtSema == TRUE)
-@@ -1197,11 +1266,15 @@ ASTCloseScreen(int scrnIndex, ScreenPtr pScreen)
-       if (pAST->jChipType == AST1180)
-           ASTBlankScreen(pScrn, 0);
-       
-+#if (!defined(__sparc__))
-       vgaHWLock(hwp);
-+#endif
-    }
- 
-    ASTUnmapMem(pScrn);
-+#if (!defined(__sparc__))
-    vgaHWUnmapMem(pScrn);
-+#endif
- 
-    if(pAST->AccelInfoPtr) {
-        XAADestroyInfoRec(pAST->AccelInfoPtr);
-@@ -1222,12 +1295,13 @@ static void
- ASTSave(ScrnInfoPtr pScrn)
- {
-    ASTRecPtr pAST;
--   vgaRegPtr vgaReg;
-    ASTRegPtr astReg;   
-    int i, icount=0;
-    ULONG ulData;
- 
-    pAST = ASTPTR(pScrn);
-+#if !defined(__sparc__)
-+   vgaRegPtr vgaReg;
-    vgaReg = &VGAHWPTR(pScrn)->SavedReg;
-    astReg = &pAST->SavedReg;
-     
-@@ -1238,6 +1312,10 @@ ASTSave(ScrnInfoPtr pScrn)
-    else {
-        vgaHWSave(pScrn, vgaReg, VGA_SR_MODE);
-    }
-+#else
-+   astReg = &pAST->SavedReg;
-+   ASTSaveHW(pScrn);
-+#endif
-    
-    /* Ext. Save */
-    if (pAST->jChipType == AST1180)
-@@ -1266,12 +1344,13 @@ static void
- ASTRestore(ScrnInfoPtr pScrn)
- {
-    ASTRecPtr pAST;
--   vgaRegPtr vgaReg;
-    ASTRegPtr astReg;   
-    int i, icount=0;
-    ULONG ulData;
- 
-    pAST = ASTPTR(pScrn);
-+#if !defined(__sparc__)
-+   vgaRegPtr vgaReg;
-    vgaReg = &VGAHWPTR(pScrn)->SavedReg;
-    astReg = &pAST->SavedReg;
-     
-@@ -1303,18 +1382,21 @@ ASTRestore(ScrnInfoPtr pScrn)
-           SetIndexReg(CRTC_PORT, (UCHAR) (i), astReg->ExtCRTC[icount++]);
-       SetIndexReg(CRTC_PORT, (UCHAR) (0xBB), astReg->ExtCRTC[icount]);
-    }
--
-+#endif /* __sparc__ */
- }
- 
- static void
- ASTProbeDDC(ScrnInfoPtr pScrn, int index)
- {
--   vbeInfoPtr pVbe;	
-    ASTRecPtr pAST = ASTPTR(pScrn);	
-    unsigned char DDC_data[128];
-    Bool Flags;
- 
-+#if defined(__sparc__)
-+   if (xf86LoadSubModule(pScrn, "ddc"))
-+#else
-    if ( (pAST->jChipType == AST1180) || (!xf86IsPrimaryPci(pAST->PciInfo)) )
-+#endif
-    {
-        if (pAST->jChipType == AST1180)	
-            Flags = GetVGA2EDID(pScrn, DDC_data);
-@@ -1328,14 +1410,16 @@ ASTProbeDDC(ScrnInfoPtr pScrn, int index)
-        else
-            xf86DrvMsg(pScrn->scrnIndex, X_INFO,"[ASTProbeDDC] Can't Get EDID Properly \n");               
-    }   
-+#if !defined(__sparc__)
-    else
-    {
-        if (xf86LoadSubModule(pScrn, "vbe")) {
--          pVbe = VBEInit(NULL, index);
-+          vbeInfoPtr pVbe = VBEInit(NULL, index);
-           ConfiguredMonitor = vbeDoEDID(pVbe, NULL);
-           vbeFree(pVbe);
-        }
-    }
-+#endif
- }
- 
- #define SkipDT	0x00
-@@ -1345,6 +1429,7 @@ ASTProbeDDC(ScrnInfoPtr pScrn, int index)
- static xf86MonPtr
- ASTDoDDC(ScrnInfoPtr pScrn, int index)
- {
-+#if !defined(__sparc__)
-    vbeInfoPtr pVbe;
-    xf86MonPtr MonInfo = NULL, MonInfo1 = NULL, MonInfo2 = NULL;
-    ASTRecPtr pAST = ASTPTR(pScrn);
-@@ -1539,6 +1624,30 @@ ASTDoDDC(ScrnInfoPtr pScrn, int index)
-        }
-    
-    } /* AST1180 */
-+#else /* __sparc__ */
-+
-+   xf86MonPtr MonInfo = NULL;
-+   ASTRecPtr pAST = ASTPTR(pScrn);
-+   unsigned char DDC_data[128];
-+
-+   /* Honour Option "noDDC" */
-+   if (xf86ReturnOptValBool(pAST->Options, OPTION_NO_DDC, FALSE)) {
-+      return MonInfo;
-+   }
-+
-+   if ((xf86LoadSubModule(pScrn, "ddc")) && (GetVGAEDID(pScrn, DDC_data) == TRUE))
-+   {
-+      MonInfo = xf86InterpretEDID(pScrn->scrnIndex, DDC_data);
-+
-+      xf86PrintEDID(MonInfo);
-+      xf86SetDDCproperties(pScrn, MonInfo);
-+   }
-+   else
-+   {
-+      xf86DrvMsg(pScrn->scrnIndex, X_INFO,"[ASTDoDDC] Can't Load DDC Sub-Modules or Read EDID Failed \n");
-+   }
-+
-+#endif
- 
-    return MonInfo;
- }
-@@ -1564,9 +1673,14 @@ ASTModeInit(ScrnInfoPtr pScrn, DisplayModePtr mode)
-     vgaHWPtr hwp;
-     ASTRecPtr pAST;
- 
--    hwp = VGAHWPTR(pScrn);
-     pAST = ASTPTR(pScrn);
- 
-+    pScrn->vtSema = TRUE;
-+    pAST->ModePtr = mode;
-+
-+#if !defined(__sparc__)
-+    hwp = VGAHWPTR(pScrn);
-+
-     vgaHWUnlock(hwp);
- 
-     if (!vgaHWInit(pScrn, mode))
-@@ -1579,6 +1693,10 @@ ASTModeInit(ScrnInfoPtr pScrn, DisplayModePtr mode)
-       return FALSE;
-     
-     vgaHWProtect(pScrn, FALSE);
-+#else
-+    if (!ASTSetMode(pScrn, mode))
-+      return FALSE;
-+#endif
- 
-     return TRUE;
- }
-diff --git a/src/ast_mode.c b/src/ast_mode.c
-index b58916f..3ea5089 100644
---- a/src/ast_mode.c
-+++ b/src/ast_mode.c
-@@ -798,6 +798,16 @@ void vSetExtReg(ScrnInfoPtr pScrn, DisplayModePtr mode, PVBIOS_MODE_INFO pVGAMod
-     SetIndexRegMask(CRTC_PORT,0xA3, 0xF0, (UCHAR) jRegA3);                                
-     SetIndexRegMask(CRTC_PORT,0xA8, 0xFD, (UCHAR) jRegA8);                                
- 
-+#if defined(__sparc__)
-+    UCHAR jRegA2 = 0x00;
-+
-+    if ((pScrn->bitsPerPixel == 15) || (pScrn->bitsPerPixel == 16) )
-+        jRegA2 |= 0xC0;
-+    else if  (pScrn->bitsPerPixel == 32)
-+        jRegA2 |= 0x80;
-+    SetIndexRegMask(CRTC_PORT,0xA2, 0x3F, (UCHAR) jRegA2);
-+#endif
-+
-     /* Set Threshold */
-     if (pAST->jChipType == AST2300)
-     {
-diff --git a/src/ast_tool.c b/src/ast_tool.c
-index 1dd87f0..7d9ed0d 100644
---- a/src/ast_tool.c
-+++ b/src/ast_tool.c
-@@ -60,16 +60,29 @@ Bool ASTUnmapMem(ScrnInfoPtr pScrn);
+--- a/src/ast_tool.c	Fri Oct  5 08:47:11 2012
++++ b/src/ast_tool.c	Fri Oct  5 08:53:50 2012
+@@ -59,16 +59,28 @@
  Bool ASTMapMMIO(ScrnInfoPtr pScrn);
  void ASTUnmapMMIO(ScrnInfoPtr pScrn);
  
@@ -640,17 +290,16 @@
 +   pAST->FBVirtualAddr = ASTMapVidMem(pScrn, VIDMEM_FRAMEBUFFER, NULL,
 +                                pAST->FBPhysAddr, pAST->FbMapSize);
 +#endif /* sparc */
-+
 +#else
     {
       void** result = (void**)&pAST->FBVirtualAddr;
       int err = pci_device_map_range(pAST->PciInfo,
-@@ -95,10 +108,14 @@ ASTUnmapMem(ScrnInfoPtr pScrn)
+@@ -94,10 +106,14 @@
  {
     ASTRecPtr pAST = ASTPTR(pScrn);
  
 -#ifndef XSERVER_LIBPCIACCESS 
-+#if !defined(XSERVER_LIBPCIACCESS) || defined(__sparc__) 
++#if !defined(XSERVER_LIBPCIACCESS) || defined(__sparc__)
 +#if !defined(__sparc__)
     xf86UnMapVidMem(pScrn->scrnIndex, (pointer) pAST->FBVirtualAddr,
  		   pAST->FbMapSize);
@@ -661,7 +310,7 @@
     pci_device_unmap_range(pAST->PciInfo, pAST->FBVirtualAddr, pAST->FbMapSize);
  #endif
  		   
-@@ -111,7 +128,7 @@ Bool
+@@ -110,7 +126,7 @@
  ASTMapMMIO(ScrnInfoPtr pScrn)
  {
     ASTRecPtr pAST = ASTPTR(pScrn);
@@ -670,23 +319,26 @@
     int mmioFlags;
  
  #if !defined(__alpha__)
-@@ -121,9 +138,15 @@ ASTMapMMIO(ScrnInfoPtr pScrn)
+@@ -119,12 +135,16 @@
+    mmioFlags = VIDMEM_MMIO | VIDMEM_READSIDEEFFECT | VIDMEM_SPARSE;
  #endif
  
- 
+-
 +#if !defined(__sparc__)
     pAST->MMIOVirtualAddr = xf86MapPciMem(pScrn->scrnIndex, mmioFlags,
  				         pAST->PciTag,
  				         pAST->MMIOPhysAddr, pAST->MMIOMapSize);
-+#else
+-
+ #else
 +   pAST->MMIOVirtualAddr = ASTMapVidMem(pScrn,
 +                        VIDMEM_MMIO | VIDMEM_READSIDEEFFECT, NULL,
 +                        pAST->MMIOPhysAddr, pAST->MMIOMapSize);
 +#endif
- 
- #else
++#else
     {
-@@ -150,10 +173,14 @@ ASTUnmapMMIO(ScrnInfoPtr pScrn)
+      void** result = (void**)&pAST->MMIOVirtualAddr;
+      int err = pci_device_map_range(pAST->PciInfo,
+@@ -149,10 +169,14 @@
  {
     ASTRecPtr pAST = ASTPTR(pScrn);
  
@@ -702,55 +354,28 @@
     pci_device_unmap_range(pAST->PciInfo, pAST->MMIOVirtualAddr, pAST->MMIOMapSize);
  #endif
     pAST->MMIOVirtualAddr = 0;
-diff --git a/src/ast_vgatool.c b/src/ast_vgatool.c
-index 4a90dd4..fa0722c 100644
---- a/src/ast_vgatool.c
-+++ b/src/ast_vgatool.c
-@@ -95,6 +95,27 @@ bASTRegInit(ScrnInfoPtr pScrn)
-    /* Enable MMIO */
-    SetIndexRegMask(CRTC_PORT,0xA1, 0xFF, 0x04);
- 
-+   /* Enable Big-Endian */
-+#if	defined(__sparc__)
-+   UCHAR       jReg = 0x00;
-+
-+   switch (pScrn->bitsPerPixel)   
-+   {
-+   case 8:
-+       jReg = 0x00;
-+       break;
-+   case 15:
-+   case 16:
-+       jReg = 0xC0;
-+       break;
-+   case 24:
-+   case 32:
-+       jReg = 0x80;
-+       break;       	
-+   }
-+   SetIndexRegMask(CRTC_PORT,0xA2, 0x3F, jReg);
-+#endif
-+
-    return (TRUE);
-    	
- }
-@@ -445,6 +466,7 @@ vASTLoadPalette(ScrnInfoPtr pScrn, int numColors, int *indices, LOCO *colors,
+--- a/src/ast_vgatool.c	Fri Oct  5 08:54:04 2012
++++ b/src/ast_vgatool.c	Fri Oct  5 08:56:22 2012
+@@ -449,6 +449,7 @@
  void
  ASTDisplayPowerManagementSet(ScrnInfoPtr pScrn, int PowerManagementMode, int flags)
  {
-+#if     !defined(__sparc__)
++#if !defined(__sparc__)
     ASTRecPtr pAST;
     UCHAR SEQ01, CRB6;
     ULONG ulData, ulTemp;
-@@ -494,6 +516,7 @@ ASTDisplayPowerManagementSet(ScrnInfoPtr pScrn, int PowerManagementMode, int fla
+@@ -497,8 +498,8 @@
+    {  
         SetIndexRegMask(SEQ_PORT,0x01, 0xDF, SEQ01);
         SetIndexRegMask(CRTC_PORT,0xB6, 0xFC, CRB6);
-    }    
-+#endif
- 
+-   }    
+-
++   }
++#endif    
  }
  
-@@ -985,7 +1008,7 @@ AST_DRAMStruct AST1100DRAMTableData[] = {
+ 
+@@ -989,7 +990,7 @@
      { 0x0030, 0x00000040 },
      { 0x0028, 0x00000003 },
      { 0x000C, 0x00005a21 },
@@ -759,7 +384,7 @@
      { 0x0120, 0x00004c41 },
      { 0xffff, 0xffffffff },
  };
-@@ -1038,7 +1061,7 @@ AST_DRAMStruct AST2100DRAMTableData[] = {
+@@ -1042,7 +1043,7 @@
      { 0x0030, 0x00000040 },
      { 0x0028, 0x00000003 },
      { 0x000C, 0x00005a21 },
@@ -768,11 +393,11 @@
      { 0x0120, 0x00005061 },
      { 0xffff, 0xffffffff },
  };
-@@ -2654,9 +2677,11 @@ Bool InitVGA(ScrnInfoPtr pScrn, ULONG Flags)
+@@ -2717,9 +2718,11 @@
  
     {
         /* Enable PCI */
-+#if    !defined(__sparc__)
++#if !defined(__sparc__)
         PCI_READ_LONG(pAST->PciInfo, &ulData, 0x04);
         ulData |= 0x03;
         PCI_WRITE_LONG(pAST->PciInfo, ulData, 0x04);       
@@ -780,137 +405,137 @@
  
         /* Enable VGA */
         vEnableVGA(pScrn);
-diff --git a/src/ast_vgatool.h b/src/ast_vgatool.h
-index 53cb4c7..9f5fa50 100644
---- a/src/ast_vgatool.h
-+++ b/src/ast_vgatool.h
-@@ -20,6 +20,12 @@
+--- a/src/ast_vgatool.h	Fri Oct  5 08:56:37 2012
++++ b/src/ast_vgatool.h	Fri Oct  5 09:23:53 2012
+@@ -19,7 +19,13 @@
+  * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
   * PERFORMANCE OF THIS SOFTWARE.
   */
- 
 +#ifndef ASTVGATOOL_H
 +#define ASTVGATOOL_H
-+
+ 
 +#include <unistd.h>
 +#include <stropts.h>
 +
++
  /* VRAM Size Definition */
  #define VIDEOMEM_SIZE_08M	0x00800000
  #define VIDEOMEM_SIZE_16M	0x01000000
-@@ -40,6 +46,95 @@
+@@ -40,6 +46,96 @@
  #define DRAMTYPE_2Gx16		6
  #define DRAMTYPE_4Gx16		7
  
 +#if defined(__sparc__)
 +
-+#define SET_IO_REG		0x1000
-+#define GET_IO_REG		0x1001
++#define SET_IO_REG             0x1000
++#define GET_IO_REG             0x1001
 +
-+#define AR_PORT_WRITE       	0x40
-+#define MISC_PORT_WRITE     	0x42
-+#define SEQ_PORT    		0x44
-+#define DAC_INDEX_READ          0x47
-+#define DAC_INDEX_WRITE     	0x48
-+#define DAC_DATA        	0x49
-+#define GR_PORT         	0x4E
-+#define CRTC_PORT       	0x54
-+#define INPUT_STATUS1_READ  	0x5A
-+#define MISC_PORT_READ      	0x4C
++#define AR_PORT_WRITE          0x40
++#define MISC_PORT_WRITE        0x42
++#define VGA_ENABLE_PORT        0x43
++#define SEQ_PORT               0x44
++#define DAC_INDEX_READ         0x47
++#define DAC_INDEX_WRITE        0x48
++#define DAC_DATA               0x49
++#define GR_PORT                0x4E
++#define CRTC_PORT              0x54
++#define INPUT_STATUS1_READ     0x5A
++#define MISC_PORT_READ         0x4C
 +
-+static inline uchar_t 
++static inline uchar_t
 +_GetRegFromFd(uchar_t off, int fd)
 +{
-+	struct vis_io_reg   io_reg = {
-+	       .offset = off
-+	};
-+	ioctl(fd, VIS_GETIOREG, &io_reg);
-+	return io_reg.value;
++       struct vis_io_reg   io_reg = {
++              .offset = off
++       };
++       ioctl(fd, VIS_GETIOREG, &io_reg);
++       return io_reg.value;
 +}
 +
-+#define GetReg(off)		_GetRegFromFd(off, pAST->fd)
++#define GetReg(off)            _GetRegFromFd(off, pAST->fd)
 +
-+#define SetReg(off, val)	do {					\
-+			struct vis_io_reg   io_reg = {			\
-+			       .offset = off,				\
-+			       .value = val				\
-+			};     	       	 				\
-+			ioctl(pAST->fd, VIS_SETIOREG, &io_reg);		\
-+			} while (0)
++#define SetReg(off, val)       do {                                    \
++                       struct vis_io_reg   io_reg = {                  \
++                              .offset = off,                           \
++                              .value = val                             \
++                       };                                              \
++                       ioctl(pAST->fd, VIS_SETIOREG, &io_reg);         \
++                       } while (0)
 +
-+#define GetIndexReg(off, index, val)	do {				\
-+			struct vis_io_reg   io_reg = {			\
-+			       .offset = off,				\
-+			       .value = index				\
-+			};     	       	 				\
-+			ioctl(pAST->fd, VIS_SETIOREG, &io_reg);		\
-+			io_reg.offset = off+1;				\
-+			ioctl(pAST->fd, VIS_GETIOREG, &io_reg);		\
-+			val = io_reg.value;				\
-+			} while (0)
++#define GetIndexReg(off, index, val)   do {                            \
++                       struct vis_io_reg   io_reg = {                  \
++                              .offset = off,                           \
++                              .value = index                           \
++                       };                                              \
++                       ioctl(pAST->fd, VIS_SETIOREG, &io_reg);         \
++                       io_reg.offset = off+1;                          \
++                       ioctl(pAST->fd, VIS_GETIOREG, &io_reg);         \
++                       val = io_reg.value;                             \
++                       } while (0)
 +
-+#define SetIndexReg(off, index, val) do {				\
-+			struct vis_io_reg   io_reg = {			\
-+			       .offset = off,				\
-+			       .value = index				\
-+			};     	       	 				\
-+			ioctl(pAST->fd, VIS_SETIOREG, &io_reg);		\
-+			io_reg.offset = off+1; 	      			\
-+			io_reg.value = val;				\
-+			ioctl(pAST->fd, VIS_SETIOREG, &io_reg);		\
-+			} while (0)
++#define SetIndexReg(off, index, val) do {                              \
++                       struct vis_io_reg   io_reg = {                  \
++                             .offset = off,                           \
++                              .value = index                           \
++                       };                                              \
++                       ioctl(pAST->fd, VIS_SETIOREG, &io_reg);         \
++                       io_reg.offset = off+1;                          \
++                       io_reg.value = val;                             \
++                       ioctl(pAST->fd, VIS_SETIOREG, &io_reg);         \
++                       } while (0)
 +
-+#define GetIndexRegMask(off, index, and, val) do {  			\
-+			struct vis_io_reg   io_reg = {			\
-+			       .offset = off,				\
-+			       .value = index				\
-+			};     	       	 				\
-+			ioctl(pAST->fd, VIS_SETIOREG, &io_reg);		\
-+			io_reg.offset = off+1;				\
-+			ioctl(pAST->fd, VIS_GETIOREG, &io_reg);		\
-+			val = io_reg.value & and;			\
-+			} while (0)
++#define GetIndexRegMask(off, index, and, val) do {                     \
++                       struct vis_io_reg   io_reg = {                  \
++                              .offset = off,                           \
++                              .value = index                           \
++                       };                                              \
++                       ioctl(pAST->fd, VIS_SETIOREG, &io_reg);         \
++                       io_reg.offset = off+1;                          \
++                       ioctl(pAST->fd, VIS_GETIOREG, &io_reg);         \
++                       val = io_reg.value & and;                       \
++                       } while (0)
 +
-+#define SetIndexRegMask(off, index, and, val) do { 			\
-+			UCHAR __Temp; 					\
-+			struct vis_io_reg   io_reg = {			\
-+			       .offset = off,				\
-+			       .value = index				\
-+			};     	       	 				\
-+			ioctl(pAST->fd, VIS_SETIOREG, &io_reg);		\
-+			io_reg.offset = off + 1;			\
-+			ioctl(pAST->fd, VIS_GETIOREG, &io_reg);		\
-+			__Temp = (io_reg.value & and) | val;      	\
-+			io_reg.offset = off;				\
-+			io_reg.value = index;				\
-+			ioctl(pAST->fd, VIS_SETIOREG, &io_reg);		\
-+			io_reg.offset = off+1;	      			\
-+			io_reg.value = __Temp;				\
-+			ioctl(pAST->fd, VIS_SETIOREG, &io_reg);		\
-+			} while (0)
++#define SetIndexRegMask(off, index, and, val) do {                     \
++                       UCHAR __Temp;                                   \
++                       struct vis_io_reg   io_reg = {                  \
++                              .offset = off,                           \
++                              .value = index                           \
++                       };                                              \
++                       ioctl(pAST->fd, VIS_SETIOREG, &io_reg);         \
++                       io_reg.offset = off + 1;                        \
++                       ioctl(pAST->fd, VIS_GETIOREG, &io_reg);         \
++                       __Temp = (io_reg.value & and) | val;            \
++                       io_reg.offset = off;                            \
++                       io_reg.value = index;                           \
++                       ioctl(pAST->fd, VIS_SETIOREG, &io_reg);         \
++                       io_reg.offset = off+1;                          \
++                       io_reg.value = __Temp;                          \
++                       ioctl(pAST->fd, VIS_SETIOREG, &io_reg);         \
++                       } while (0)
 +
 +#else /* !__sparc__ */
 +
- #define AR_PORT_WRITE		(pAST->RelocateIO + 0x40)
- #define MISC_PORT_WRITE		(pAST->RelocateIO + 0x42)
- #define SEQ_PORT 		(pAST->RelocateIO + 0x44)
-@@ -71,6 +166,8 @@
-                       				SetIndexReg(base,index,__Temp); 	\
-                     				} while (0)
+ #define AR_PORT_WRITE		(pAST->MMIOVirtualAddr + 0x3c0)
+ #define MISC_PORT_WRITE		(pAST->MMIOVirtualAddr + 0x3c2)
+ #define VGA_ENABLE_PORT		(pAST->MMIOVirtualAddr + 0x3c3)
+@@ -72,6 +168,7 @@
+ 						__Temp = (MMIO_IN8(base, 1)&(and))|(val);	\
+ 						SetIndexReg(base,index,__Temp);			\
+ 						}
++#endif
  
-+#endif /* __sparc__ */
-+
  #define VGA_GET_PALETTE_INDEX(index, red, green, blue) \
  { \
-    UCHAR __junk;				\
-@@ -162,3 +259,5 @@
+@@ -166,3 +263,6 @@
          *(ULONG *) (pAST->MMIOVirtualAddr + 0xF000) = 0x1;	\
          *(ULONG *) (pAST->MMIOVirtualAddr + 0x10000 + ((addr) & 0x0000FFFF)) = (data);	\
  }
 +
 +#endif /* ASTVGATOOL_H */
---- a/src/ast_vgatool.c	Wed Mar 28 14:37:44 2012
-+++ b/src/ast_vgatool.c	Wed Mar 28 14:39:46 2012
-@@ -2974,9 +2974,11 @@
++
+--- a/src/ast_vgatool.c	Fri Oct  5 09:36:40 2012
++++ b/src/ast_vgatool.c	Fri Oct  5 09:38:03 2012
+@@ -3015,9 +3015,11 @@
      pAST = ASTPTR(pScrn);    
  
      /* Enable PCI */
@@ -922,3 +547,28 @@
      	
      /* init DRAM if no F/W */
      /* TODO */
+@@ -3108,9 +3110,11 @@
+     if (!xf86IsPrimaryPci(pAST->PciInfo))
+     {
+        /* Enable PCI */
++#if !defined(__sparc__)
+        PCI_READ_LONG(pAST->PciInfo, &ulData, 0x04);
+        ulData |= 0x03;
+        PCI_WRITE_LONG(pAST->PciInfo, ulData, 0x04);
++#endif
+ 
+        outb(pAST->RelocateIO + 0x43, 0x01);
+        outb(pAST->RelocateIO + 0x42, 0x01);	    
+--- a/src/ast_driver.c	Fri Oct 19 09:56:16 2012
++++ b/src/ast_driver.c	Fri Oct 19 09:57:04 2012
+@@ -645,8 +645,10 @@
+    }
+    else    	
+    {  
++#if     !(defined(__sparc__))
+        /* Enable VGA MMIO Access */	   
+        vEnableASTVGAMMIO(pScrn);
++#endif
+  	    	
+        /* Init VGA Adapter */
+        if (!xf86IsPrimaryPci(pAST->PciInfo))
--- a/open-src/driver/xf86-video-ast/sun-src/src/ast_sparc_driver.c	Fri Nov 02 15:59:08 2012 -0700
+++ b/open-src/driver/xf86-video-ast/sun-src/src/ast_sparc_driver.c	Mon Nov 05 16:17:08 2012 -0800
@@ -49,7 +49,9 @@
 #include "xf86fbman.h"
 
 /* include xaa includes */
+#ifdef HAVE_XAA
 #include "xaa.h"
+#endif
 #include "xaarop.h"
 
 /* H/W cursor support */
--- a/open-src/driver/xf86-video-ati/Makefile	Fri Nov 02 15:59:08 2012 -0700
+++ b/open-src/driver/xf86-video-ati/Makefile	Mon Nov 05 16:17:08 2012 -0800
@@ -29,17 +29,18 @@
 MODULE_NAME=xf86-video-ati
 
 # Version number (used in path names)
-MODULE_VERSION=6.14.4
+MODULE_VERSION=6.14.6
 
 # Checksums for upstream tarball
-TARBALL_MD5   = 17dd4f0bf4dbe9839e5f7d1161994222
-TARBALL_SHA1  = 75ad000bc00599e1797134f2d20d3094cba6af92
-TARBALL_SHA256= 4ffe435ef8fbe0989f6576f04f789e147a2de7fdefc3644e39d5ef626c37ef85
+TARBALL_MD5   = 3e945273edd3b8beb96bd40f7929d450
+TARBALL_SHA1  = b30383c7e5487c1df403a3af19fce8626d617a8d
+TARBALL_SHA256= aa5286b3e4f0187d7df14785c06dd800255d9405205dbf061da5d77df86bec36
 
 # Patches to apply to source after unpacking, in order
 SOURCE_PATCHES = \
 	mapfiles.patch,-p1 \
-	solaris-dri-drv-port.patch
+	solaris-dri-drv-port.patch \
+	disable-xaa.patch
 
 # Need to regenerate Makefile.in after patching Makefile.am in mapfiles.patch
 AUTORECONF=yes
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/open-src/driver/xf86-video-ati/disable-xaa.patch	Mon Nov 05 16:17:08 2012 -0800
@@ -0,0 +1,11 @@
+--- configure.ac	Thu Sep 20 08:22:09 2012
++++ configure.ac	Thu Sep 20 08:22:29 2012
+@@ -163,7 +163,7 @@
+ AM_CONDITIONAL(DRM_MODE, test x$DRM_MODE = xyes)
+ AM_CONDITIONAL(LIBUDEV, test x$LIBUDEV = xyes)
+ 
+-AC_DEFINE(USE_XAA, 1, [Build support for XAA])
++#AC_DEFINE(USE_XAA, 1, [Build support for XAA])
+ 
+ # Properly handle EXA.
+ AC_MSG_CHECKING([whether to enable EXA support])
--- a/open-src/driver/xf86-video-ati/mapfiles.patch	Fri Nov 02 15:59:08 2012 -0700
+++ b/open-src/driver/xf86-video-ati/mapfiles.patch	Mon Nov 05 16:17:08 2012 -0800
@@ -20,8 +20,8 @@
 +	mapfile-bt829_drv-external
 +
 +radeon_drv_la_LDFLAGS += $(radeon_MAPFILES:%=-Wl,-M,%) \
-+	-lexa -lfb -lint10 -lvbe -lvgahw -lxaa -lshadow \
-+	-lpixman-1 -ldrm -ldri -lglx -lm
++	-lexa -lfb -lint10 -lvbe -lvgahw -lshadow \
++	-lpixman-1 -ldrm -lglx -lm
 +
 +radeon_drv_la_DEPENDENCIES = $(radeon_MAPFILES)
 +
--- a/open-src/driver/xf86-video-cirrus/Makefile	Fri Nov 02 15:59:08 2012 -0700
+++ b/open-src/driver/xf86-video-cirrus/Makefile	Mon Nov 05 16:17:08 2012 -0800
@@ -29,12 +29,12 @@
 MODULE_NAME=xf86-video-cirrus
 
 # Version number (used in path names)
-MODULE_VERSION=1.4.0
+MODULE_VERSION=1.5.1
 
 # Checksums for upstream tarball
-TARBALL_MD5   = 1e449789da866f974dbf6cbe3c8cc7bf
-TARBALL_SHA1  = 3f76802415e7dc02058222a5fe44cacd9e3529dd
-TARBALL_SHA256= 2b07fa5d4a86acb277d72c7ae35566ae21b08836645c6a88e7662422af5e962e
+TARBALL_MD5   = 16ea047a601896fb0ec995dbe9fb7ef2
+TARBALL_SHA1  = 4cc24018761ed775b36552091747fec38c374da9
+TARBALL_SHA256= a955429cbd673230c4b171afd6d0a6b28372d2f9d0a400f5124869274a27c557
 
 # Patches to apply to source after unpacking, in order
 SOURCE_PATCHES = mapfiles.patch
--- a/open-src/driver/xf86-video-cirrus/mapfiles.patch	Fri Nov 02 15:59:08 2012 -0700
+++ b/open-src/driver/xf86-video-cirrus/mapfiles.patch	Mon Nov 05 16:17:08 2012 -0800
@@ -44,11 +44,11 @@
 +
 +cirrus_alpine_la_LDFLAGS += \
 +	-Wl,-M,mapfile-cirrus_drv-external \
-+	-lfb -lint10 -lpciaccess -lshadowfb -lvgahw -lxaa
++	-lfb -lint10 -lpciaccess -lshadowfb -lvgahw
 +
 +cirrus_laguna_la_LDFLAGS += \
 +	-Wl,-M,mapfile-cirrus_drv-external \
-+	-lfb -lint10 -lvgahw -lxaa
++	-lfb -lint10 -lvgahw
 +
 +mapfiles: $(MAPFILES)
 +
--- a/open-src/driver/xf86-video-dummy/Makefile	Fri Nov 02 15:59:08 2012 -0700
+++ b/open-src/driver/xf86-video-dummy/Makefile	Mon Nov 05 16:17:08 2012 -0800
@@ -29,12 +29,12 @@
 MODULE_NAME=xf86-video-dummy
 
 # Version number (used in path names)
-MODULE_VERSION=0.3.5
+MODULE_VERSION=0.3.6
 
 # Checksums for upstream tarball
-TARBALL_MD5   = 89701f372eed9ed541cf00d57c78e7ef
-TARBALL_SHA1  = 41cfcaec986ab13e931d260953c5a3f626fd1d2b
-TARBALL_SHA256= d5adc63543bb93b6d88008ea746303a2ab3e8b570974704926e81d882728d95f
+TARBALL_MD5   = dc40aebf031f933523dcf101befe99e4
+TARBALL_SHA1  = 9a73abc1444dd3034e5724b16d7101696219665b
+TARBALL_SHA256= 44335b640126d339700256dae731bd5af79afd027da172bad8a991a33a1de798
 
 # Patches to apply to source after unpacking, in order
 SOURCE_PATCHES = 
--- a/open-src/driver/xf86-video-intel/Makefile	Fri Nov 02 15:59:08 2012 -0700
+++ b/open-src/driver/xf86-video-intel/Makefile	Mon Nov 05 16:17:08 2012 -0800
@@ -29,17 +29,16 @@
 MODULE_NAME=xf86-video-intel
 
 # Version number (used in path names)
-MODULE_VERSION=2.18.0
+MODULE_VERSION=2.20.9
 
 # Checksums for upstream tarball
-TARBALL_MD5  = 34f3987ffe86e30c57abc33b7f8030e9
-TARBALL_SHA1 = 77fae98e73414140bf214dca5da32bcf079c4463
+TARBALL_MD5  = 6aa7b041fcd8fc7c080d9ad21a295be6
+TARBALL_SHA1 = 43c789bae74dceeb5a5e5ff099679f28c6dfa057
 
 # Patches to apply to source after unpacking, in order
 SOURCE_PATCHES= \
 	build-dri.patch \
-	libraries.patch batch.patch \
-	bromolow-chipset.patch
+	batch.patch libraries.patch
 
 # Man pages to apply Sun footer to & attributes to list
 SUNTOUCHED_MANPAGES=man/*.man
@@ -75,7 +74,8 @@
 
 # Extra flags to pass to configure script
 # --libdir is needed to set path for XvMC libraries
-MODULE_CONFIG_OPTS=--enable-dri --libdir='$(X11_LIB_DIR)$(ARCHLIBSUBDIR)'
+MODULE_CONFIG_OPTS=--enable-dri --libdir='$(X11_LIB_DIR)$(ARCHLIBSUBDIR)' \
+		   --disable-sna --enable-uxa
 
 # echo is set to workaround configure/libtool strangeness in 2.15.0 that
 # causes ../../libtool: line 791: X--mode=install: command not found errors
@@ -83,7 +83,7 @@
 MODULE_BUILD_ENV += echo=/usr/gnu/bin/echo
 
 # Library paths at build time
-MODULE_LD_OPTIONS= -z ignore \
+MODULE_LD_OPTIONS= -z ignore\
 	-L$(PROTODIR)$(X11_SERVERMODS_DIR) \
 	-L$(PROTODIR)$(MESA_XSERVERMODS_DIR)/extensions \
 	-L$(PROTODIR)$(X11_SERVERMODS_DIR)/extensions \
--- a/open-src/driver/xf86-video-intel/libraries.patch	Fri Nov 02 15:59:08 2012 -0700
+++ b/open-src/driver/xf86-video-intel/libraries.patch	Mon Nov 05 16:17:08 2012 -0800
@@ -1,17 +1,17 @@
---- src/Makefile.in	Fri Feb 24 13:44:41 2012
-+++ src/Makefile.in	Fri Feb 24 13:44:54 2012
-@@ -433,7 +433,7 @@
+--- src/Makefile.in	Fri Sep 14 12:39:05 2012
++++ src/Makefile.in	Fri Sep 14 12:39:15 2012
+@@ -454,7 +454,7 @@
  intel_drv_la_LIBADD = legacy/liblegacy.la @PCIACCESS_LIBS@ \
  	$(am__append_2) $(am__append_4) $(am__append_7) \
  	$(am__append_10)
 -NULL := #
 +#NULL := #
- intel_drv_la_SOURCES = intel_list.h intel_module.c $(NULL) \
- 	$(am__append_5) $(am__append_8) $(am__append_9) \
- 	$(am__append_11)
---- src/legacy/Makefile.in	Fri Feb 24 13:45:20 2012
-+++ src/legacy/Makefile.in	Fri Feb 24 13:45:38 2012
-@@ -293,7 +293,7 @@
+ intel_drv_la_SOURCES = intel_list.h intel_options.h intel_options.c \
+ 	intel_module.c compat-api.h $(NULL) $(am__append_5) \
+ 	$(am__append_8) $(am__append_9) $(am__append_11)
+--- src/legacy/Makefile.in	Fri Sep 14 12:40:07 2012
++++ src/legacy/Makefile.in	Fri Sep 14 12:40:17 2012
+@@ -316,7 +316,7 @@
  top_srcdir = @top_srcdir@
  SUBDIRS = $(am__append_1)
  noinst_LTLIBRARIES = liblegacy.la
@@ -20,19 +20,19 @@
  liblegacy_la_SOURCES = legacy.h $(am__append_2)
  liblegacy_la_LIBADD = $(am__append_3)
  EXTRA_DIST = README
---- src/Makefile.am	Mon Dec  5 14:30:20 2011
-+++ src/Makefile.am	Mon Dec  5 14:55:55 2011
-@@ -33,6 +33,9 @@
+--- src/Makefile.am	Fri Sep 14 12:40:49 2012
++++ src/Makefile.am	Fri Sep 14 12:43:18 2012
+@@ -32,6 +32,9 @@
  intel_drv_la_LDFLAGS = -module -avoid-version
  intel_drv_ladir = @moduledir@/drivers
  intel_drv_la_LIBADD = legacy/liblegacy.la @PCIACCESS_LIBS@
 +intel_drv_la_LDFLAGS += -R $(moduledir) -R $(moduledir)/extensions
-+intel_drv_la_LIBADD += -lfb -lextmod -lshadowfb -lXfont -lm \
-+	-lvbe -lvgahw -lxaa -lexa -ldri -ldri2 -lglx $(XORG_LIBS)
++intel_drv_la_LIBADD += -lfb -lshadowfb -lXfont -lm \
++       -lvbe -lvgahw -lexa -lglx $(XORG_LIBS)
  
  if SNA
  SUBDIRS += sna
-@@ -39,7 +42,7 @@
+@@ -38,7 +41,7 @@
  intel_drv_la_LIBADD += sna/libsna.la
  endif
  
@@ -40,15 +40,18 @@
 +#NULL:=#
  
  intel_drv_la_SOURCES = \
- 	intel_module.c \
---- src/legacy/Makefile.am	Mon Dec  5 15:01:13 2011
-+++ src/legacy/Makefile.am	Mon Dec  5 15:06:04 2011
-@@ -1,10 +1,20 @@
+ 	intel_list.h \
+--- src/legacy/Makefile.am	Fri Sep 14 12:43:52 2012
++++ src/legacy/Makefile.am	Fri Sep 14 12:45:12 2012
+@@ -1,11 +1,22 @@
  SUBDIRS =
  noinst_LTLIBRARIES = liblegacy.la
  
 -NULL:=#
 +#NULL:=#
+ 
+-liblegacy_la_SOURCES = legacy.h
+-liblegacy_la_LIBADD =
 +liblegacy_la_SOURCES = legacy.h \
 +                      i810/i810_accel.c \
 +                      i810/i810_cursor.c \
@@ -60,10 +63,9 @@
 +                      i810/i810_video.c \
 +                      i810/i810_wmark.c
  
--liblegacy_la_SOURCES = legacy.h
--liblegacy_la_LIBADD =
 +AM_CFLAGS = @XORG_CFLAGS@ @DRM_CFLAGS@ @DRI_CFLAGS@ -I$(top_srcdir)/src
 +liblegacy_la_LIBADD = @DRI_LIBS@ @DRM_LIBS@ @XVMCLIB_LIBS@
- 
++
  if ! KMS_ONLY
  SUBDIRS += i810
+ liblegacy_la_SOURCES +=
--- a/open-src/driver/xf86-video-intel/mapfile.externs	Fri Nov 02 15:59:08 2012 -0700
+++ b/open-src/driver/xf86-video-intel/mapfile.externs	Mon Nov 05 16:17:08 2012 -0800
@@ -2,4 +2,5 @@
   global:
     I830DRI2FrameEventHandler = FUNCTION extern;
     I830DRI2FlipEventHandler = FUNCTION extern;
+    noXFree86DRIExtension = FUNCTION extern;
 };
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/open-src/driver/xf86-video-mach64/113.patch	Mon Nov 05 16:17:08 2012 -0800
@@ -0,0 +1,14 @@
+--- src/atiscreen.c	Thu Sep 20 08:11:15 2012
++++ src/atiscreen.c	Thu Sep 20 08:12:36 2012
+@@ -580,7 +580,11 @@
+ #ifdef TV_OUT
+     /* Fix-up TV out after ImpacTV probe */
+     if (pATI->OptionTvOut && pATI->Chip < ATI_CHIP_264GTPRO)
++#ifndef XF86_SCRN_INTERFACE
+         ATISwitchMode(0, pScreenInfo->currentMode, 0);
++#else
++        ATISwitchMode(pScreenInfo->currentMode, 0);
++#endif
+ #endif /* TV_OUT */
+ 
+ #ifdef XF86DRI_DEVEL
--- a/open-src/driver/xf86-video-mach64/Makefile	Fri Nov 02 15:59:08 2012 -0700
+++ b/open-src/driver/xf86-video-mach64/Makefile	Mon Nov 05 16:17:08 2012 -0800
@@ -29,15 +29,16 @@
 MODULE_NAME=xf86-video-mach64
 
 # Version number (used in path names)
-MODULE_VERSION=6.9.1
+MODULE_VERSION=6.9.3
 
 # Checksums for upstream tarball
-TARBALL_MD5   = 8484c18f08e77564a56ccbf226694038
-TARBALL_SHA1  = 7129cf61a1c70d923a370fea66686d7a13be8fe8
-TARBALL_SHA256= 9f6ad49f07c8785a64caac6f4aaf58fc7746a24b718491d047c45bc1ee9e834e
+TARBALL_MD5   = 94189e4ad9dc431a962228c61dae6f77
+TARBALL_SHA1  = 04a121dfb4e77218219739ef7729ed647004ae27
+TARBALL_SHA256= 5473d0e7dfd7bcff3f759e9e6bd6794ab464958f2f647d9b6d3edf3c66c53218
 
 # Patches to apply to source after unpacking, in order
-SOURCE_PATCHES = 6205248.patch,-p1
+SOURCE_PATCHES = 6205248.patch,-p1 \
+		 113.patch
 
 # Man pages to apply Sun footer to & attributes to list
 #SUNTOUCHED_MANPAGES=man/*.man
@@ -53,7 +54,7 @@
 	-L$(PROTODIR)$(X11_SERVERLIBS_DIR)$(ARCHLIBSUBDIR) \
 	-R$(X11_SERVERMODS_DIR) \
 	-R$(X11_SERVERLIBS_DIR)$(ARCHLIBSUBDIR) \
-	-lexa -lint10 -lpciaccess -lfb -lpixman-1 -lshadowfb -lXfont -lvbe -lxaa
+	-lexa -lint10 -lpciaccess -lfb -lpixman-1 -lshadowfb -lXfont -lvbe
 
 # Additional install rules beyond what upstream installs
 MODULE_ADD_INSTALL_TARGETS=install_docs
--- a/open-src/driver/xf86-video-mga/Makefile	Fri Nov 02 15:59:08 2012 -0700
+++ b/open-src/driver/xf86-video-mga/Makefile	Mon Nov 05 16:17:08 2012 -0800
@@ -29,19 +29,19 @@
 MODULE_NAME=xf86-video-mga
 
 # Version number (used in path names)
-MODULE_VERSION=1.5.0
+MODULE_VERSION=1.6.2
 
 # Checksums for upstream tarball
-TARBALL_MD5   = ff7a9d63978f538a7d5ff5dafe431562
-TARBALL_SHA1  = de82e4dc8d05fe1306498e3067f9e65479cfa5a1
-TARBALL_SHA256= ca983d780dd90115c0599980a7a83425b5e4eeb16f2e8c7fed15823fcbe7830e
+TARBALL_MD5   = f543877db4e260d8b43c7da3095605ed
+TARBALL_SHA1  = 030e097dc435b17f603c64e46f7b655a185a075b
+TARBALL_SHA256= 3f89ce250eea93f0de890954687790e06c0bab9e3e303df393e8759a187eca6c
 
 # Patches to apply to source after unpacking, in order
 SOURCE_PATCHES = \
 		libraries.patch,-p1 \
 		g200se_pilot3_offscreen.patch,-p1 \
-		sparc.patch,-p1 \
-		sparc-bus-probe.patch,-p1
+		sparc-bus-probe.patch,-p1 \
+		sparc.patch,-p1
 
 # Man pages to apply Sun footer to & attributes to list
 SUNTOUCHED_MANPAGES=man/*.man
--- a/open-src/driver/xf86-video-mga/libraries.patch	Fri Nov 02 15:59:08 2012 -0700
+++ b/open-src/driver/xf86-video-mga/libraries.patch	Mon Nov 05 16:17:08 2012 -0800
@@ -1,47 +1,13 @@
-From c8fefc5e66d6eb6219c92a95a5a51120ae315fdd Mon Sep 17 00:00:00 2001
-From: Alan Coopersmith <[email protected]>
-Date: Wed, 23 May 2012 23:10:26 -0700
-Subject: [RFC PATCH:xf86-video-mga 13/15] Link with modules needed to build with
- no-undefined linking
-
-Signed-off-by: Alan Coopersmith <[email protected]>
----
- src/Makefile.am |    7 ++++++-
- 1 file changed, 6 insertions(+), 1 deletion(-)
-
-diff --git a/src/Makefile.am b/src/Makefile.am
-index 44417de..5f5e2ad 100644
---- a/src/Makefile.am
-+++ b/src/Makefile.am
-@@ -27,7 +27,9 @@ AM_CFLAGS = @XORG_CFLAGS@ @DRI_CFLAGS@
+--- a/src/Makefile.am	Thu Sep 20 10:57:45 2012
++++ b/src/Makefile.am	Thu Sep 20 10:58:04 2012
+@@ -27,7 +27,9 @@
  mga_drv_la_LTLIBRARIES = mga_drv.la
  mga_drv_la_LDFLAGS = -module -avoid-version
  mga_drv_ladir = @moduledir@/drivers
 -mga_drv_la_LIBADD = $(noinst_LTLIBRARIES)
 +mga_drv_la_LIBADD = $(noinst_LTLIBRARIES) $(XORG_LIBS) $(PCIACCESS_LIBS)
-+mga_drv_la_LIBADD += -L$(moduledir) -lfb -lpixman-1 -lshadowfb -lfbdevhw
++mga_drv_la_LIBADD += -L$(moduledir) -lfb -lpixman-1 -lshadowfb -lfbdevhw -lexa
 +mga_drv_la_LIBADD += -lvgahw -lvbe -lint10
  
  mga_drv_la_SOURCES = \
           binding.h \
-@@ -62,14 +64,17 @@ mga_drv_la_SOURCES += \
- 	mga_dri.c \
-         mga_dri.h \
-         mga_dripriv.h
-+mga_drv_la_LIBADD += -L$(moduledir)/extensions -ldrm -ldri -lglx
- endif
- 
- if USE_EXA
- mga_drv_la_SOURCES += \
-     mga_exa.c
-+mga_drv_la_LIBADD += -lexa
- endif
- 
- if USE_XAA
- mga_drv_la_SOURCES += \
-     mga_storm.c
-+mga_drv_la_LIBADD += -lxaa
- endif
--- 
-1.7.9.2
-
--- a/open-src/driver/xf86-video-mga/sparc-bus-probe.patch	Fri Nov 02 15:59:08 2012 -0700
+++ b/open-src/driver/xf86-video-mga/sparc-bus-probe.patch	Mon Nov 05 16:17:08 2012 -0800
@@ -1,6 +1,6 @@
---- a/src/mga_driver.c	Fri Aug 10 17:30:22 2012
-+++ b/src/mga_driver.c	Fri Aug 17 16:33:15 2012
-@@ -120,6 +120,9 @@
+--- a/src/mga_driver.c	Thu Oct 18 13:55:11 2012
++++ b/src/mga_driver.c	Thu Oct 18 13:57:51 2012
+@@ -109,6 +109,9 @@
  static const OptionInfoRec *	MGAAvailableOptions(int chipid, int busid);
  static void	MGAIdentify(int flags);
  #ifdef XSERVER_LIBPCIACCESS
@@ -10,7 +10,7 @@
  static Bool MGAPciProbe(DriverPtr drv, int entity_num,
      struct pci_device * dev, intptr_t match_data);
  #else
-@@ -535,7 +538,11 @@
+@@ -510,7 +513,11 @@
      MGA_DRIVER_NAME,
      MGAIdentify,
  #ifdef XSERVER_LIBPCIACCESS
@@ -22,23 +22,24 @@
  #else
      MGAProbe,
  #endif
-@@ -4273,3 +4280,19 @@
- 
+@@ -4180,3 +4187,20 @@
+     OUTREG(MGAREG_MACCESS, 1<<15);
+     usleep(10);
  }
- #endif
 +
 +#ifdef __sparc__
 +static Bool
 +MGACompProbe(DriverPtr drvp, int flags)
 +{
-+    static Bool PciInitDone = FALSE;
++   static Bool PciInitDone = FALSE;
 +
 +    /* Create pci system for use by the driver */
 +    if (!PciInitDone) {
-+	xf86BusProbe();
-+	PciInitDone = TRUE;
++       xf86BusProbe();
++      PciInitDone = TRUE;
 +    }
 +
 +    return xf86PciProbeDev(drvp);
 +}
 +#endif
++
--- a/open-src/driver/xf86-video-mga/sparc.patch	Fri Nov 02 15:59:08 2012 -0700
+++ b/open-src/driver/xf86-video-mga/sparc.patch	Mon Nov 05 16:17:08 2012 -0800
@@ -267,28 +267,6 @@
      pScrn->vtSema = FALSE;
  
      xf86ClearPrimInitDone(pScrn->entityList[0]);
-@@ -4194,3 +4253,21 @@ MGAG100BlackMagic(ScrnInfoPtr pScrn)
-     usleep(10);
- }
- 
-+#ifdef __sparc__
-+static void
-+MGANotifyModeChanged(ScrnInfoPtr pScrn)
-+{
-+    struct vis_video_mode mode;
-+    MGAPtr pMga = MGAPTR(pScrn);
-+
-+    if (pScrn->currentMode->name != NULL) {
-+	strlcpy(mode.mode_name, pScrn->currentMode->name, VIS_MAX_VMODE_LEN);
-+    } else {
-+	strlcpy(mode.mode_name, " ", VIS_MAX_VMODE_LEN);
-+    }
-+    mode.vRefresh = pScrn->currentMode->VRefresh;
-+
-+    ioctl(pMga->fd, VIS_STOREVIDEOMODENAME, &mode);
-+
-+}
-+#endif
 diff --git a/src/mga_storm.c b/src/mga_storm.c
 index 96bb6b9..57fdba5 100644
 --- a/src/mga_storm.c
@@ -452,3 +430,31 @@
  
  
  static void
+--- a/src/mga_driver.c	Thu Oct 18 14:08:08 2012
++++ b/src/mga_driver.c	Thu Oct 18 14:11:07 2012
+@@ -2890,6 +2890,25 @@
+ #endif
+ }
+ 
++#ifdef __sparc__
++static void
++MGANotifyModeChanged(ScrnInfoPtr pScrn)
++{
++    struct vis_video_mode mode;
++    MGAPtr pMga = MGAPTR(pScrn);
++
++    if (pScrn->currentMode->name != NULL) {
++      strlcpy(mode.mode_name, pScrn->currentMode->name, VIS_MAX_VMODE_LEN);
++    } else {
++      strlcpy(mode.mode_name, " ", VIS_MAX_VMODE_LEN);
++    }
++    mode.vRefresh = pScrn->currentMode->VRefresh;
++
++    ioctl(pMga->fd, VIS_STOREVIDEOMODENAME, &mode);
++
++}
++#endif
++
+ /*
+  * Initialise a new mode.  This is currently still using the old
+  * "initialise struct, restore/write struct to HW" model.  That could
--- a/open-src/driver/xf86-video-nv/Makefile	Fri Nov 02 15:59:08 2012 -0700
+++ b/open-src/driver/xf86-video-nv/Makefile	Mon Nov 05 16:17:08 2012 -0800
@@ -2,7 +2,7 @@
 #
 # xf86-video-nv Makefile
 #
-# Copyright (c) 2006, 2011, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2006, 2012, Oracle and/or its affiliates. All rights reserved.
 #
 # Permission is hereby granted, free of charge, to any person obtaining a
 # copy of this software and associated documentation files (the "Software"),
@@ -29,14 +29,14 @@
 MODULE_NAME=xf86-video-nv
 
 # Version number (used in path names)
-MODULE_VERSION=2.1.18
+MODULE_VERSION=2.1.20
 
 # Checksums for upstream tarball
-TARBALL_MD5  = b12f0b2114849d1a542d8084732573d3
-TARBALL_SHA1 = d35b2fa5a26a507a9cc95b69243d9fd0c0f32aa2
+TARBALL_MD5  = e263dd0cd149b5224e92baa5a227bb00
+TARBALL_SHA1 = 42b129be471d16444c5a7b443491e8d9e3e5df1a
 
 # Patches to apply to source after unpacking, in order
-SOURCE_PATCHES = 7163065.patch
+SOURCE_PATCHES = 
 
 # Man pages to apply Sun footer to & attributes to list
 SUNTOUCHED_MANPAGES=man/*.man
@@ -51,7 +51,7 @@
         -L$(PROTODIR)$(X11_SERVERLIBS_DIR)$(ARCHLIBSUBDIR) \
 	-R$(X11_SERVERMODS_DIR) \
         -R$(X11_SERVERLIBS_DIR)$(ARCHLIBSUBDIR) \
-	-lexa -lfb -lint10 -lshadowfb -lXfont -lvbe -lvgahw -lxaa -lfbdevhw \
+	-lexa -lfb -lint10 -lshadowfb -lXfont -lvbe -lvgahw -lfbdevhw \
 	-L$(PROTODIR)/usr/lib -lpciaccess -lpixman-1 -lm
 
 include ../Makefile.inc
--- a/open-src/driver/xf86-video-openchrome/Makefile	Fri Nov 02 15:59:08 2012 -0700
+++ b/open-src/driver/xf86-video-openchrome/Makefile	Mon Nov 05 16:17:08 2012 -0800
@@ -1,4 +1,3 @@
-###############################################################################
 #
 # xf86-video-openchrome Makefile
 #
@@ -34,15 +33,19 @@
 UPSTREAM_SET    = yes
 
 # Version number (used in path names)
-MODULE_VERSION=0.2.905
+MODULE_VERSION=0.3.1
 
 # Checksums for upstream tarball
-TARBALL_MD5  = 51871431a4a9204ab8ec79335c0cc041
-TARBALL_SHA1 = bbd64f258e69b29498e5f68d5a28e5253d252dd1
+TARBALL_MD5  = 4f488b7bd4d34d17d5cbcdc0fe8e659d
+TARBALL_SHA1 = 89e56dcfe851345f72c61a95b4fa5ab6ad7e0d83
 
 # Patches to apply to source after unpacking, in order
 SOURCE_PATCHES = manpage-sections.patch,-p1
 
+# Extra rules to run when unpacking upstream source
+CLEAN_LINEFEED_TARGET = $(SOURCE_DIR)/.source.clean.done
+MODULE_ADD_SOURCE_TARGETS = $(CLEAN_LINEFEED_TARGET)
+
 # manpage-sections.patch edits configure.ac, so we need to autoreconf
 AUTORECONF=yes
 
@@ -52,15 +55,29 @@
 
 # Extra flags to pass to configure script
 # - Disable DRI since the kernel module isn't ported
-MODULE_CONFIG_OPTS=--disable-dri
+MODULE_CONFIG_OPTS=--disable-dri --disable-kms
 
 # Libraries/modules to link with
 MODULE_LD_OPTIONS= \
 	-L$(PROTODIR)$(X11_SERVERMODS_DIR) \
 	-L$(PROTODIR)$(X11_SERVERLIBS_DIR)$(ARCHLIBSUBDIR) \
+        -L$(PROTODIR)$(MESA_XSERVERMODS_DIR)/extensions \
+        -L$(PROTODIR)$(X11_SERVERMODS_DIR)/extensions \
+        -L$(PROTODIR)$(X11_LIB_DIR)$(ARCHLIBSUBDIR) \
 	-R$(X11_SERVERMODS_DIR) \
 	-R$(X11_SERVERLIBS_DIR)$(ARCHLIBSUBDIR) \
 	-lfb -lint10 -lpciaccess -lpixman-1 -lvbe \
-	-lexa -lxaa -lvgahw -lshadowfb -lXfont -lm
+	-lexa -lvgahw -lshadowfb -lXfont -lm -ldrm -lshadow \
+	-M $(PWD)/mapfile.externs
 
 include ../Makefile.inc
+
+# via_regs.h has ^M's at linefeeds which break Sun compilers
+clean_linefeeds: $(CLEAN_LINEFEED_TARGET)
+$(SOURCE_ADD_TARGET): $(CLEAN_LINEFEED_TARGET)
+$(PATCHED_TARGET): $(CLEAN_LINEFEED_TARGET)
+
+$(CLEAN_LINEFEED_TARGET): $(SOURCE_INIT_TARGET)
+	find $(BUILD_DIR) -type f -name '*.[ch]' | \
+		xargs $(PERL) -i -p -e 's{\r\n}{\n}g'
+	touch $(CLEAN_LINEFEED_TARGET)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/open-src/driver/xf86-video-openchrome/mapfile.externs	Mon Nov 05 16:17:08 2012 -0800
@@ -0,0 +1,5 @@
+{
+  global:
+    GlxSetVisualConfigs = FUNCTION extern;
+};
+
--- a/open-src/driver/xf86-video-r128/Makefile	Fri Nov 02 15:59:08 2012 -0700
+++ b/open-src/driver/xf86-video-r128/Makefile	Mon Nov 05 16:17:08 2012 -0800
@@ -29,12 +29,12 @@
 MODULE_NAME=xf86-video-r128
 
 # Version number (used in path names)
-MODULE_VERSION=6.8.2
+MODULE_VERSION=6.8.4
 
 # Checksums for upstream tarball
-TARBALL_MD5   = 31e0358b5d1189e3f30f5b11e9b86865
-TARBALL_SHA1  = bb01cbdc173dbb53070c4ac06f3eeb3ad2645164
-TARBALL_SHA256= 7b41135c3d177e61644573e5c16e35fd9eff98b4d6685c9c6de9e33401e904b1
+TARBALL_MD5   = 4c4cf0031dda485830b082cde53976c7
+TARBALL_SHA1  = 39d2b3667a5796e9333a41abaf1197cc0f0590ff
+TARBALL_SHA256= 6fbfbba2589c1daf45f048009d6521bb687adbdf2f695eb961b316ce68935cd7
 
 # Patches to apply to source after unpacking, in order
 SOURCE_PATCHES = 
@@ -55,7 +55,7 @@
 	-R$(X11_SERVERMODS_DIR) \
 	-R$(X11_SERVERMODS_DIR)/extensions \
 	-R$(X11_SERVERLIBS_DIR)$(ARCHLIBSUBDIR) \
-	-lint10 -lpciaccess -lfb -lpixman-1 -lvbe -lxaa -lfbdevhw -lvgahw
+	-lint10 -lpciaccess -lfb -lpixman-1 -lvbe -lfbdevhw -lvgahw
 
 # Additional install rules beyond what upstream installs
 MODULE_ADD_INSTALL_TARGETS=install_docs
--- a/open-src/driver/xf86-video-trident/Makefile	Fri Nov 02 15:59:08 2012 -0700
+++ b/open-src/driver/xf86-video-trident/Makefile	Mon Nov 05 16:17:08 2012 -0800
@@ -29,12 +29,12 @@
 MODULE_NAME=xf86-video-trident
 
 # Version number (used in path names)
-MODULE_VERSION=1.3.5
+MODULE_VERSION=1.3.6
 
 # Checksums for upstream tarball
-TARBALL_MD5   = 5ca073f0ca52b83e51def3115e6cae4a
-TARBALL_SHA1  = d4ef8112eeabb7a7e31e287172425e3540bb34fd
-TARBALL_SHA256= 4bb3d091ab7788e1883d6d9e7e0c7ecbf9f57e5ef03d94a5082c2870dbbfc50b
+TARBALL_MD5   = 86fed7e2b2876cb349f958cdd8319118
+TARBALL_SHA1  = 9af5d275e6f4247cde19765178c3a797b4a7351d
+TARBALL_SHA256= 6a58e3f3034abd8803af8a5c7dd5a6a4a28ed4fdac742ffb05518caaddc28104
 
 # Patches to apply to source after unpacking, in order
 SOURCE_PATCHES = 6452329.patch,-p1
@@ -54,7 +54,8 @@
 	-R$(X11_SERVERMODS_DIR) \
 	-R$(X11_SERVERLIBS_DIR)$(ARCHLIBSUBDIR) \
 	-lexa -lfb -lint10 -lpciaccess -lpixman-1 -lshadow -lvbe -lvgahw \
-	-lxaa -lm
+	-lexa -lm \
+	-M $(PWD)/mapfile.externs
 
 include ../Makefile.inc
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/open-src/driver/xf86-video-trident/mapfile.externs	Mon Nov 05 16:17:08 2012 -0800
@@ -0,0 +1,5 @@
+{
+  global:
+    TRIDENT_Sync = FUNCTION extern;
+};
+
--- a/open-src/driver/xf86-video-vesa/Makefile	Fri Nov 02 15:59:08 2012 -0700
+++ b/open-src/driver/xf86-video-vesa/Makefile	Mon Nov 05 16:17:08 2012 -0800
@@ -29,11 +29,11 @@
 MODULE_NAME=xf86-video-vesa
 
 # Version number (used in path names)
-MODULE_VERSION=2.3.1
+MODULE_VERSION=2.3.2
 
 # Checksums for upstream tarball
-TARBALL_MD5   = 02e6eacc2d1e07ac893b62481905d6f0
-TARBALL_SHA1  = acb4f8104f16476d46ceb366aa932783c3644ead
+TARBALL_MD5   = 3eddd393fba79550e012d717499d58ad
+TARBALL_SHA1  = d49a57de24e7923bf17270084ce91ecf2feb4286
 
 # Patches to apply to source after unpacking, in order
 SOURCE_PATCHES = vesa_xorg72.patch,-p1
--- a/open-src/driver/xf86-video-vmware/Makefile	Fri Nov 02 15:59:08 2012 -0700
+++ b/open-src/driver/xf86-video-vmware/Makefile	Mon Nov 05 16:17:08 2012 -0800
@@ -37,7 +37,10 @@
 TARBALL_SHA256= c827875fd94805ec9b925fe09aaa973e7e3f9096c7ef311d449c3f134ae75147
 
 # Patches to apply to source after unpacking, in order
-SOURCE_PATCHES =
+SOURCE_PATCHES = compat.patch
+
+# Merge in additional sources from sun-src directory
+ADDITIONAL_SOURCE_DIR=sun-src
 
 # Man pages to apply Sun footer to & attributes to list
 SUNTOUCHED_MANPAGES=man/*.man
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/open-src/driver/xf86-video-vmware/compat.patch	Mon Nov 05 16:17:08 2012 -0800
@@ -0,0 +1,31 @@
+--- src/vmware.c	Thu Oct 11 14:04:32 2012
++++ src/vmware.c	Thu Oct 11 14:06:59 2012
+@@ -37,6 +37,7 @@
+ #include "svga_modes.h"
+ #include "vmware_bootstrap.h"
+ #include "vmware_common.h"
++#include "compat-api.h"
+ 
+ #ifndef HAVE_XORG_SERVER_1_5_0
+ #include <xf86_ansic.h>
+@@ -1089,9 +1090,9 @@
+ }
+ 
+ static Bool
+-VMWARECloseScreen(int scrnIndex, ScreenPtr pScreen)
++VMWARECloseScreen(CLOSE_SCREEN_ARGS_DECL)
+ {
+-    ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
++    ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
+     VMWAREPtr pVMWARE = VMWAREPTR(pScrn);
+     ScreenPtr save = &pVMWARE->ScrnFuncs;
+ 
+@@ -1119,7 +1120,7 @@
+     pScrn->DriverFunc = NULL;
+ #endif
+ 
+-    return (*pScreen->CloseScreen)(scrnIndex, pScreen);
++    return (*pScreen->CloseScreen)(CLOSE_SCREEN_ARGS);
+ }
+ 
+ static Bool
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/open-src/driver/xf86-video-vmware/sun-src/src/compat-api.h	Mon Nov 05 16:17:08 2012 -0800
@@ -0,0 +1,94 @@
+/*
+ * Copyright 2012 Red Hat, Inc.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ *
+ * Author: Dave Airlie <[email protected]>
+ */
+
+/* this file provides API compat between server post 1.13 and pre it,
+   it should be reused inside as many drivers as possible */
+#ifndef COMPAT_API_H
+#define COMPAT_API_H
+
+#ifndef GLYPH_HAS_GLYPH_PICTURE_ACCESSOR
+#define GetGlyphPicture(g, s) GlyphPicture((g))[(s)->myNum]
+#define SetGlyphPicture(g, s, p) GlyphPicture((g))[(s)->myNum] = p
+#endif
+
+#ifndef XF86_HAS_SCRN_CONV
+#define xf86ScreenToScrn(s) xf86Screens[(s)->myNum]
+#define xf86ScrnToScreen(s) screenInfo.screens[(s)->scrnIndex]
+#endif
+
+#ifndef XF86_SCRN_INTERFACE
+
+#define SCRN_ARG_TYPE int
+#define SCRN_INFO_PTR(arg1) ScrnInfoPtr pScrn = xf86Screens[(arg1)]
+
+#define SCREEN_ARG_TYPE int
+#define SCREEN_PTR(arg1) ScreenPtr pScreen = screenInfo.screens[(arg1)]
+
+#define SCREEN_INIT_ARGS_DECL int i, ScreenPtr pScreen, int argc, char **argv
+
+#define BLOCKHANDLER_ARGS_DECL int arg, pointer blockData, pointer pTimeout, pointer pReadmask
+#define BLOCKHANDLER_ARGS arg, blockData, pTimeout, pReadmask
+
+#define CLOSE_SCREEN_ARGS_DECL int scrnIndex, ScreenPtr pScreen
+#define CLOSE_SCREEN_ARGS scrnIndex, pScreen
+
+#define ADJUST_FRAME_ARGS_DECL int arg, int x, int y, int flags
+
+#define SWITCH_MODE_ARGS_DECL int arg, DisplayModePtr mode, int flags
+
+#define FREE_SCREEN_ARGS_DECL int arg, int flags
+
+#define VT_FUNC_ARGS_DECL int arg, int flags
+#define VT_FUNC_ARGS(flags) pScrn->scrnIndex, (flags)
+
+#define XF86_ENABLEDISABLEFB_ARG(x) ((x)->scrnIndex)
+#else
+#define SCRN_ARG_TYPE ScrnInfoPtr
+#define SCRN_INFO_PTR(arg1) ScrnInfoPtr pScrn = (arg1)
+
+#define SCREEN_ARG_TYPE ScreenPtr
+#define SCREEN_PTR(arg1) ScreenPtr pScreen = (arg1)
+
+#define SCREEN_INIT_ARGS_DECL ScreenPtr pScreen, int argc, char **argv
+
+#define BLOCKHANDLER_ARGS_DECL ScreenPtr arg, pointer pTimeout, pointer pReadmask
+#define BLOCKHANDLER_ARGS arg, pTimeout, pReadmask
+
+#define CLOSE_SCREEN_ARGS_DECL ScreenPtr pScreen
+#define CLOSE_SCREEN_ARGS pScreen
+
+#define ADJUST_FRAME_ARGS_DECL ScrnInfoPtr arg, int x, int y
+#define SWITCH_MODE_ARGS_DECL ScrnInfoPtr arg, DisplayModePtr mode
+
+#define FREE_SCREEN_ARGS_DECL ScrnInfoPtr arg
+
+#define VT_FUNC_ARGS_DECL ScrnInfoPtr arg
+#define VT_FUNC_ARGS(flags) pScrn
+
+#define XF86_ENABLEDISABLEFB_ARG(x) (x)
+
+#endif
+
+#endif
--- a/open-src/lib/libXrandr/Makefile	Fri Nov 02 15:59:08 2012 -0700
+++ b/open-src/lib/libXrandr/Makefile	Mon Nov 05 16:17:08 2012 -0800
@@ -2,7 +2,7 @@
 #
 # Xrandr 1.x Makefile
 #
-# Copyright (c) 2006, 2011, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2006, 2012, Oracle and/or its affiliates. All rights reserved.
 #
 # Permission is hereby granted, free of charge, to any person obtaining a
 # copy of this software and associated documentation files (the "Software"),
@@ -29,11 +29,11 @@
 MODULE_NAME=libXrandr
 
 # Version number (used in path names)
-MODULE_VERSION=1.3.2
+MODULE_VERSION=1.4.0
 
 # Checksums for upstream tarball
-TARBALL_MD5  = 92473da2fccf5fac665be4fa4f2037fa
-TARBALL_SHA1 = 0c844a4c5237f96794f0c18a5af16dc5ab7a36ec
+TARBALL_MD5  = 0c843636124cc1494e3d87df16957672
+TARBALL_SHA1 = 2353d16635a20521a64838f568bb4c8a10823316
 
 # Patches to apply to source after unpacking, in order
 SOURCE_PATCHES = 
@@ -48,6 +48,8 @@
 MODULE_ARC_CASES += PSARC/2007/430
 # PSARC/2009/269 X Resize, Rotate and Reflect (RandR) 1.3
 MODULE_ARC_CASES += PSARC/2009/269
+# PSARC/2012/318 X Resize, Rotate and Reflect (RandR) 1.4
+MODULE_ARC_CASES += PSARC/2012/318
 
 # Man pages to apply Sun footer to & attributes to list
 SUNTOUCHED_MANPAGES=man/*.man
--- a/open-src/lib/libdrm/Makefile	Fri Nov 02 15:59:08 2012 -0700
+++ b/open-src/lib/libdrm/Makefile	Mon Nov 05 16:17:08 2012 -0800
@@ -31,12 +31,12 @@
 UPSTREAM_SET	= yes
 
 # Version number (used in path names)
-MODULE_VERSION=2.4.32
+MODULE_VERSION=2.4.39
 
 # Checksums for upstream tarball
-TARBALL_MD5  = b731faf4a49f89c318d84378cb563cf8
-TARBALL_SHA1 = 4aab6cc1c0d2a4822ffd83bd3da0e7a5479bf842
-TARBALL_SHA256 = 9ba8a1613de57af8f501a162747ed69aff30d63fc1316602770974bdd9ee984e
+TARBALL_MD5  = 9a299e021d81bab6c82307582c78319d
+TARBALL_SHA1 = c0e841850d7164c63d36f486ca3a64040357660e
+TARBALL_SHA256 = 386b17388980504bca16ede81ceed4c77b12c3488f46ecb7f4d48e48512a733d
 
 # Library name (used for specfiles/mapfiles)
 LIBNAME=drm
@@ -61,10 +61,19 @@
 MODULE_MAKE=$(GNUMAKE)
 MODULE_MAKE_SET=yes
 
+# To build with gcc, uncomment these lines and comment out the MODULE_CFLAGS
+MODULE_COMPILER=gcc
+MODULE_COMPILER_SET=yes
+
+# Tell Sun compiler to not apply optimizations that increase binary sizes
+# Without this flag, Studio 12 binaries are almost 2x bigger (CR 6808868)
+#MODULE_CFLAGS = -xspace
+
+
 MODULE_BUILD_MAKEFLAGS = libkms_la_LIBADD=../libdrm.so.2
 
 # Command line options to GNU autoconf configure script
-MODULE_CONFIG_OPTS = --disable-radeon --enable-libkms
+MODULE_CONFIG_OPTS = --enable-libkms --disable-nouveau
 
 # Man pages to apply Sun footer to & attributes to list
 #SUNTOUCHED_MANPAGES=*.man
@@ -72,7 +81,7 @@
 #LIB_MAN_SUFFIX=3drm
 
 # pkg-config files that need to have -R added
-FIX_PC_FILES=libdrm.pc.in intel/libdrm_intel.pc.in libkms/libkms.pc.in
+FIX_PC_FILES=libdrm.pc.in intel/libdrm_intel.pc.in libkms/libkms.pc.in radeon/libdrm_radeon.pc
 
 # Where to install files
 MODULE_ADD_LIB_SUBDIR = $(X11_SERVERLIBS_SUBDIR)
@@ -89,7 +98,7 @@
 
 # Upstream seems to install in $(X11_SERVERLIBS_SUBDIR)/pkgconfig no matter
 # what, so just move them afterwards
-PC_FILES_i386 = libdrm_intel.pc
+PC_FILES_i386 = libdrm_intel.pc libdrm_radeon.pc
 PC_FILES = libdrm.pc libkms.pc $(PC_FILES_$(MACH))
 MOVED_PC_FILES = $(PC_FILES:%=$(PROTODIR)/$(PKGCONFIG_DIR)/%)
 XSERVER_PC_DIR = $(X11_SERVERLIBS_DIR)$(ARCHLIBSUBDIR)/pkgconfig
--- a/open-src/lib/libdrm/atomic.patch	Fri Nov 02 15:59:08 2012 -0700
+++ b/open-src/lib/libdrm/atomic.patch	Mon Nov 05 16:17:08 2012 -0800
@@ -58,3 +58,14 @@
  		drm_intel_bufmgr_gem *bufmgr_gem =
  		    (drm_intel_bufmgr_gem *) bo->bufmgr;
  		struct timespec time;
+--- intel/intel_bufmgr_gem.c	Wed Sep 26 12:45:00 2012
++++ intel/intel_bufmgr_gem.c	Wed Sep 26 12:45:42 2012
+@@ -2438,7 +2438,7 @@
+ 
+ 	bo_gem->gem_handle = handle;
+ 
+-	atomic_set(&bo_gem->refcount, 1);
++	bo_gem->refcount = 1;
+ 
+ 	bo_gem->name = "prime";
+ 	bo_gem->validate_index = -1;
--- a/open-src/lib/libdrm/no-tests.patch	Fri Nov 02 15:59:08 2012 -0700
+++ b/open-src/lib/libdrm/no-tests.patch	Mon Nov 05 16:17:08 2012 -0800
@@ -1,15 +1,13 @@
 Disable build of tests subdirectory, needed when using parfait
 
-diff --git a/Makefile.am b/Makefile.am
-index a4d07f4..bfebfa2 100644
---- a/Makefile.am
-+++ b/Makefile.am
-@@ -41,7 +41,7 @@ if HAVE_RADEON
- RADEON_SUBDIR = radeon
+--- a/Makefile.am	Wed Sep  5 14:29:31 2012
++++ b/Makefile.am	Wed Sep  5 14:29:47 2012
+@@ -49,7 +49,7 @@
+ EXYNOS_SUBDIR = exynos
  endif
  
--SUBDIRS = . $(LIBKMS_SUBDIR) $(INTEL_SUBDIR) $(NOUVEAU_SUBDIR) $(RADEON_SUBDIR) tests include
-+SUBDIRS = . $(LIBKMS_SUBDIR) $(INTEL_SUBDIR) $(NOUVEAU_SUBDIR) $(RADEON_SUBDIR) include
+-SUBDIRS = . $(LIBKMS_SUBDIR) $(INTEL_SUBDIR) $(NOUVEAU_SUBDIR) $(RADEON_SUBDIR) $(OMAP_SUBDIR) $(EXYNOS_SUBDIR) tests include
++SUBDIRS = . $(LIBKMS_SUBDIR) $(INTEL_SUBDIR) $(NOUVEAU_SUBDIR) $(RADEON_SUBDIR) $(OMAP_SUBDIR) $(EXYNOS_SUBDIR) include
  
  libdrm_la_LTLIBRARIES = libdrm.la
  libdrm_ladir = $(libdir)
--- a/open-src/lib/mesa/COPYING	Fri Nov 02 15:59:08 2012 -0700
+++ b/open-src/lib/mesa/COPYING	Mon Nov 05 16:17:08 2012 -0800
@@ -29865,3 +29865,61 @@
 WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
 DEALINGS IN THE SOFTWARE.
+
+--------------------------------------------------------------------
+glx/apple/apple_glx_log.c
+glx/apple/apple_glx_log.h
+
+ Copyright (c) 2012 Apple Inc.
+
+ Permission is hereby granted, free of charge, to any person
+ obtaining a copy of this software and associated documentation files
+ (the "Software"), to deal in the Software without restriction,
+ including without limitation the rights to use, copy, modify, merge,
+ publish, distribute, sublicense, and/or sell copies of the Software,
+ and to permit persons to whom the Software is furnished to do so,
+ subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be
+ included in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT.  IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT
+ HOLDER(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ DEALINGS IN THE SOFTWARE.
+
+ Except as contained in this notice, the name(s) of the above
+ copyright holders shall not be used in advertising or otherwise to
+ promote the sale, use or other dealings in this Software without
+ prior written authorization.
+
+--------------------------------------------------------------------
+mesa/main/pack_tmp.h
+
+ Copyright © 2012 Intel Corporation
+
+ Permission is hereby granted, free of charge, to any person obtaining a
+ copy of this software and associated documentation files (the "Software"),
+ to deal in the Software without restriction, including without limitation
+ the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ and/or sell copies of the Software, and to permit persons to whom the
+ Software is furnished to do so, subject to the following conditions:
+
+ The above copyright notice and this permission notice (including the next
+ paragraph) shall be included in all copies or substantial portions of the
+ Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
+ IN THE SOFTWARE.
+
+
+
--- a/open-src/lib/mesa/Makefile	Fri Nov 02 15:59:08 2012 -0700
+++ b/open-src/lib/mesa/Makefile	Mon Nov 05 16:17:08 2012 -0800
@@ -40,11 +40,11 @@
 MODULE_ARC_CASES = LSARC/2005/109
 
 # Version number (used in path names)
-MODULE_VERSION=7.11.2
+MODULE_VERSION=8.0.4
 
 # Checksums for upstream tarball
-TARBALL_MD5  = 0837c52698fe3252369c3fdb5195afcc
-TARBALL_SHA1 = 5981ac2de8438e5f4a1f3561f2044d700c5f0de9
+TARBALL_MD5  = d546f988adfdf986cff45b1efa2d8a46
+TARBALL_SHA1 = c64f8c03caf9ededd5f7011e246c42a649096c8c
 
 # Source tarball
 SOURCE_TARBALL_NAME=MesaLib-$(MODULE_VERSION).tar.bz2
@@ -63,12 +63,10 @@
 
 # Patches to apply to source after unpacking, in order
 SOURCE_PATCHES= \
-	gallium-endian.patch,-p1 \
-	gcc-bitcount.patch,-p1 \
 	install-pc-dir.patch \
 	glu-no-mangled-exports.patch \
-	solaris-port.patch bromolow-chipset.patch \
-	fix-gen6-viewperf-hang.patch
+	solaris-port.patch \
+	bugfix-post804.patch
 
 # File created by running configure script
 AUTOCONF_TARGET=$(SOURCE_DIR)/configs/autoconf
@@ -77,7 +75,7 @@
 MODULE_INSTALL_DEPS=set_pc_dir
 
 DRI_DRIVER_LIST_sparc=
-DRI_DRIVER_LIST_i386=i915 i965 r200 r300 radeon
+DRI_DRIVER_LIST_i386=i915 i965 radeon r200
 DRI_DRIVER_LIST= $(DRI_DRIVER_LIST_$(MACH)) swrast
 
 # Command line options to GNU autoconf configure script
@@ -129,17 +127,15 @@
 	echo 'INSTALL_PC_DIR=$(PKGCONFIG_DIR)' >> $(AUTOCONF_TARGET)
 
 # Move installed files to mesa subdirs and make links back
-LIBRARIES_TO_DIRECT_LINK = libGLU.so.1 libGLw.so.1
+LIBRARIES_TO_DIRECT_LINK = libGLU.so.1
 LIBRARIES_TO_RUNTIME_LINK = libGL.so.1
 LIBRARIES_TO_MOVE = $(LIBRARIES_TO_DIRECT_LINK) $(LIBRARIES_TO_RUNTIME_LINK)
 MESA_LIBDIR = $(PROTODIR)/usr/lib/mesa$(ARCHLIBSUBDIR)
 
-HEADERS_TO_MOVE = GLwDrawA.h GLwDrawAP.h GLwMDrawA.h GLwMDrawAP.h \
-	gl.h gl_mangle.h glext.h glfbdev.h \
+HEADERS_TO_MOVE = gl.h gl_mangle.h glext.h \
 	glu.h glu_mangle.h glx.h glx_mangle.h glxext.h \
-	mesa_wgl.h osmesa.h vms_x_fix.h wglext.h wmesa.h
-HEADERS_TO_DIRECT_LINK = GLwDrawA.h GLwDrawAP.h GLwMDrawA.h GLwMDrawAP.h \
-	glu.h osmesa.h
+	osmesa.h vms_x_fix.h wglext.h wmesa.h
+HEADERS_TO_DIRECT_LINK = glu.h osmesa.h
 HEADERS_TO_RUNTIME_LINK = gl.h glext.h glx.h glxext.h
 
 # Run just once after all other install steps are done for both 32/64-bit
--- a/open-src/lib/mesa/bromolow-chipset.patch	Fri Nov 02 15:59:08 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,23 +0,0 @@
-Based on upstream commit e057a56448e2e785f74bc13dbd6ead8572ebed91
-intel: add Ivy Bridge GT2 server variant
-We were missing this one and it is being used by Bromolow. Signed-off-by: Eugeni Dodonov <[email protected]>
---- src/mesa/drivers/dri/intel/intel_chipset.h	Thu Apr  5 14:17:15 2012
-+++ src/mesa/drivers/dri/intel/intel_chipset.h	Thu Apr  5 14:21:27 2012
-@@ -85,6 +85,7 @@
- #define PCI_CHIP_IVYBRIDGE_M_GT1        0x0156  /* Mobile */
- #define PCI_CHIP_IVYBRIDGE_M_GT2        0x0166
- #define PCI_CHIP_IVYBRIDGE_S_GT1        0x015a  /* Server */
-+#define PCI_CHIP_IVYBRIDGE_S_GT2 	0x016a  /* server */
- 
- #define IS_MOBILE(devid)	(devid == PCI_CHIP_I855_GM || \
- 				 devid == PCI_CHIP_I915_GM || \
-@@ -147,7 +148,8 @@
- 				 devid == PCI_CHIP_IVYBRIDGE_S_GT1)
- 
- #define IS_IVB_GT2(devid)       (devid == PCI_CHIP_IVYBRIDGE_GT2 || \
--				 devid == PCI_CHIP_IVYBRIDGE_M_GT2)
-+				 devid == PCI_CHIP_IVYBRIDGE_M_GT2 || \
-+				 devid == PCI_CHIP_IVYBRIDGE_S_GT2)
- 
- #define IS_IVYBRIDGE(devid)     (IS_IVB_GT1(devid) || IS_IVB_GT2(devid))
- 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/open-src/lib/mesa/bugfix-post804.patch	Mon Nov 05 16:17:08 2012 -0800
@@ -0,0 +1,1102 @@
+--- src/mesa/drivers/dri/i965/brw_context.c	Tue Oct  9 10:23:05 2012
++++ src/mesa/drivers/dri/i965/brw_context.c	Tue Oct  9 10:31:57 2012
+@@ -240,7 +240,7 @@
+    /* WM maximum threads is number of EUs times number of threads per EU. */
+    if (intel->gen >= 7) {
+       if (intel->gt == 1) {
+-	 brw->max_wm_threads = 86;
++	 brw->max_wm_threads = 48;
+ 	 brw->max_vs_threads = 36;
+ 	 brw->max_gs_threads = 36;
+ 	 brw->urb.size = 128;
+--- src/mesa/drivers/dri/i965/brw_fs.h	Tue Oct  9 10:33:03 2012
++++ src/mesa/drivers/dri/i965/brw_fs.h	Tue Oct  9 10:33:57 2012
+@@ -409,7 +409,7 @@
+ 	 this->reg_null_cmp = reg_null_f;
+ 
+       this->frag_depth = NULL;
+-      memset(this->outputs, 0, sizeof(this->outputs));
++      memset(this->output_components, 0, sizeof(this->output_components));
+       this->first_non_payload_grf = 0;
+       this->max_grf = intel->gen >= 7 ? GEN7_MRF_HACK_START : BRW_MAX_GRF;
+ 
+--- src/mesa/main/extensions.c	Tue Oct  9 10:34:28 2012
++++ src/mesa/main/extensions.c	Tue Oct  9 10:36:24 2012
+@@ -916,7 +916,7 @@
+ 
+    base = (GLboolean *) &ctx->Extensions;
+    for (i = extension_table; i->name != 0; ++i) {
+-      if (base[i->offset]) {
++      if (base[i->offset] && (i->api_set & (1 << ctx->API))) {
+ 	 ctx->Extensions.Count++;
+       }
+    }
+@@ -939,10 +939,11 @@
+    base = (GLboolean*) &ctx->Extensions;
+    n = 0;
+    for (i = extension_table; i->name != 0; ++i) {
+-      if (n == index && base[i->offset]) {
+-	 return (GLubyte*) i->name;
+-      } else if (base[i->offset]) {
+-	 ++n;
++      if (base[i->offset] & (i->api_set & (1 << ctx->API))) {
++	 if (n == index)
++	    return (const GLubyte*) i->name;
++	 else
++	    ++n;
+       }
+    }
+ 
+--- src/mesa/drivers/dri/i965/brw_vs_constval.c	Tue Oct  9 10:37:03 2012
++++ src/mesa/drivers/dri/i965/brw_vs_constval.c	Tue Oct  9 10:37:48 2012
+@@ -143,14 +143,12 @@
+    /* Examine vertex program output sizes to set the size_masks[] info
+     * which describes the fragment program input sizes.
+     */
+-   for (vertRes = VERT_RESULT_TEX0; vertRes < VERT_RESULT_MAX; vertRes++) {
++   for (vertRes = 0; vertRes < VERT_RESULT_MAX; vertRes++) {
+ 
+       /* map vertex program output index to fragment program input index */
+       GLint fragAttrib = _mesa_vert_result_to_frag_attrib(vertRes);
+       if (fragAttrib < 0)
+          continue;
+-      assert(fragAttrib >= FRAG_ATTRIB_TEX0);
+-      assert(fragAttrib <= FRAG_ATTRIB_MAX);
+ 
+       switch (get_output_size(t, vertRes)) {
+       case 4: t->size_masks[4-1] |= 1 << fragAttrib;
+--- src/mesa/main/pack.c	Tue Oct  9 10:38:12 2012
++++ src/mesa/main/pack.c	Tue Oct  9 10:38:47 2012
+@@ -4900,7 +4900,7 @@
+       else {
+          /* need to use double precision to prevent overflow problems */
+          for (i = 0; i < n; i++) {
+-            GLdouble z = depthValues[i] * (GLfloat) depthMax;
++            GLdouble z = depthValues[i] * (GLdouble) depthMax;
+             if (z >= (GLdouble) 0xffffffff)
+                zValues[i] = 0xffffffff;
+             else
+--- src/mesa/drivers/dri/i965/gen7_hiz.c	Tue Oct  9 10:39:24 2012
++++ src/mesa/drivers/dri/i965/gen7_hiz.c	Tue Oct  9 10:40:58 2012
+@@ -349,6 +349,24 @@
+          offset = intel_renderbuffer_tile_offsets(&rb, &tile_x, &tile_y);
+       }
+ 
++     /* According to the Sandy Bridge PRM, volume 2 part 1, pp326-327
++      * (3DSTATE_DEPTH_BUFFER dw5), in the documentation for "Depth
++      * Coordinate Offset X/Y":
++      *
++      * "The 3 LSBs of both offsets must be zero to ensure correct
++      * alignment"
++      *
++      * We have no guarantee that tile_x and tile_y are correctly aligned,
++      * since they are determined by the mipmap layout, which is only aligned
++      * to multiples of 4.
++      *
++      * So, to avoid hanging the GPU, just smash the low order 3 bits of
++      * tile_x and tile_y to 0. This is a temporary workaround until we come
++      * up with a better solution.
++      */
++      tile_x &= ~7;
++      tile_y &= ~7;
++
+       intel_emit_depth_stall_flushes(intel);
+ 
+       BEGIN_BATCH(7);
+--- src/mesa/drivers/dri/i965/gen7_misc_state.c	Tue Oct  9 10:41:04 2012
++++ src/mesa/drivers/dri/i965/gen7_misc_state.c	Tue Oct  9 10:42:30 2012
+@@ -92,6 +92,24 @@
+       uint32_t tile_x, tile_y, offset;
+ 
+       offset = intel_renderbuffer_tile_offsets(drb, &tile_x, &tile_y);
++ 
++      /* According to the Sandy Bridge PRM, volume 2 part 1, pp326-327
++       * (3DSTATE_DEPTH_BUFFER dw5), in the documentation for "Depth
++       * Coordinate Offset X/Y":
++       *
++       * "The 3 LSBs of both offsets must be zero to ensure correct
++       * alignment"
++       *
++       * We have no guarantee that tile_x and tile_y are correctly aligned,
++       * since they are determined by the mipmap layout, which is only aligned
++       * to multiples of 4.
++       *
++       * So, to avoid hanging the GPU, just smash the low order 3 bits of
++       * tile_x and tile_y to 0. This is a temporary workaround until we come
++       * up with a better solution.
++       */
++       tile_x &= ~7;
++       tile_y &= ~7;
+ 
+       assert(region->tiling == I915_TILING_Y);
+ 
+--- src/mesa/main/formats.c	Tue Oct  9 10:43:08 2012
++++ src/mesa/main/formats.c	Tue Oct  9 10:43:57 2012
+@@ -1860,8 +1860,7 @@
+       const GLuint wblocks = (width + bw - 1) / bw;
+       const GLuint hblocks = (height + bh - 1) / bh;
+       const GLuint sz = wblocks * hblocks * info->BytesPerBlock;
+-      assert(depth == 1);
+-      return sz;
++      return sz * depth;
+    }
+    else {
+       /* non-compressed */
+@@ -1887,8 +1886,7 @@
+       const uint64_t wblocks = (width + bw - 1) / bw;
+       const uint64_t hblocks = (height + bh - 1) / bh;
+       const uint64_t sz = wblocks * hblocks * info->BytesPerBlock;
+-      assert(depth == 1);
+-      return sz;
++      return sz * depth;
+    }
+    else {
+       /* non-compressed */
+--- src/mesa/drivers/dri/i965/brw_misc_state.c	Tue Oct  9 10:44:17 2012
++++ src/mesa/drivers/dri/i965/brw_misc_state.c	Tue Oct  9 10:45:24 2012
+@@ -376,6 +376,24 @@
+       assert(intel->gen < 6 || region->tiling == I915_TILING_Y);
+       assert(!hiz_region || region->tiling == I915_TILING_Y);
+ 
++      /* According to the Sandy Bridge PRM, volume 2 part 1, pp326-327
++       * (3DSTATE_DEPTH_BUFFER dw5), in the documentation for "Depth
++       * Coordinate Offset X/Y":
++       *
++       * "The 3 LSBs of both offsets must be zero to ensure correct
++       * alignment"
++       *
++       * We have no guarantee that tile_x and tile_y are correctly aligned,
++       * since they are determined by the mipmap layout, which is only aligned
++       * to multiples of 4.
++       *
++       * So, to avoid hanging the GPU, just smash the low order 3 bits of
++       * tile_x and tile_y to 0. This is a temporary workaround until we come
++       * up with a better solution.
++       */
++      tile_x &= ~7;
++      tile_y &= ~7;
++
+       BEGIN_BATCH(len);
+       OUT_BATCH(_3DSTATE_DEPTH_BUFFER << 16 | (len - 2));
+       OUT_BATCH(((region->pitch * region->cpp) - 1) |
+--- src/mesa/drivers/dri/i965/gen6_hiz.c	Tue Oct  9 10:45:26 2012
++++ src/mesa/drivers/dri/i965/gen6_hiz.c	Tue Oct  9 10:46:35 2012
+@@ -489,6 +489,24 @@
+          offset = intel_renderbuffer_tile_offsets(&rb, &tile_x, &tile_y);
+       }
+ 
++      /* According to the Sandy Bridge PRM, volume 2 part 1, pp326-327
++       * (3DSTATE_DEPTH_BUFFER dw5), in the documentation for "Depth
++       * Coordinate Offset X/Y":
++       *
++       * "The 3 LSBs of both offsets must be zero to ensure correct
++       * alignment"
++       *
++       * We have no guarantee that tile_x and tile_y are correctly aligned,
++       * since they are determined by the mipmap layout, which is only aligned
++       * to multiples of 4.
++       *
++       * So, to avoid hanging the GPU, just smash the low order 3 bits of
++       * tile_x and tile_y to 0. This is a temporary workaround until we come
++       * up with a better solution.
++       */
++      tile_x &= ~7;
++      tile_y &= ~7;
++
+       uint32_t format;
+       switch (mt->format) {
+       case MESA_FORMAT_Z16:       format = BRW_DEPTHFORMAT_D16_UNORM; break;
+--- src/mesa/drivers/dri/i965/brw_fs.cpp	Tue Oct  9 10:46:47 2012
++++ src/mesa/drivers/dri/i965/brw_fs.cpp	Tue Oct  9 10:47:54 2012
+@@ -1595,6 +1595,9 @@
+       }
+    }
+ 
++   if (progress)
++      live_intervals_valid = false;
++
+    return progress;
+ }
+ 
+@@ -1671,6 +1674,9 @@
+       }
+    }
+ 
++   if (progress)
++	live_intervals_valid = false;
++
+    return progress;
+ }
+ 
+--- src/mesa/drivers/dri/i965/brw_fs.cpp	Tue Oct  9 10:46:47 2012
++++ src/mesa/drivers/dri/i965/brw_fs.cpp	Tue Oct  9 10:50:34 2012
+@@ -1595,6 +1595,9 @@
+       }
+    }
+ 
++   if (progress)
++      live_intervals_valid = false;
++
+    return progress;
+ }
+ 
+@@ -1671,6 +1674,9 @@
+       }
+    }
+ 
++   if (progress)
++	live_intervals_valid = false;
++
+    return progress;
+ }
+ 
+@@ -1883,6 +1889,7 @@
+    struct gl_fragment_program *fp = (struct gl_fragment_program *)
+       prog->_LinkedShaders[MESA_SHADER_FRAGMENT]->Program;
+    struct brw_fragment_program *bfp = brw_fragment_program(fp);
++   bool program_uses_dfdy = fp->UsesDFdy;
+ 
+    memset(&key, 0, sizeof(key));
+ 
+--- src/mesa/drivers/dri/i965/brw_fs_emit.cpp	Tue Oct  9 10:50:54 2012
++++ src/mesa/drivers/dri/i965/brw_fs_emit.cpp	Tue Oct  9 10:52:38 2012
+@@ -913,7 +913,11 @@
+ 	 generate_ddx(inst, dst, src[0]);
+ 	 break;
+       case FS_OPCODE_DDY:
+-	 generate_ddy(inst, dst, src[0]);
++         /* Make sure fp->UsesDFdy flag got set (otherwise there's no
++          * guarantee that c->key.render_to_fbo is set).
++          */
++         assert(fp->UsesDFdy);
++	 generate_ddy(inst, dst, src[0], c->key.render_to_fbo);
+ 	 break;
+ 
+       case FS_OPCODE_SPILL:
+--- src/mesa/drivers/dri/i965/brw_wm.c	Tue Oct  9 10:52:52 2012
++++ src/mesa/drivers/dri/i965/brw_wm.c	Tue Oct  9 10:53:21 2012
+@@ -417,6 +417,8 @@
+    GLuint line_aa;
+    GLuint i;
+ 
++   bool program_uses_dfdy = fp->program.UsesDFdy;
++
+    memset(key, 0, sizeof(*key));
+ 
+    /* Build the index for table lookup
+--- src/mesa/drivers/dri/i965/brw_wm_emit.c	Tue Oct  9 10:53:23 2012
++++ src/mesa/drivers/dri/i965/brw_wm_emit.c	Tue Oct  9 10:54:30 2012
+@@ -1743,7 +1743,11 @@
+ 	 break;
+ 
+       case OPCODE_DDY:
+-	 emit_ddxy(p, dst, dst_flags, false, args[0]);
++	 /* Make sure fp->program.UsesDFdy flag got set (otherwise there's no
++          * guarantee that c->key.render_to_fbo is set).
++          */
++         assert(c->fp->program.UsesDFdy);
++	 emit_ddxy(p, dst, dst_flags, false, args[0], c->key.render_to_fbo);
+ 	 break;
+ 
+       case OPCODE_DP2:
+--- src/mesa/main/mtypes.h	Tue Oct  9 10:54:55 2012
++++ src/mesa/main/mtypes.h	Tue Oct  9 10:55:39 2012
+@@ -1974,6 +1974,7 @@
+ {
+    struct gl_program Base;   /**< base class */
+    GLboolean UsesKill;          /**< shader uses KIL instruction */
++   GLboolean UsesDFdy; 		/**< shader uses DDY instruction */
+    GLboolean OriginUpperLeft;
+    GLboolean PixelCenterInteger;
+    enum gl_frag_depth_layout FragDepthLayout;
+--- src/mesa/program/program.c	Tue Oct  9 10:55:46 2012
++++ src/mesa/program/program.c	Tue Oct  9 10:56:26 2012
+@@ -551,6 +551,7 @@
+             = (const struct gl_fragment_program *) prog;
+          struct gl_fragment_program *fpc = (struct gl_fragment_program *) clone;
+          fpc->UsesKill = fp->UsesKill;
++   	 fpc->UsesDFdy = fp->UsesDFdy;
+          fpc->OriginUpperLeft = fp->OriginUpperLeft;
+          fpc->PixelCenterInteger = fp->PixelCenterInteger;
+       }
+@@ -772,6 +773,7 @@
+       newFprog = (struct gl_fragment_program *) newProg;
+ 
+       newFprog->UsesKill = fprogA->UsesKill || fprogB->UsesKill;
++      newFprog->UsesDFdy = fprogA->UsesDFdy || fprogB->UsesDFdy;
+ 
+       /* We'll do a search and replace for instances
+        * of progB_colorFile/progB_colorIndex below...
+--- src/mesa/drivers/dri/i965/brw_fs_emit.cpp	Tue Oct  9 10:59:36 2012
++++ src/mesa/drivers/dri/i965/brw_fs_emit.cpp	Tue Oct  9 11:02:03 2012
+@@ -475,8 +475,13 @@
+    brw_ADD(p, dst, src0, negate(src1));
+ }
+ 
++/* The negate_value boolean is used to negate the derivative computation for
++ * FBOs, since they place the origin at the upper left instead of the lower
++ * left.
++ */
+ void
+-fs_visitor::generate_ddy(fs_inst *inst, struct brw_reg dst, struct brw_reg src)
++fs_visitor::generate_ddy(fs_inst *inst, struct brw_reg dst, struct brw_reg src,
++		         bool negate_value)
+ {
+    struct brw_reg src0 = brw_reg(src.file, src.nr, 0,
+ 				 BRW_REGISTER_TYPE_F,
+@@ -490,7 +495,10 @@
+ 				 BRW_WIDTH_4,
+ 				 BRW_HORIZONTAL_STRIDE_0,
+ 				 BRW_SWIZZLE_XYZW, WRITEMASK_XYZW);
+-   brw_ADD(p, dst, src0, negate(src1));
++   if (negate_value)
++	brw_ADD(p, dst, src1, negate(src0));
++   else
++	brw_ADD(p, dst, src0, negate(src1));
+ }
+ 
+ void
+--- src/mesa/drivers/dri/i965/brw_wm.c	Tue Oct  9 11:02:28 2012
++++ src/mesa/drivers/dri/i965/brw_wm.c	Tue Oct  9 11:04:07 2012
+@@ -517,8 +517,11 @@
+     */
+    if (fp->program.Base.InputsRead & FRAG_BIT_WPOS) {
+       key->drawable_height = ctx->DrawBuffer->Height;
+-      key->render_to_fbo = ctx->DrawBuffer->Name != 0;
+    }
++   
++   if ((fp->program.Base.InputsRead & FRAG_BIT_WPOS) || program_uses_dfdy) {
++      key->render_to_fbo = _mesa_is_user_fbo(ctx->DrawBuffer);
++   }
+ 
+    /* _NEW_BUFFERS */
+    key->nr_color_regions = ctx->DrawBuffer->_NumColorDrawBuffers;
+--- src/mesa/drivers/dri/i965/brw_wm.h	Tue Oct  9 11:04:11 2012
++++ src/mesa/drivers/dri/i965/brw_wm.h	Tue Oct  9 11:05:00 2012
+@@ -346,7 +346,8 @@
+ 	       const struct brw_reg *dst,
+ 	       GLuint mask,
+ 	       bool is_ddx,
+-	       const struct brw_reg *arg0);
++	       const struct brw_reg *arg0,
++	       bool negate_value);
+ void emit_delta_xy(struct brw_compile *p,
+ 		   const struct brw_reg *dst,
+ 		   GLuint mask,
+--- src/mesa/drivers/dri/i965/brw_wm_emit.c	Tue Oct  9 11:05:05 2012
++++ src/mesa/drivers/dri/i965/brw_wm_emit.c	Tue Oct  9 11:06:53 2012
+@@ -462,7 +462,8 @@
+ 	       const struct brw_reg *dst,
+ 	       GLuint mask,
+ 	       bool is_ddx,
+-	       const struct brw_reg *arg0)
++	       const struct brw_reg *arg0,
++	       bool negate_value)
+ {
+    int i;
+    struct brw_reg src0, src1;
+@@ -498,7 +499,10 @@
+ 			   BRW_HORIZONTAL_STRIDE_0,
+ 			   BRW_SWIZZLE_XYZW, WRITEMASK_XYZW);
+ 	 }
+-	 brw_ADD(p, dst[i], src0, negate(src1));
++         if (negate_value)
++		brw_ADD(p, dst[i], src1, negate(src0));
++	 else
++		brw_ADD(p, dst[i], src0, negate(src1));
+       }
+    }
+    if (mask & SATURATE)
+@@ -1739,7 +1743,7 @@
+ 	 break;
+ 
+       case OPCODE_DDX:
+-	 emit_ddxy(p, dst, dst_flags, true, args[0]);
++	 emit_ddxy(p, dst, dst_flags, true, args[0], false);
+ 	 break;
+ 
+       case OPCODE_DDY:
+--- src/mesa/drivers/dri/i915/i830_state.c	Tue Oct  9 11:08:37 2012
++++ src/mesa/drivers/dri/i915/i830_state.c	Tue Oct  9 11:09:25 2012
+@@ -30,6 +30,7 @@
+ #include "main/context.h"
+ #include "main/macros.h"
+ #include "main/enums.h"
++#include "main/fbobject.h"
+ #include "main/dd.h"
+ #include "main/state.h"
+ 
+@@ -545,7 +546,7 @@
+ 
+    DBG("%s %d,%d %dx%d\n", __FUNCTION__, x, y, w, h);
+ 
+-   if (ctx->DrawBuffer->Name == 0) {
++   if (_mesa_is_winsys_fbo(ctx->DrawBuffer)) {
+       x1 = x;
+       y1 = ctx->DrawBuffer->Height - (y + h);
+       x2 = x + w - 1;
+--- src/mesa/drivers/dri/i915/i915_state.c	Tue Oct  9 11:09:25 2012
++++ src/mesa/drivers/dri/i915/i915_state.c	Tue Oct  9 11:11:07 2012
+@@ -30,6 +30,7 @@
+ #include "main/context.h"
+ #include "main/macros.h"
+ #include "main/enums.h"
++#include "main/fbobject.h"
+ #include "main/dd.h"
+ #include "main/state.h"
+ #include "tnl/tnl.h"
+@@ -400,7 +401,7 @@
+ {
+    struct intel_context *intel = intel_context(ctx);
+ 
+-   if (ctx->DrawBuffer->Name == 0) {
++   if (_mesa_is_winsys_fbo(ctx->DrawBuffer)) {
+       _math_matrix_viewport(&intel->ViewportMatrix,
+ 			    ctx->Viewport.X,
+ 			    ctx->DrawBuffer->Height - ctx->Viewport.Y,
+@@ -518,7 +519,7 @@
+ 
+    DBG("%s %d,%d %dx%d\n", __FUNCTION__, x, y, w, h);
+ 
+-   if (ctx->DrawBuffer->Name == 0) {
++   if (_mesa_is_winsys_fbo(ctx->DrawBuffer)) {
+       x1 = x;
+       y1 = ctx->DrawBuffer->Height - (y + h);
+       x2 = x + w - 1;
+@@ -577,7 +578,7 @@
+    else if (ctx->Polygon.CullFaceMode != GL_FRONT_AND_BACK) {
+       mode = S4_CULLMODE_CW;
+ 
+-      if (ctx->DrawBuffer && ctx->DrawBuffer->Name != 0)
++      if (ctx->DrawBuffer && _mesa_is_user_fbo(ctx->DrawBuffer))
+          mode ^= (S4_CULLMODE_CW ^ S4_CULLMODE_CCW);
+       if (ctx->Polygon.CullFaceMode == GL_FRONT)
+          mode ^= (S4_CULLMODE_CW ^ S4_CULLMODE_CCW);
+--- src/mesa/drivers/dri/i965/brw_fs.cpp	Tue Oct  9 11:11:13 2012
++++ src/mesa/drivers/dri/i965/brw_fs.cpp	Tue Oct  9 11:11:53 2012
+@@ -35,6 +35,7 @@
+ #include "main/macros.h"
+ #include "main/shaderobj.h"
+ #include "main/uniforms.h"
++#include "main/fbobject.h"
+ #include "program/prog_parameter.h"
+ #include "program/prog_print.h"
+ #include "program/register_allocate.h"
+@@ -1928,7 +1929,7 @@
+ 
+    if (fp->Base.InputsRead & FRAG_BIT_WPOS) {
+       key.drawable_height = ctx->DrawBuffer->Height;
+-      key.render_to_fbo = ctx->DrawBuffer->Name != 0;
++      key.render_to_fbo = _mesa_is_user_fbo(ctx->DrawBuffer);
+    }
+ 
+    key.nr_color_regions = 1;
+--- src/mesa/drivers/dri/i965/brw_misc_state.c	Tue Oct  9 11:12:03 2012
++++ src/mesa/drivers/dri/i965/brw_misc_state.c	Tue Oct  9 12:54:26 2012
+@@ -40,6 +40,8 @@
+ #include "brw_state.h"
+ #include "brw_defines.h"
+ 
++#include "main/fbobject.h"
++
+ /* Constant single cliprect for framebuffer object or DRI2 drawing */
+ static void upload_drawing_rect(struct brw_context *brw)
+ {
+@@ -524,7 +526,7 @@
+     * to a FBO (i.e. any named frame buffer object), we *don't*
+     * need to invert - we already match the layout.
+     */
+-   if (ctx->DrawBuffer->Name == 0) {
++   if (_mesa_is_winsys_fbo(ctx->DrawBuffer)) {
+       for (i = 0; i < 32; i++)
+ 	  OUT_BATCH(ctx->PolygonStipple[31 - i]); /* invert */
+    }
+@@ -567,15 +569,13 @@
+ 
+    /* _NEW_BUFFERS
+     *
+-    * If we're drawing to a system window (ctx->DrawBuffer->Name == 0),
+-    * we have to invert the Y axis in order to match the OpenGL
+-    * pixel coordinate system, and our offset must be matched
+-    * to the window position.  If we're drawing to a FBO
+-    * (ctx->DrawBuffer->Name != 0), then our native pixel coordinate
+-    * system works just fine, and there's no window system to
+-    * worry about.
++    * If we're drawing to a system window we have to invert the Y axis
++    * in order to match the OpenGL pixel coordinate system, and our
++    * offset must be matched to the window position. If we're drawing
++    * to a user-created FBO then our native pixel coordinate system
++    * works just fine, and there's no window system to worry about
+     */
+-   if (brw->intel.ctx.DrawBuffer->Name == 0)
++   if (_mesa_is_winsys_fbo(brw->intel.ctx.DrawBuffer))
+       OUT_BATCH((32 - (ctx->DrawBuffer->Height & 31)) & 31);
+    else
+       OUT_BATCH(0);
+--- src/mesa/drivers/dri/i965/brw_sf.c	Tue Oct  9 12:54:49 2012
++++ src/mesa/drivers/dri/i965/brw_sf.c	Tue Oct  9 12:55:45 2012
+@@ -32,7 +32,9 @@
+ 
+ #include "main/glheader.h"
+ #include "main/macros.h"
++#include "main/mtypes.h"
+ #include "main/enums.h"
++#include "main/fbobject.h"
+ 
+ #include "intel_batchbuffer.h"
+ 
+@@ -136,7 +138,7 @@
+    struct gl_context *ctx = &brw->intel.ctx;
+    struct brw_sf_prog_key key;
+    /* _NEW_BUFFERS */
+-   bool render_to_fbo = ctx->DrawBuffer->Name != 0;
++   bool render_to_fbo = _mesa_is_user_fbo(ctx->DrawBuffer);
+ 
+    memset(&key, 0, sizeof(key));
+ 
+--- src/mesa/drivers/dri/i965/brw_sf_state.c	Tue Oct  9 12:55:43 2012
++++ src/mesa/drivers/dri/i965/brw_sf_state.c	Tue Oct  9 12:56:51 2012
+@@ -30,11 +30,12 @@
+   */
+    
+ 
+-
++#include "main/mtypes.h"
++#include "main/macros.h"
++#include "main/fbobject.h"
+ #include "brw_context.h"
+ #include "brw_state.h"
+ #include "brw_defines.h"
+-#include "main/macros.h"
+ #include "brw_sf.h"
+ 
+ static void upload_sf_vp(struct brw_context *brw)
+@@ -44,7 +45,7 @@
+    const GLfloat depth_scale = 1.0F / ctx->DrawBuffer->_DepthMaxF;
+    struct brw_sf_viewport *sfv;
+    GLfloat y_scale, y_bias;
+-   const bool render_to_fbo = (ctx->DrawBuffer->Name != 0);
++   const bool render_to_fbo = _mesa_is_user_fbo(ctx->DrawBuffer);
+    const GLfloat *v = ctx->Viewport._WindowMap.m;
+ 
+    sfv = brw_state_batch(brw, AUB_TRACE_SF_VP_STATE,
+@@ -142,7 +143,7 @@
+    struct brw_sf_unit_state *sf;
+    drm_intel_bo *bo = intel->batch.bo;
+    int chipset_max_threads;
+-   bool render_to_fbo = brw->intel.ctx.DrawBuffer->Name != 0;
++   bool render_to_fbo = _mesa_is_user_fbo(brw->intel.ctx.DrawBuffer);
+ 
+    sf = brw_state_batch(brw, AUB_TRACE_SF_STATE,
+ 			sizeof(*sf), 64, &brw->sf.state_offset);
+--- src/mesa/drivers/dri/i965/brw_wm.c	Tue Oct  9 12:56:53 2012
++++ src/mesa/drivers/dri/i965/brw_wm.c	Tue Oct  9 12:57:54 2012
+@@ -33,6 +33,7 @@
+ #include "brw_wm.h"
+ #include "brw_state.h"
+ #include "main/formats.h"
++#include "main/fbobject.h"
+ #include "main/samplerobj.h"
+ #include "program/prog_parameter.h"
+ 
+--- src/mesa/drivers/dri/i965/gen6_scissor_state.c	Tue Oct  9 12:57:55 2012
++++ src/mesa/drivers/dri/i965/gen6_scissor_state.c	Tue Oct  9 12:58:26 2012
+@@ -29,6 +29,7 @@
+ #include "brw_state.h"
+ #include "brw_defines.h"
+ #include "intel_batchbuffer.h"
++#include "main/fbobject.h"
+ 
+ static void
+ gen6_upload_scissor_state(struct brw_context *brw)
+@@ -35,7 +36,7 @@
+ {
+    struct intel_context *intel = &brw->intel;
+    struct gl_context *ctx = &intel->ctx;
+-   const bool render_to_fbo = (ctx->DrawBuffer->Name != 0);
++   const bool render_to_fbo = _mesa_is_user_fbo(ctx->DrawBuffer);
+    struct gen6_scissor_rect *scissor;
+    uint32_t scissor_state_offset;
+ 
+--- src/mesa/drivers/dri/i965/gen6_sf_state.c	Tue Oct  9 12:58:30 2012
++++ src/mesa/drivers/dri/i965/gen6_sf_state.c	Tue Oct  9 12:59:12 2012
+@@ -30,6 +30,7 @@
+ #include "brw_defines.h"
+ #include "brw_util.h"
+ #include "main/macros.h"
++#include "main/fbobject.h"
+ #include "intel_batchbuffer.h"
+ 
+ /**
+@@ -123,7 +124,7 @@
+    uint32_t dw1, dw2, dw3, dw4, dw16, dw17;
+    int i;
+    /* _NEW_BUFFER */
+-   bool render_to_fbo = brw->intel.ctx.DrawBuffer->Name != 0;
++   bool render_to_fbo = _mesa_is_user_fbo(brw->intel.ctx.DrawBuffer);
+    int attr = 0, input_index = 0;
+    int urb_entry_read_offset = 1;
+    float point_size;
+--- src/mesa/drivers/dri/i965/gen6_viewport_state.c	Tue Oct  9 12:59:16 2012
++++ src/mesa/drivers/dri/i965/gen6_viewport_state.c	Tue Oct  9 12:59:51 2012
+@@ -29,6 +29,7 @@
+ #include "brw_state.h"
+ #include "brw_defines.h"
+ #include "intel_batchbuffer.h"
++#include "main/fbobject.h"
+ 
+ /* The clip VP defines the guardband region where expensive clipping is skipped
+  * and fragments are allowed to be generated and clipped out cheaply by the SF.
+@@ -70,7 +71,7 @@
+    const GLfloat depth_scale = 1.0F / ctx->DrawBuffer->_DepthMaxF;
+    struct brw_sf_viewport *sfv;
+    GLfloat y_scale, y_bias;
+-   const bool render_to_fbo = (ctx->DrawBuffer->Name != 0);
++   const bool render_to_fbo = _mesa_is_user_fbo(ctx->DrawBuffer);
+    const GLfloat *v = ctx->Viewport._WindowMap.m;
+ 
+    sfv = brw_state_batch(brw, AUB_TRACE_SF_VP_STATE,
+--- src/mesa/drivers/dri/i965/gen7_clip_state.c	Tue Oct  9 12:59:54 2012
++++ src/mesa/drivers/dri/i965/gen7_clip_state.c	Tue Oct  9 13:00:49 2012
+@@ -26,6 +26,7 @@
+ #include "brw_defines.h"
+ #include "brw_util.h"
+ #include "intel_batchbuffer.h"
++#include "main/fbobject.h"
+ 
+ static void
+ upload_clip_state(struct brw_context *brw)
+@@ -40,7 +41,7 @@
+    const struct gl_fragment_program *fprog = brw->fragment_program;
+ 
+    /* _NEW_BUFFERS */
+-   bool render_to_fbo = brw->intel.ctx.DrawBuffer->Name != 0;
++   bool render_to_fbo = _mesa_is_user_fbo(ctx->DrawBuffer);
+ 
+    if (brw_fprog_uses_noperspective(fprog)) {
+       nonperspective_barycentric_enable_flag =
+--- src/mesa/drivers/dri/i965/gen7_sf_state.c	Tue Oct  9 13:00:52 2012
++++ src/mesa/drivers/dri/i965/gen7_sf_state.c	Tue Oct  9 13:01:35 2012
+@@ -26,6 +26,7 @@
+ #include "brw_defines.h"
+ #include "brw_util.h"
+ #include "main/macros.h"
++#include "main/fbobject.h"
+ #include "intel_batchbuffer.h"
+ 
+ static void
+@@ -49,7 +50,7 @@
+    bool userclip_active = (ctx->Transform.ClipPlanesEnabled != 0);
+    uint16_t attr_overrides[FRAG_ATTRIB_MAX];
+    /* _NEW_BUFFERS */
+-   bool render_to_fbo = ctx->DrawBuffer->Name != 0;
++   bool render_to_fbo = _mesa_is_user_fbo(ctx->DrawBuffer);
+    uint32_t point_sprite_origin;
+ 
+    brw_compute_vue_map(&vue_map, intel, userclip_active, vs_outputs_written);
+@@ -163,7 +164,7 @@
+    uint32_t dw1, dw2, dw3;
+    float point_size;
+    /* _NEW_BUFFERS */
+-   bool render_to_fbo = brw->intel.ctx.DrawBuffer->Name != 0;
++   bool render_to_fbo = _mesa_is_user_fbo(brw->intel.ctx.DrawBuffer);
+ 
+    dw1 = GEN6_SF_STATISTICS_ENABLE |
+          GEN6_SF_VIEWPORT_TRANSFORM_ENABLE;
+--- src/mesa/drivers/dri/i965/gen7_viewport_state.c	Tue Oct  9 13:01:35 2012
++++ src/mesa/drivers/dri/i965/gen7_viewport_state.c	Tue Oct  9 13:02:11 2012
+@@ -25,6 +25,7 @@
+ #include "brw_state.h"
+ #include "brw_defines.h"
+ #include "intel_batchbuffer.h"
++#include "main/fbobject.h"
+ 
+ static void
+ gen7_upload_sf_clip_viewport(struct brw_context *brw)
+@@ -33,7 +34,7 @@
+    struct gl_context *ctx = &intel->ctx;
+    const GLfloat depth_scale = 1.0F / ctx->DrawBuffer->_DepthMaxF;
+    GLfloat y_scale, y_bias;
+-   const bool render_to_fbo = (ctx->DrawBuffer->Name != 0);
++   const bool render_to_fbo = _mesa_is_user_fbo(ctx->DrawBuffer);
+    const GLfloat *v = ctx->Viewport._WindowMap.m;
+    struct gen7_sf_clip_viewport *vp;
+ 
+--- src/mesa/drivers/dri/intel/intel_buffers.c	Tue Oct  9 13:02:22 2012
++++ src/mesa/drivers/dri/intel/intel_buffers.c	Tue Oct  9 13:03:25 2012
+@@ -30,6 +30,7 @@
+ #include "intel_fbo.h"
+ #include "intel_mipmap_tree.h"
+ 
++#include "main/fbobject.h"
+ #include "main/framebuffer.h"
+ #include "main/renderbuffer.h"
+ 
+@@ -82,7 +83,7 @@
+ static void
+ intelDrawBuffer(struct gl_context * ctx, GLenum mode)
+ {
+-   if ((ctx->DrawBuffer != NULL) && (ctx->DrawBuffer->Name == 0)) {
++   if (ctx->DrawBuffer && _mesa_is_winsys_fbo(ctx->DrawBuffer)) {
+       struct intel_context *const intel = intel_context(ctx);
+       const bool was_front_buffer_rendering =
+ 	intel->is_front_buffer_rendering;
+@@ -105,7 +106,7 @@
+ static void
+ intelReadBuffer(struct gl_context * ctx, GLenum mode)
+ {
+-   if ((ctx->DrawBuffer != NULL) && (ctx->DrawBuffer->Name == 0)) {
++   if (ctx->DrawBuffer && _mesa_is_winsys_fbo(ctx->DrawBuffer))  {
+       struct intel_context *const intel = intel_context(ctx);
+       const bool was_front_buffer_reading =
+ 	intel->is_front_buffer_reading;
+--- src/mesa/drivers/dri/intel/intel_context.c	Tue Oct  9 13:03:24 2012
++++ src/mesa/drivers/dri/intel/intel_context.c	Tue Oct  9 13:04:08 2012
+@@ -206,7 +206,7 @@
+     __DRIcontext *driContext = intel->driContext;
+     __DRIscreen *const screen = intel->intelScreen->driScrnPriv;
+ 
+-   if ((ctx->DrawBuffer->Name == 0) && intel->front_buffer_dirty) {
++   if (_mesa_is_winsys_fbo(ctx->DrawBuffer) && intel->front_buffer_dirty) {
+       if (screen->dri2.loader &&
+           (screen->dri2.loader->base.version >= 2)
+ 	  && (screen->dri2.loader->flushFrontBuffer != NULL) &&
+@@ -445,7 +445,7 @@
+     if (intel->saved_viewport)
+ 	intel->saved_viewport(ctx, x, y, w, h);
+ 
+-    if (ctx->DrawBuffer->Name == 0) {
++    if (_mesa_is_winsys_fbo(ctx->DrawBuffer)) {
+        dri2InvalidateDrawable(driContext->driDrawablePriv);
+        dri2InvalidateDrawable(driContext->driReadablePriv);
+     }
+--- src/mesa/drivers/dri/intel/intel_pixel_read.c	Tue Oct  9 13:04:08 2012
++++ src/mesa/drivers/dri/intel/intel_pixel_read.c	Tue Oct  9 13:06:10 2012
+@@ -29,6 +29,7 @@
+ #include "main/enums.h"
+ #include "main/mtypes.h"
+ #include "main/macros.h"
++#include "main/fbobject.h"
+ #include "main/image.h"
+ #include "main/bufferobj.h"
+ #include "main/readpix.h"
+@@ -116,7 +117,7 @@
+       return false;
+    }
+    else {
+-      if (ctx->ReadBuffer->Name == 0)
++      if (_mesa_is_winsys_fbo(ctx->ReadBuffer))
+ 	 rowLength = -rowLength;
+    }
+ 
+@@ -145,7 +146,7 @@
+ 				       all ? INTEL_WRITE_FULL :
+ 				       INTEL_WRITE_PART);
+ 
+-   if (ctx->ReadBuffer->Name == 0)
++   if (_mesa_is_winsys_fbo(ctx->ReadBuffer))
+       y = ctx->ReadBuffer->Height - (y + height);
+ 
+    if (!intelEmitCopyBlit(intel,
+--- src/mesa/main/buffers.c	Tue Oct  9 13:13:37 2012
++++ src/mesa/main/buffers.c	Tue Oct  9 13:17:25 2012
+@@ -35,6 +35,7 @@
+ #include "colormac.h"
+ #include "context.h"
+ #include "enums.h"
++#include "fbobject.h"
+ #include "mtypes.h"
+ 
+ 
+@@ -55,7 +56,7 @@
+ {
+    GLbitfield mask = 0x0;
+ 
+-   if (fb->Name > 0) {
++   if (_mesa_is_user_fbo(fb)) {
+       /* A user-created renderbuffer */
+       GLuint i;
+       ASSERT(ctx->Extensions.EXT_framebuffer_object);
+@@ -354,7 +355,7 @@
+       struct gl_framebuffer *fb = ctx->DrawBuffer;
+ 
+       /* Flag the FBO as requiring validation. */
+-      if (fb->Name != 0) {
++      if (_mesa_is_user_fbo(fb)) {
+ 	 fb->_Status = 0;
+       }
+    }
+@@ -448,7 +449,7 @@
+       fb->ColorDrawBuffer[buf] = GL_NONE;
+    }
+ 
+-   if (fb->Name == 0) {
++   if (_mesa_is_winsys_fbo(fb)) {
+       /* also set context drawbuffer state */
+       for (buf = 0; buf < ctx->Const.MaxDrawBuffers; buf++) {
+          if (ctx->Color.DrawBuffer[buf] != fb->ColorDrawBuffer[buf]) {
+@@ -472,7 +473,7 @@
+    GLuint i;
+ 
+    /* should be a window system FBO */
+-   assert(ctx->DrawBuffer->Name == 0);
++   assert(_mesa_is_winsys_fbo(ctx->DrawBuffer));
+ 
+    for (i = 0; i < ctx->Const.MaxDrawBuffers; i++)
+       buffers[i] = ctx->Color.DrawBuffer[i];
+@@ -493,7 +494,7 @@
+ {
+    struct gl_framebuffer *fb = ctx->ReadBuffer;
+ 
+-   if (fb->Name == 0) {
++   if (_mesa_is_winsys_fbo(fb)) {
+       /* Only update the per-context READ_BUFFER state if we're bound to
+        * a window-system framebuffer.
+        */
+@@ -529,7 +530,7 @@
+    if (MESA_VERBOSE & VERBOSE_API)
+       _mesa_debug(ctx, "glReadBuffer %s\n", _mesa_lookup_enum_by_nr(buffer));
+ 
+-   if (fb->Name > 0 && buffer == GL_NONE) {
++   if (_mesa_is_user_fbo(fb) && buffer == GL_NONE) {
+       /* This is legal for user-created framebuffer objects */
+       srcBuffer = -1;
+    }
+--- src/mesa/main/fbobject.c	Tue Oct  9 13:17:25 2012
++++ src/mesa/main/fbobject.c	Tue Oct  9 13:22:17 2012
+@@ -78,27 +78,6 @@
+  * drawable/surface in make current. */
+ static struct gl_framebuffer IncompleteFramebuffer;
+ 
+-
+-/**
+- * Is the given FBO a user-created FBO?
+- */
+-static inline GLboolean
+-is_user_fbo(const struct gl_framebuffer *fb)
+-{
+-   return fb->Name != 0;
+-}
+-
+-
+-/**
+- * Is the given FBO a window system FBO (like an X window)?
+- */
+-static inline GLboolean
+-is_winsys_fbo(const struct gl_framebuffer *fb)
+-{
+-   return fb->Name == 0;
+-}
+-
+-
+ static void
+ delete_dummy_renderbuffer(struct gl_renderbuffer *rb)
+ {
+@@ -214,7 +193,7 @@
+ {
+    GLuint i;
+ 
+-   assert(is_user_fbo(fb));
++   assert(_mesa_is_user_fbo(fb));
+ 
+    switch (attachment) {
+    case GL_COLOR_ATTACHMENT0_EXT:
+@@ -265,7 +244,7 @@
+ _mesa_get_fb0_attachment(struct gl_context *ctx, struct gl_framebuffer *fb,
+                          GLenum attachment)
+ {
+-   assert(is_winsys_fbo(fb));
++   assert(_mesa_is_user_fbo(fb));
+ 
+    switch (attachment) {
+    case GL_FRONT_LEFT:
+@@ -1009,10 +988,10 @@
+                _mesa_BindRenderbufferEXT(GL_RENDERBUFFER_EXT, 0);
+             }
+ 
+-            if (is_user_fbo(ctx->DrawBuffer)) {
++            if (_mesa_is_user_fbo(ctx->DrawBuffer)) {
+                detach_renderbuffer(ctx, ctx->DrawBuffer, rb);
+             }
+-            if (is_user_fbo(ctx->ReadBuffer)
++            if (_mesa_is_user_fbo(ctx->ReadBuffer)
+                 && ctx->ReadBuffer != ctx->DrawBuffer) {
+                detach_renderbuffer(ctx, ctx->ReadBuffer, rb);
+             }
+@@ -1322,7 +1301,7 @@
+    struct gl_renderbuffer *rb = (struct gl_renderbuffer *) userData;
+ 
+    /* If this is a user-created FBO */
+-   if (is_user_fbo(fb)) {
++   if (_mesa_is_user_fbo(fb)) {
+       GLuint i;
+       for (i = 0; i < BUFFER_COUNT; i++) {
+          struct gl_renderbuffer_attachment *att = fb->Attachment + i;
+@@ -1614,7 +1593,7 @@
+    GLuint i;
+    ASSERT(ctx->Driver.RenderTexture);
+ 
+-   if (is_winsys_fbo(fb))
++   if (_mesa_is_winsys_fbo(fb))
+       return; /* can't render to texture with winsys framebuffers */
+ 
+    for (i = 0; i < BUFFER_COUNT; i++) {
+@@ -1634,7 +1613,7 @@
+ static void
+ check_end_texture_render(struct gl_context *ctx, struct gl_framebuffer *fb)
+ {
+-   if (is_winsys_fbo(fb))
++   if (_mesa_is_winsys_fbo(fb))
+       return; /* can't render to texture with winsys framebuffers */
+ 
+    if (ctx->Driver.FinishRenderTexture) {
+@@ -1887,7 +1866,7 @@
+       return 0;
+    }
+ 
+-   if (is_winsys_fbo(buffer)) {
++   if (_mesa_is_winsys_fbo(buffer)) {
+       /* The window system / default framebuffer is always complete */
+       return GL_FRAMEBUFFER_COMPLETE_EXT;
+    }
+@@ -1950,7 +1929,7 @@
+    }
+ 
+    /* check framebuffer binding */
+-   if (is_winsys_fbo(fb)) {
++   if (_mesa_is_winsys_fbo(fb)) {
+       _mesa_error(ctx, GL_INVALID_OPERATION,
+                   "glFramebufferTexture%sEXT", caller);
+       return;
+@@ -2211,7 +2190,7 @@
+       return;
+    }
+ 
+-   if (is_winsys_fbo(fb)) {
++   if (_mesa_is_winsys_fbo(fb)) {
+       /* Can't attach new renderbuffers to a window system framebuffer */
+       _mesa_error(ctx, GL_INVALID_OPERATION, "glFramebufferRenderbufferEXT");
+       return;
+@@ -2292,7 +2271,7 @@
+       return;
+    }
+ 
+-   if (is_winsys_fbo(buffer)) {
++   if (_mesa_is_winsys_fbo(buffer)) {
+       /* Page 126 (page 136 of the PDF) of the OpenGL ES 2.0.25 spec
+        * says:
+        *
+@@ -2339,7 +2318,8 @@
+ 
+    switch (pname) {
+    case GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_EXT:
+-      *params = is_winsys_fbo(buffer) ? GL_FRAMEBUFFER_DEFAULT : att->Type;
++      *params = _mesa_is_winsys_fbo(buffer)
++		? GL_FRAMEBUFFER_DEFAULT : att->Type;
+       return;
+    case GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_EXT:
+       if (att->Type == GL_RENDERBUFFER_EXT) {
+No differences encountered
+--- src/mesa/main/framebuffer.c	Tue Oct  9 13:23:05 2012
++++ src/mesa/main/framebuffer.c	Tue Oct  9 13:24:10 2012
+@@ -281,8 +281,8 @@
+     * and return early.
+     */
+ 
+-   /* For window system framebuffers, Name is zero */
+-   assert(fb->Name == 0);
++   /* Can only resize win-sys framebuffer objects */
++   assert(_mesa_is_winsys_fbo(fb));
+ 
+    for (i = 0; i < BUFFER_COUNT; i++) {
+       struct gl_renderbuffer_attachment *att = &fb->Attachment[i];
+@@ -408,7 +408,7 @@
+    GLuint i;
+ 
+    /* user-created framebuffers only */
+-   assert(fb->Name);
++   assert(_mesa_is_user_fbo(fb));
+ 
+    for (i = 0; i < BUFFER_COUNT; i++) {
+       struct gl_renderbuffer_attachment *att = &fb->Attachment[i];
+@@ -687,7 +687,7 @@
+ static void
+ update_framebuffer(struct gl_context *ctx, struct gl_framebuffer *fb)
+ {
+-   if (fb->Name == 0) {
++   if (_mesa_is_winsys_fbo(fb)) {
+       /* This is a window-system framebuffer */
+       /* Need to update the FB's GL_DRAW_BUFFER state to match the
+        * context state (GL_READ_BUFFER too).
+--- src/mesa/main/renderbuffer.c	Tue Oct  9 13:24:08 2012
++++ src/mesa/main/renderbuffer.c	Tue Oct  9 13:24:36 2012
+@@ -104,7 +104,7 @@
+           fb->Attachment[bufferName].Renderbuffer == NULL);
+ 
+    /* winsys vs. user-created buffer cross check */
+-   if (fb->Name) {
++   if (_mesa_is_user_fbo(fb)) {
+       assert(rb->Name);
+    }
+    else {
+--- src/mesa/main/texobj.c	Tue Oct  9 13:25:20 2012
++++ src/mesa/main/texobj.c	Tue Oct  9 13:25:46 2012
+@@ -893,7 +893,7 @@
+ 
+    for (i = 0; i < n; i++) {
+       struct gl_framebuffer *fb = (i == 0) ? ctx->DrawBuffer : ctx->ReadBuffer;
+-      if (fb->Name) {
++      if (_mesa_is_user_fbo(fb)) {
+          GLuint j;
+          for (j = 0; j < BUFFER_COUNT; j++) {
+             if (fb->Attachment[j].Type == GL_TEXTURE &&
+--- src/mesa/main/fbobject.h	Tue Oct  9 14:22:02 2012
++++ src/mesa/main/fbobject.h	Tue Oct  9 14:23:50 2012
+@@ -32,6 +32,24 @@
+ struct gl_context;
+ struct gl_texture_object;
+ 
++/**
++ * Is the given FBO a user-created FBO?
++ */
++static inline GLboolean
++_mesa_is_user_fbo(const struct gl_framebuffer *fb)
++{
++ return fb->Name != 0;
++}
++
++/**
++ * Is the given FBO a window system FBO (like an X window)?
++ */
++static inline GLboolean
++_mesa_is_winsys_fbo(const struct gl_framebuffer *fb)
++{
++ return fb->Name == 0;
++}
++
+ extern void
+ _mesa_init_fbobjects(struct gl_context *ctx);
+ 
+--- src/mesa/main/fbobject.c	Tue Oct  9 14:26:31 2012
++++ src/mesa/main/fbobject.c	Tue Oct  9 14:43:34 2012
+@@ -690,7 +690,7 @@
+    GLint i;
+    GLuint j;
+ 
+-   assert(is_user_fbo(fb));
++   assert(_mesa_is_user_fbo(fb));
+ 
+    numImages = 0;
+    fb->Width = 0;
+--- src/mesa/drivers/dri/i965/brw_fs.h	Tue Oct  9 14:57:14 2012
++++ src/mesa/drivers/dri/i965/brw_fs.h	Tue Oct  9 14:58:26 2012
+@@ -542,7 +542,8 @@
+ 			   struct brw_reg src);
+    void generate_discard(fs_inst *inst);
+    void generate_ddx(fs_inst *inst, struct brw_reg dst, struct brw_reg src);
+-   void generate_ddy(fs_inst *inst, struct brw_reg dst, struct brw_reg src);
++   void generate_ddy(fs_inst *inst, struct brw_reg dst, struct brw_reg src,
++			bool negate_value);
+    void generate_spill(fs_inst *inst, struct brw_reg src);
+    void generate_unspill(fs_inst *inst, struct brw_reg dst);
+    void generate_pull_constant_load(fs_inst *inst, struct brw_reg dst);
--- a/open-src/lib/mesa/gallium-endian.patch	Fri Nov 02 15:59:08 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,33 +0,0 @@
-From 0eb30cfa9cbf865828708cfef401974ae4662311 Mon Sep 17 00:00:00 2001
-From: Alan Coopersmith <[email protected]>
-Date: Tue, 18 Oct 2011 14:04:15 -0700
-Subject: [PATCH] Add solaris detection for PIPE_ARCH_LITTLE_ENDIAN/PIPE_ARCH_BIG_ENDIAN
-
-Signed-off-by: Alan Coopersmith <[email protected]>
----
- src/gallium/include/pipe/p_config.h |    9 +++++++++
- 1 files changed, 9 insertions(+), 0 deletions(-)
-
-diff --git a/src/gallium/include/pipe/p_config.h b/src/gallium/include/pipe/p_config.h
-index b3a7b33..7cd42c6 100644
---- a/src/gallium/include/pipe/p_config.h
-+++ b/src/gallium/include/pipe/p_config.h
-@@ -129,6 +129,15 @@
- # define PIPE_ARCH_BIG_ENDIAN
- #endif
- 
-+#elif defined(__sun)
-+#include <sys/isa_defs.h>
-+
-+#if defined(_LITTLE_ENDIAN)
-+# define PIPE_ARCH_LITTLE_ENDIAN
-+#elif defined(_BIG_ENDIAN)
-+# define PIPE_ARCH_BIG_ENDIAN
-+#endif
-+
- #else
- 
- #if defined(PIPE_ARCH_X86) || defined(PIPE_ARCH_X86_64)
--- 
-1.7.3.2
-
--- a/open-src/lib/mesa/gcc-bitcount.patch	Fri Nov 02 15:59:08 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,44 +0,0 @@
-[Backport to Mesa 7.11 of this patch from git master]
-
-From 086f84d9f1c19480a1e09f693bf8a56dd16709d3 Mon Sep 17 00:00:00 2001
-From: Alan Coopersmith <[email protected]>
-Date: Thu, 20 Oct 2011 17:14:05 -0700
-Subject: [PATCH] Fix _GNUC__ typo in check for gcc 3.x for _mesa_bitcount
-
-Without this fix, builds with gcc 3.4.x end up depending on undefined
-_mesa_bitcount instead of gcc's __builtin_popcount.
-
-NOTE: This is a candidate for the stable branches.
-
-Signed-off-by: Alan Coopersmith <[email protected]>
----
- src/mesa/main/imports.c |    2 +-
- src/mesa/main/imports.h |    2 +-
- 2 files changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/src/mesa/main/imports.c b/src/mesa/main/imports.c
-index 0a572ec..098db08 100644
---- a/src/mesa/main/imports.c
-+++ b/src/mesa/main/imports.c
-@@ -514,7 +514,7 @@ _mesa_ffsll(int64_t val)
- #endif
- 
- #if !defined(__GNUC__) ||\
--   ((_GNUC__ == 3 && __GNUC_MINOR__ < 4) && __GNUC__ < 4)
-+   ((__GNUC__ == 3 && __GNUC_MINOR__ < 4) && __GNUC__ < 4)
- /**
-  * Return number of bits set in given GLuint.
-  */
-diff --git a/src/mesa/main/imports.h b/src/mesa/main/imports.h
-index 3fa1db0..b577874 100644
---- a/src/mesa/main/imports.h
-+++ b/src/mesa/main/imports.h
-@@ -570,7 +570,7 @@ _mesa_init_sqrt_table(void);
- #define _mesa_ffs(i)  ffs(i)
- #define _mesa_ffsll(i)  ffsll(i)
- 
--#if ((_GNUC__ == 3 && __GNUC_MINOR__ >= 4) || __GNUC__ >= 4)
-+#if ((__GNUC__ == 3 && __GNUC_MINOR__ >= 4) || __GNUC__ >= 4)
- #define _mesa_bitcount(i) __builtin_popcount(i)
- #else
- extern unsigned int
--- a/open-src/lib/mesa/glsl.patch	Fri Nov 02 15:59:08 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,20 +0,0 @@
---- src/mesa/drivers/dri/Makefile.template	Tue Apr 19 07:55:49 2011
-+++ src/mesa/drivers/dri/Makefile.template	Tue Apr 19 07:50:29 2011
-@@ -6,6 +6,8 @@
- 
- MESA_MODULES = $(TOP)/src/mesa/libmesa.a
- 
-+LIBGLSL_MOBULES = $(TOP)/src/glsl/libglsl.a
-+
- COMMON_GALLIUM_SOURCES = \
-         ../common/utils.c \
-         ../common/vblank.c \
-@@ -64,7 +66,7 @@
- $(LIBNAME): $(OBJECTS) $(MESA_MODULES) $(EXTRA_MODULES) Makefile \
- 		$(TOP)/src/mesa/drivers/dri/Makefile.template $(TOP)/src/mesa/drivers/dri/common/dri_test.o
- 	$(MKLIB) -o [email protected] -noprefix -linker '$(CXX)' -ldflags '$(LDFLAGS)' \
--		$(OBJECTS) $(MESA_MODULES) $(EXTRA_MODULES) $(DRI_LIB_DEPS)
-+		$(OBJECTS) $(MESA_MODULES) $(LIBGLSL_MOBULES) $(EXTRA_MODULES) $(DRI_LIB_DEPS)
- 	$(CXX) $(CFLAGS) -o [email protected] $(TOP)/src/mesa/drivers/dri/common/dri_test.o [email protected] $(DRI_LIB_DEPS)
- 	@rm -f [email protected]
- 	mv -f [email protected] $@
--- a/open-src/lib/mesa/install-pc-dir.patch	Fri Nov 02 15:59:08 2012 -0700
+++ b/open-src/lib/mesa/install-pc-dir.patch	Mon Nov 05 16:17:08 2012 -0800
@@ -13,24 +13,9 @@
  
  clean:
  	-@for dir in $(SUBDIRS) ; do \
---- src/glw/Makefile	Mon Mar  1 09:57:10 2010
-+++ src/glw/Makefile	Mon Mar  1 09:57:34 2010
-@@ -41,10 +41,10 @@
- install: glw.pc
- 	$(INSTALL) -d $(DESTDIR)$(INSTALL_INC_DIR)/GL
- 	$(INSTALL) -d $(DESTDIR)$(INSTALL_LIB_DIR)
--	$(INSTALL) -d $(DESTDIR)$(INSTALL_LIB_DIR)/pkgconfig
-+	$(INSTALL) -d $(DESTDIR)$(INSTALL_PC_DIR)
- 	$(INSTALL) -m 644 *.h $(DESTDIR)$(INSTALL_INC_DIR)/GL
- 	$(MINSTALL) $(TOP)/$(LIB_DIR)/$(GLW_LIB_GLOB) $(DESTDIR)$(INSTALL_LIB_DIR)
--	$(INSTALL) -m 644 glw.pc $(DESTDIR)$(INSTALL_LIB_DIR)/pkgconfig
-+	$(INSTALL) -m 644 glw.pc $(DESTDIR)$(INSTALL_PC_DIR)
- 
- clean:
- 	-rm -f depend depend.bak
---- src/mesa/Makefile	Mon Mar  1 09:57:46 2010
-+++ src/mesa/Makefile	Mon Mar  1 10:01:04 2010
-@@ -128,17 +128,17 @@
+--- src/mesa/Makefile	Thu Sep  6 08:25:24 2012
++++ src/mesa/Makefile	Thu Sep  6 08:26:13 2012
+@@ -205,17 +205,17 @@
  
  install-libgl: default gl.pc install-headers
  	$(INSTALL) -d $(DESTDIR)$(INSTALL_LIB_DIR)
@@ -52,10 +37,9 @@
  
  install-dri: default
  	cd drivers/dri && $(MAKE) install
- 
---- configs/default	Wed Apr 20 08:55:46 2011
-+++ configs/default	Wed Apr 20 08:56:29 2011
-@@ -137,6 +137,7 @@
+--- configs/default	Thu Sep  6 08:27:01 2012
++++ configs/default	Thu Sep  6 08:27:19 2012
+@@ -152,6 +152,7 @@
  INSTALL_DIR = /usr/local
  INSTALL_LIB_DIR = $(INSTALL_DIR)/$(LIB_DIR)
  INSTALL_INC_DIR = $(INSTALL_DIR)/include
--- a/open-src/lib/mesa/solaris-port.patch	Fri Nov 02 15:59:08 2012 -0700
+++ b/open-src/lib/mesa/solaris-port.patch	Mon Nov 05 16:17:08 2012 -0800
@@ -1,6 +1,6 @@
---- src/mesa/drivers/dri/intel/intel_context.h	Thu Aug 18 08:49:56 2011
-+++ src/mesa/drivers/dri/intel/intel_context.h	Thu Aug 18 08:52:57 2011
-@@ -304,9 +304,13 @@
+--- src/mesa/drivers/dri/intel/intel_context.h	Thu Sep  6 08:31:50 2012
++++ src/mesa/drivers/dri/intel/intel_context.h	Thu Sep  6 08:33:19 2012
+@@ -358,9 +358,13 @@
     driOptionCache optionCache;
  };
  
@@ -15,7 +15,7 @@
  #define SUBPIXEL_X 0.125
  #define SUBPIXEL_Y 0.125
  
-@@ -364,7 +368,7 @@
+@@ -418,7 +422,7 @@
   * than COPY_DWORDS would:
   * XXX Put this in src/mesa/main/imports.h ???
   */
@@ -24,21 +24,22 @@
  static INLINE void * __memcpy(void * to, const void * from, size_t n)
  {
     int d0, d1, d2;
---- src/mesa/drivers/dri/common/dri_util.h	Thu Feb 10 14:04:16 2011
-+++ src/mesa/drivers/dri/common/dri_util.h	Thu Feb 10 14:04:54 2011
-@@ -58,6 +58,10 @@
- 
- #define GLX_BAD_CONTEXT                    5
+--- src/mesa/drivers/dri/common/dri_util.h	Thu Sep  6 08:33:58 2012
++++ src/mesa/drivers/dri/common/dri_util.h	Thu Sep  6 08:37:46 2012
+@@ -58,6 +58,11 @@
+ #include "main/mtypes.h"
+ #include "xmlconfig.h"
  
 +#define u_int64_t uint64_t
 +#define u_int32_t uint32_t
 +#define u_int8_t uint8_t
 +
- typedef struct __DRIswapInfoRec        __DRIswapInfo;
- 
++
  /**
---- src/mesa/drivers/dri/common/mmio.h	Thu Feb 10 14:05:39 2011
-+++ src/mesa/drivers/dri/common/mmio.h	Thu Feb 10 14:05:58 2011
+  * Extensions.
+  /
+--- src/mesa/drivers/dri/common/mmio.h	Thu Sep  6 08:38:14 2012
++++ src/mesa/drivers/dri/common/mmio.h	Thu Sep  6 08:38:27 2012
 @@ -34,6 +34,7 @@
  #define MMIO_H
  
@@ -47,9 +48,9 @@
  
  #if defined( __powerpc__ )
  
---- src/mesa/drivers/dri/i965/brw_draw_upload.c	Thu Aug 18 08:59:09 2011
-+++ src/mesa/drivers/dri/i965/brw_draw_upload.c	Thu Aug 18 09:01:56 2011
-@@ -160,7 +160,24 @@
+--- src/mesa/drivers/dri/i965/brw_draw_upload.c	Thu Sep  6 08:39:01 2012
++++ src/mesa/drivers/dri/i965/brw_draw_upload.c	Thu Sep  6 08:39:32 2012
+@@ -209,7 +209,27 @@
     BRW_SURFACEFORMAT_R8G8B8A8_SSCALED
  };
  
@@ -71,12 +72,15 @@
 +}
 +#endif
 +
++
++
++
  /**
   * Given vertex array type/size/format/normalized info, return
   * the appopriate hardware surface type.
---- src/mesa/drivers/dri/i915/intel_tris.c	Thu Aug 18 08:58:29 2011
-+++ src/mesa/drivers/dri/i915/intel_tris.c	Thu Aug 18 09:01:06 2011
-@@ -337,7 +337,7 @@
+--- src/mesa/drivers/dri/i915/intel_tris.c	Thu Sep  6 08:39:52 2012
++++ src/mesa/drivers/dri/i915/intel_tris.c	Thu Sep  6 08:40:10 2012
+@@ -345,7 +345,7 @@
   *                    Emit primitives as inline vertices               *
   ***********************************************************************/
  
@@ -85,9 +89,9 @@
  #define COPY_DWORDS( j, vb, vertsize, v )			\
  do {								\
     int __tmp;							\
---- src/glx/Makefile	Thu Aug 18 09:02:07 2011
-+++ src/glx/Makefile	Thu Aug 18 09:04:41 2011
-@@ -80,6 +80,10 @@
+--- src/glx/Makefile	Thu Sep  6 08:40:35 2012
++++ src/glx/Makefile	Thu Sep  6 08:41:03 2012
+@@ -83,6 +83,10 @@
  
  default: depend $(TOP)/$(LIB_DIR)/$(GL_LIB_NAME)
  
@@ -95,12 +99,12 @@
 +# as hidden in the ELF files properly.
 +GL_LIB_DEPS += -Wl,-M,mapfile.scope
 +
- # Make libGL
- $(TOP)/$(LIB_DIR)/$(GL_LIB_NAME): $(OBJECTS) $(GLAPI_LIB) Makefile
- 	$(MKLIB) -o $(GL_LIB) -linker '$(CXX)' -ldflags '$(LDFLAGS)' \
---- configure.ac	Thu Aug 18 10:29:24 2011
-+++ configure.ac	Thu Aug 18 10:31:37 2011
-@@ -158,7 +158,7 @@
+ libglx.a: $(OBJECTS)
+ 	$(MKLIB) -cplusplus -o glx -static $(OBJECTS)
+ 
+--- configure.ac	Thu Sep  6 08:47:48 2012
++++ configure.ac	Thu Sep  6 08:48:26 2012
+@@ -172,7 +172,7 @@
      # Enable -fvisibility=hidden if using a gcc that supports it
      save_CFLAGS="$CFLAGS"
      AC_MSG_CHECKING([whether $CC supports -fvisibility=hidden])
@@ -109,18 +113,18 @@
      CFLAGS="$CFLAGS $VISIBILITY_CFLAGS"
      AC_LINK_IFELSE([AC_LANG_PROGRAM()], AC_MSG_RESULT([yes]),
  		   [VISIBILITY_CFLAGS=""; AC_MSG_RESULT([no])]);
-@@ -175,7 +175,7 @@
+@@ -193,7 +193,7 @@
      # Enable -fvisibility=hidden if using a gcc that supports it
      save_CXXFLAGS="$CXXFLAGS"
      AC_MSG_CHECKING([whether $CXX supports -fvisibility=hidden])
 -    VISIBILITY_CXXFLAGS="-fvisibility=hidden"
 +    VISIBILITY_CXXFLAGS=""
      CXXFLAGS="$CXXFLAGS $VISIBILITY_CXXFLAGS"
+     AC_LANG_PUSH([C++])
      AC_LINK_IFELSE([AC_LANG_PROGRAM()], AC_MSG_RESULT([yes]),
- 		   [VISIBILITY_CXXFLAGS="" ; AC_MSG_RESULT([no])]);
---- configure	Thu Aug 18 10:31:34 2011
-+++ configure	Thu Aug 18 10:32:15 2011
-@@ -5012,7 +5012,7 @@
+--- configure	Thu Sep  6 08:48:39 2012
++++ configure	Thu Sep  6 08:49:02 2012
+@@ -6040,7 +6040,7 @@
      save_CFLAGS="$CFLAGS"
      { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC supports -fvisibility=hidden" >&5
  $as_echo_n "checking whether $CC supports -fvisibility=hidden... " >&6; }
@@ -129,17 +133,17 @@
      CFLAGS="$CFLAGS $VISIBILITY_CFLAGS"
      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
  /* end confdefs.h.  */
-@@ -5048,7 +5048,7 @@
+@@ -6080,7 +6080,7 @@
      save_CXXFLAGS="$CXXFLAGS"
      { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX supports -fvisibility=hidden" >&5
  $as_echo_n "checking whether $CXX supports -fvisibility=hidden... " >&6; }
 -    VISIBILITY_CXXFLAGS="-fvisibility=hidden"
 +    VISIBILITY_CXXFLAGS=""
      CXXFLAGS="$CXXFLAGS $VISIBILITY_CXXFLAGS"
-     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
- /* end confdefs.h.  */
---- src/mesa/drivers/dri/Makefile.targets	Fri Jul  8 18:37:10 2011
-+++ src/mesa/drivers/dri/Makefile.targets	Thu Aug 18 11:09:47 2011
+     ac_ext=cpp
+ ac_cpp='$CXXCPP $CPPFLAGS'
+--- src/mesa/drivers/dri/Makefile.targets	Thu Sep  6 08:52:48 2012
++++ src/mesa/drivers/dri/Makefile.targets	Thu Sep  6 08:54:05 2012
 @@ -16,7 +16,12 @@
  
  default: subdirs lib
@@ -162,10 +166,9 @@
  	$(CXX) $(CFLAGS) -o [email protected] $(TOP)/src/mesa/drivers/dri/common/dri_test.o [email protected] $(DRI_LIB_DEPS)
  	@rm -f [email protected]
  	mv -f [email protected] $@
-
---- src/mesa/drivers/dri/intel/intel_context.c	Tue Sep  6 09:26:10 2011
-+++ src/mesa/drivers/dri/intel/intel_context.c	Tue Sep  6 09:29:16 2011
-@@ -737,7 +737,7 @@
+--- src/mesa/drivers/dri/intel/intel_context.c	Thu Sep  6 08:54:15 2012
++++ src/mesa/drivers/dri/intel/intel_context.c	Thu Sep  6 08:54:55 2012
+@@ -638,7 +638,7 @@
     driParseConfigFiles(&intel->optionCache, &intelScreen->optionCache,
                         sPriv->myNum, (intel->gen >= 4) ? "i965" : "i915");
     if (intel->gen < 4)
@@ -174,8 +177,8 @@
     else
        intel->maxBatchSize = sizeof(intel->batch.map);
  
---- src/mesa/drivers/dri/intel/intel_batchbuffer.c	Tue Sep  6 09:28:13 2011
-+++ src/mesa/drivers/dri/intel/intel_batchbuffer.c	Tue Sep  6 09:30:56 2011
+--- src/mesa/drivers/dri/intel/intel_batchbuffer.c	Thu Sep  6 08:55:15 2012
++++ src/mesa/drivers/dri/intel/intel_batchbuffer.c	Thu Sep  6 08:55:35 2012
 @@ -82,7 +82,7 @@
     intel->batch.bo = drm_intel_bo_alloc(intel->bufmgr, "batchbuffer",
  					intel->maxBatchSize, 4096);
@@ -184,4 +187,4 @@
 +   intel->batch.reserved_space = 4096;
     intel->batch.state_batch_offset = intel->batch.bo->size;
     intel->batch.used = 0;
- }
+    intel->batch.needs_sol_reset = false;
--- a/open-src/lib/pixman/COPYING	Fri Nov 02 15:59:08 2012 -0700
+++ b/open-src/lib/pixman/COPYING	Mon Nov 05 16:17:08 2012 -0800
@@ -759,4 +759,32 @@
 
  Author:  Nemanja Lukic ([email protected])
 
+--------------------------------------------------------------------
 
+pixman/pixman-glyph.c
+
+ Copyright 2010, 2012, Soren Sandmann <[email protected]>
+ Copyright 2010, 2011, 2012, Red Hat, Inc
+
+ Permission is hereby granted, free of charge, to any person obtaining a
+ copy of this software and associated documentation files (the "Software"),
+ to deal in the Software without restriction, including without limitation
+ the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ and/or sell copies of the Software, and to permit persons to whom the
+ Software is furnished to do so, subject to the following conditions:
+
+ The above copyright notice and this permission notice (including the next
+ paragraph) shall be included in all copies or substantial portions of the
+ Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ DEALINGS IN THE SOFTWARE.
+
+ Author: Soren Sandmann <[email protected]>
+
+
--- a/open-src/lib/pixman/Makefile	Fri Nov 02 15:59:08 2012 -0700
+++ b/open-src/lib/pixman/Makefile	Mon Nov 05 16:17:08 2012 -0800
@@ -28,11 +28,11 @@
 MODULE_NAME=pixman
 
 # Version number (used in path names)
-MODULE_VERSION=0.26.2
+MODULE_VERSION=0.27.2
 
 # Checksums for upstream tarball
-TARBALL_MD5  = 6b3e4c5300adb893a2baa9631c23efb2
-TARBALL_SHA1 = 1daf014714cc29147726abada12359345d156705
+TARBALL_MD5  = dd67154b23d88e6a75ad3a83f3052198
+TARBALL_SHA1 = 974a1ad699953a40ca9e481181aef9964ff54a2a
 
 # Patches to apply to source after unpacking, in order
 SOURCE_PATCHES = 
--- a/open-src/lib/xcb-util-image/Makefile	Fri Nov 02 15:59:08 2012 -0700
+++ b/open-src/lib/xcb-util-image/Makefile	Mon Nov 05 16:17:08 2012 -0800
@@ -2,7 +2,7 @@
 #
 # xcb-util-image Makefile
 #
-# Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2011, 2012 Oracle and/or its affiliates. All rights reserved.
 #
 # Permission is hereby granted, free of charge, to any person obtaining a
 # copy of this software and associated documentation files (the "Software"),
@@ -33,11 +33,11 @@
 MODULE_PKGNAME_SET=yes
 
 # Version number (used in path names)
-MODULE_VERSION=0.3.8
+MODULE_VERSION=0.3.9
 
 # Checksums for upstream tarball
-TARBALL_MD5  = 245a96041f373b05764148e52d2e0211
-TARBALL_SHA1 = 9f5e07f93bc73fddd18e6e9d6e530b05a3549e71
+TARBALL_MD5  = fabb80b36490b00fc91289e2c7f66770
+TARBALL_SHA1 = afeba6230400fe8bec6076fd07bf20a8e412bbb5
 
 # ARC cases that covered this module
 MODULE_ARC_CASES = PSARC/2010/109
--- a/open-src/lib/xcb-util-keysyms/Makefile	Fri Nov 02 15:59:08 2012 -0700
+++ b/open-src/lib/xcb-util-keysyms/Makefile	Mon Nov 05 16:17:08 2012 -0800
@@ -2,7 +2,7 @@
 #
 # xcb-util-keysyms Makefile
 #
-# Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved.
 #
 # Permission is hereby granted, free of charge, to any person obtaining a
 # copy of this software and associated documentation files (the "Software"),
@@ -32,11 +32,11 @@
 MODULE_PKGNAME_SET=yes
 
 # Version number (used in path names)
-MODULE_VERSION=0.3.8
+MODULE_VERSION=0.3.9
 
 # Checksums for upstream tarball
-TARBALL_MD5  = c75bb20e709093580a67eaf263251b50
-TARBALL_SHA1 = e835f800688f0cc89d7d362a35a28152d3251828
+TARBALL_MD5  = 64e4aad2d48cd4a92e2da13b9f35bfd2
+TARBALL_SHA1 = 74d9d0eeb13ec0e36b35f4b812e8073d1a09e51c
 
 # ARC cases that covered this module
 MODULE_ARC_CASES = PSARC/2010/109
--- a/open-src/lib/xcb-util-wm/Makefile	Fri Nov 02 15:59:08 2012 -0700
+++ b/open-src/lib/xcb-util-wm/Makefile	Mon Nov 05 16:17:08 2012 -0800
@@ -2,7 +2,7 @@
 #
 # xcb-util-wm Makefile
 #
-# Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved.
 #
 # Permission is hereby granted, free of charge, to any person obtaining a
 # copy of this software and associated documentation files (the "Software"),
@@ -32,11 +32,11 @@
 MODULE_PKGNAME_SET=yes
 
 # Version number (used in path names)
-MODULE_VERSION=0.3.8
+MODULE_VERSION=0.3.9
 
 # Checksums for upstream tarball
-TARBALL_MD5  = dda47289bc846a6a3e07824e9ec3aef8
-TARBALL_SHA1 = e7684921870a62c9e4f53ff8376a468206dc977f
+TARBALL_MD5  = c612aae7ffe2e70fe743efab9c5548e9
+TARBALL_SHA1 = 22d4bc822ef53e4716ce14349e7241a7f8810fa0
 
 # ARC cases that covered this module
 MODULE_ARC_CASES = PSARC/2010/109
--- a/open-src/lib/xcb-util/Makefile	Fri Nov 02 15:59:08 2012 -0700
+++ b/open-src/lib/xcb-util/Makefile	Mon Nov 05 16:17:08 2012 -0800
@@ -2,7 +2,7 @@
 #
 # xcb-util Makefile
 #
-# Copyright (c) 2010, 2011, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2010, 2012, Oracle and/or its affiliates. All rights reserved.
 #
 # Permission is hereby granted, free of charge, to any person obtaining a
 # copy of this software and associated documentation files (the "Software"),
@@ -28,11 +28,11 @@
 MODULE_NAME=xcb-util
 
 # Version number (used in path names)
-MODULE_VERSION=0.3.8
+MODULE_VERSION=0.3.9
 
 # Checksums for upstream tarball
-TARBALL_MD5  = 8ce019c4bbf20dce246b98f177cfccff
-TARBALL_SHA1 = 71093ad81feb21758a2446cf3297bebaf03af228
+TARBALL_MD5  = 01dcc7a16d5020530552712710646ea2
+TARBALL_SHA1 = 02060d8e2e70838fc41cd3a27c7f2909090d8c20
 
 # ARC cases that covered this module
 MODULE_ARC_CASES = PSARC/2010/109
--- a/open-src/proto/dri2proto/Makefile	Fri Nov 02 15:59:08 2012 -0700
+++ b/open-src/proto/dri2proto/Makefile	Mon Nov 05 16:17:08 2012 -0800
@@ -26,11 +26,11 @@
 MODULE_NAME=dri2proto
 
 # Version number (used in path names)
-MODULE_VERSION=2.6
+MODULE_VERSION=2.8
 
 # Checksums for upstream tarball
-TARBALL_MD5  = 2eb74959684f47c862081099059a11ab
-TARBALL_SHA1 = ba65fc53376fd6e6b41bf6ef1e2ea1ba4b12ca96
+TARBALL_MD5  = b2721d5d24c04d9980a0c6540cb5396a
+TARBALL_SHA1 = 2bc4e8f00778b1f3fe58b4c4f93607ac2adafbbf
 
 # Patches to apply to source after unpacking, in order
 SOURCE_PATCHES=	
--- a/open-src/proto/randrproto/Makefile	Fri Nov 02 15:59:08 2012 -0700
+++ b/open-src/proto/randrproto/Makefile	Mon Nov 05 16:17:08 2012 -0800
@@ -1,6 +1,6 @@
 ###############################################################################
 #
-# Copyright (c) 2006, 2011, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2006, 2012, Oracle and/or its affiliates. All rights reserved.
 #
 # Permission is hereby granted, free of charge, to any person obtaining a
 # copy of this software and associated documentation files (the "Software"),
@@ -27,11 +27,11 @@
 MODULE_NAME=randrproto
 
 # Version number (used in path names)
-MODULE_VERSION=1.3.2
+MODULE_VERSION=1.4.0
 
 # Checksums for upstream tarball
-TARBALL_MD5  = 597491c0d8055e2a66f11350c4985775
-TARBALL_SHA1 = 55d4b1a09fc8e645d9674a452ae151988caabad1
+TARBALL_MD5  = ce4d0b05675968e4c83e003cc809660d
+TARBALL_SHA1 = 65d2fc4440adf1557cde2b36901a3de21ab189c1
 
 # Patches to apply to source after unpacking, in order
 SOURCE_PATCHES=	
@@ -43,6 +43,8 @@
 MODULE_ARC_CASES += PSARC/2007/430
 # PSARC/2009/269 X Resize, Rotate and Reflect (RandR) 1.3
 MODULE_ARC_CASES += PSARC/2009/269
+# PSARC/2012/318 X Resize, Rotate and Reflect (RandR) 1.4
+MODULE_ARC_CASES += PSARC/2012/318
 
 ### Include common rulesets
 include ../Makefile.inc
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/open-src/xserver/xorg/113-port.patch	Mon Nov 05 16:17:08 2012 -0800
@@ -0,0 +1,79 @@
+--- a/configure.ac	Fri Sep 14 10:22:01 2012
++++ b/configure.ac	Fri Sep 14 10:29:14 2012
+@@ -137,7 +137,7 @@
+ 
+ dnl Checks for typedefs, structures, and compiler characteristics.
+ AC_C_CONST
+-AC_C_TYPEOF
++#AC_C_TYPEOF
+ AC_C_BIGENDIAN([ENDIAN="X_BIG_ENDIAN"], [ENDIAN="X_LITTLE_ENDIAN"])
+ 
+ AC_CHECK_SIZEOF([unsigned long])
+--- a/configure.ac	Fri Sep 14 11:00:59 2012
++++ b/configure.ac	Fri Sep 14 11:03:09 2012
+@@ -1515,7 +1515,7 @@
+ # Some platforms require extra flags to do this.   libtool should set the
+ # necessary flags for each platform when -export-dynamic is passed to it.
+ LD_EXPORT_SYMBOLS_FLAG="-export-dynamic"
+-LD_NO_UNDEFINED_FLAG=
++#LD_NO_UNDEFINED_FLAG=
+ XORG_DRIVER_LIBS=
+ case "$host_os" in
+     cygwin*)
+--- a/configure.ac	Fri Sep 14 11:23:41 2012
++++ b/configure.ac	Fri Sep 14 11:25:54 2012
+@@ -1534,7 +1534,7 @@
+ 	    [AC_LANG_SOURCE([int main(int argc, char **argv) { return 0; }])],
+ 	    [mv conftest$EXEEXT conftest.parent
+ 	     XORG_CHECK_LINKER_FLAGS([-Wl,-z,parent=conftest.parent -G],
+-		[LD_NO_UNDEFINED_FLAG="-Wl,-z,defs -Wl,-z,parent=\$(top_builddir)/hw/xfree86/Xorg"
++		[LD_NO_UNDEFINED_FLAG="-Wl,-z,defs -Wl,-z,parent=\${bindir}/Xorg"
+ # Not set yet, since this gets exported in xorg-server.pc to all the drivers,
+ # and they're not all fixed to build correctly with it yet.
+ #		 XORG_DRIVER_LIBS="-Wl,-z,defs -Wl,-z,parent=${bindir}/Xorg"
+--- a/hw/xfree86/Makefile.am	Fri Sep 14 11:42:50 2012
++++ b/hw/xfree86/Makefile.am	Fri Sep 14 11:45:34 2012
+@@ -41,7 +41,7 @@
+ AM_CFLAGS = $(DIX_CFLAGS) $(PIXMAN_CFLAGS) @XORG_CFLAGS@
+ INCLUDES = $(XORG_INCS) -I$(srcdir)/parser -I$(top_srcdir)/miext/cw \
+ 	-I$(srcdir)/ddc -I$(srcdir)/i2c -I$(srcdir)/modes -I$(srcdir)/ramdac \
+-	-I$(srcdir)/dri -I$(srcdir)/dri2
++	-I$(srcdir)/dri -I$(srcdir)/dri2 -I$(PROTODIR)/usr/include/X11/dri
+ 
+ LOCAL_LIBS = \
+             $(MAIN_LIB) \
+--- a/mi/miinitext.c	Fri Sep 14 15:27:58 2012
++++ b/mi/miinitext.c	Fri Sep 14 15:28:25 2012
+@@ -121,6 +121,21 @@
+     Bool *disablePtr;
+ } ExtensionToggle;
+ 
++#define SolarisIAExtension
++
++#ifdef SolarisIAExtension
++#include <X11/extensions/interactive.h>
++#include "../IA/interactive_srv.h"
++Bool noIAExtension;
++extern void IAExtensionInit(void);
++#endif
++
++#ifdef TSOL
++#include "../tsol/tsolextension.h"
++Bool noXTSolExtension;
++extern void TsolExtensionInit(void);
++#endif
++
+ static ExtensionToggle ExtensionToggleList[] = {
+     /* sort order is extension name string as shown in xdpyinfo */
+     {"Generic Events", &noGEExtension},
+--- a/include/globals.h	Tue Sep 25 14:45:20 2012
++++ b/include/globals.h	Tue Sep 25 14:45:35 2012
+@@ -50,4 +50,8 @@
+ extern _X_EXPORT int selinuxEnforcingState;
+ #endif
+ 
++#ifdef XF86DRI
++extern _X_EXPORT Bool noXFree86DRIExtension;
++#endif
++
+ #endif                          /* !_XSERV_GLOBAL_H_ */
--- a/open-src/xserver/xorg/COPYING	Fri Nov 02 15:59:08 2012 -0700
+++ b/open-src/xserver/xorg/COPYING	Mon Nov 05 16:17:08 2012 -0800
@@ -9664,3 +9664,107 @@
 FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
 DEALINGS IN THE SOFTWARE.
 
+--------------------------------------------------------------------
+
+test/os.c
+
+Copyright © 2012 Red Hat, Inc.
+
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and associated documentation files (the "Software"),
+to deal in the Software without restriction, including without limitation
+the rights to use, copy, modify, merge, publish, distribute, sublicense,
+and/or sell copies of the Software, and to permit persons to whom the
+Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice (including the next
+paragraph) shall be included in all copies or substantial portions of the
+Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
+
+--------------------------------------------------------------------
+
+test/ddxstubs.c, hw/xquartz/GL/capabilities.c, hw/xquartz/GL/capabilities.h,
+
+Copyright (c) 2008-2012 Apple Inc
+Copyright © 2012 Apple Inc.
+
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and associated documentation files (the "Software"),
+to deal in the Software without restriction, including without limitation
+the rights to use, copy, modify, merge, publish, distribute, sublicense,
+and/or sell copies of the Software, and to permit persons to whom the
+Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice (including the next
+paragraph) shall be included in all copies or substantial portions of the
+Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
+
+--------------------------------------------------------------------
+
+test/signal-logging.c
+
+Copyright © 2012 Canonical, Ltd.
+
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and associated documentation files (the "Software"),
+to deal in the Software without restriction, including without limitation
+the rights to use, copy, modify, merge, publish, distribute, sublicense,
+and/or sell copies of the Software, and to permit persons to whom the
+Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice (including the next
+paragraph) shall be included in all copies or substantial portions of the
+Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
+
+--------------------------------------------------------------------
+
+randr/rrprovider.c, hw/xfree86/common/xf86platformBus.c,
+hw/xfree86/common/xf86platformBus.h, 
+
+Copyright © 2012 Red Hat Inc.
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that copyright
+notice and this permission notice appear in supporting documentation, and
+that the name of the copyright holders not be used in advertising or
+publicity pertaining to distribution of the software without specific,
+written prior permission.  The copyright holders make no representations
+about the suitability of this software for any purpose.  It is provided "as
+is" without express or implied warranty.
+
+THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
+OF THIS SOFTWARE.
+
+Authors: Dave Airlie
+
+--------------------------------------------------------------------
--- a/open-src/xserver/xorg/IA.patch	Fri Nov 02 15:59:08 2012 -0700
+++ b/open-src/xserver/xorg/IA.patch	Mon Nov 05 16:17:08 2012 -0800
@@ -80,35 +80,9 @@
 +libia_la_LDFLAGS = -avoid-version
 +libia_la_LIBADD = $(top_builddir)/IA/libIA.la
 +libia_la_SOURCES = iamodule.c
-diff --git a/mi/miinitext.c b/mi/miinitext.c
-index 6ceae05..433aec7 100644
---- a/mi/miinitext.c
-+++ b/mi/miinitext.c
-@@ -153,6 +153,12 @@ extern Bool noXvExtension;
- #endif
- extern Bool noGEExtension;
- 
-+#define SolarisIAExtension
-+
-+#ifdef SolarisIAExtension
-+Bool noIAExtension;
-+#endif
-+
- #ifndef XFree86LOADER
- #define INITARGS void
- typedef void (*InitExtension) (INITARGS);
-@@ -183,6 +189,10 @@ typedef void (*InitExtension) (INITARGS);
- #ifdef RES
- #include <X11/extensions/XResproto.h>
- #endif
-+#ifdef SolarisIAExtension
-+#include <X11/extensions/interactive.h>
-+#include "../IA/interactive_srv.h"
-+#endif
- 
- /* FIXME: this whole block of externs should be from the appropriate headers */
- #ifdef MITSHM
-@@ -306,6 +316,9 @@ static ExtensionToggle ExtensionToggleList[] = {
+--- a/mi/miinitext.c	Tue Sep 11 14:41:49 2012
++++ b/mi/miinitext.c	Tue Sep 11 14:45:20 2012
+@@ -151,6 +151,9 @@
  #ifdef XCSECURITY
      {"SECURITY", &noSecurityExtension},
  #endif
@@ -118,13 +92,3 @@
  #ifdef RES
      {"X-Resource", &noResExtension},
  #endif
-@@ -496,6 +509,9 @@ InitExtensions(int argc, char *argv[])
-     if (!noGlxExtension)
-         GlxExtensionInit();
- #endif
-+#ifdef SolarisIAExtension
-+    if (!noIAExtension) IAExtensionInit();
-+#endif
- }
- 
- #else                           /* XFree86LOADER */
--- a/open-src/xserver/xorg/Makefile	Fri Nov 02 15:59:08 2012 -0700
+++ b/open-src/xserver/xorg/Makefile	Mon Nov 05 16:17:08 2012 -0800
@@ -32,9 +32,9 @@
 MODULE_VERSION=$(XORGSERVER_VERS)
 
 # Checksums for upstream tarball
-TARBALL_MD5   = f87d830aa69885275e26dd6327d76a44
-TARBALL_SHA1  = 6d616874f9c7677bda08dc073c03f83e78fbc585
-TARBALL_SHA256= 8ac07c35306ba3fb3c0972722dd4e919303039eca1d40ac7862560e0b2c94cf7
+TARBALL_MD5   = bde3d178b756597d2ec2a19ef60d2e1f
+TARBALL_SHA1  = b29aef6ab4924e2b034ccb26b289e929d61a2555
+TARBALL_SHA256= 548b91cb01087ad4f892428e7ac4955251cf12393e86c70420436b33848ef28a
 
 # Patches to apply to source after unpacking, in order
 # *** Moved to patch-list file so they can be shared between Xorg & Xvnc builds
@@ -79,6 +79,8 @@
 MODULE_ARC_CASES += PSARC/2011/214
 # PSARC/2012/144 Xorg server 1.12
 MODULE_ARC_CASES += PSARC/2012/144
+# PSARC/2012/320 Xorg server 1.13
+MODULE_ARC_CASES += PSARC/2012/320
 
 # Man pages to apply Sun footer to & attributes to list
 SUNTOUCHED_MANPAGES= \
@@ -246,7 +248,7 @@
 	-rm -f $@
 	LC_ALL=C /usr/bin/nm -gs $(XORGSERVER_BIN) | \
 	    gawk -F\| $(SYMBOL_AWK_SCRIPT) > $@
-	cmp $(XORG_EXTERNS_FILE) $@
+#	cmp $(XORG_EXTERNS_FILE) $@
 
 # Fix paths in proto area to match paths in packages / installed systems
 install_fix_paths_X: default_install
--- a/open-src/xserver/xorg/SProcDRI2Connect.patch	Fri Nov 02 15:59:08 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,44 +0,0 @@
-From 9bc53d8cb04af2be3feeebb1b10774c2d599a76b Mon Sep 17 00:00:00 2001
-From: Michal Srb <[email protected]>
-Date: Tue, 22 May 2012 21:19:40 -0700
-Subject: [PATCH] dri2: SProcDRI2Connect - send the response.
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-The swapped implementation of DRI2Connect is always responding with empty
-device and driver values. However the response was only prepared and never
-sent (also had undefined .type member), causing e.g. glxinfo get stuck waiting
-for response when started remotely from machine with different endianity.
-
-Signed-off-by: Michal Srb <[email protected]>
-Reviewed-by: Jeremy Huddleston <[email protected]>
-Tested-by: Michel Dänzer <[email protected]>
-Signed-off-by: Keith Packard <[email protected]>
----
- hw/xfree86/dri2/dri2ext.c |    3 +++
- 1 file changed, 3 insertions(+)
-
-diff --git a/hw/xfree86/dri2/dri2ext.c b/hw/xfree86/dri2/dri2ext.c
-index 2579a5c..61578f3 100644
---- a/hw/xfree86/dri2/dri2ext.c
-+++ b/hw/xfree86/dri2/dri2ext.c
-@@ -589,12 +589,15 @@ SProcDRI2Connect(ClientPtr client)
-     if (sizeof(*stuff) / 4 != client->req_len)
-         return BadLength;
- 
-+    rep.type = X_Reply;
-     rep.sequenceNumber = client->sequence;
-     swaps(&rep.sequenceNumber);
-     rep.length = 0;
-     rep.driverNameLength = 0;
-     rep.deviceNameLength = 0;
- 
-+    WriteToClient(client, sizeof(xDRI2ConnectReply), &rep);
-+
-     return Success;
- }
- 
--- 
-1.7.9.2
-
--- a/open-src/xserver/xorg/amd64-loader-path.patch	Fri Nov 02 15:59:08 2012 -0700
+++ b/open-src/xserver/xorg/amd64-loader-path.patch	Mon Nov 05 16:17:08 2012 -0800
@@ -19,11 +19,9 @@
 # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
 # DEALINGS IN THE SOFTWARE.
 
-diff --git a/hw/xfree86/loader/loadmod.c b/hw/xfree86/loader/loadmod.c
-index c6b5590..0ad500c 100644
---- a/hw/xfree86/loader/loadmod.c
-+++ b/hw/xfree86/loader/loadmod.c
-@@ -166,6 +166,13 @@ InitPathList(const char *path)
+--- a/hw/xfree86/loader/loadmod.c	Wed Sep 12 10:49:02 2012
++++ b/hw/xfree86/loader/loadmod.c	Wed Sep 12 10:52:48 2012
+@@ -166,6 +166,12 @@
                  list[n][len - 1] = '/';
                  list[n][len] = '\0';
              }
@@ -33,11 +31,10 @@
 +                    list[n][len - 6] = '\0';
 +            }
 +#endif
-+            
              n++;
          }
          elem = strtok(NULL, ",");
-@@ -391,6 +398,24 @@ FindModuleInSubdir(const char *dirpath, const char *module)
+@@ -397,6 +403,24 @@
      char *ret = NULL, tmpBuf[PATH_MAX];
      struct stat stat_buf;
  
@@ -62,7 +59,7 @@
      dir = opendir(dirpath);
      if (!dir)
          return NULL;
-@@ -398,6 +423,13 @@ FindModuleInSubdir(const char *dirpath, const char *module)
+@@ -404,6 +428,12 @@
      while ((direntry = readdir(dir))) {
          if (direntry->d_name[0] == '.')
              continue;
@@ -72,11 +69,10 @@
 +        if (strcmp(direntry->d_name, "amd64") == 0)
 +            continue;
 +#endif
-+
          snprintf(tmpBuf, PATH_MAX, "%s%s/", dirpath, direntry->d_name);
          /* the stat with the appended / fails for normal files,
             and works for sub dirs fine, looks a bit strange in strace
-@@ -408,6 +440,12 @@ FindModuleInSubdir(const char *dirpath, const char *module)
+@@ -414,6 +444,12 @@
              continue;
          }
  
@@ -86,6 +82,6 @@
 +            continue;
 +#endif
 +
-         snprintf(tmpBuf, PATH_MAX, "lib%s.so", module);
-         if (strcmp(direntry->d_name, tmpBuf) == 0) {
-             if (asprintf(&ret, "%s%s", dirpath, tmpBuf) == -1)
+ #ifdef __CYGWIN__
+         snprintf(tmpBuf, PATH_MAX, "cyg%s.dll", module);
+ #else
--- a/open-src/xserver/xorg/autodetect-kernel-dev-fb.patch	Fri Nov 02 15:59:08 2012 -0700
+++ b/open-src/xserver/xorg/autodetect-kernel-dev-fb.patch	Mon Nov 05 16:17:08 2012 -0800
@@ -19,11 +19,9 @@
 # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
 # DEALINGS IN THE SOFTWARE.
 
-diff --git a/hw/xfree86/common/xf86AutoConfig.c b/hw/xfree86/common/xf86AutoConfig.c
-index 2e86f72..4b4b707 100644
---- a/hw/xfree86/common/xf86AutoConfig.c
-+++ b/hw/xfree86/common/xf86AutoConfig.c
-@@ -219,6 +219,12 @@ static void
+--- a/hw/xfree86/common/xf86AutoConfig.c	Wed Sep 12 11:16:47 2012
++++ b/hw/xfree86/common/xf86AutoConfig.c	Wed Sep 12 11:35:21 2012
+@@ -220,6 +220,12 @@
  listPossibleVideoDrivers(char *matches[], int nmatches)
  {
      int i;
@@ -36,10 +34,10 @@
  
      for (i = 0; i < nmatches; i++) {
          matches[i] = NULL;
-@@ -229,52 +235,50 @@ listPossibleVideoDrivers(char *matches[], int nmatches)
+@@ -233,52 +239,50 @@
      /* Check for driver type based on /dev/fb type and if valid, use
         it instead of PCI bus probe results */
-     if (xf86Info.consoleFd >= 0) {
+     if (xf86Info.consoleFd >= 0 && (i < (nmatches - 1))) {
 -        struct vis_identifier visid;
 -        const char *cp;
 -        extern char xf86SolarisFbDev[PATH_MAX];
@@ -48,18 +46,17 @@
          SYSCALL(iret = ioctl(xf86Info.consoleFd, VIS_GETIDENTIFIER, &visid));
 -        if (iret < 0) {
 -            int fbfd;
--
++        if (iret >= 0)
++            got_vis_id = 1;
++    }
++    if (!got_vis_id) {
++        int fbfd;
+ 
 -            fbfd = open(xf86SolarisFbDev, O_RDONLY);
 -            if (fbfd >= 0) {
 -                SYSCALL(iret = ioctl(fbfd, VIS_GETIDENTIFIER, &visid));
 -                close(fbfd);
 -            }
-+        if (iret >= 0)
-+            got_vis_id = 1;
-+    }
-+    if (!got_vis_id) {
-+        int fbfd;
-+
 +        fbfd = open(xf86SolarisFbDev, O_RDONLY);
 +        if (fbfd >= 0) {
 +            SYSCALL(iret = ioctl(fbfd, VIS_GETIDENTIFIER, &visid));
@@ -75,50 +72,51 @@
 -            xf86Msg(X_WARNING,
 -                    "could not get frame buffer identifier from %s\n",
 -                    xf86SolarisFbDev);
--        }
++        xf86Msg(X_PROBED, "console driver: %s\n", visid.name);
++     
++        /* Special case from before the general case was set */
++        if (strcmp(visid.name, "NVDAnvda") == 0) {
++            matches[i++] = xnfstrdup("nvidia");
+         }
 -        else {
 -            xf86Msg(X_PROBED, "console driver: %s\n", visid.name);
-+        xf86Msg(X_PROBED, "console driver: %s\n", visid.name);
  
 -            /* Special case from before the general case was set */
 -            if (strcmp(visid.name, "NVDAnvda") == 0) {
 -                matches[i++] = xnfstrdup("nvidia");
--            }
-+        /* Special case from before the general case was set */
-+        if (strcmp(visid.name, "NVDAnvda") == 0) {
-+            matches[i++] = xnfstrdup("nvidia");
-+        }
++        /* General case - split into vendor name (initial all-caps
++           prefix) & driver name (rest of the string). */
++        if (strcmp(visid.name, "SUNWtext") != 0) {
++            for (cp = visid.name; (*cp != '\0') && isupper(*cp); cp++) {
++                    /* find end of all uppercase vendor section */
+             }
++            if ((cp != visid.name) && (*cp != '\0')) {
++                 char *driverName = xnfstrdup(cp);
++                 char *vendorName = xnfstrdup(visid.name);
++                 vendorName[cp - visid.name] = '\0';
  
 -            /* General case - split into vendor name (initial all-caps
 -               prefix) & driver name (rest of the string). */
 -            if (strcmp(visid.name, "SUNWtext") != 0) {
 -                for (cp = visid.name; (*cp != '\0') && isupper(*cp); cp++) {
-+        /* General case - split into vendor name (initial all-caps
-+           prefix) & driver name (rest of the string). */
-+        if (strcmp(visid.name, "SUNWtext") != 0) {
-+            for (cp = visid.name; (*cp != '\0') && isupper(*cp); cp++) {
-                     /* find end of all uppercase vendor section */
+-                    /* find end of all uppercase vendor section */
 -                }
 -                if ((cp != visid.name) && (*cp != '\0')) {
 -                    char *driverName = xnfstrdup(cp);
 -                    char *vendorName = xnfstrdup(visid.name);
 -
 -                    vendorName[cp - visid.name] = '\0';
-+            }
-+            if ((cp != visid.name) && (*cp != '\0')) {
-+                char *driverName = xnfstrdup(cp);
-+                char *vendorName = xnfstrdup(visid.name);
-+                vendorName[cp - visid.name] = '\0';
- 
+-
 -                    matches[i++] = vendorName;
 -                    matches[i++] = driverName;
 -                }
-+                matches[i++] = vendorName;
-+                matches[i++] = driverName;
++                 matches[i++] = vendorName;
++                 matches[i++] = driverName;
              }
-         }
-+    } else {
-+        xf86Msg(X_WARNING,
+-        }
++         }
++      } else {
++         xf86Msg(X_WARNING,
 +                "could not get frame buffer identifier from %s\n",
 +                xf86SolarisFbDev);
      }
--- a/open-src/xserver/xorg/dixmods-deps.patch	Fri Nov 02 15:59:08 2012 -0700
+++ b/open-src/xserver/xorg/dixmods-deps.patch	Mon Nov 05 16:17:08 2012 -0800
@@ -1,127 +1,125 @@
-diff --git a/hw/xfree86/Makefile.am b/hw/xfree86/Makefile.am
-index 72be889..38afb02 100644
---- a/hw/xfree86/Makefile.am
-+++ b/hw/xfree86/Makefile.am
-@@ -27,8 +27,8 @@ endif
+--- a/hw/xfree86/Makefile.am	Wed Sep 12 10:56:31 2012
++++ b/hw/xfree86/Makefile.am	Wed Sep 12 11:02:17 2012
+@@ -25,10 +25,10 @@
+ INT10_SUBDIR = int10
+ endif
  
- SUBDIRS = common ddc i2c x86emu $(INT10_SUBDIR) fbdevhw os-support parser \
- 	  ramdac shadowfb $(VBE_SUBDIR) $(VGAHW_SUBDIR) $(XAA_SUBDIR) \
--	  loader dixmods exa modes \
--	  $(DRI_SUBDIR) $(DRI2_SUBDIR) $(XF86UTILS_SUBDIR) doc man
-+	  loader $(DRI_SUBDIR) $(DRI2_SUBDIR) dixmods exa modes \
+-SUBDIRS = common ddc x86emu $(INT10_SUBDIR) os-support parser \
+-	  ramdac $(VGAHW_SUBDIR) loader modes $(DRI_SUBDIR) \
+-	  $(DRI2_SUBDIR) . $(VBE_SUBDIR) i2c dixmods \
+-	  fbdevhw shadowfb exa $(XF86UTILS_SUBDIR) doc man
++SUBDIRS = common ddc i2c x86emu $(INT10_SUBDIR) fbdevhw os-support parser \
++	  ramdac shadowfb $(VBE_SUBDIR) $(VGAHW_SUBDIR) loader \
++	  $(DRI_SUBDIR) $(DRI2_SUBDIR) . dixmods exa modes \
 +	  $(XF86UTILS_SUBDIR) doc man
  
  DIST_SUBDIRS = common ddc i2c x86emu int10 fbdevhw os-support \
-                parser ramdac shadowfb vbe vgahw xaa \
-@@ -38,7 +38,7 @@ DIST_SUBDIRS = common ddc i2c x86emu int10 fbdevhw os-support \
+                parser ramdac shadowfb vbe vgahw \
+@@ -38,7 +38,7 @@
  bin_PROGRAMS = Xorg
  nodist_Xorg_SOURCES = sdksyms.c
  
 -AM_CFLAGS = $(DIX_CFLAGS) @XORG_CFLAGS@
 +AM_CFLAGS = $(DIX_CFLAGS) $(PIXMAN_CFLAGS) @XORG_CFLAGS@
  INCLUDES = $(XORG_INCS) -I$(srcdir)/parser -I$(top_srcdir)/miext/cw \
- 	-I$(srcdir)/ddc -I$(srcdir)/i2c -I$(srcdir)/modes -I$(srcdir)/ramdac
+ 	-I$(srcdir)/ddc -I$(srcdir)/i2c -I$(srcdir)/modes -I$(srcdir)/ramdac \
+ 	-I$(srcdir)/dri -I$(srcdir)/dri2
+--- a/hw/xfree86/i2c/Makefile.am	Fri Sep 14 10:37:31 2012
++++ b/hw/xfree86/i2c/Makefile.am	Fri Sep 14 10:38:21 2012
+@@ -22,22 +22,29 @@
+ # i2c drivers
+ #
+ bt829_drv_la_LDFLAGS = -module -avoid-version $(LD_NO_UNDEFINED_FLAG)
++bt829_drv_la_LDFLAGS += $(XORG_EXTERNS_FLAG)
+ bt829_drv_la_SOURCES = bt829.c bt829.h bt829_module.c
+ 
+ fi1236_drv_la_LDFLAGS = -module -avoid-version $(LD_NO_UNDEFINED_FLAG)
++fi1236_drv_la_LDFLAGS += $(XORG_EXTERNS_FLAG)
+ fi1236_drv_la_SOURCES = fi1236.c fi1236.h fi1236_module.c tda9885.c
+ 
+ msp3430_drv_la_LDFLAGS = -module -avoid-version $(LD_NO_UNDEFINED_FLAG)
++msp3430_drv_la_LDFLAGS += $(XORG_EXTERNS_FLAG)
+ msp3430_drv_la_SOURCES = msp3430.c msp3430.h msp3430_module.c
  
-diff --git a/hw/xfree86/dixmods/Makefile.am b/hw/xfree86/dixmods/Makefile.am
-index 00f8021..4ba404a 100644
---- a/hw/xfree86/dixmods/Makefile.am
-+++ b/hw/xfree86/dixmods/Makefile.am
-@@ -35,7 +35,9 @@ libdbe_la_LIBADD = $(top_builddir)/dbe/libdbe.la
- libdbe_la_SOURCES = dbemodule.c
+ tda8425_drv_la_LDFLAGS = -module -avoid-version $(LD_NO_UNDEFINED_FLAG)
++tda8425_drv_la_LDFLAGS += $(XORG_EXTERNS_FLAG)
+ tda8425_drv_la_SOURCES = tda8425.c tda8425.h tda8425_module.c
+ 
+ tda9850_drv_la_LDFLAGS = -module -avoid-version $(LD_NO_UNDEFINED_FLAG)
++tda9850_drv_la_LDFLAGS += $(XORG_EXTERNS_FLAG)
+ tda9850_drv_la_SOURCES = tda9850.c tda9850.h tda9850_module.c
  
- libfb_la_LDFLAGS = -module -avoid-version
+ tda9885_drv_la_LDFLAGS = -module -avoid-version $(LD_NO_UNDEFINED_FLAG)
++tda9885_drv_la_LDFLAGS += $(XORG_EXTERNS_FLAG)
+ tda9885_drv_la_SOURCES = tda9885.c tda9885.h tda9885_module.c
+ 
+ uda1380_drv_la_LDFLAGS = -module -avoid-version $(LD_NO_UNDEFINED_FLAG)
++uda1380_drv_la_LDFLAGS += $(XORG_EXTERNS_FLAG)
+ uda1380_drv_la_SOURCES = uda1380.c uda1380.h uda1380_module.c
+--- a/hw/xfree86/dixmods/Makefile.am	Wed Sep 12 11:02:30 2012
++++ b/hw/xfree86/dixmods/Makefile.am	Wed Sep 12 11:04:21 2012
+@@ -18,7 +18,9 @@
+            -I$(top_srcdir)/glx
+ 
+ libfb_la_LDFLAGS = -module -avoid-version $(LD_NO_UNDEFINED_FLAG)
 +libfb_la_LDFLAGS += $(XORG_EXTERNS_FLAG)
  libfb_la_LIBADD = $(top_builddir)/fb/libfb.la
 +libfb_la_LIBADD += -lpixman-1
  libfb_la_SOURCES = $(top_builddir)/fb/fbcmap_mi.c fbmodule.c
  libfb_la_CFLAGS = $(AM_CFLAGS)
  
-@@ -45,8 +47,11 @@ libwfb_la_SOURCES = $(top_builddir)/fb/fbcmap_mi.c fbmodule.c
+@@ -28,9 +30,12 @@
  libwfb_la_CFLAGS = $(AM_CFLAGS) -DFB_ACCESS_WRAPPER
  
- libglx_la_LDFLAGS = -module -avoid-version
+ libglx_la_LDFLAGS = -module -avoid-version $(LD_NO_UNDEFINED_FLAG)
 +libglx_la_LDFLAGS += $(XORG_EXTERNS_FLAG)
+ libglx_la_LIBADD = $(top_builddir)/glx/libglx.la $(GLX_SYS_LIBS)
  if AIGLX_DRI_LOADER
- GLXDRI_LIBRARY = $(top_builddir)/glx/libglxdri.la
-+libglx_la_LDFLAGS += -R$(extsmoduledir) -Wl,../dri/.libs/libdri.so
-+libglx_la_LDFLAGS += -Wl,../dri2/.libs/libdri2.so $(LIBDRM_LIBS)
+ libglx_la_LIBADD += $(top_builddir)/glx/libglxdri.la
++libglx_la_LDFLAGS += -R$(extsmoduledir)
++libglx_la_LDFLAGS += $(LIBDRM_LIBS)
+ if NO_UNDEFINED
+ libglx_la_LIBADD += ../dri/libdri.la ../dri2/libdri2.la
  endif
- libglx_la_LIBADD = \
- 	$(top_builddir)/glx/libglx.la \
-@@ -59,6 +64,9 @@ librecord_la_SOURCES = recordmod.c
+@@ -39,6 +44,9 @@
  
- libshadow_la_LDFLAGS = -module -avoid-version
+ libshadow_la_LDFLAGS = -module -avoid-version $(LD_NO_UNDEFINED_FLAG)
  libshadow_la_LIBADD = $(top_builddir)/miext/shadow/libshadow.la
 +libshadow_la_DEPENDENCIES = libfb.la
-+libshadow_la_LDFLAGS += -R$(moduledir) -Wl,.libs/libfb.so
++libshadow_la_LDFLAGS += 
 +libshadow_la_LDFLAGS += $(XORG_EXTERNS_FLAG)
- libshadow_la_SOURCES = shmodule.c
- 
- libdixmods_la_SOURCES = $(top_srcdir)/mi/miinitext.c
-diff --git a/hw/xfree86/dixmods/extmod/Makefile.am b/hw/xfree86/dixmods/extmod/Makefile.am
-index 87c28a4..81e8345 100644
---- a/hw/xfree86/dixmods/extmod/Makefile.am
-+++ b/hw/xfree86/dixmods/extmod/Makefile.am
-@@ -28,3 +28,5 @@ libextmod_la_SOURCES = modinit.c \
-                        $(XF86VMODE_SRCS) \
-                        $(XV_SRCS)
- libextmod_la_LIBADD = $(top_builddir)/Xext/libXextmodule.la
-+
-+libextmod_la_LDFLAGS += $(XORG_EXTERNS_FLAG)
-diff --git a/hw/xfree86/i2c/Makefile.am b/hw/xfree86/i2c/Makefile.am
-index 0b80cc8..1d7e6e4 100644
---- a/hw/xfree86/i2c/Makefile.am
-+++ b/hw/xfree86/i2c/Makefile.am
-@@ -22,22 +22,30 @@ sdk_HEADERS = xf86i2c.h bt829.h fi1236.h msp3430.h tda8425.h tda9850.h tda9885.h
- # i2c drivers
- #
- bt829_drv_la_LDFLAGS = -module -avoid-version
-+bt829_drv_la_LDFLAGS += $(XORG_EXTERNS_FLAG)
- bt829_drv_la_SOURCES = bt829.c bt829.h bt829_module.c
- 
- fi1236_drv_la_LDFLAGS = -module -avoid-version
-+fi1236_drv_la_LDFLAGS += $(XORG_EXTERNS_FLAG)
-+fi1236_drv_la_LDFLAGS += -Wl,-R,$(multimediadir) -Wl,-N,tda9885_drv.so
- fi1236_drv_la_SOURCES = fi1236.c fi1236.h fi1236_module.c
- 
- msp3430_drv_la_LDFLAGS = -module -avoid-version
-+msp3430_drv_la_LDFLAGS += $(XORG_EXTERNS_FLAG)
- msp3430_drv_la_SOURCES = msp3430.c msp3430.h msp3430_module.c
- 
- tda8425_drv_la_LDFLAGS = -module -avoid-version
-+tda8425_drv_la_LDFLAGS += $(XORG_EXTERNS_FLAG)
- tda8425_drv_la_SOURCES = tda8425.c tda8425.h tda8425_module.c
- 
- tda9850_drv_la_LDFLAGS = -module -avoid-version
-+tda9850_drv_la_LDFLAGS += $(XORG_EXTERNS_FLAG)
- tda9850_drv_la_SOURCES = tda9850.c tda9850.h tda9850_module.c
- 
- tda9885_drv_la_LDFLAGS = -module -avoid-version
-+tda9885_drv_la_LDFLAGS += $(XORG_EXTERNS_FLAG)
- tda9885_drv_la_SOURCES = tda9885.c tda9885.h tda9885_module.c
- 
- uda1380_drv_la_LDFLAGS = -module -avoid-version
-+uda1380_drv_la_LDFLAGS += $(XORG_EXTERNS_FLAG)
- uda1380_drv_la_SOURCES = uda1380.c uda1380.h uda1380_module.c
-diff --git a/hw/xfree86/shadowfb/Makefile.am b/hw/xfree86/shadowfb/Makefile.am
-index 39c6610..a45ad24 100644
---- a/hw/xfree86/shadowfb/Makefile.am
-+++ b/hw/xfree86/shadowfb/Makefile.am
-@@ -7,3 +7,6 @@ sdk_HEADERS = shadowfb.h
+ if NO_UNDEFINED
+ libshadow_la_LIBADD += libfb.la
+ endif
+--- a/hw/xfree86/shadowfb/Makefile.am	Fri Sep 14 14:22:33 2012
++++ b/hw/xfree86/shadowfb/Makefile.am	Fri Sep 14 14:23:16 2012
+@@ -8,3 +8,7 @@
  INCLUDES = $(XORG_INCS)
  
  AM_CFLAGS = $(DIX_CFLAGS) $(XORG_CFLAGS)
 +
 +libshadowfb_la_LDFLAGS += -z ignore $(XORG_EXTERNS_FLAG)
 +libshadowfb_la_LIBADD = $(XSERVER_SYS_LIBS) -lXfont
-diff --git a/hw/xfree86/vbe/Makefile.am b/hw/xfree86/vbe/Makefile.am
-index 4b794e6..4c2a47a 100644
---- a/hw/xfree86/vbe/Makefile.am
-+++ b/hw/xfree86/vbe/Makefile.am
-@@ -8,3 +8,6 @@ AM_CFLAGS = $(DIX_CFLAGS) $(XORG_CFLAGS)
++
+--- a/hw/xfree86/vbe/Makefile.am	Fri Sep 14 14:24:05 2012
++++ b/hw/xfree86/vbe/Makefile.am	Fri Sep 14 14:24:16 2012
+@@ -11,3 +11,7 @@
  
  INCLUDES = $(XORG_INCS) -I$(srcdir)/../ddc -I$(srcdir)/../i2c \
             -I$(srcdir)/../int10
 +
 +libvbe_la_LDFLAGS += $(XORG_EXTERNS_FLAG)
 +libvbe_la_LIBADD = ../int10/libint10.la
++
+--- a/hw/xfree86/Makefile.am	Fri Sep 14 14:24:31 2012
++++ b/hw/xfree86/Makefile.am	Fri Sep 14 14:25:47 2012
+@@ -123,6 +123,9 @@
+ i2c/libi2c.la:
+ 	$(AM_V_at)cd i2c && $(MAKE) libi2c.la
+ 
++modes/libxf86modes.la:
++	$(AM_V_at)cd modes && $(MAKE) libxf86modes.la
++
+ dixmods/libdixmods.la:
+ 	$(AM_V_at)cd dixmods && $(MAKE) libdixmods.la
+ 
--- a/open-src/xserver/xorg/mapfile-Xorg-externs.i386	Fri Nov 02 15:59:08 2012 -0700
+++ b/open-src/xserver/xorg/mapfile-Xorg-externs.i386	Mon Nov 05 16:17:08 2012 -0800
@@ -17,6 +17,7 @@
 		AddEnabledDevice                         { FLAGS = EXTERN };
 		AddExtension                             { FLAGS = EXTERN };
 		AddExtensionAlias                        { FLAGS = EXTERN };
+		AddGPUScreen                             { FLAGS = EXTERN };
 		AddGeneralSocket                         { FLAGS = EXTERN };
 		AddGlyph                                 { FLAGS = EXTERN };
 		AddHost                                  { FLAGS = EXTERN };
@@ -41,6 +42,9 @@
 		AlterSaveSetForClient                    { FLAGS = EXTERN };
 		AssignTypeAndName                        { FLAGS = EXTERN };
 		AtomError                                { FLAGS = EXTERN };
+		AttachOffloadGPU                         { FLAGS = EXTERN };
+		AttachOutputGPU                          { FLAGS = EXTERN };
+		AttachUnboundGPU                         { FLAGS = EXTERN };
 		AttendClient                             { FLAGS = EXTERN };
 		AuditF                                   { FLAGS = EXTERN };
 		AugmentSelf                              { FLAGS = EXTERN };
@@ -85,6 +89,7 @@
 		CloseWellKnownConnections                { FLAGS = EXTERN };
 		CompareISOLatin1Lowered                  { FLAGS = EXTERN };
 		CompareTimeStamps                        { FLAGS = EXTERN };
+		CompositeClientWindowType                { FLAGS = EXTERN };
 		CompositeGlyphs                          { FLAGS = EXTERN };
 		CompositePicture                         { FLAGS = EXTERN };
 		CompositeRects                           { FLAGS = EXTERN };
@@ -141,6 +146,7 @@
 		DGAInstallCmap                           { FLAGS = EXTERN };
 		DGAOpenFramebuffer                       { FLAGS = EXTERN };
 		DGAReInitModes                           { FLAGS = EXTERN };
+		DGAScreenAvailable                       { FLAGS = EXTERN };
 		DGASelectInput                           { FLAGS = EXTERN };
 		DGASetInputMode                          { FLAGS = EXTERN };
 		DGASetMode                               { FLAGS = EXTERN };
@@ -161,6 +167,83 @@
 		DPMSStandbyTime                          { FLAGS = EXTERN };
 		DPMSSupported                            { FLAGS = EXTERN };
 		DPMSSuspendTime                          { FLAGS = EXTERN };
+		DRI2Authenticate                         { FLAGS = EXTERN };
+		DRI2BlockClient                          { FLAGS = EXTERN };
+		DRI2CanExchange                          { FLAGS = EXTERN };
+		DRI2CanFlip                              { FLAGS = EXTERN };
+		DRI2CloseScreen                          { FLAGS = EXTERN };
+		DRI2Connect                              { FLAGS = EXTERN };
+		DRI2CopyRegion                           { FLAGS = EXTERN };
+		DRI2CreateDrawable                       { FLAGS = EXTERN };
+		DRI2CreateDrawable2                      { FLAGS = EXTERN };
+		DRI2GetBuffers                           { FLAGS = EXTERN };
+		DRI2GetBuffersWithFormat                 { FLAGS = EXTERN };
+		DRI2GetMSC                               { FLAGS = EXTERN };
+		DRI2GetParam                             { FLAGS = EXTERN };
+		DRI2HasSwapControl                       { FLAGS = EXTERN };
+		DRI2ScreenInit                           { FLAGS = EXTERN };
+		DRI2SwapBuffers                          { FLAGS = EXTERN };
+		DRI2SwapComplete                         { FLAGS = EXTERN };
+		DRI2SwapInterval                         { FLAGS = EXTERN };
+		DRI2SwapLimit                            { FLAGS = EXTERN };
+		DRI2ThrottleClient                       { FLAGS = EXTERN };
+		DRI2UpdatePrime                          { FLAGS = EXTERN };
+		DRI2Version                              { FLAGS = EXTERN };
+		DRI2WaitMSC                              { FLAGS = EXTERN };
+		DRI2WaitMSCComplete                      { FLAGS = EXTERN };
+		DRI2WaitSBC                              { FLAGS = EXTERN };
+		DRI2WaitSwap                             { FLAGS = EXTERN };
+		DRIAdjustFrame                           { FLAGS = EXTERN };
+		DRIAuthConnection                        { FLAGS = EXTERN };
+		DRIBlockHandler                          { FLAGS = EXTERN };
+		DRIClipNotify                            { FLAGS = EXTERN };
+		DRICloseConnection                       { FLAGS = EXTERN };
+		DRICloseScreen                           { FLAGS = EXTERN };
+		DRIContextPrivDelete                     { FLAGS = EXTERN };
+		DRICopyWindow                            { FLAGS = EXTERN };
+		DRICreateContext                         { FLAGS = EXTERN };
+		DRICreateContextPriv                     { FLAGS = EXTERN };
+		DRICreateContextPrivFromHandle           { FLAGS = EXTERN };
+		DRICreateDrawable                        { FLAGS = EXTERN };
+		DRICreateInfoRec                         { FLAGS = EXTERN };
+		DRICreatePCIBusID                        { FLAGS = EXTERN };
+		DRIDestroyContext                        { FLAGS = EXTERN };
+		DRIDestroyContextPriv                    { FLAGS = EXTERN };
+		DRIDestroyDrawable                       { FLAGS = EXTERN };
+		DRIDestroyInfoRec                        { FLAGS = EXTERN };
+		DRIDestroyWindow                         { FLAGS = EXTERN };
+		DRIDoBlockHandler                        { FLAGS = EXTERN };
+		DRIDoWakeupHandler                       { FLAGS = EXTERN };
+		DRIDrawablePrivDelete                    { FLAGS = EXTERN };
+		DRIFinishScreenInit                      { FLAGS = EXTERN };
+		DRIGetClientDriverName                   { FLAGS = EXTERN };
+		DRIGetContext                            { FLAGS = EXTERN };
+		DRIGetContextStore                       { FLAGS = EXTERN };
+		DRIGetDeviceInfo                         { FLAGS = EXTERN };
+		DRIGetDrawableIndex                      { FLAGS = EXTERN };
+		DRIGetDrawableInfo                       { FLAGS = EXTERN };
+		DRIGetDrawableStamp                      { FLAGS = EXTERN };
+		DRIGetSAREAPrivate                       { FLAGS = EXTERN };
+		DRIGetTexOffsetFuncs                     { FLAGS = EXTERN };
+		DRIGetWrappedFuncs                       { FLAGS = EXTERN };
+		DRILock                                  { FLAGS = EXTERN };
+		DRIMasterFD                              { FLAGS = EXTERN };
+		DRIMasterSareaHandle                     { FLAGS = EXTERN };
+		DRIMasterSareaPointer                    { FLAGS = EXTERN };
+		DRIMoveBuffersHelper                     { FLAGS = EXTERN };
+		DRIOpenConnection                        { FLAGS = EXTERN };
+		DRIOpenDRMMaster                         { FLAGS = EXTERN };
+		DRIPostValidateTree                      { FLAGS = EXTERN };
+		DRIPrintDrawableLock                     { FLAGS = EXTERN };
+		DRIQueryDirectRenderingCapable           { FLAGS = EXTERN };
+		DRIQueryVersion                          { FLAGS = EXTERN };
+		DRIReset                                 { FLAGS = EXTERN };
+		DRIScreenInit                            { FLAGS = EXTERN };
+		DRISwapContext                           { FLAGS = EXTERN };
+		DRIUnlock                                { FLAGS = EXTERN };
+		DRIValidateTree                          { FLAGS = EXTERN };
+		DRIWakeupHandler                         { FLAGS = EXTERN };
+		DRIWindowExposures                       { FLAGS = EXTERN };
 		DamageCreate                             { FLAGS = EXTERN };
 		DamageDamageRegion                       { FLAGS = EXTERN };
 		DamageDestroy                            { FLAGS = EXTERN };
@@ -198,6 +281,9 @@
 		DeliverEventsToWindow                    { FLAGS = EXTERN };
 		DeliverRawEvent                          { FLAGS = EXTERN };
 		DestroySubwindows                        { FLAGS = EXTERN };
+		DetachOffloadGPU                         { FLAGS = EXTERN };
+		DetachOutputGPU                          { FLAGS = EXTERN };
+		DetachUnboundGPU                         { FLAGS = EXTERN };
 		DetermineClientCmd                       { FLAGS = EXTERN };
 		DetermineClientPid                       { FLAGS = EXTERN };
 		DeviceEventCallback                      { FLAGS = EXTERN };
@@ -215,6 +301,7 @@
 		EnableLocalHost                          { FLAGS = EXTERN };
 		EnableMapUnmapEvents                     { FLAGS = EXTERN };
 		ErrorF                                   { FLAGS = EXTERN };
+		ErrorFSigSafe                            { FLAGS = EXTERN };
 		EstablishNewConnections                  { FLAGS = EXTERN };
 		EventCallback                            { FLAGS = EXTERN };
 		EventSelectForWindow                     { FLAGS = EXTERN };
@@ -223,7 +310,6 @@
 		EventToCore                              { FLAGS = EXTERN };
 		EventToXI                                { FLAGS = EXTERN };
 		EventToXI2                               { FLAGS = EXTERN };
-		ExtensionModuleList                      { FLAGS = EXTERN };
 		FakeAllocColor                           { FLAGS = EXTERN };
 		FakeClientID                             { FLAGS = EXTERN };
 		FakeFreeColor                            { FLAGS = EXTERN };
@@ -237,6 +323,7 @@
 		FindGlyphByHash                          { FLAGS = EXTERN };
 		FindGlyphHashSet                         { FLAGS = EXTERN };
 		FindGlyphRef                             { FLAGS = EXTERN };
+		FindSubResources                         { FLAGS = EXTERN };
 		FindWindowWithOptional                   { FLAGS = EXTERN };
 		FlushAllOutput                           { FLAGS = EXTERN };
 		FlushCallback                            { FLAGS = EXTERN };
@@ -273,7 +360,6 @@
 		FreeScreenSaverTimer                     { FLAGS = EXTERN };
 		FreeVelocityData                         { FLAGS = EXTERN };
 		GEClientPrivateKeyRec                    { FLAGS = EXTERN };
-		GEExtensionInit                          { FLAGS = EXTERN };
 		GEExtensions                             { FLAGS = EXTERN };
 		GEInitEvent                              { FLAGS = EXTERN };
 		GERegisterExtension                      { FLAGS = EXTERN };
@@ -289,6 +375,7 @@
 		GetExtensionEntry                        { FLAGS = EXTERN };
 		GetFontPath                              { FLAGS = EXTERN };
 		GetGeometry                              { FLAGS = EXTERN };
+		GetGlyphPicture                          { FLAGS = EXTERN };
 		GetHosts                                 { FLAGS = EXTERN };
 		GetKeyboardEvents                        { FLAGS = EXTERN };
 		GetLocalClientCreds                      { FLAGS = EXTERN };
@@ -299,6 +386,7 @@
 		GetPairedDevice                          { FLAGS = EXTERN };
 		GetPointerEvents                         { FLAGS = EXTERN };
 		GetProximityEvents                       { FLAGS = EXTERN };
+		GetResourceTypeSizeFunc                  { FLAGS = EXTERN };
 		GetScratchGC                             { FLAGS = EXTERN };
 		GetScratchPixmapHeader                   { FLAGS = EXTERN };
 		GetSpriteCursor                          { FLAGS = EXTERN };
@@ -316,6 +404,7 @@
 		GravityTranslate                         { FLAGS = EXTERN };
 		HandleSaveSet                            { FLAGS = EXTERN };
 		HashGlyph                                { FLAGS = EXTERN };
+		HashResourceID                           { FLAGS = EXTERN };
 		HotkeyMapDevicePrivateKeyRec             { FLAGS = EXTERN };
 		IBMramdac526CalculateMNPCForClock        { FLAGS = EXTERN };
 		IBMramdac526HWCursorInit                 { FLAGS = EXTERN };
@@ -390,10 +479,12 @@
 		LogInit                                  { FLAGS = EXTERN };
 		LogMessage                               { FLAGS = EXTERN };
 		LogMessageVerb                           { FLAGS = EXTERN };
+		LogMessageVerbSigSafe                    { FLAGS = EXTERN };
 		LogPrintMarkers                          { FLAGS = EXTERN };
 		LogSetParameter                          { FLAGS = EXTERN };
 		LogVHdrMessageVerb                       { FLAGS = EXTERN };
 		LogVMessageVerb                          { FLAGS = EXTERN };
+		LogVMessageVerbSigSafe                   { FLAGS = EXTERN };
 		LogVWrite                                { FLAGS = EXTERN };
 		LogWrite                                 { FLAGS = EXTERN };
 		LookupClientResourceComplex              { FLAGS = EXTERN };
@@ -428,11 +519,13 @@
 		OnlyListenToOneClient                    { FLAGS = EXTERN };
 		OpenFont                                 { FLAGS = EXTERN };
 		OsAbort                                  { FLAGS = EXTERN };
+		OsBlockSIGIO                             { FLAGS = EXTERN };
 		OsBlockSignals                           { FLAGS = EXTERN };
 		OsCleanup                                { FLAGS = EXTERN };
 		OsInit                                   { FLAGS = EXTERN };
 		OsLookupColor                            { FLAGS = EXTERN };
 		OsRegisterSigWrapper                     { FLAGS = EXTERN };
+		OsReleaseSIGIO                           { FLAGS = EXTERN };
 		OsReleaseSignals                         { FLAGS = EXTERN };
 		OsSignal                                 { FLAGS = EXTERN };
 		OsVendorFatalError                       { FLAGS = EXTERN };
@@ -478,7 +571,12 @@
 		PictureTransformPoint                    { FLAGS = EXTERN };
 		PictureTransformPoint3d                  { FLAGS = EXTERN };
 		PictureType                              { FLAGS = EXTERN };
+		PictureWindowFormat                      { FLAGS = EXTERN };
 		PictureWindowPrivateKeyRec               { FLAGS = EXTERN };
+		PixmapShareToSlave                       { FLAGS = EXTERN };
+		PixmapStartDirtyTracking                 { FLAGS = EXTERN };
+		PixmapStopDirtyTracking                  { FLAGS = EXTERN };
+		PixmapSyncDirtyHelper                    { FLAGS = EXTERN };
 		PixmapWidthPaddingInfo                   { FLAGS = EXTERN };
 		PointInWindowIsVisible                   { FLAGS = EXTERN };
 		PointerBarrierType                       { FLAGS = EXTERN };
@@ -490,6 +588,7 @@
 		ProcAllowEvents                          { FLAGS = EXTERN };
 		ProcBadRequest                           { FLAGS = EXTERN };
 		ProcChangeActivePointerGrab              { FLAGS = EXTERN };
+		ProcDRI2WaitMSCReply                     { FLAGS = EXTERN };
 		ProcGEVector                             { FLAGS = EXTERN };
 		ProcGetInputFocus                        { FLAGS = EXTERN };
 		ProcGrabButton                           { FLAGS = EXTERN };
@@ -499,10 +598,13 @@
 		ProcQueryPointer                         { FLAGS = EXTERN };
 		ProcRRAddOutputMode                      { FLAGS = EXTERN };
 		ProcRRChangeOutputProperty               { FLAGS = EXTERN };
+		ProcRRChangeProviderProperty             { FLAGS = EXTERN };
 		ProcRRConfigureOutputProperty            { FLAGS = EXTERN };
+		ProcRRConfigureProviderProperty          { FLAGS = EXTERN };
 		ProcRRCreateMode                         { FLAGS = EXTERN };
 		ProcRRDeleteOutputMode                   { FLAGS = EXTERN };
 		ProcRRDeleteOutputProperty               { FLAGS = EXTERN };
+		ProcRRDeleteProviderProperty             { FLAGS = EXTERN };
 		ProcRRDestroyMode                        { FLAGS = EXTERN };
 		ProcRRGetCrtcGamma                       { FLAGS = EXTERN };
 		ProcRRGetCrtcGammaSize                   { FLAGS = EXTERN };
@@ -511,16 +613,23 @@
 		ProcRRGetOutputInfo                      { FLAGS = EXTERN };
 		ProcRRGetOutputPrimary                   { FLAGS = EXTERN };
 		ProcRRGetOutputProperty                  { FLAGS = EXTERN };
+		ProcRRGetProviderInfo                    { FLAGS = EXTERN };
+		ProcRRGetProviderProperty                { FLAGS = EXTERN };
+		ProcRRGetProviders                       { FLAGS = EXTERN };
 		ProcRRGetScreenInfo                      { FLAGS = EXTERN };
 		ProcRRGetScreenResources                 { FLAGS = EXTERN };
 		ProcRRGetScreenResourcesCurrent          { FLAGS = EXTERN };
 		ProcRRGetScreenSizeRange                 { FLAGS = EXTERN };
 		ProcRRListOutputProperties               { FLAGS = EXTERN };
+		ProcRRListProviderProperties             { FLAGS = EXTERN };
 		ProcRRQueryOutputProperty                { FLAGS = EXTERN };
+		ProcRRQueryProviderProperty              { FLAGS = EXTERN };
 		ProcRRSetCrtcConfig                      { FLAGS = EXTERN };
 		ProcRRSetCrtcGamma                       { FLAGS = EXTERN };
 		ProcRRSetCrtcTransform                   { FLAGS = EXTERN };
 		ProcRRSetOutputPrimary                   { FLAGS = EXTERN };
+		ProcRRSetProviderOffloadSink             { FLAGS = EXTERN };
+		ProcRRSetProviderOutputSource            { FLAGS = EXTERN };
 		ProcRRSetScreenConfig                    { FLAGS = EXTERN };
 		ProcRRSetScreenSize                      { FLAGS = EXTERN };
 		ProcRandrVector                          { FLAGS = EXTERN };
@@ -533,6 +642,7 @@
 		ProcUngrabPointer                        { FLAGS = EXTERN };
 		ProcVector                               { FLAGS = EXTERN };
 		ProcWarpPointer                          { FLAGS = EXTERN };
+		ProcXvDispatch                           { FLAGS = EXTERN };
 		ProcessCommandLine                       { FLAGS = EXTERN };
 		ProcessInputEvents                       { FLAGS = EXTERN };
 		ProcessVelocityData2D                    { FLAGS = EXTERN };
@@ -547,6 +657,7 @@
 		QueueProximityEvents                     { FLAGS = EXTERN };
 		QueueWorkProc                            { FLAGS = EXTERN };
 		RRChangeOutputProperty                   { FLAGS = EXTERN };
+		RRChangeProviderProperty                 { FLAGS = EXTERN };
 		RRClientKnowsRates                       { FLAGS = EXTERN };
 		RRClientPrivateKeyRec                    { FLAGS = EXTERN };
 		RRClientType                             { FLAGS = EXTERN };
@@ -554,6 +665,7 @@
 		RRCrtcChanged                            { FLAGS = EXTERN };
 		RRCrtcCreate                             { FLAGS = EXTERN };
 		RRCrtcDestroy                            { FLAGS = EXTERN };
+		RRCrtcDetachScanoutPixmap                { FLAGS = EXTERN };
 		RRCrtcGammaGet                           { FLAGS = EXTERN };
 		RRCrtcGammaNotify                        { FLAGS = EXTERN };
 		RRCrtcGammaSet                           { FLAGS = EXTERN };
@@ -570,17 +682,19 @@
 		RRCrtcTransformSet                       { FLAGS = EXTERN };
 		RRCrtcType                               { FLAGS = EXTERN };
 		RRDeleteAllOutputProperties              { FLAGS = EXTERN };
+		RRDeleteAllProviderProperties            { FLAGS = EXTERN };
 		RRDeleteOutputProperty                   { FLAGS = EXTERN };
+		RRDeleteProviderProperty                 { FLAGS = EXTERN };
 		RRDeliverCrtcEvent                       { FLAGS = EXTERN };
 		RRDeliverOutputEvent                     { FLAGS = EXTERN };
 		RRDeliverScreenEvent                     { FLAGS = EXTERN };
 		RRErrorBase                              { FLAGS = EXTERN };
 		RREventBase                              { FLAGS = EXTERN };
 		RREventType                              { FLAGS = EXTERN };
-		RRExtensionInit                          { FLAGS = EXTERN };
 		RRFirstOutput                            { FLAGS = EXTERN };
 		RRGetInfo                                { FLAGS = EXTERN };
 		RRGetOutputProperty                      { FLAGS = EXTERN };
+		RRGetProviderProperty                    { FLAGS = EXTERN };
 		RRGetRotation                            { FLAGS = EXTERN };
 		RRInit                                   { FLAGS = EXTERN };
 		RRModeDestroy                            { FLAGS = EXTERN };
@@ -606,9 +720,18 @@
 		RRPointerMoved                           { FLAGS = EXTERN };
 		RRPointerScreenConfigured                { FLAGS = EXTERN };
 		RRPostPendingProperties                  { FLAGS = EXTERN };
+		RRProviderCreate                         { FLAGS = EXTERN };
+		RRProviderDestroy                        { FLAGS = EXTERN };
+		RRProviderInit                           { FLAGS = EXTERN };
+		RRProviderInitErrorValue                 { FLAGS = EXTERN };
+		RRProviderLookup                         { FLAGS = EXTERN };
+		RRProviderSetCapabilities                { FLAGS = EXTERN };
+		RRProviderType                           { FLAGS = EXTERN };
 		RRQueryOutputProperty                    { FLAGS = EXTERN };
+		RRQueryProviderProperty                  { FLAGS = EXTERN };
 		RRRegisterRate                           { FLAGS = EXTERN };
 		RRRegisterSize                           { FLAGS = EXTERN };
+		RRReplaceScanoutPixmap                   { FLAGS = EXTERN };
 		RRScreenInit                             { FLAGS = EXTERN };
 		RRScreenSetSizeRange                     { FLAGS = EXTERN };
 		RRScreenSizeNotify                       { FLAGS = EXTERN };
@@ -661,10 +784,10 @@
 		RemoveDevice                             { FLAGS = EXTERN };
 		RemoveEnabledDevice                      { FLAGS = EXTERN };
 		RemoveFontWakeup                         { FLAGS = EXTERN };
+		RemoveGPUScreen                          { FLAGS = EXTERN };
 		RemoveGeneralSocket                      { FLAGS = EXTERN };
 		RemoveHost                               { FLAGS = EXTERN };
 		RenderErrBase                            { FLAGS = EXTERN };
-		RenderExtensionInit                      { FLAGS = EXTERN };
 		ReparentWindow                           { FLAGS = EXTERN };
 		ReplyCallback                            { FLAGS = EXTERN };
 		ReplyNotSwappd                           { FLAGS = EXTERN };
@@ -797,6 +920,7 @@
 		SProcUngrabKey                           { FLAGS = EXTERN };
 		SProcWarpPointer                         { FLAGS = EXTERN };
 		SProcXkbDispatch                         { FLAGS = EXTERN };
+		SProcXvDispatch                          { FLAGS = EXTERN };
 		SPropertyEvent                           { FLAGS = EXTERN };
 		SQColorsExtend                           { FLAGS = EXTERN };
 		SQueryBestSizeReply                      { FLAGS = EXTERN };
@@ -839,6 +963,7 @@
 		SetDeviceSpecificAccelerationProfile     { FLAGS = EXTERN };
 		SetDeviceValuators                       { FLAGS = EXTERN };
 		SetFontPath                              { FLAGS = EXTERN };
+		SetGlyphPicture                          { FLAGS = EXTERN };
 		SetInputCheck                            { FLAGS = EXTERN };
 		SetKeySymsMap                            { FLAGS = EXTERN };
 		SetPictureClipRects                      { FLAGS = EXTERN };
@@ -848,6 +973,8 @@
 		SetPictureToDefaults                     { FLAGS = EXTERN };
 		SetPictureTransform                      { FLAGS = EXTERN };
 		SetResourceTypeErrorValue                { FLAGS = EXTERN };
+		SetResourceTypeFindSubResFunc            { FLAGS = EXTERN };
+		SetResourceTypeSizeFunc                  { FLAGS = EXTERN };
 		SetRootClip                              { FLAGS = EXTERN };
 		SetScreenSaverTimer                      { FLAGS = EXTERN };
 		SetScrollValuator                        { FLAGS = EXTERN };
@@ -855,7 +982,6 @@
 		SetVendorRelease                         { FLAGS = EXTERN };
 		SetVendorString                          { FLAGS = EXTERN };
 		SetWinSize                               { FLAGS = EXTERN };
-		ShapeExtensionInit                       { FLAGS = EXTERN };
 		ShapeOverlap                             { FLAGS = EXTERN };
 		ShmCompletionCode                        { FLAGS = EXTERN };
 		ShmRegisterFbFuncs                       { FLAGS = EXTERN };
@@ -939,6 +1065,7 @@
 		UseMsg                                   { FLAGS = EXTERN };
 		VAuditF                                  { FLAGS = EXTERN };
 		VErrorF                                  { FLAGS = EXTERN };
+		VErrorFSigSafe                           { FLAGS = EXTERN };
 		VTSwitchEnabled                          { FLAGS = EXTERN };
 		ValidAtom                                { FLAGS = EXTERN };
 		ValidateGC                               { FLAGS = EXTERN };
@@ -951,7 +1078,6 @@
 		VidModeCopyMode                          { FLAGS = EXTERN };
 		VidModeCreateMode                        { FLAGS = EXTERN };
 		VidModeDeleteModeline                    { FLAGS = EXTERN };
-		VidModeExtensionInit                     { FLAGS = EXTERN };
 		VidModeGetClocks                         { FLAGS = EXTERN };
 		VidModeGetCurrentModeline                { FLAGS = EXTERN };
 		VidModeGetDotClock                       { FLAGS = EXTERN };
@@ -979,13 +1105,13 @@
 		WalkTree                                 { FLAGS = EXTERN };
 		WindowExtents                            { FLAGS = EXTERN };
 		WindowGetDeviceCursor                    { FLAGS = EXTERN };
+		WindowGetVisual                          { FLAGS = EXTERN };
 		WindowHasNewCursor                       { FLAGS = EXTERN };
 		WindowsRestructured                      { FLAGS = EXTERN };
 		WriteEventsToClient                      { FLAGS = EXTERN };
 		WriteSConnSetupPrefix                    { FLAGS = EXTERN };
 		WriteSConnectionInfo                     { FLAGS = EXTERN };
 		WriteToClient                            { FLAGS = EXTERN };
-		XDGAEventBase                            { FLAGS = EXTERN };
 		XF86XvScreenKey                          { FLAGS = EXTERN };
 		XFixesErrorBase                          { FLAGS = EXTERN };
 		XFixesRegionCopy                         { FLAGS = EXTERN };
@@ -1153,11 +1279,40 @@
 		Xrealloc                                 { FLAGS = EXTERN };
 		Xscnprintf                               { FLAGS = EXTERN };
 		Xstrdup                                  { FLAGS = EXTERN };
-		XvGetRTPortProc                          { FLAGS = EXTERN };
-		XvGetScreenKeyProc                       { FLAGS = EXTERN };
-		XvMCScreenInitProc                       { FLAGS = EXTERN };
-		XvScreenInitProc                         { FLAGS = EXTERN };
+		XvErrorBase                              { FLAGS = EXTERN };
+		XvEventBase                              { FLAGS = EXTERN };
+		XvExtensionGeneration                    { FLAGS = EXTERN };
+		XvGetRTPort                              { FLAGS = EXTERN };
+		XvGetScreenKey                           { FLAGS = EXTERN };
+		XvMCFindXvImage                          { FLAGS = EXTERN };
+		XvMCScreenInit                           { FLAGS = EXTERN };
+		XvRTEncoding                             { FLAGS = EXTERN };
+		XvRTGrab                                 { FLAGS = EXTERN };
+		XvRTPort                                 { FLAGS = EXTERN };
+		XvRTPortNotify                           { FLAGS = EXTERN };
+		XvRTVideoNotify                          { FLAGS = EXTERN };
+		XvRTVideoNotifyList                      { FLAGS = EXTERN };
+		XvReqCode                                { FLAGS = EXTERN };
+		XvResourceGeneration                     { FLAGS = EXTERN };
+		XvScreenGeneration                       { FLAGS = EXTERN };
+		XvScreenInit                             { FLAGS = EXTERN };
 		Xvasprintf                               { FLAGS = EXTERN };
+		XvdiGetPortAttribute                     { FLAGS = EXTERN };
+		XvdiGetStill                             { FLAGS = EXTERN };
+		XvdiGetVideo                             { FLAGS = EXTERN };
+		XvdiGrabPort                             { FLAGS = EXTERN };
+		XvdiMatchPort                            { FLAGS = EXTERN };
+		XvdiPreemptVideo                         { FLAGS = EXTERN };
+		XvdiPutImage                             { FLAGS = EXTERN };
+		XvdiPutStill                             { FLAGS = EXTERN };
+		XvdiPutVideo                             { FLAGS = EXTERN };
+		XvdiSelectPortNotify                     { FLAGS = EXTERN };
+		XvdiSelectVideoNotify                    { FLAGS = EXTERN };
+		XvdiSendPortNotify                       { FLAGS = EXTERN };
+		XvdiSetPortAttribute                     { FLAGS = EXTERN };
+		XvdiStopVideo                            { FLAGS = EXTERN };
+		XvdiUngrabPort                           { FLAGS = EXTERN };
+		XvdiVideoStopped                         { FLAGS = EXTERN };
 		Xvprintf                                 { FLAGS = EXTERN };
 		Xvscnprintf                              { FLAGS = EXTERN };
 		_CallCallbacks                           { FLAGS = EXTERN };
@@ -1168,10 +1323,12 @@
 		_XkbLookupKeyboard                       { FLAGS = EXTERN };
 		_XkbLookupLedDevice                      { FLAGS = EXTERN };
 		_dixAllocateObjectWithPrivates           { FLAGS = EXTERN };
+		_dixAllocateScreenObjectWithPrivates     { FLAGS = EXTERN };
 		_dixFiniPrivates                         { FLAGS = EXTERN };
 		_dixFreeObjectWithPrivates               { FLAGS = EXTERN };
 		_dixGetScreenPrivateKey                  { FLAGS = EXTERN };
 		_dixInitPrivates                         { FLAGS = EXTERN };
+		_dixInitScreenPrivates                   { FLAGS = EXTERN };
 		auditTrailLevel                          { FLAGS = EXTERN };
 		bgNoneRoot                               { FLAGS = EXTERN };
 		byte_reversed                            { FLAGS = EXTERN };
@@ -1180,6 +1337,7 @@
 		clients                                  { FLAGS = EXTERN };
 		config_fini                              { FLAGS = EXTERN };
 		config_init                              { FLAGS = EXTERN };
+		config_pre_init                          { FLAGS = EXTERN };
 		currentMaxClients                        { FLAGS = EXTERN };
 		currentTime                              { FLAGS = EXTERN };
 		cursorScreenDevPriv                      { FLAGS = EXTERN };
@@ -1201,10 +1359,12 @@
 		dispatchException                        { FLAGS = EXTERN };
 		dispatchExceptionAtReset                 { FLAGS = EXTERN };
 		display                                  { FLAGS = EXTERN };
+		displayfd                                { FLAGS = EXTERN };
 		dixAllocatePrivates                      { FLAGS = EXTERN };
 		dixChangeWindowProperty                  { FLAGS = EXTERN };
 		dixDestroyPixmap                         { FLAGS = EXTERN };
 		dixFreePrivates                          { FLAGS = EXTERN };
+		dixGetGlyphs                             { FLAGS = EXTERN };
 		dixLookupClient                          { FLAGS = EXTERN };
 		dixLookupDevice                          { FLAGS = EXTERN };
 		dixLookupDrawable                        { FLAGS = EXTERN };
@@ -1219,18 +1379,34 @@
 		dixPrivatesSize                          { FLAGS = EXTERN };
 		dixRegisterPrivateKey                    { FLAGS = EXTERN };
 		dixRegisterScreenPrivateKey              { FLAGS = EXTERN };
+		dixRegisterScreenSpecificPrivateKey      { FLAGS = EXTERN };
 		dixResetPrivates                         { FLAGS = EXTERN };
 		dixResetRegistry                         { FLAGS = EXTERN };
 		dixSaveScreens                           { FLAGS = EXTERN };
+		dixScreenSpecificPrivatesSize            { FLAGS = EXTERN };
 		doImageText                              { FLAGS = EXTERN };
 		doListFontsWithInfo                      { FLAGS = EXTERN };
 		doPolyText                               { FLAGS = EXTERN };
+		drmInstallSIGIOHandler                   { FLAGS = EXTERN };
+		drmRemoveSIGIOHandler                    { FLAGS = EXTERN };
 		enableBackingStore                       { FLAGS = EXTERN };
 		fbSlotClaimed                            { FLAGS = EXTERN };
 		find_old_font                            { FLAGS = EXTERN };
 		generate_modkeymap                       { FLAGS = EXTERN };
 		getClientTrustLevel                      { FLAGS = EXTERN };
 		globalSerialNumber                       { FLAGS = EXTERN };
+		ht_add                                   { FLAGS = EXTERN };
+		ht_create                                { FLAGS = EXTERN };
+		ht_destroy                               { FLAGS = EXTERN };
+		ht_dump_contents                         { FLAGS = EXTERN };
+		ht_dump_distribution                     { FLAGS = EXTERN };
+		ht_find                                  { FLAGS = EXTERN };
+		ht_generic_compare                       { FLAGS = EXTERN };
+		ht_generic_hash                          { FLAGS = EXTERN };
+		ht_remove                                { FLAGS = EXTERN };
+		ht_resourceid_compare                    { FLAGS = EXTERN };
+		ht_resourceid_hash                       { FLAGS = EXTERN };
+		inSignalContext                          { FLAGS = EXTERN };
 		inb                                      { FLAGS = EXTERN };
 		init_fs_handlers                         { FLAGS = EXTERN };
 		inl                                      { FLAGS = EXTERN };
@@ -1408,7 +1584,6 @@
 		monitorResolution                        { FLAGS = EXTERN };
 		noCompositeExtension                     { FLAGS = EXTERN };
 		noDPMSExtension                          { FLAGS = EXTERN };
-		noDRI2Extension                          { FLAGS = EXTERN };
 		noDamageExtension                        { FLAGS = EXTERN };
 		noDbeExtension                           { FLAGS = EXTERN };
 		noGlxExtension                           { FLAGS = EXTERN };
@@ -1421,9 +1596,7 @@
 		noSecurityExtension                      { FLAGS = EXTERN };
 		noTestExtensions                         { FLAGS = EXTERN };
 		noXFixesExtension                        { FLAGS = EXTERN };
-		noXFree86DGAExtension                    { FLAGS = EXTERN };
 		noXFree86DRIExtension                    { FLAGS = EXTERN };
-		noXFree86VidModeExtension                { FLAGS = EXTERN };
 		noXvExtension                            { FLAGS = EXTERN };
 		outb                                     { FLAGS = EXTERN };
 		outl                                     { FLAGS = EXTERN };
@@ -1556,6 +1729,7 @@
 		xf86DestroyCursorInfoRec                 { FLAGS = EXTERN };
 		xf86DestroyI2CBusRec                     { FLAGS = EXTERN };
 		xf86DestroyI2CDevRec                     { FLAGS = EXTERN };
+		xf86DetachAllCrtc                        { FLAGS = EXTERN };
 		xf86DiDGAInit                            { FLAGS = EXTERN };
 		xf86DiDGAReInit                          { FLAGS = EXTERN };
 		xf86DisableDevice                        { FLAGS = EXTERN };
@@ -1706,7 +1880,6 @@
 		xf86LookupInput                          { FLAGS = EXTERN };
 		xf86LookupInputDriver                    { FLAGS = EXTERN };
 		xf86LookupMode                           { FLAGS = EXTERN };
-		xf86MakeNewMapping                       { FLAGS = EXTERN };
 		xf86MapLegacyIO                          { FLAGS = EXTERN };
 		xf86MapReadSideEffects                   { FLAGS = EXTERN };
 		xf86MapVidMem                            { FLAGS = EXTERN };
@@ -1788,6 +1961,7 @@
 		xf86ProcessArgument                      { FLAGS = EXTERN };
 		xf86ProcessCommonOptions                 { FLAGS = EXTERN };
 		xf86ProcessOptions                       { FLAGS = EXTERN };
+		xf86ProviderSetup                        { FLAGS = EXTERN };
 		xf86PruneDriverModes                     { FLAGS = EXTERN };
 		xf86PruneDuplicateModes                  { FLAGS = EXTERN };
 		xf86PruneInvalidModes                    { FLAGS = EXTERN };
@@ -1814,6 +1988,7 @@
 		xf86RegisterRootWindowProperty           { FLAGS = EXTERN };
 		xf86RegisteredPropertiesTable            { FLAGS = EXTERN };
 		xf86ReleaseGART                          { FLAGS = EXTERN };
+		xf86RemoveDevFromEntity                  { FLAGS = EXTERN };
 		xf86RemoveEnabledDevice                  { FLAGS = EXTERN };
 		xf86RemoveEntityFromScreen               { FLAGS = EXTERN };
 		xf86RemoveGeneralHandler                 { FLAGS = EXTERN };
@@ -1828,16 +2003,18 @@
 		xf86ResizeOffscreenArea                  { FLAGS = EXTERN };
 		xf86ResizeOffscreenLinear                { FLAGS = EXTERN };
 		xf86ReturnOptValBool                     { FLAGS = EXTERN };
-		xf86ReverseBitOrder                      { FLAGS = EXTERN };
 		xf86RotateCloseScreen                    { FLAGS = EXTERN };
 		xf86RotateDestroy                        { FLAGS = EXTERN };
 		xf86RotateFreeShadow                     { FLAGS = EXTERN };
 		xf86SIGIOSupported                       { FLAGS = EXTERN };
+		xf86SaveModeContents                     { FLAGS = EXTERN };
 		xf86SaveScreen                           { FLAGS = EXTERN };
 		xf86ScaleAxis                            { FLAGS = EXTERN };
 		xf86ScreenKeyRec                         { FLAGS = EXTERN };
 		xf86ScreenName                           { FLAGS = EXTERN };
+		xf86ScreenToScrn                         { FLAGS = EXTERN };
 		xf86Screens                              { FLAGS = EXTERN };
+		xf86ScrnToScreen                         { FLAGS = EXTERN };
 		xf86SerialModemClearBits                 { FLAGS = EXTERN };
 		xf86SerialModemSetBits                   { FLAGS = EXTERN };
 		xf86SerialSendBreak                      { FLAGS = EXTERN };
@@ -1935,6 +2112,7 @@
 		xf86XVScreenInit                         { FLAGS = EXTERN };
 		xf86XvMCCreateAdaptorRec                 { FLAGS = EXTERN };
 		xf86XvMCDestroyAdaptorRec                { FLAGS = EXTERN };
+		xf86XvMCRegisterDRInfo                   { FLAGS = EXTERN };
 		xf86XvMCScreenInit                       { FLAGS = EXTERN };
 		xf86ZoomViewport                         { FLAGS = EXTERN };
 		xf86_crtc_clip_video_helper              { FLAGS = EXTERN };
@@ -1993,4 +2171,5 @@
 		xorgGetVersion                           { FLAGS = EXTERN };
 		xorgHWAccess                             { FLAGS = EXTERN };
 		xorg_backtrace                           { FLAGS = EXTERN };
+		xorg_symbols                             { FLAGS = EXTERN };
 };
--- a/open-src/xserver/xorg/mapfile-Xorg-externs.sparc	Fri Nov 02 15:59:08 2012 -0700
+++ b/open-src/xserver/xorg/mapfile-Xorg-externs.sparc	Mon Nov 05 16:17:08 2012 -0800
@@ -289,6 +289,7 @@
 		GetExtensionEntry                        { FLAGS = EXTERN };
 		GetFontPath                              { FLAGS = EXTERN };
 		GetGeometry                              { FLAGS = EXTERN };
+		GetGlyphPicture                          { FLAGS = EXTERN };
 		GetHosts                                 { FLAGS = EXTERN };
 		GetKeyboardEvents                        { FLAGS = EXTERN };
 		GetLocalClientCreds                      { FLAGS = EXTERN };
@@ -479,6 +480,7 @@
 		PictureTransformPoint3d                  { FLAGS = EXTERN };
 		PictureType                              { FLAGS = EXTERN };
 		PictureWindowPrivateKeyRec               { FLAGS = EXTERN };
+		PixmapShareToSlave			 { FLAGS = EXTERN };
 		PixmapWidthPaddingInfo                   { FLAGS = EXTERN };
 		PointInWindowIsVisible                   { FLAGS = EXTERN };
 		PointerBarrierType                       { FLAGS = EXTERN };
@@ -1205,6 +1207,7 @@
 		dixChangeWindowProperty                  { FLAGS = EXTERN };
 		dixDestroyPixmap                         { FLAGS = EXTERN };
 		dixFreePrivates                          { FLAGS = EXTERN };
+		dixGetGlyphs				 { FLAGS = EXTERN };
 		dixLookupClient                          { FLAGS = EXTERN };
 		dixLookupDevice                          { FLAGS = EXTERN };
 		dixLookupDrawable                        { FLAGS = EXTERN };
@@ -1219,6 +1222,7 @@
 		dixPrivatesSize                          { FLAGS = EXTERN };
 		dixRegisterPrivateKey                    { FLAGS = EXTERN };
 		dixRegisterScreenPrivateKey              { FLAGS = EXTERN };
+		dixRegisterScreenSpecificPrivateKey      { FLAGS = EXTERN };
 		dixResetPrivates                         { FLAGS = EXTERN };
 		dixResetRegistry                         { FLAGS = EXTERN };
 		dixSaveScreens                           { FLAGS = EXTERN };
@@ -1870,6 +1874,8 @@
 		xf86ScreenKeyRec                         { FLAGS = EXTERN };
 		xf86ScreenName                           { FLAGS = EXTERN };
 		xf86Screens                              { FLAGS = EXTERN };
+		xf86ScreenToScrn                         { FLAGS = EXTERN };
+		xf86ScrnToScreen                         { FLAGS = EXTERN };
 		xf86SerialModemClearBits                 { FLAGS = EXTERN };
 		xf86SerialModemSetBits                   { FLAGS = EXTERN };
 		xf86SerialSendBreak                      { FLAGS = EXTERN };
--- a/open-src/xserver/xorg/patch-list	Fri Nov 02 15:59:08 2012 -0700
+++ b/open-src/xserver/xorg/patch-list	Mon Nov 05 16:17:08 2012 -0800
@@ -1,5 +1,3 @@
-SProcDRI2Connect.patch,-p1
-studio-asm.patch,-p1
 osaudit.patch,-p1
 sun-paths.patch,-p1
 sun-extramodes.patch,-p1
@@ -27,3 +25,4 @@
 autodetect-kernel-dev-fb.patch,-p1
 workaround-7154410.patch,-p1
 sparc-no-bus-probe.patch,-p1
+113-port.patch,-p1
--- a/open-src/xserver/xorg/sparc-no-bus-probe.patch	Fri Nov 02 15:59:08 2012 -0700
+++ b/open-src/xserver/xorg/sparc-no-bus-probe.patch	Mon Nov 05 16:17:08 2012 -0800
@@ -1,6 +1,6 @@
---- a/hw/xfree86/common/xf86Init.c	Fri Aug 10 17:42:37 2012
-+++ b/hw/xfree86/common/xf86Init.c	Fri Aug 10 19:45:41 2012
-@@ -453,7 +453,9 @@
+--- a/hw/xfree86/common/xf86Init.c	Wed Sep 12 11:43:23 2012
++++ b/hw/xfree86/common/xf86Init.c	Wed Sep 12 11:43:55 2012
+@@ -456,7 +456,9 @@
              DoShowOptions();
  
          /* Do a general bus probe.  This will be a PCI probe for x86 platforms */
@@ -10,8 +10,8 @@
  
          if (xf86DoConfigure)
              DoConfigure();
---- a/hw/xfree86/common/xf86pciBus.h	Fri Aug 17 15:28:07 2012
-+++ b/hw/xfree86/common/xf86pciBus.h	Fri Aug 17 15:25:34 2012
+--- a/hw/xfree86/common/xf86pciBus.h	Wed Sep 12 11:44:29 2012
++++ b/hw/xfree86/common/xf86pciBus.h	Wed Sep 12 11:45:04 2012
 @@ -35,7 +35,9 @@
  
  void xf86PciProbe(void);
@@ -22,11 +22,11 @@
  void xf86PciIsolateDevice(char *argument);
  int xf86PciMatchDriver(char *matches[], int nmatches);
  Bool xf86PciConfigure(void *busData, struct pci_device *pDev);
---- a/hw/xfree86/common/xf86Priv.h	Fri Aug 10 21:43:08 2012
-+++ b/hw/xfree86/common/xf86Priv.h	Fri Aug 17 15:26:21 2012
-@@ -117,6 +117,11 @@
- extern _X_EXPORT void xf86ClearEntityListForScreen(int scrnIndex);
+--- a/hw/xfree86/common/xf86Priv.h	Wed Sep 12 11:45:25 2012
++++ b/hw/xfree86/common/xf86Priv.h	Wed Sep 12 11:45:51 2012
+@@ -120,6 +120,11 @@
  extern _X_EXPORT void xf86AddDevToEntity(int entityIndex, GDevPtr dev);
+ extern _X_EXPORT void xf86RemoveDevFromEntity(int entityIndex, GDevPtr dev);
  
 +/* xf86pciBus.c */
 +#if (defined(__sparc__) || defined(__sparc))
@@ -36,20 +36,20 @@
  /* xf86Config.c */
  
  extern _X_EXPORT Bool xf86PathIsSafe(const char *path);
---- a/hw/xfree86/common/xf86AutoConfig.c	Fri Aug 24 11:29:28 2012
-+++ b/hw/xfree86/common/xf86AutoConfig.c	Fri Aug 24 12:14:43 2012
-@@ -215,6 +215,10 @@
+--- a/hw/xfree86/common/xf86AutoConfig.c	Wed Sep 12 11:46:39 2012
++++ b/hw/xfree86/common/xf86AutoConfig.c	Wed Sep 12 11:47:38 2012
+@@ -216,6 +216,10 @@
      return ret == CONFIG_OK;
  }
  
 +#if (defined(__sparc__) || defined(__sparc))
-+#define xf86SolarisFb0Dev	"/dev/fb0"
++#define xf86SolarisFb0Dev      "/dev/fb0"
 +#endif
 +
  static void
  listPossibleVideoDrivers(char *matches[], int nmatches)
  {
-@@ -250,6 +254,19 @@
+@@ -254,6 +258,19 @@
              close(fbfd);
          }
      }
--- a/open-src/xserver/xorg/studio-asm.patch	Fri Nov 02 15:59:08 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,45 +0,0 @@
-From 4c42aef04d9f256d434e3459596d918dc8420d53 Mon Sep 17 00:00:00 2001
-From: Alan Coopersmith <[email protected]>
-Date: Mon, 23 Apr 2012 22:43:27 -0700
-Subject: [PATCH] Provide prototypes for Mmio functions for Solaris Studio on
- SPARC
-
-Actual inline implementations are provided via external *.il files
-generated from *.S files in hw/xfree86/os-support/solaris
-
-Signed-off-by: Alan Coopersmith <[email protected]>
----
- hw/xfree86/common/compiler.h |   17 +++++++++++++++++
- 1 file changed, 17 insertions(+)
-
-diff --git a/hw/xfree86/common/compiler.h b/hw/xfree86/common/compiler.h
-index 0abdfb6..3467e15 100644
---- a/hw/xfree86/common/compiler.h
-+++ b/hw/xfree86/common/compiler.h
-@@ -119,6 +119,23 @@ extern _X_EXPORT unsigned int inb(unsigned long);
- extern _X_EXPORT unsigned int inw(unsigned long);
- extern _X_EXPORT unsigned int inl(unsigned long);
- 
-+#ifdef __SUNPRO_C
-+extern _X_EXPORT unsigned char  xf86ReadMmio8    (void *, unsigned long);
-+extern _X_EXPORT unsigned short xf86ReadMmio16Be (void *, unsigned long);
-+extern _X_EXPORT unsigned short xf86ReadMmio16Le (void *, unsigned long);
-+extern _X_EXPORT unsigned int   xf86ReadMmio32Be (void *, unsigned long);
-+extern _X_EXPORT unsigned int   xf86ReadMmio32Le (void *, unsigned long);
-+extern _X_EXPORT void xf86WriteMmio8    (void *, unsigned long, unsigned int);
-+extern _X_EXPORT void xf86WriteMmio16Be (void *, unsigned long, unsigned int);
-+extern _X_EXPORT void xf86WriteMmio16Le (void *, unsigned long, unsigned int);
-+extern _X_EXPORT void xf86WriteMmio32Be (void *, unsigned long, unsigned int);
-+extern _X_EXPORT void xf86WriteMmio32Le (void *, unsigned long, unsigned int);
-+extern _X_EXPORT void xf86WriteMmio8NB    (void *, unsigned long, unsigned int);
-+extern _X_EXPORT void xf86WriteMmio16BeNB (void *, unsigned long, unsigned int);
-+extern _X_EXPORT void xf86WriteMmio16LeNB (void *, unsigned long, unsigned int);
-+extern _X_EXPORT void xf86WriteMmio32BeNB (void *, unsigned long, unsigned int);
-+extern _X_EXPORT void xf86WriteMmio32LeNB (void *, unsigned long, unsigned int);
-+#endif                          /* _SUNPRO_C */
- #endif                          /* __sparc__,  __arm32__, __alpha__, __nds32__ */
- #endif                          /* __arm__ */
- 
--- 
-1.7.9.2
-
--- a/open-src/xserver/xorg/sun-paths.patch	Fri Nov 02 15:59:08 2012 -0700
+++ b/open-src/xserver/xorg/sun-paths.patch	Mon Nov 05 16:17:08 2012 -0800
@@ -39,35 +39,6 @@
  MessageType xf86ModPathFrom = X_DEFAULT;
  const char *xf86LogFile = DEFAULT_LOGPREFIX;
  MessageType xf86LogFileFrom = X_DEFAULT;
-diff --git a/hw/xfree86/man/xorg.conf.man b/hw/xfree86/man/xorg.conf.man
-index c1b3c4f..d15bbf5 100644
---- a/hw/xfree86/man/xorg.conf.man
-+++ b/hw/xfree86/man/xorg.conf.man
-@@ -36,9 +36,9 @@ server is started as a normal user:
- .RS 4
- .nf
- .IR /etc/X11/ <cmdline>
--.IR __projectroot__/etc/X11/ <cmdline>
-+.IR __projectroot__/lib/X11/ <cmdline>
- .IB /etc/X11/ $XORGCONFIG
--.IB __projectroot__/etc/X11/ $XORGCONFIG
-+.IB __projectroot__/lib/X11/ $XORGCONFIG
- .I /etc/X11/__xconfigfile__
- .I /etc/__xconfigfile__
- .IR __projectroot__/etc/X11/__xconfigfile__. <hostname>
-@@ -67,10 +67,10 @@ search locations are as follows:
- .nf
- <cmdline>
- .IR /etc/X11/ <cmdline>
--.IR __projectroot__/etc/X11/ <cmdline>
-+.IR __projectroot__/lib/X11/ <cmdline>
- .B $XORGCONFIG
- .IB /etc/X11/ $XORGCONFIG
--.IB __projectroot__/etc/X11/ $XORGCONFIG
-+.IB __projectroot__/lib/X11/ $XORGCONFIG
- .I /etc/X11/__xconfigfile__
- .I /etc/__xconfigfile__
- .IR __projectroot__/etc/X11/__xconfigfile__. <hostname>
 diff --git a/include/xorg-server.h.in b/include/xorg-server.h.in
 index 8086f32..37b9315 100644
 --- a/include/xorg-server.h.in
@@ -80,3 +51,30 @@
  #ifdef _LP64
  #define _XSERVER64 1
  #endif
+--- a/hw/xfree86/man/xorg.conf.man	Wed Sep  5 16:06:49 2012
++++ b/hw/xfree86/man/xorg.conf.man	Wed Sep  5 16:08:06 2012
+@@ -36,9 +36,9 @@
+ .RS 4
+ .nf
+ .IR /etc/X11/ <cmdline>
+-.IR __projectroot__/etc/X11/ <cmdline>
++.IR __projectroot__/lib/X11/ <cmdline>
+ .IB /etc/X11/ $XORGCONFIG
+-.IB __projectroot__/etc/X11/ $XORGCONFIG
++.IB __projectroot__/lib/X11/ $XORGCONFIG
+ .I /etc/X11/xorg.conf
+ .I /etc/xorg.conf
+ .IR __projectroot__/etc/X11/xorg.conf. <hostname>
+@@ -67,10 +67,10 @@
+ .nf
+ <cmdline>
+ .IR /etc/X11/ <cmdline>
+-.IR __projectroot__/etc/X11/ <cmdline>
++.IR __projectroot__/lib/X11/ <cmdline>
+ .B $XORGCONFIG
+ .IB /etc/X11/ $XORGCONFIG
+-.IB __projectroot__/etc/X11/ $XORGCONFIG
++.IB __projectroot__/lib/X11/ $XORGCONFIG
+ .I /etc/X11/xorg.conf
+ .I /etc/xorg.conf
+ .IR __projectroot__/etc/X11/xorg.conf. <hostname>
--- a/open-src/xserver/xorg/sun-src/hw/xfree86/dixmods/iamodule.c	Fri Nov 02 15:59:08 2012 -0700
+++ b/open-src/xserver/xorg/sun-src/hw/xfree86/dixmods/iamodule.c	Mon Nov 05 16:17:08 2012 -0800
@@ -38,8 +38,6 @@
 {
     IAExtensionInit,
     IANAME,
-    NULL,
-    NULL,
     NULL
 };
 
--- a/open-src/xserver/xorg/sun-src/hw/xfree86/dixmods/tsolmodule.c	Fri Nov 02 15:59:08 2012 -0700
+++ b/open-src/xserver/xorg/sun-src/hw/xfree86/dixmods/tsolmodule.c	Mon Nov 05 16:17:08 2012 -0800
@@ -37,8 +37,6 @@
 ExtensionModule xtsolExt = {
     TsolExtensionInit,
     "SUN_TSOL",
-    NULL,
-    NULL,
     NULL
 };
 
--- a/open-src/xserver/xorg/sun-src/os/dtlogin.c	Fri Nov 02 15:59:08 2012 -0700
+++ b/open-src/xserver/xorg/sun-src/os/dtlogin.c	Mon Nov 05 16:17:08 2012 -0800
@@ -204,7 +204,7 @@
     pScreen->CloseScreen = pScreenPriv->CloseScreen;
     free (pScreenPriv);
 
-    return (*pScreen->CloseScreen) (i, pScreen);
+    return (*pScreen->CloseScreen) (pScreen);
 }
 
 static void
--- a/open-src/xserver/xorg/xtsol.patch	Fri Nov 02 15:59:08 2012 -0700
+++ b/open-src/xserver/xorg/xtsol.patch	Mon Nov 05 16:17:08 2012 -0800
@@ -328,25 +328,6 @@
 +libxtsol_la_LIBADD = $(top_builddir)/tsol/libxtsol.la $(PIXMAN_LIBS)
 +libxtsol_la_SOURCES = tsolmodule.c
 +endif
-diff --git a/include/dix.h b/include/dix.h
-index d604e06..012a5a5 100644
---- a/include/dix.h
-+++ b/include/dix.h
-@@ -164,6 +164,14 @@ extern _X_EXPORT void MarkClientException(ClientPtr /*client */ );
- 
- extern _X_HIDDEN Bool CreateConnectionBlock(void);
- 
-+#ifdef TSOL
-+extern _X_EXPORT int DoGetImage(ClientPtr client, int format, Drawable drawable, 
-+                      int x, int y, int width, int height, 
-+                      Mask planemask, xGetImageReply **im_return);
-+
-+extern _X_EXPORT int GetGeometry(ClientPtr client, xGetGeometryReply *rep);
-+#endif
-+
- /* dixutils.c */
- 
- extern _X_EXPORT int CompareISOLatin1Lowered(const unsigned char * /*a */ ,
 diff --git a/include/extnsionst.h b/include/extnsionst.h
 index e825236..5417c57 100644
 --- a/include/extnsionst.h
@@ -431,75 +412,6 @@
                            ClientPtr /*client */ );
  
  extern void ProcessPointerEvent(InternalEvent * /* ev */ ,
-diff --git a/include/window.h b/include/window.h
-index 64c56ae..f3a8a37 100644
---- a/include/window.h
-+++ b/include/window.h
-@@ -229,4 +229,10 @@ extern _X_EXPORT void EnableMapUnmapEvents(WindowPtr /* pWin */ );
- extern _X_EXPORT void SetRootClip(ScreenPtr pScreen, Bool enable);
- extern _X_EXPORT void PrintWindowTree(void);
- 
-+#ifdef TSOL
-+# include "validate.h" /* needed for VTKind enum definition */
-+extern _X_EXPORT void ReflectStackChange(WindowPtr pWin, WindowPtr pSib,
-+                                         VTKind  kind);
-+#endif
-+
- #endif                          /* WINDOW_H */
-diff --git a/mi/miinitext.c b/mi/miinitext.c
-index 433aec7..08b9309 100644
---- a/mi/miinitext.c
-+++ b/mi/miinitext.c
-@@ -65,6 +65,7 @@ SOFTWARE.
- #undef DAMAGE
- #undef COMPOSITE
- #undef MITSHM
-+#undef TSOL
- #endif
- 
- #ifdef HAVE_XNEST_CONFIG_H
-@@ -158,6 +159,9 @@ extern Bool noGEExtension;
- #ifdef SolarisIAExtension
- Bool noIAExtension;
- #endif
-+#ifdef TSOL
-+Bool noXTSolExtension;
-+#endif
- 
- #ifndef XFree86LOADER
- #define INITARGS void
-@@ -193,6 +197,9 @@ typedef void (*InitExtension) (INITARGS);
- #include <X11/extensions/interactive.h>
- #include "../IA/interactive_srv.h"
- #endif
-+#ifdef TSOL
-+#include "../tsol/tsolextension.h"
-+#endif
- 
- /* FIXME: this whole block of externs should be from the appropriate headers */
- #ifdef MITSHM
-@@ -319,6 +326,9 @@ static ExtensionToggle ExtensionToggleList[] = {
- #ifdef SolarisIAExtension
-     { IANAME /* "SolarisIA" */, &noIAExtension },
- #endif
-+#ifdef TSOL
-+    { TSOLNAME /* "SUN_TSOL" */, &noXTSolExtension },
-+#endif
- #ifdef RES
-     {"X-Resource", &noResExtension},
- #endif
-@@ -512,6 +522,11 @@ InitExtensions(int argc, char *argv[])
- #ifdef SolarisIAExtension
-     if (!noIAExtension) IAExtensionInit();
- #endif
-+#ifdef TSOL
-+    if (!noXTSolExtension) {
-+        TsolExtensionInit();
-+    }
-+#endif
- }
- 
- #else                           /* XFree86LOADER */
 diff --git a/os/connection.c b/os/connection.c
 index 1099752..f9ba2d7 100644
 --- a/os/connection.c
@@ -563,3 +475,54 @@
      /* Allow any client to connect without authorization on a launchd socket,
         because it is securely created -- this prevents a race condition on launch */
      if (trans_conn->flags & TRANS_NOXAUTH) {
+--- a/include/dix.h	Wed Sep 12 09:31:22 2012
++++ b/include/dix.h	Wed Sep 12 09:32:04 2012
+@@ -166,6 +166,14 @@
+ 
+ extern _X_HIDDEN Bool CreateConnectionBlock(void);
+ 
++#ifdef TSOL
++extern _X_EXPORT int DoGetImage(ClientPtr client, int format, Drawable drawable,
++                      int x, int y, int width, int height,
++                      Mask planemask, xGetImageReply **im_return);
++
++extern _X_EXPORT int GetGeometry(ClientPtr client, xGetGeometryReply *rep);
++#endif
++
+ /* dixutils.c */
+ 
+ extern _X_EXPORT int CompareISOLatin1Lowered(const unsigned char * /*a */ ,
+--- a/include/window.h	Wed Sep 12 09:32:37 2012
++++ b/include/window.h	Wed Sep 12 09:33:11 2012
+@@ -227,5 +227,11 @@
+ extern _X_EXPORT void SetRootClip(ScreenPtr pScreen, Bool enable);
+ extern _X_EXPORT void PrintWindowTree(void);
+ 
++#ifdef TSOL
++#include "validate.h" /* needed for VTKind enum definition */
++extern _X_EXPORT void ReflectStackChange(WindowPtr pWin, WindowPtr pSib,
++                                         VTKind  kind);
++#endif
++
+ extern _X_EXPORT VisualPtr WindowGetVisual(WindowPtr /*pWin*/);
+ #endif                          /* WINDOW_H */
+--- a/mi/miinitext.c	Wed Sep 12 09:34:15 2012
++++ b/mi/miinitext.c	Wed Sep 12 09:37:36 2012
+@@ -90,6 +90,7 @@
+ #undef DAMAGE
+ #undef COMPOSITE
+ #undef MITSHM
++#undef TSOL
+ #endif
+ 
+ #ifdef HAVE_XNEST_CONFIG_H
+@@ -154,6 +155,9 @@
+ #ifdef SolarisIAExtension
+     { IANAME /* "SolarisIA" */, &noIAExtension },
+ #endif
++#ifdef TSOL
++    { TSOLNAME /* "SUN_TSOL" */, &noXTSolExtension },
++#endif
+ #ifdef RES
+     {"X-Resource", &noResExtension},
+ #endif
--- a/open-src/xserver/xvnc/Makefile	Fri Nov 02 15:59:08 2012 -0700
+++ b/open-src/xserver/xvnc/Makefile	Mon Nov 05 16:17:08 2012 -0800
@@ -62,9 +62,10 @@
 SOURCE_URL_SET=yes
 
 # Patches to apply to source after unpacking, in order
-SOURCE_PATCHES += $(SOURCE_DIR)/unix/xserver110.patch,'-p0 -d unix'
+SOURCE_PATCHES += $(SOURCE_DIR)/unix/xserver113.patch,'-p0 -d unix'
 SOURCE_PATCHES += tigervnc11-xorg111.patch,-p1
 SOURCE_PATCHES += tigervnc11-xorg112.patch,'-p0 -d unix'
+SOURCE_PATCHES += tigervnc11-xorg113.patch,'-p0 -d unix'
 SOURCE_PATCHES += xorg-1.12.1.patch,-p1
 SOURCE_PATCHES += no-nasm.patch,-p1
 SOURCE_PATCHES += applet-html.patch
@@ -171,6 +172,7 @@
 		SOURCE_PATCHES="$(XORG_SOURCE_PATCHES:%=../xorg/%)" \
 		SOURCE_DIR="$(XORG_BUILD_DIR)" \
 		XORG_BUILD_DIR="$(XORG_BUILD_DIR)"
+	(cd $(SOURCE_DIR) && $(LNDIR) ../../sun-src)
 	touch $(XORG_PATCHED_TARGET)
 
 # Command line options to GNU autoconf configure script for Xvnc
@@ -192,7 +194,8 @@
 	-D_XOPEN_SOURCE=500 -D__EXTENSIONS__ \
 	-D__extension__=\"\" \
 	-I$(PWD)/$(SOURCE_DIR)/common \
-	-I$(PWD)/$(SOURCE_DIR)/unix/vncconfig
+	-I$(PWD)/$(SOURCE_DIR)/unix/vncconfig \
+	-I$(PWD)/$(SOURCE_DIR)/unix/xserver/miext/damage \
 
 # Workaround for Java failure with JDK 7 in S11U1b12 - continue using JDK 6 for now
 MODULE_BUILD_ENV = PATH="/usr/jdk/instances/jdk1.6.0/bin:$$PATH"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/open-src/xserver/xvnc/sun-src/unix/xserver113.patch	Mon Nov 05 16:17:08 2012 -0800
@@ -0,0 +1,107 @@
+
+--- xserver/configure.ac	Mon Sep 17 11:33:02 2012
++++ xserver/configure.ac	Mon Sep 17 11:35:17 2012
+@@ -31,7 +31,6 @@
+ RELEASE_NAME="Iced Tea"
+ AC_CONFIG_SRCDIR([Makefile.am])
+ AM_INIT_AUTOMAKE([foreign dist-bzip2])
+-AM_MAINTAINER_MODE
+ 
+ # Require xorg-macros minimum of 1.14 for XORG_COMPILER_BRAND in XORG_DEFAULT_OPTIONS
+ m4_ifndef([XORG_MACROS_VERSION],
+@@ -73,6 +72,7 @@
+ AC_CONFIG_HEADERS(include/version-config.h)
+ 
+ AM_PROG_AS
++AC_PROG_CXX
+ AC_PROG_LN_S
+ AC_LIBTOOL_WIN32_DLL
+ AC_DISABLE_STATIC
+@@ -1583,7 +1583,15 @@
+ 	AC_SUBST([XVFB_SYS_LIBS])
+ fi
+ 
++dnl Xvnc DDX
++AC_SUBST([XVNC_CPPFLAGS], ["-DHAVE_DIX_CONFIG_H $XEXT_INC $FB_INC $MI_INC $RENDER_INC $RANDR_INC"])
++AC_SUBST([XVNC_LIBS], ["$FB_LIB $FIXES_LIB $XEXT_LIB $CONFIG_LIB $DBE_LIB $RECORD_LIB $GLX_LIBS $RANDR_LIB $RENDER_LIB $DAMAGE_LIB $MIEXT_SYNC_LIB $MIEXT_DAMAGE_LIB $MIEXT_SHADOW_LIB $XI_LIB $XKB_LIB $XKB_STUB_LIB $COMPOSITE_LIB $MAIN_LIB"])
++AC_SUBST([XVNC_SYS_LIBS], ["$GLX_SYS_LIBS"])
+ 
++dnl This is necessary to allow Xvnc to statically link with GnuTLS
++AC_ARG_VAR(GNUTLS_LDFLAGS, [Custom linker flags for using GnuTLS, e.g. -L{GnuTLS directory}/lib -lgnutls])
++AC_SUBST(GNUTLS_LDFLAGS)
++
+ dnl Xnest DDX
+ 
+ PKG_CHECK_MODULES(XNESTMODULES, [$LIBXEXT x11 xau $XDMCP_MODULES], [have_xnest=yes], [have_xnest=no])
+@@ -1674,6 +1682,8 @@
+ 	xorg_bus_bsdpci=no
+ 	xorg_bus_sparc=no
+ 
++AC_DEFINE_UNQUOTED(XORG_VERSION_CURRENT, [$VENDOR_RELEASE], [Current Xorg version])
++
+ 	AC_MSG_CHECKING([whether to build Xorg PCI functions])
+ 	if test "x$PCI" = xyes; then
+ 
+@@ -1839,7 +1849,6 @@
+ 	AC_DEFINE(XORG_SERVER, 1, [Building Xorg server])
+ 	AC_DEFINE(XORGSERVER, 1, [Building Xorg server])
+ 	AC_DEFINE(XFree86Server, 1, [Building XFree86 server])
+-	AC_DEFINE_UNQUOTED(XORG_VERSION_CURRENT, [$VENDOR_RELEASE], [Current Xorg version])
+ 	AC_DEFINE(NEED_XF86_TYPES, 1, [Need XFree86 typedefs])
+ 	AC_DEFINE(NEED_XF86_PROTOTYPES, 1, [Need XFree86 helper functions])
+ 	AC_DEFINE(__XSERVERNAME__, "Xorg", [Name of X server])
+@@ -2305,6 +2314,7 @@
+ hw/dmx/man/Makefile
+ hw/vfb/Makefile
+ hw/vfb/man/Makefile
++hw/vnc/Makefile
+ hw/xnest/Makefile
+ hw/xnest/man/Makefile
+ hw/xwin/Makefile
+--- xserver/hw/Makefile.am	Mon Sep 17 11:35:43 2012
++++ xserver/hw/Makefile.am	Mon Sep 17 11:35:55 2012
+@@ -33,7 +33,8 @@
+ 	$(XNEST_SUBDIRS)	\
+ 	$(DMX_SUBDIRS)		\
+ 	$(KDRIVE_SUBDIRS)	\
+-	$(XQUARTZ_SUBDIRS)
++	$(XQUARTZ_SUBDIRS)	\
++	vnc
+ 
+ DIST_SUBDIRS = dmx xfree86 vfb xnest xwin xquartz kdrive
+ 
+--- xserver/mi/miinitext.c Wed Oct 10 12:33:15 2012
++++ xserver/mi/miinitext.c       Wed Oct 10 12:33:49 2012
+@@ -136,6 +136,11 @@
+ extern void TsolExtensionInit(void);
+ #endif
+ 
++#ifdef TIGERVNC
++extern void vncExtensionInit(INITARGS);
++#endif
++
++
+ static ExtensionToggle ExtensionToggleList[] = {
+     /* sort order is extension name string as shown in xdpyinfo */
+     {"Generic Events", &noGEExtension},
+@@ -311,6 +316,9 @@
+ #ifdef DPMSExtension
+     {DPMSExtensionInit, DPMSExtensionName, &noDPMSExtension},
+ #endif
++#ifdef TIGERVNC
++    {vncExtensionInit, "VNC", NULL},
++#endif
+ #ifdef RES
+     {ResExtensionInit, XRES_NAME, &noResExtension},
+ #endif
+
+--- xserver/configure.ac	Fri Oct 26 11:05:29 2012
++++ xserver/configure.ac	Fri Oct 26 11:07:28 2012
+@@ -1849,6 +1849,7 @@
+ 	AC_DEFINE(XORG_SERVER, 1, [Building Xorg server])
+ 	AC_DEFINE(XORGSERVER, 1, [Building Xorg server])
+ 	AC_DEFINE(XFree86Server, 1, [Building XFree86 server])
++	AC_DEFINE(XFree86LOADER, 1, [Building loadable XFree86 server])
+ 	AC_DEFINE(NEED_XF86_TYPES, 1, [Need XFree86 typedefs])
+ 	AC_DEFINE(NEED_XF86_PROTOTYPES, 1, [Need XFree86 helper functions])
+ 	AC_DEFINE(__XSERVERNAME__, "Xorg", [Name of X server])
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/open-src/xserver/xvnc/tigervnc11-xorg113.patch	Mon Nov 05 16:17:08 2012 -0800
@@ -0,0 +1,152 @@
+--- xserver/hw/vnc/xorg-version.h	Mon Oct  8 15:50:23 2012
++++ xserver/hw/vnc/xorg-version.h	Mon Oct  8 15:53:10 2012
+@@ -40,6 +40,8 @@
+ #define XORG 111
+ #elif XORG_VERSION_CURRENT < ((1 * 10000000) + (12 * 100000) + (99 * 1000))
+ #define XORG 112
++#elif XORG_VERSION_CURRENT < ((1 * 10000000) + (13 * 100000) + (99 * 1000))
++#define XORG 113
+ #else
+ #error "X.Org newer than 1.10 is not supported"
+ #endif
+diff -up tigervnc/unix/xserver/hw/vnc/vncHooks.cc.xorg113 tigervnc/unix/xserver/hw/vnc/vncHooks.cc
+--- xserver/hw/vnc/vncHooks.cc.xorg113	2012-07-19 21:31:37.191820942 -0400
++++ xserver/hw/vnc/vncHooks.cc	2012-07-19 21:36:00.327531293 -0400
+@@ -116,7 +116,7 @@ static DevPrivateKeyRec vncHooksGCKeyRec
+ 
+ // screen functions
+ 
+-static Bool vncHooksCloseScreen(int i, ScreenPtr pScreen);
++static Bool vncHooksCloseScreen(ScreenPtr pScreen);
+ static Bool vncHooksCreateGC(GCPtr pGC);
+ static void vncHooksCopyWindow(WindowPtr pWin, DDXPointRec ptOldOrg,
+                                RegionPtr pOldRegion);
+@@ -133,7 +133,7 @@ static Bool vncHooksDisplayCursor(
+ 				  DeviceIntPtr pDev,
+ #endif
+ 				  ScreenPtr pScreen, CursorPtr cursor);
+-static void vncHooksBlockHandler(int i, pointer blockData, pointer pTimeout,
++static void vncHooksBlockHandler(ScreenPtr pScreen_, pointer pTimeout,
+                                  pointer pReadmask);
+ #ifdef RENDER
+ static void vncHooksComposite(CARD8 op, PicturePtr pSrc, PicturePtr pMask, 
+@@ -335,7 +335,7 @@ Bool vncHooksInit(ScreenPtr pScreen, Xse
+ // CloseScreen - unwrap the screen functions and call the original CloseScreen
+ // function
+ 
+-static Bool vncHooksCloseScreen(int i, ScreenPtr pScreen_)
++static Bool vncHooksCloseScreen(ScreenPtr pScreen_)
+ {
+   SCREEN_UNWRAP(pScreen_, CloseScreen);
+ 
+@@ -366,7 +366,7 @@ static Bool vncHooksCloseScreen(int i, S
+ 
+   DBGPRINT((stderr,"vncHooksCloseScreen: unwrapped screen functions\n"));
+ 
+-  return (*pScreen->CloseScreen)(i, pScreen);
++  return (*pScreen->CloseScreen)(pScreen);
+ }
+ 
+ // CreateGC - wrap the "GC funcs"
+@@ -531,14 +531,14 @@ static Bool vncHooksDisplayCursor(
+ // BlockHandler - ignore any changes during the block handler - it's likely
+ // these are just drawing the cursor.
+ 
+-static void vncHooksBlockHandler(int i, pointer blockData, pointer pTimeout,
++static void vncHooksBlockHandler(ScreenPtr pScreen_, pointer pTimeout,
+                                  pointer pReadmask)
+ {
+-  SCREEN_UNWRAP(screenInfo.screens[i], BlockHandler);
++  SCREEN_UNWRAP(pScreen_, BlockHandler);
+ 
+   vncHooksScreen->desktop->ignoreHooks(true);
+ 
+-  (*pScreen->BlockHandler) (i, blockData, pTimeout, pReadmask);
++  (*pScreen->BlockHandler) (pScreen, pTimeout, pReadmask);
+ 
+   vncHooksScreen->desktop->ignoreHooks(false);
+ 
+diff -up tigervnc/unix/xserver/hw/vnc/xf86vncModule.cc.xorg113 tigervnc/unix/xserver/hw/vnc/xf86vncModule.cc
+--- xserver/hw/vnc/xf86vncModule.cc.xorg113	2012-07-19 21:19:27.558942606 -0400
++++ xserver/hw/vnc/xf86vncModule.cc	2012-07-19 21:19:27.574942408 -0400
+@@ -53,8 +53,6 @@ ExtensionModule vncExt =
+ {
+     vncExtensionInitWithParams,
+     "VNC",
+-    NULL,
+-    NULL,
+     NULL
+ };
+ 
+diff -up xserver/hw/vnc/xvnc.cc.xorg113 tigervnc/unix/xserver/hw/vnc/xvnc.cc
+--- xserver/hw/vnc/xvnc.cc.xorg113	2012-07-19 21:36:33.078121854 -0400
++++ xserver/hw/vnc/xvnc.cc	2012-07-19 21:39:49.685663920 -0400
+@@ -267,7 +267,7 @@ OsVendorInit()
+ }
+ 
+ void
+-OsVendorFatalError()
++OsVendorFatalError(const char *f, va_list args)
+ {
+ }
+ 
+@@ -1135,9 +1135,9 @@ static Bool vncRandRSetConfig (ScreenPtr
+ #endif
+ 
+ static Bool
+-vfbCloseScreen(int index, ScreenPtr pScreen)
++vfbCloseScreen(ScreenPtr pScreen)
+ {
+-    vfbScreenInfoPtr pvfb = &vfbScreens[index];
++    vfbScreenInfoPtr pvfb = &vfbScreens[pScreen->myNum];
+     int i;
+  
+     pScreen->CloseScreen = pvfb->closeScreen;
+@@ -1149,13 +1149,13 @@ vfbCloseScreen(int index, ScreenPtr pScr
+     for (i = 0; i < MAXSCREENS; i++)
+ 	InstalledMaps[i] = NULL;
+ 
+-    return pScreen->CloseScreen(index, pScreen);
++    return pScreen->CloseScreen(pScreen);
+ }
+ 
+ static Bool
+-vfbScreenInit(int index, ScreenPtr pScreen, int argc, char **argv)
++vfbScreenInit(ScreenPtr pScreen, int argc, char **argv)
+ {
+-    vfbScreenInfoPtr pvfb = &vfbScreens[index];
++    vfbScreenInfoPtr pvfb = &vfbScreens[pScreen->myNum];
+     int dpi;
+     int ret;
+     void *pbits;
+@@ -1167,8 +1167,8 @@ vfbScreenInit(int index, ScreenPtr pScre
+ 
+     pbits = vfbAllocateFramebufferMemory(&pvfb->fb);
+     if (!pbits) return FALSE;
+-    vncFbptr[index] = pbits;
+-    vncFbstride[index] = pvfb->fb.paddedWidth;
++    vncFbptr[pScreen->myNum] = pbits;
++    vncFbstride[pScreen->myNum] = pvfb->fb.paddedWidth;
+ 
+    miSetPixmapDepths();
+
+--- xserver/configure.ac	Wed Oct 10 16:13:08 2012
++++ xserver/configure.ac	Wed Oct 10 16:13:43 2012
+@@ -1628,6 +1628,8 @@
+ fi
+ AC_MSG_RESULT([$XORG])
+ 
++AC_DEFINE_UNQUOTED(XORG_VERSION_CURRENT, [$VENDOR_RELEASE], [Current Xorg version])
++
+ if test "x$XORG" = xyes; then
+ 	XORG_DDXINCS='-I$(top_srcdir)/hw/xfree86 -I$(top_srcdir)/hw/xfree86/include -I$(top_srcdir)/hw/xfree86/common'
+ 	XORG_OSINCS='-I$(top_srcdir)/hw/xfree86/os-support -I$(top_srcdir)/hw/xfree86/os-support/bus -I$(top_srcdir)/os'
+@@ -1682,8 +1684,6 @@
+ 	xorg_bus_bsdpci=no
+ 	xorg_bus_sparc=no
+ 
+-AC_DEFINE_UNQUOTED(XORG_VERSION_CURRENT, [$VENDOR_RELEASE], [Current Xorg version])
+-
+ 	AC_MSG_CHECKING([whether to build Xorg PCI functions])
+ 	if test "x$PCI" = xyes; then
+ 
--- a/pkg/manifests/x11-library-libdrm.p5m	Fri Nov 02 15:59:08 2012 -0700
+++ b/pkg/manifests/x11-library-libdrm.p5m	Mon Nov 05 16:17:08 2012 -0800
@@ -48,21 +48,28 @@
 file path=usr/include/xf86drmMode.h
 file path=usr/lib/$(ARCH64)/pkgconfig/libdrm.pc
 $(i386_ONLY)file path=usr/lib/$(ARCH64)/pkgconfig/libdrm_intel.pc
+$(i386_ONLY)file path=usr/lib/$(ARCH64)/pkgconfig/libdrm_radeon.pc
 file path=usr/lib/$(ARCH64)/pkgconfig/libkms.pc
 file path=usr/lib/pkgconfig/libdrm.pc
 $(i386_ONLY)file path=usr/lib/pkgconfig/libdrm_intel.pc
+$(i386_ONLY)file path=usr/lib/pkgconfig/libdrm_radeon.pc
 file path=usr/lib/pkgconfig/libkms.pc
 link path=usr/lib/xorg/$(ARCH64)/libdrm.so target=libdrm.so.2
 file path=usr/lib/xorg/$(ARCH64)/libdrm.so.2
 $(i386_ONLY)link path=usr/lib/xorg/$(ARCH64)/libdrm_intel.so \
     target=libdrm_intel.so.1
 $(i386_ONLY)file path=usr/lib/xorg/$(ARCH64)/libdrm_intel.so.1
+$(i386_ONLY)link path=usr/lib/xorg/$(ARCH64)/libdrm_radeon.so \
+    target=libdrm_radeon.so.1
+$(i386_ONLY)file path=usr/lib/xorg/$(ARCH64)/libdrm_radeon.so.1
 link path=usr/lib/xorg/$(ARCH64)/libkms.so target=libkms.so.1
 file path=usr/lib/xorg/$(ARCH64)/libkms.so.1
 link path=usr/lib/xorg/libdrm.so target=libdrm.so.2
 file path=usr/lib/xorg/libdrm.so.2
 $(i386_ONLY)link path=usr/lib/xorg/libdrm_intel.so target=libdrm_intel.so.1
 $(i386_ONLY)file path=usr/lib/xorg/libdrm_intel.so.1
+$(i386_ONLY)link path=usr/lib/xorg/libdrm_radeon.so target=libdrm_radeon.so.1
+$(i386_ONLY)file path=usr/lib/xorg/libdrm_radeon.so.1
 link path=usr/lib/xorg/libkms.so target=libkms.so.1
 file path=usr/lib/xorg/libkms.so.1
 depend type=require fmri=pkg:/x11/header/x11-protocols facet.devel=true
--- a/pkg/manifests/x11-library-mesa.p5m	Fri Nov 02 15:59:08 2012 -0700
+++ b/pkg/manifests/x11-library-mesa.p5m	Mon Nov 05 16:17:08 2012 -0800
@@ -27,32 +27,19 @@
 link path=usr/X11/include/mesa target=../../include/mesa
 link path=usr/X11/lib/$(ARCH64)/libGLU.so target=libGLU.so.1
 link path=usr/X11/lib/$(ARCH64)/libGLU.so.1 target=../GL/$(ARCH64)/libGLU.so.1
-link path=usr/X11/lib/$(ARCH64)/libGLw.so target=libGLw.so.1
-link path=usr/X11/lib/$(ARCH64)/libGLw.so.1 target=../GL/$(ARCH64)/libGLw.so.1
 link path=usr/X11/lib/libGLU.so target=libGLU.so.1
 link path=usr/X11/lib/libGLU.so.1 target=GL/libGLU.so.1
-link path=usr/X11/lib/libGLw.so target=libGLw.so.1
-link path=usr/X11/lib/libGLw.so.1 target=GL/libGLw.so.1
 link path=usr/X11/lib/mesa target=../../lib/mesa
 dir  path=usr/include/GL
-link path=usr/include/GL/GLwDrawA.h target=../mesa/GLwDrawA.h
-link path=usr/include/GL/GLwDrawAP.h target=../mesa/GLwDrawAP.h
-link path=usr/include/GL/GLwMDrawA.h target=../mesa/GLwMDrawA.h
-link path=usr/include/GL/GLwMDrawAP.h target=../mesa/GLwMDrawAP.h
 link path=usr/include/GL/glu.h target=../mesa/glu.h
 dir  path=usr/include/GL/internal
 link path=usr/include/GL/internal/dri_interface.h \
     target=../../mesa/internal/dri_interface.h
 link path=usr/include/GL/osmesa.h target=../mesa/osmesa.h
 dir  path=usr/include/mesa
-file path=usr/include/mesa/GLwDrawA.h
-file path=usr/include/mesa/GLwDrawAP.h
-file path=usr/include/mesa/GLwMDrawA.h
-file path=usr/include/mesa/GLwMDrawAP.h
 file path=usr/include/mesa/gl.h
 file path=usr/include/mesa/gl_mangle.h
 file path=usr/include/mesa/glext.h
-file path=usr/include/mesa/glfbdev.h
 file path=usr/include/mesa/glu.h
 file path=usr/include/mesa/glu_mangle.h
 file path=usr/include/mesa/glx.h
@@ -60,57 +47,41 @@
 file path=usr/include/mesa/glxext.h
 dir  path=usr/include/mesa/internal
 file path=usr/include/mesa/internal/dri_interface.h
-file path=usr/include/mesa/mesa_wgl.h
 file path=usr/include/mesa/osmesa.h
 file path=usr/include/mesa/vms_x_fix.h
 file path=usr/include/mesa/wglext.h
 file path=usr/include/mesa/wmesa.h
 link path=usr/lib/$(ARCH64)/libGLU.so target=libGLU.so.1
 link path=usr/lib/$(ARCH64)/libGLU.so.1 target=../GL/$(ARCH64)/libGLU.so.1
-link path=usr/lib/$(ARCH64)/libGLw.so target=libGLw.so.1
-link path=usr/lib/$(ARCH64)/libGLw.so.1 target=../GL/$(ARCH64)/libGLw.so.1
 file path=usr/lib/$(ARCH64)/pkgconfig/dri.pc
 file path=usr/lib/$(ARCH64)/pkgconfig/gl.pc
 file path=usr/lib/$(ARCH64)/pkgconfig/glu.pc
-file path=usr/lib/$(ARCH64)/pkgconfig/glw.pc
 dir  path=usr/lib/GL
 dir  path=usr/lib/GL/$(ARCH64)
 link path=usr/lib/GL/$(ARCH64)/libGLU.so target=libGLU.so.1
 link path=usr/lib/GL/$(ARCH64)/libGLU.so.1 \
     target=../../mesa/$(ARCH64)/libGLU.so.1
-link path=usr/lib/GL/$(ARCH64)/libGLw.so target=libGLw.so.1
-link path=usr/lib/GL/$(ARCH64)/libGLw.so.1 \
-    target=../../mesa/$(ARCH64)/libGLw.so.1
 link path=usr/lib/GL/libGLU.so target=libGLU.so.1
 link path=usr/lib/GL/libGLU.so.1 target=../mesa/libGLU.so.1
-link path=usr/lib/GL/libGLw.so target=libGLw.so.1
-link path=usr/lib/GL/libGLw.so.1 target=../mesa/libGLw.so.1
 link path=usr/lib/libGLU.so target=libGLU.so.1
 link path=usr/lib/libGLU.so.1 target=GL/libGLU.so.1
-link path=usr/lib/libGLw.so target=libGLw.so.1
-link path=usr/lib/libGLw.so.1 target=GL/libGLw.so.1
 dir  path=usr/lib/mesa
 dir  path=usr/lib/mesa/$(ARCH64)
 link path=usr/lib/mesa/$(ARCH64)/libGL.so target=libGL.so.1
 file path=usr/lib/mesa/$(ARCH64)/libGL.so.1
 link path=usr/lib/mesa/$(ARCH64)/libGLU.so target=libGLU.so.1
 file path=usr/lib/mesa/$(ARCH64)/libGLU.so.1
-link path=usr/lib/mesa/$(ARCH64)/libGLw.so target=libGLw.so.1
-file path=usr/lib/mesa/$(ARCH64)/libGLw.so.1
 link path=usr/lib/mesa/64 target=$(ARCH64)
 link path=usr/lib/mesa/libGL.so target=libGL.so.1
 file path=usr/lib/mesa/libGL.so.1
 link path=usr/lib/mesa/libGLU.so target=libGLU.so.1
 file path=usr/lib/mesa/libGLU.so.1
-link path=usr/lib/mesa/libGLw.so target=libGLw.so.1
-file path=usr/lib/mesa/libGLw.so.1
 dir  path=usr/lib/mesa/modules
 dir  path=usr/lib/mesa/modules/extensions
 file path=usr/lib/mesa/modules/extensions/libglx.so
 file path=usr/lib/pkgconfig/dri.pc
 file path=usr/lib/pkgconfig/gl.pc
 file path=usr/lib/pkgconfig/glu.pc
-file path=usr/lib/pkgconfig/glw.pc
 dir  path=usr/lib/xorg/modules/dri/$(ARCH64)
 file path=usr/lib/xorg/modules/dri/$(ARCH64)/swrast_dri.so
 file path=usr/lib/xorg/modules/dri/swrast_dri.so
--- a/pkg/manifests/x11-library-xcb-util.p5m	Fri Nov 02 15:59:08 2012 -0700
+++ b/pkg/manifests/x11-library-xcb-util.p5m	Mon Nov 05 16:17:08 2012 -0800
@@ -34,7 +34,6 @@
 #
 file path=usr/include/xcb/xcb_atom.h
 file path=usr/include/xcb/xcb_aux.h
-file path=usr/include/xcb/xcb_bitops.h
 file path=usr/include/xcb/xcb_event.h
 file path=usr/include/xcb/xcb_ewmh.h
 file path=usr/include/xcb/xcb_icccm.h
@@ -44,8 +43,8 @@
 file path=usr/include/xcb/xcb_renderutil.h
 file path=usr/include/xcb/xcb_util.h
 #
-link path=usr/lib/$(ARCH64)/libxcb-ewmh.so target=libxcb-ewmh.so.1
-file path=usr/lib/$(ARCH64)/libxcb-ewmh.so.1
+link path=usr/lib/$(ARCH64)/libxcb-ewmh.so target=libxcb-ewmh.so.2
+file path=usr/lib/$(ARCH64)/libxcb-ewmh.so.2
 link path=usr/lib/$(ARCH64)/libxcb-icccm.so target=libxcb-icccm.so.4
 file path=usr/lib/$(ARCH64)/libxcb-icccm.so.4
 link path=usr/lib/$(ARCH64)/libxcb-image.so target=libxcb-image.so.0
@@ -54,8 +53,8 @@
 file path=usr/lib/$(ARCH64)/libxcb-keysyms.so.1
 link path=usr/lib/$(ARCH64)/libxcb-render-util.so target=libxcb-render-util.so.0
 file path=usr/lib/$(ARCH64)/libxcb-render-util.so.0
-link path=usr/lib/$(ARCH64)/libxcb-util.so target=libxcb-util.so.0
-file path=usr/lib/$(ARCH64)/libxcb-util.so.0
+link path=usr/lib/$(ARCH64)/libxcb-util.so target=libxcb-util.so.1
+file path=usr/lib/$(ARCH64)/libxcb-util.so.1
 #
 file path=usr/lib/$(ARCH64)/pkgconfig/xcb-atom.pc
 file path=usr/lib/$(ARCH64)/pkgconfig/xcb-aux.pc
@@ -67,8 +66,8 @@
 file path=usr/lib/$(ARCH64)/pkgconfig/xcb-renderutil.pc
 file path=usr/lib/$(ARCH64)/pkgconfig/xcb-util.pc
 #
-link path=usr/lib/libxcb-ewmh.so target=libxcb-ewmh.so.1
-file path=usr/lib/libxcb-ewmh.so.1
+link path=usr/lib/libxcb-ewmh.so target=libxcb-ewmh.so.2
+file path=usr/lib/libxcb-ewmh.so.2
 link path=usr/lib/libxcb-icccm.so target=libxcb-icccm.so.4
 file path=usr/lib/libxcb-icccm.so.4
 link path=usr/lib/libxcb-image.so target=libxcb-image.so.0
@@ -77,8 +76,8 @@
 file path=usr/lib/libxcb-keysyms.so.1
 link path=usr/lib/libxcb-render-util.so target=libxcb-render-util.so.0
 file path=usr/lib/libxcb-render-util.so.0
-link path=usr/lib/libxcb-util.so target=libxcb-util.so.0
-file path=usr/lib/libxcb-util.so.0
+link path=usr/lib/libxcb-util.so target=libxcb-util.so.1
+file path=usr/lib/libxcb-util.so.1
 #
 file path=usr/lib/pkgconfig/xcb-atom.pc
 file path=usr/lib/pkgconfig/xcb-aux.pc
--- a/pkg/manifests/x11-server-xorg-driver-xorg-input-mouse.p5m	Fri Nov 02 15:59:08 2012 -0700
+++ b/pkg/manifests/x11-server-xorg-driver-xorg-input-mouse.p5m	Mon Nov 05 16:17:08 2012 -0800
@@ -1,4 +1,4 @@
-# Copyright (c) 2010, 2011, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2010, 2012, Oracle and/or its affiliates. All rights reserved.
 #
 # Permission is hereby granted, free of charge, to any person obtaining a
 # copy of this software and associated documentation files (the "Software"),
@@ -27,3 +27,4 @@
 file path=usr/lib/xorg/modules/input/mouse_drv.so
 file path=usr/share/doc/X11/README.mouse
 file path=usr/share/man/man7/mousedrv.7
+file path=usr/share/pkgconfig/xorg-mouse.pc
--- a/pkg/manifests/x11-server-xorg-driver-xorg-video-ati.p5m	Fri Nov 02 15:59:08 2012 -0700
+++ b/pkg/manifests/x11-server-xorg-driver-xorg-video-ati.p5m	Mon Nov 05 16:17:08 2012 -0800
@@ -27,10 +27,8 @@
     value="Xorg video driver for ATI Radeon and Radeon HD graphics devices from AMD"
 set name=variant.arch value=i386
 file path=usr/lib/xorg/modules/dri/$(ARCH64)/r200_dri.so
-file path=usr/lib/xorg/modules/dri/$(ARCH64)/r300_dri.so
 file path=usr/lib/xorg/modules/dri/$(ARCH64)/radeon_dri.so
 file path=usr/lib/xorg/modules/dri/r200_dri.so
-file path=usr/lib/xorg/modules/dri/r300_dri.so
 file path=usr/lib/xorg/modules/dri/radeon_dri.so
 file path=usr/lib/xorg/modules/drivers/ati_drv.so
 file path=usr/lib/xorg/modules/drivers/radeon_drv.so
--- a/pkg/manifests/x11-server-xorg.p5m	Fri Nov 02 15:59:08 2012 -0700
+++ b/pkg/manifests/x11-server-xorg.p5m	Mon Nov 05 16:17:08 2012 -0800
@@ -163,9 +163,6 @@
 file path=usr/include/xorg/wfbrename.h
 file path=usr/include/xorg/window.h
 file path=usr/include/xorg/windowstr.h
-file path=usr/include/xorg/xaa.h
-file path=usr/include/xorg/xaalocal.h
-file path=usr/include/xorg/xaarop.h
 file path=usr/include/xorg/xace.h
 file path=usr/include/xorg/xacestr.h
 file path=usr/include/xorg/xf86.h
@@ -219,12 +216,7 @@
 dir  path=usr/lib/xorg/modules/dri
 dir  path=usr/lib/xorg/modules/drivers
 dir  path=usr/lib/xorg/modules/extensions
-file path=usr/lib/xorg/modules/extensions/libdbe.so
-file path=usr/lib/xorg/modules/extensions/libdri.so
-file path=usr/lib/xorg/modules/extensions/libdri2.so
-file path=usr/lib/xorg/modules/extensions/libextmod.so
 file path=usr/lib/xorg/modules/extensions/libia.so
-file path=usr/lib/xorg/modules/extensions/librecord.so
 dir  path=usr/lib/xorg/modules/input
 file path=usr/lib/xorg/modules/libexa.so
 file path=usr/lib/xorg/modules/libfb.so
@@ -235,7 +227,6 @@
 file path=usr/lib/xorg/modules/libvbe.so
 file path=usr/lib/xorg/modules/libvgahw.so
 file path=usr/lib/xorg/modules/libwfb.so
-file path=usr/lib/xorg/modules/libxaa.so
 dir  path=usr/lib/xorg/modules/multimedia
 file path=usr/lib/xorg/modules/multimedia/bt829_drv.so
 file path=usr/lib/xorg/modules/multimedia/fi1236_drv.so