aboutsummaryrefslogtreecommitdiff
path: root/x11-servers
diff options
context:
space:
mode:
authorEric Anholt <anholt@FreeBSD.org>2005-01-02 00:32:07 +0000
committerEric Anholt <anholt@FreeBSD.org>2005-01-02 00:32:07 +0000
commit08ae21589bcd1d97310653a08de59141f43e5365 (patch)
treeafcc2c3e84a91f49ddb85cd5bae2ddfa57627248 /x11-servers
parent800e73f0c0ef367ffa2bf7af6fbc3a16b95c3be3 (diff)
downloadports-08ae21589bcd1d97310653a08de59141f43e5365.tar.gz
ports-08ae21589bcd1d97310653a08de59141f43e5365.zip
[1] Fix a crash on startup with i830+ systems due to failure to follow an API
change that occurred. [2] Install the xorg.conf referred to by xorg.conf(5). Installation was disabled during the XF86 name avoidance phase, but could still be of use. [3] Add a section about the Composite extension to xorg.conf. [4] Add MakeDllModules YES to the WITH_DEBUG flag's options. While it won't package correctly, you can't actually debug modules (where crashes almost always happen) without it. [5] Merge fixes from XORG-6_8-branch for i810 driver crashes in on CloseScreen, ringbuffer lockups, and various warnings. [6] Recognize R_ALPHA_SREL32 relocation type in elfloader. PR: [1] ports/75425 [2] ports/73915 [6] ports/73257 Submitted by: [1] Marc Silver, marcs at draenor dot org [2] Frank J. Laszlo, laszlof at vonostingroup dot com [6] Ken Stailey kstailey at yahoo dot com [6] r1.4 of X.Org CVS. Approved by: portmgr
Notes
Notes: svn path=/head/; revision=125635
Diffstat (limited to 'x11-servers')
-rw-r--r--x11-servers/xorg-server-snap/Makefile1
-rw-r--r--x11-servers/xorg-server-snap/files/patch-elfloader.c35
-rw-r--r--x11-servers/xorg-server-snap/files/patch-i810-6_8437
-rw-r--r--x11-servers/xorg-server-snap/files/patch-i830_video.c11
-rw-r--r--x11-servers/xorg-server-snap/files/patch-xfree86-Imakefile12
-rw-r--r--x11-servers/xorg-server-snap/files/patch-xorgconf.cpp14
-rw-r--r--x11-servers/xorg-server-snap/pkg-plist1
-rw-r--r--x11-servers/xorg-server-snap/scripts/configure1
-rw-r--r--x11-servers/xorg-server/Makefile1
-rw-r--r--x11-servers/xorg-server/files/patch-elfloader.c35
-rw-r--r--x11-servers/xorg-server/files/patch-i810-6_8437
-rw-r--r--x11-servers/xorg-server/files/patch-i830_video.c11
-rw-r--r--x11-servers/xorg-server/files/patch-xfree86-Imakefile12
-rw-r--r--x11-servers/xorg-server/files/patch-xorgconf.cpp14
-rw-r--r--x11-servers/xorg-server/pkg-plist1
-rw-r--r--x11-servers/xorg-server/scripts/configure1
16 files changed, 1024 insertions, 0 deletions
diff --git a/x11-servers/xorg-server-snap/Makefile b/x11-servers/xorg-server-snap/Makefile
index 22568e1f09fd..4beb4cea3060 100644
--- a/x11-servers/xorg-server-snap/Makefile
+++ b/x11-servers/xorg-server-snap/Makefile
@@ -7,6 +7,7 @@
PORTNAME= xorg-server
PORTVERSION= 6.8.1
+PORTREVISION= 1
CATEGORIES= x11-servers
MASTER_SITES= ${MASTER_SITE_XORG}
MASTER_SITE_SUBDIR= X11R6.8.1/tars
diff --git a/x11-servers/xorg-server-snap/files/patch-elfloader.c b/x11-servers/xorg-server-snap/files/patch-elfloader.c
new file mode 100644
index 000000000000..d1942e55e8a5
--- /dev/null
+++ b/x11-servers/xorg-server-snap/files/patch-elfloader.c
@@ -0,0 +1,35 @@
+Index: programs/Xserver/hw/xfree86/loader/elfloader.c
+===================================================================
+RCS file: /cvs/xorg/xc/programs/Xserver/hw/xfree86/loader/elfloader.c,v
+retrieving revision 1.3
+retrieving revision 1.4
+diff -u -u -r1.3 -r1.4
+--- programs/Xserver/hw/xfree86/loader/elfloader.c 30 Oct 2004 20:33:43 -0000 1.3
++++ programs/Xserver/hw/xfree86/loader/elfloader.c 9 Nov 2004 15:58:41 -0000 1.4
+@@ -1,4 +1,4 @@
+-/* $XdotOrg: xc/programs/Xserver/hw/xfree86/loader/elfloader.c,v 1.3 2004/10/30 20:33:43 alanc Exp $ */
++/* $XdotOrg: xc/programs/Xserver/hw/xfree86/loader/elfloader.c,v 1.4 2004/11/09 15:58:41 ajax Exp $ */
+ /* $XFree86: xc/programs/Xserver/hw/xfree86/loader/elfloader.c,v 1.61tsi Exp $ */
+
+ /*
+@@ -1609,6 +1609,20 @@
+ break;
+ }
+
++ case R_ALPHA_SREL32:
++ {
++ dest32 = (unsigned int *)(secp + rel->r_offset);
++ symval += rel->r_addend;
++ symval -= (unsigned long) dest32;
++ if ((long)symval >= 0x80000000
++ || (long)symval < -(long)0x80000000)
++ FatalError("R_ALPHA_SREL32 overflow for %s: %lx\n",
++ ElfGetSymbolName(elffile, ELF_R_SYM(rel->r_info)),
++ symval);
++ *dest32 = symval;
++ break;
++ }
++
+ #endif /* alpha */
+ #if defined(__mc68000__)
+ case R_68K_32:
diff --git a/x11-servers/xorg-server-snap/files/patch-i810-6_8 b/x11-servers/xorg-server-snap/files/patch-i810-6_8
new file mode 100644
index 000000000000..698da0065d1a
--- /dev/null
+++ b/x11-servers/xorg-server-snap/files/patch-i810-6_8
@@ -0,0 +1,437 @@
+Index: programs/Xserver/hw/xfree86/drivers/i810/common.h
+===================================================================
+RCS file: /cvs/xorg/xc/programs/Xserver/hw/xfree86/drivers/i810/common.h,v
+retrieving revision 1.3
+retrieving revision 1.3.4.1
+diff -u -u -r1.3 -r1.3.4.1
+--- programs/Xserver/hw/xfree86/drivers/i810/common.h 22 Jun 2004 14:28:46 -0000 1.3
++++ programs/Xserver/hw/xfree86/drivers/i810/common.h 15 Dec 2004 09:35:23 -0000 1.3.4.1
+@@ -173,7 +173,7 @@
+ #define BEGIN_LP_RING(n) \
+ unsigned int outring, ringmask; \
+ volatile unsigned char *virt; \
+- unsigned int needed; \
++ int needed; \
+ if ((n) & 1) \
+ ErrorF("BEGIN_LP_RING called with odd argument: %d\n", n); \
+ if ((n) > 2 && (I810_DEBUG&DEBUG_ALWAYS_SYNC)) \
+@@ -206,7 +206,7 @@
+ #define BEGIN_LP_RING(n) \
+ unsigned int outring, ringmask; \
+ volatile unsigned char *virt; \
+- unsigned int needed; \
++ int needed; \
+ if ((n) & 1) \
+ ErrorF("BEGIN_LP_RING called with odd argument: %d\n", n); \
+ if ((n) > 2 && (I810_DEBUG&DEBUG_ALWAYS_SYNC)) \
+Index: programs/Xserver/hw/xfree86/drivers/i810/i810.h
+===================================================================
+RCS file: /cvs/xorg/xc/programs/Xserver/hw/xfree86/drivers/i810/i810.h,v
+retrieving revision 1.4
+retrieving revision 1.4.4.1
+diff -u -u -r1.4 -r1.4.4.1
+--- programs/Xserver/hw/xfree86/drivers/i810/i810.h 22 Jun 2004 14:28:46 -0000 1.4
++++ programs/Xserver/hw/xfree86/drivers/i810/i810.h 15 Dec 2004 09:35:23 -0000 1.4.4.1
+@@ -172,7 +172,7 @@
+ unsigned long OverlayPhysical;
+ unsigned long OverlayStart;
+ int colorKey;
+- int surfaceAllocation[I810_TOTAL_SURFACES];
++ unsigned int surfaceAllocation[I810_TOTAL_SURFACES];
+ int numSurfaces;
+
+ DGAModePtr DGAModes;
+@@ -295,9 +295,10 @@
+ extern void I810Sync(ScrnInfoPtr pScrn);
+ extern unsigned long I810LocalToPhysical(ScrnInfoPtr pScrn,
+ unsigned long local);
+-extern int I810AllocLow(I810MemRange * result, I810MemRange * pool, int size);
++extern int I810AllocLow(I810MemRange * result, I810MemRange * pool,
++ int size);
+ extern int I810AllocHigh(I810MemRange * result, I810MemRange * pool,
+- int size);
++ int size);
+ extern Bool I810AllocateFront(ScrnInfoPtr pScrn);
+
+ extern int I810AllocateGARTMemory(ScrnInfoPtr pScrn);
+Index: programs/Xserver/hw/xfree86/drivers/i810/i810_accel.c
+===================================================================
+RCS file: /cvs/xorg/xc/programs/Xserver/hw/xfree86/drivers/i810/i810_accel.c,v
+retrieving revision 1.4
+retrieving revision 1.4.2.1
+diff -u -u -r1.4 -r1.4.2.1
+--- programs/Xserver/hw/xfree86/drivers/i810/i810_accel.c 30 Jul 2004 20:30:52 -0000 1.4
++++ programs/Xserver/hw/xfree86/drivers/i810/i810_accel.c 15 Dec 2004 09:35:23 -0000 1.4.2.1
+@@ -259,7 +259,7 @@
+ #ifdef XF86DRI
+ /* VT switching tries to do this.
+ */
+- if (!pI810->LockHeld && pI810->directRenderingEnabled) {
++ if ((!pI810->LockHeld && pI810->directRenderingEnabled) || !pScrn->vtSema) {
+ return;
+ }
+ #endif
+Index: programs/Xserver/hw/xfree86/drivers/i810/i810_dri.c
+===================================================================
+RCS file: /cvs/xorg/xc/programs/Xserver/hw/xfree86/drivers/i810/i810_dri.c,v
+retrieving revision 1.4
+retrieving revision 1.4.4.1
+diff -u -u -r1.4 -r1.4.4.1
+--- programs/Xserver/hw/xfree86/drivers/i810/i810_dri.c 22 Jun 2004 14:28:46 -0000 1.4
++++ programs/Xserver/hw/xfree86/drivers/i810/i810_dri.c 15 Dec 2004 09:35:23 -0000 1.4.4.1
+@@ -290,7 +290,7 @@
+ unsigned long dcacheHandle;
+ int sysmem_size = 0;
+ int back_size = 0;
+- int pitch_idx = 0;
++ unsigned int pitch_idx = 0;
+ int bufs;
+ int width = pScrn->displayWidth * pI810->cpp;
+ int i;
+Index: programs/Xserver/hw/xfree86/drivers/i810/i810_driver.c
+===================================================================
+RCS file: /cvs/xorg/xc/programs/Xserver/hw/xfree86/drivers/i810/i810_driver.c,v
+retrieving revision 1.9
+retrieving revision 1.9.2.1
+diff -u -u -r1.9 -r1.9.2.1
+--- programs/Xserver/hw/xfree86/drivers/i810/i810_driver.c 25 Aug 2004 00:30:41 -0000 1.9
++++ programs/Xserver/hw/xfree86/drivers/i810/i810_driver.c 15 Dec 2004 09:35:23 -0000 1.9.2.1
+@@ -1124,14 +1124,6 @@
+ xf86SetOperatingState(resVgaIo, pI810->pEnt->index, ResUnusedOpr);
+ xf86SetOperatingState(resVgaMem, pI810->pEnt->index, ResDisableOpr);
+
+- pI810->LpRing = xalloc(sizeof(I810RingBuffer));
+- if (!pI810->LpRing) {
+- xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
+- "Could not allocate lpring data structure.\n");
+- I810FreeRec(pScrn);
+- return FALSE;
+- }
+-
+ return TRUE;
+ }
+
+@@ -1159,7 +1151,7 @@
+ I810MapMem(ScrnInfoPtr pScrn)
+ {
+ I810Ptr pI810 = I810PTR(pScrn);
+- unsigned i;
++ long i;
+
+ for (i = 2; i < pI810->FbMapSize; i <<= 1) ;
+ pI810->FbMapSize = i;
+@@ -2074,6 +2066,13 @@
+ pI810 = I810PTR(pScrn);
+ hwp = VGAHWPTR(pScrn);
+
++ pI810->LpRing = xcalloc(sizeof(I810RingBuffer),1);
++ if (!pI810->LpRing) {
++ xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
++ "Could not allocate lpring data structure.\n");
++ return FALSE;
++ }
++
+ miClearVisualTypes();
+
+ /* Re-implemented Direct Color support, -jens */
+Index: programs/Xserver/hw/xfree86/drivers/i810/i810_memory.c
+===================================================================
+RCS file: /cvs/xorg/xc/programs/Xserver/hw/xfree86/drivers/i810/i810_memory.c,v
+retrieving revision 1.4
+retrieving revision 1.4.2.1
+diff -u -u -r1.4 -r1.4.2.1
+--- programs/Xserver/hw/xfree86/drivers/i810/i810_memory.c 30 Aug 2004 03:19:08 -0000 1.4
++++ programs/Xserver/hw/xfree86/drivers/i810/i810_memory.c 15 Dec 2004 09:35:23 -0000 1.4.2.1
+@@ -55,7 +55,7 @@
+ int
+ I810AllocLow(I810MemRange * result, I810MemRange * pool, int size)
+ {
+- if (size > pool->Size)
++ if (size > (long)pool->Size)
+ return 0;
+
+ pool->Size -= size;
+@@ -69,7 +69,7 @@
+ int
+ I810AllocHigh(I810MemRange * result, I810MemRange * pool, int size)
+ {
+- if (size > pool->Size)
++ if (size > (long)pool->Size)
+ return 0;
+
+ pool->Size -= size;
+Index: programs/Xserver/hw/xfree86/drivers/i810/i810_reg.h
+===================================================================
+RCS file: /cvs/xorg/xc/programs/Xserver/hw/xfree86/drivers/i810/i810_reg.h,v
+retrieving revision 1.3
+retrieving revision 1.3.4.1
+diff -u -u -r1.3 -r1.3.4.1
+--- programs/Xserver/hw/xfree86/drivers/i810/i810_reg.h 22 Jun 2004 14:28:46 -0000 1.3
++++ programs/Xserver/hw/xfree86/drivers/i810/i810_reg.h 15 Dec 2004 09:35:23 -0000 1.3.4.1
+@@ -459,11 +459,11 @@
+ #define I830_HEAD_MASK 0x001FFFFC
+
+ #define RING_START 0x08
+-#define START_ADDR 0x00FFFFF8
++#define START_ADDR 0x03FFFFF8
+ #define I830_RING_START_MASK 0xFFFFF000
+
+ #define RING_LEN 0x0C
+-#define RING_NR_PAGES 0x000FF000
++#define RING_NR_PAGES 0x001FF000
+ #define I830_RING_NR_PAGES 0x001FF000
+ #define RING_REPORT_MASK 0x00000006
+ #define RING_REPORT_64K 0x00000002
+Index: programs/Xserver/hw/xfree86/drivers/i810/i830.h
+===================================================================
+RCS file: /cvs/xorg/xc/programs/Xserver/hw/xfree86/drivers/i810/i830.h,v
+retrieving revision 1.5
+retrieving revision 1.5.4.1
+diff -u -u -r1.5 -r1.5.4.1
+--- programs/Xserver/hw/xfree86/drivers/i810/i830.h 6 Jul 2004 14:37:47 -0000 1.5
++++ programs/Xserver/hw/xfree86/drivers/i810/i830.h 15 Dec 2004 09:35:23 -0000 1.5.4.1
+@@ -180,17 +180,17 @@
+ int CacheLines;
+
+ /* These are set in PreInit and never changed. */
+- unsigned long FbMapSize;
+- unsigned long TotalVideoRam;
++ long FbMapSize;
++ long TotalVideoRam;
+ I830MemRange StolenMemory; /* pre-allocated memory */
+- unsigned long BIOSMemorySize; /* min stolen pool size */
++ long BIOSMemorySize; /* min stolen pool size */
+ int BIOSMemSizeLoc;
+
+ /* These change according to what has been allocated. */
+ long FreeMemory;
+ I830MemRange MemoryAperture;
+ I830MemPool StolenPool;
+- unsigned long allocatedMemory;
++ long allocatedMemory;
+
+ /* Regions allocated either from the above pools, or from agpgart. */
+ /* for single and dual head configurations */
+@@ -348,7 +348,7 @@
+ int xoffset;
+ int yoffset;
+
+- int SaveGeneration;
++ unsigned int SaveGeneration;
+ Bool vbeRestoreWorkaround;
+ Bool displayInfo;
+ Bool devicePresence;
+@@ -415,7 +415,7 @@
+ extern Bool I830BindGARTMemory(ScrnInfoPtr pScrn);
+ extern Bool I830UnbindGARTMemory(ScrnInfoPtr pScrn);
+ extern unsigned long I830AllocVidMem(ScrnInfoPtr pScrn, I830MemRange *result,
+- I830MemPool *pool, unsigned long size,
++ I830MemPool *pool, long size,
+ unsigned long alignment, int flags);
+
+ extern void I830PrintAllRegisters(I830RegPtr i830Reg);
+Index: programs/Xserver/hw/xfree86/drivers/i810/i830_driver.c
+===================================================================
+RCS file: /cvs/xorg/xc/programs/Xserver/hw/xfree86/drivers/i810/i830_driver.c,v
+retrieving revision 1.6
+retrieving revision 1.6.2.1
+diff -u -u -r1.6 -r1.6.2.1
+--- programs/Xserver/hw/xfree86/drivers/i810/i830_driver.c 30 Jul 2004 20:38:27 -0000 1.6
++++ programs/Xserver/hw/xfree86/drivers/i810/i830_driver.c 15 Dec 2004 09:35:23 -0000 1.6.2.1
+@@ -594,6 +594,7 @@
+ I830Ptr pI830 = I830PTR(pScrn);
+ vbeInfoPtr pVbe = pI830->pVbe;
+ CARD32 temp;
++
+ #ifdef I915G_WORKAROUND
+ int getmode;
+ int mode;
+@@ -1018,7 +1019,7 @@
+ I830MapMem(ScrnInfoPtr pScrn)
+ {
+ I830Ptr pI830 = I830PTR(pScrn);
+- unsigned i;
++ long i;
+
+ for (i = 2; i < pI830->FbMapSize; i <<= 1) ;
+ pI830->FbMapSize = i;
+@@ -2898,7 +2899,7 @@
+ OUTREG(LP_RING + RING_TAIL, 0);
+ OUTREG(LP_RING + RING_HEAD, 0);
+
+- if ((pI830->LpRing->mem.Start & I830_RING_START_MASK) !=
++ if ((long)(pI830->LpRing->mem.Start & I830_RING_START_MASK) !=
+ pI830->LpRing->mem.Start) {
+ xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
+ "I830SetRingRegs: Ring buffer start (%lx) violates its "
+@@ -3441,7 +3442,7 @@
+ I830Ptr pI8301 = I830PTR(pI830->entityPrivate->pScrn_1);
+
+ temp = INREG(stridereg);
+- if (temp / pI8301->cpp != pI830->entityPrivate->pScrn_1->displayWidth) {
++ if (temp / pI8301->cpp != (CARD32)(pI830->entityPrivate->pScrn_1->displayWidth)) {
+ xf86DrvMsg(pScrn->scrnIndex, X_WARNING,
+ "Correcting plane %c stride (%d -> %d)\n", PIPE_NAME(pI830->pipe),
+ (int)(temp / pI8301->cpp), pI830->entityPrivate->pScrn_1->displayWidth);
+@@ -3459,7 +3460,7 @@
+ sizereg = pI830->pipe ? DSPASIZE : DSPBSIZE;
+
+ temp = INREG(stridereg);
+- if (temp / pI8302->cpp != pI830->entityPrivate->pScrn_2->displayWidth) {
++ if (temp / pI8302->cpp != (CARD32)(pI830->entityPrivate->pScrn_2->displayWidth)) {
+ xf86DrvMsg(pScrn->scrnIndex, X_WARNING,
+ "Correcting plane %c stride (%d -> %d)\n", PIPE_NAME(!pI830->pipe),
+ (int)(temp / pI8302->cpp), pI830->entityPrivate->pScrn_2->displayWidth);
+@@ -3478,7 +3479,7 @@
+ I830Ptr pI8302 = I830PTR(pI830->entityPrivate->pScrn_2);
+
+ temp = INREG(stridereg);
+- if (temp / pI8301->cpp != pI830->entityPrivate->pScrn_1->displayWidth) {
++ if (temp / pI8301->cpp != (CARD32)(pI830->entityPrivate->pScrn_1->displayWidth)) {
+ xf86DrvMsg(pScrn->scrnIndex, X_WARNING,
+ "Correcting plane %c stride (%d -> %d)\n", PIPE_NAME(pI830->pipe),
+ (int)(temp / pI8301->cpp), pI830->entityPrivate->pScrn_1->displayWidth);
+@@ -3494,7 +3495,7 @@
+ sizereg = !pI830->pipe ? DSPASIZE : DSPBSIZE;
+
+ temp = INREG(stridereg);
+- if (temp / pI8302->cpp != pI830->entityPrivate->pScrn_2->displayWidth) {
++ if (temp / pI8302->cpp != ((CARD32)pI830->entityPrivate->pScrn_2->displayWidth)) {
+ xf86DrvMsg(pScrn->scrnIndex, X_WARNING,
+ "Correcting plane %c stride (%d -> %d)\n", PIPE_NAME(!pI830->pipe),
+ (int)(temp / pI8302->cpp), pI830->entityPrivate->pScrn_2->displayWidth);
+@@ -3515,7 +3516,7 @@
+ continue;
+
+ temp = INREG(stridereg);
+- if (temp / pI830->cpp != pScrn->displayWidth) {
++ if (temp / pI830->cpp != (CARD32)pScrn->displayWidth) {
+ xf86DrvMsg(pScrn->scrnIndex, X_WARNING,
+ "Correcting plane %c stride (%d -> %d)\n", PIPE_NAME(i),
+ (int)(temp / pI830->cpp), pScrn->displayWidth);
+@@ -4354,6 +4355,9 @@
+ SaveHWOperatingState(pScrn);
+ #endif
+
++ ResetState(pScrn, TRUE);
++ RestoreHWState(pScrn);
++
+ if (IsPrimary(pScrn)) {
+ if (!SetDisplayDevices(pScrn, pI830->savedDevices)) {
+ xf86DrvMsg(pScrn->scrnIndex, X_WARNING,
+@@ -4365,8 +4369,6 @@
+ }
+ }
+
+- ResetState(pScrn, TRUE);
+- RestoreHWState(pScrn);
+ RestoreBIOSMemSize(pScrn);
+ if (IsPrimary(pScrn))
+ I830UnbindGARTMemory(pScrn);
+@@ -4506,7 +4508,8 @@
+ ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+ I830Ptr pI830 = I830PTR(pScrn);
+ Bool on = xf86IsUnblank(mode);
+- CARD32 temp, ctrl, base, i;
++ CARD32 temp, ctrl, base;
++ int i;
+
+ DPRINTF(PFX, "I830BIOSSaveScreen: %d, on is %s\n", mode, BOOLTOSTRING(on));
+
+Index: programs/Xserver/hw/xfree86/drivers/i810/i830_memory.c
+===================================================================
+RCS file: /cvs/xorg/xc/programs/Xserver/hw/xfree86/drivers/i810/i830_memory.c,v
+retrieving revision 1.4
+retrieving revision 1.4.4.1
+diff -u -u -r1.4 -r1.4.4.1
+--- programs/Xserver/hw/xfree86/drivers/i810/i830_memory.c 6 Jul 2004 14:37:47 -0000 1.4
++++ programs/Xserver/hw/xfree86/drivers/i810/i830_memory.c 15 Dec 2004 09:35:23 -0000 1.4.4.1
+@@ -63,10 +63,10 @@
+ */
+ static unsigned long
+ AllocFromPool(ScrnInfoPtr pScrn, I830MemRange *result, I830MemPool *pool,
+- unsigned long size, unsigned long alignment, int flags)
++ long size, unsigned long alignment, int flags)
+ {
+ I830Ptr pI830 = I830PTR(pScrn);
+- unsigned long needed, start, end;
++ long needed, start, end;
+ Bool dryrun = ((flags & ALLOCATE_DRY_RUN) != 0);
+
+ if (!result || !pool || !size)
+@@ -94,7 +94,7 @@
+ }
+ }
+ if (needed > pool->Free.Size) {
+- unsigned long extra;
++ long extra;
+ /* See if the pool can be grown. */
+ if (pI830->StolenOnly && !dryrun)
+ return 0;
+@@ -107,7 +107,7 @@
+ return 0;
+ }
+
+- if (!dryrun && (extra > pI830->MemoryAperture.Size))
++ if (!dryrun && ((long)extra > pI830->MemoryAperture.Size))
+ return 0;
+
+ pool->Free.Size += extra;
+@@ -136,7 +136,7 @@
+ }
+
+ static unsigned long
+-AllocFromAGP(ScrnInfoPtr pScrn, I830MemRange *result, unsigned long size,
++AllocFromAGP(ScrnInfoPtr pScrn, I830MemRange *result, long size,
+ unsigned long alignment, int flags)
+ {
+ I830Ptr pI830 = I830PTR(pScrn);
+@@ -212,7 +212,7 @@
+
+ unsigned long
+ I830AllocVidMem(ScrnInfoPtr pScrn, I830MemRange *result, I830MemPool *pool,
+- unsigned long size, unsigned long alignment, int flags)
++ long size, unsigned long alignment, int flags)
+ {
+ I830Ptr pI830 = I830PTR(pScrn);
+ Bool dryrun = ((flags & ALLOCATE_DRY_RUN) != 0);
+@@ -392,7 +392,7 @@
+ I830Allocate2DMemory(ScrnInfoPtr pScrn, const int flags)
+ {
+ I830Ptr pI830 = I830PTR(pScrn);
+- unsigned long size, alloced;
++ long size, alloced;
+ Bool dryrun = ((flags & ALLOCATE_DRY_RUN) != 0);
+ int verbosity = dryrun ? 4 : 1;
+ const char *s = dryrun ? "[dryrun] " : "";
+@@ -610,9 +610,9 @@
+ return FALSE;
+ }
+ } else {
+- unsigned long lineSize;
+- unsigned long extra = 0;
+- unsigned long maxFb = 0;
++ long lineSize;
++ long extra = 0;
++ long maxFb = 0;
+
+ /*
+ * XXX Need to "free" up any 3D allocations if the DRI ended up
+@@ -857,7 +857,7 @@
+ I830GetExcessMemoryAllocations(ScrnInfoPtr pScrn)
+ {
+ I830Ptr pI830 = I830PTR(pScrn);
+- unsigned long allocated;
++ long allocated;
+
+ allocated = pI830->StolenPool.Total.Size + pI830->allocatedMemory;
+ if (allocated > pI830->TotalVideoRam)
+@@ -1367,7 +1367,7 @@
+ I830Ptr pI830 = I830PTR(pScrn);
+ int pitch, ntiles, i;
+ static int nextTile = 0;
+- static int tileGeneration = -1;
++ static unsigned int tileGeneration = -1;
+
+ #if 0
+ /* Hack to "improve" the alignment of the front buffer.
diff --git a/x11-servers/xorg-server-snap/files/patch-i830_video.c b/x11-servers/xorg-server-snap/files/patch-i830_video.c
new file mode 100644
index 000000000000..259ad42669c1
--- /dev/null
+++ b/x11-servers/xorg-server-snap/files/patch-i830_video.c
@@ -0,0 +1,11 @@
+--- programs/Xserver/hw/xfree86/drivers/i810/i830_video.c.orig Fri Dec 31 13:43:36 2004
++++ programs/Xserver/hw/xfree86/drivers/i810/i830_video.c Fri Dec 31 13:44:22 2004
+@@ -632,7 +632,7 @@
+ pPriv->gamma0 = 0x080808;
+
+ /* gotta uninit this someplace */
+- REGION_INIT(pScreen, &pPriv->clip, NullBox, 0);
++ REGION_NULL(pScreen, &pPriv->clip);
+
+ pI830->adaptor = adapt;
+
diff --git a/x11-servers/xorg-server-snap/files/patch-xfree86-Imakefile b/x11-servers/xorg-server-snap/files/patch-xfree86-Imakefile
new file mode 100644
index 000000000000..2bd0fe1e1745
--- /dev/null
+++ b/x11-servers/xorg-server-snap/files/patch-xfree86-Imakefile
@@ -0,0 +1,12 @@
+--- programs/Xserver/hw/xfree86/Imakefile.orig Fri Dec 31 14:08:32 2004
++++ programs/Xserver/hw/xfree86/Imakefile Fri Dec 31 14:08:34 2004
+@@ -217,8 +217,8 @@
+ InstallManPage(Xorg,$(MANDIR))
+ InstallGenManPage(xorg.conf,$(FILEMANDIR),$(FILEMANSUFFIX))
+
++InstallNamedNonExec($(XORGCONFIG),xorg.conf.eg,$(LIBDIR))
+ #if 0
+-InstallNamedNonExec($(XORGCONFIG),XF86Config.eg,$(LIBDIR))
+ InstallNamedNonExec($(XF98CONFIG),XF86Config.98,$(LIBDIR))
+ #endif
+ InstallNamedNonExec(Options,Options,$(LIBDIR))
diff --git a/x11-servers/xorg-server-snap/files/patch-xorgconf.cpp b/x11-servers/xorg-server-snap/files/patch-xorgconf.cpp
new file mode 100644
index 000000000000..e21fac8d8484
--- /dev/null
+++ b/x11-servers/xorg-server-snap/files/patch-xorgconf.cpp
@@ -0,0 +1,14 @@
+--- programs/Xserver/hw/xfree86/xorgconf.cpp.orig Fri Dec 31 14:40:27 2004
++++ programs/Xserver/hw/xfree86/xorgconf.cpp Fri Dec 31 14:40:28 2004
+@@ -624,3 +624,11 @@
+ InputDevice "Keyboard1" "CoreKeyboard"
+ EndSection
+
++
++XCOMM Two experimental extensions are available -- Composite and XEVIE. Uncomment
++XCOMM the section below to enable Composite. Many extensions can also be disabled
++XCOMM in this manner.
++
++XCOMM Section "Extensions"
++XCOMM Option "Composite" "Enable"
++XCOMM EndSection
diff --git a/x11-servers/xorg-server-snap/pkg-plist b/x11-servers/xorg-server-snap/pkg-plist
index e69e46d0ec56..6ef4d946e931 100644
--- a/x11-servers/xorg-server-snap/pkg-plist
+++ b/x11-servers/xorg-server-snap/pkg-plist
@@ -76,6 +76,7 @@ lib/X11/etc/Xinstall.sh
lib/X11/etc/xmodmap.std
lib/X11/getconfig/cfg.sample
lib/X11/getconfig/xorg.cfg
+lib/X11/xorg.conf.eg
lib/X11/xserver/SecurityPolicy
%%AMD64_I386%%lib/modules/drivers/apm_drv.o
%%AMD64_I386%%lib/modules/drivers/ark_drv.o
diff --git a/x11-servers/xorg-server-snap/scripts/configure b/x11-servers/xorg-server-snap/scripts/configure
index ba6b214f80d3..267479720d4d 100644
--- a/x11-servers/xorg-server-snap/scripts/configure
+++ b/x11-servers/xorg-server-snap/scripts/configure
@@ -28,6 +28,7 @@ echo "#define BuildXFree86ConfigTools YES" >> $LOCALDEF
if [ X$WITH_DEBUG != X ]; then
export CFLAGS="-g $CFLAGS"
echo "#define InstPgmFlags" >> $LOCALDEF
+ echo "#define MakeDllModules YES" >> $LOCALDEF
fi
sh $PORTSDIR/x11-servers/xorg-server/scripts/configure.gen
diff --git a/x11-servers/xorg-server/Makefile b/x11-servers/xorg-server/Makefile
index 22568e1f09fd..4beb4cea3060 100644
--- a/x11-servers/xorg-server/Makefile
+++ b/x11-servers/xorg-server/Makefile
@@ -7,6 +7,7 @@
PORTNAME= xorg-server
PORTVERSION= 6.8.1
+PORTREVISION= 1
CATEGORIES= x11-servers
MASTER_SITES= ${MASTER_SITE_XORG}
MASTER_SITE_SUBDIR= X11R6.8.1/tars
diff --git a/x11-servers/xorg-server/files/patch-elfloader.c b/x11-servers/xorg-server/files/patch-elfloader.c
new file mode 100644
index 000000000000..d1942e55e8a5
--- /dev/null
+++ b/x11-servers/xorg-server/files/patch-elfloader.c
@@ -0,0 +1,35 @@
+Index: programs/Xserver/hw/xfree86/loader/elfloader.c
+===================================================================
+RCS file: /cvs/xorg/xc/programs/Xserver/hw/xfree86/loader/elfloader.c,v
+retrieving revision 1.3
+retrieving revision 1.4
+diff -u -u -r1.3 -r1.4
+--- programs/Xserver/hw/xfree86/loader/elfloader.c 30 Oct 2004 20:33:43 -0000 1.3
++++ programs/Xserver/hw/xfree86/loader/elfloader.c 9 Nov 2004 15:58:41 -0000 1.4
+@@ -1,4 +1,4 @@
+-/* $XdotOrg: xc/programs/Xserver/hw/xfree86/loader/elfloader.c,v 1.3 2004/10/30 20:33:43 alanc Exp $ */
++/* $XdotOrg: xc/programs/Xserver/hw/xfree86/loader/elfloader.c,v 1.4 2004/11/09 15:58:41 ajax Exp $ */
+ /* $XFree86: xc/programs/Xserver/hw/xfree86/loader/elfloader.c,v 1.61tsi Exp $ */
+
+ /*
+@@ -1609,6 +1609,20 @@
+ break;
+ }
+
++ case R_ALPHA_SREL32:
++ {
++ dest32 = (unsigned int *)(secp + rel->r_offset);
++ symval += rel->r_addend;
++ symval -= (unsigned long) dest32;
++ if ((long)symval >= 0x80000000
++ || (long)symval < -(long)0x80000000)
++ FatalError("R_ALPHA_SREL32 overflow for %s: %lx\n",
++ ElfGetSymbolName(elffile, ELF_R_SYM(rel->r_info)),
++ symval);
++ *dest32 = symval;
++ break;
++ }
++
+ #endif /* alpha */
+ #if defined(__mc68000__)
+ case R_68K_32:
diff --git a/x11-servers/xorg-server/files/patch-i810-6_8 b/x11-servers/xorg-server/files/patch-i810-6_8
new file mode 100644
index 000000000000..698da0065d1a
--- /dev/null
+++ b/x11-servers/xorg-server/files/patch-i810-6_8
@@ -0,0 +1,437 @@
+Index: programs/Xserver/hw/xfree86/drivers/i810/common.h
+===================================================================
+RCS file: /cvs/xorg/xc/programs/Xserver/hw/xfree86/drivers/i810/common.h,v
+retrieving revision 1.3
+retrieving revision 1.3.4.1
+diff -u -u -r1.3 -r1.3.4.1
+--- programs/Xserver/hw/xfree86/drivers/i810/common.h 22 Jun 2004 14:28:46 -0000 1.3
++++ programs/Xserver/hw/xfree86/drivers/i810/common.h 15 Dec 2004 09:35:23 -0000 1.3.4.1
+@@ -173,7 +173,7 @@
+ #define BEGIN_LP_RING(n) \
+ unsigned int outring, ringmask; \
+ volatile unsigned char *virt; \
+- unsigned int needed; \
++ int needed; \
+ if ((n) & 1) \
+ ErrorF("BEGIN_LP_RING called with odd argument: %d\n", n); \
+ if ((n) > 2 && (I810_DEBUG&DEBUG_ALWAYS_SYNC)) \
+@@ -206,7 +206,7 @@
+ #define BEGIN_LP_RING(n) \
+ unsigned int outring, ringmask; \
+ volatile unsigned char *virt; \
+- unsigned int needed; \
++ int needed; \
+ if ((n) & 1) \
+ ErrorF("BEGIN_LP_RING called with odd argument: %d\n", n); \
+ if ((n) > 2 && (I810_DEBUG&DEBUG_ALWAYS_SYNC)) \
+Index: programs/Xserver/hw/xfree86/drivers/i810/i810.h
+===================================================================
+RCS file: /cvs/xorg/xc/programs/Xserver/hw/xfree86/drivers/i810/i810.h,v
+retrieving revision 1.4
+retrieving revision 1.4.4.1
+diff -u -u -r1.4 -r1.4.4.1
+--- programs/Xserver/hw/xfree86/drivers/i810/i810.h 22 Jun 2004 14:28:46 -0000 1.4
++++ programs/Xserver/hw/xfree86/drivers/i810/i810.h 15 Dec 2004 09:35:23 -0000 1.4.4.1
+@@ -172,7 +172,7 @@
+ unsigned long OverlayPhysical;
+ unsigned long OverlayStart;
+ int colorKey;
+- int surfaceAllocation[I810_TOTAL_SURFACES];
++ unsigned int surfaceAllocation[I810_TOTAL_SURFACES];
+ int numSurfaces;
+
+ DGAModePtr DGAModes;
+@@ -295,9 +295,10 @@
+ extern void I810Sync(ScrnInfoPtr pScrn);
+ extern unsigned long I810LocalToPhysical(ScrnInfoPtr pScrn,
+ unsigned long local);
+-extern int I810AllocLow(I810MemRange * result, I810MemRange * pool, int size);
++extern int I810AllocLow(I810MemRange * result, I810MemRange * pool,
++ int size);
+ extern int I810AllocHigh(I810MemRange * result, I810MemRange * pool,
+- int size);
++ int size);
+ extern Bool I810AllocateFront(ScrnInfoPtr pScrn);
+
+ extern int I810AllocateGARTMemory(ScrnInfoPtr pScrn);
+Index: programs/Xserver/hw/xfree86/drivers/i810/i810_accel.c
+===================================================================
+RCS file: /cvs/xorg/xc/programs/Xserver/hw/xfree86/drivers/i810/i810_accel.c,v
+retrieving revision 1.4
+retrieving revision 1.4.2.1
+diff -u -u -r1.4 -r1.4.2.1
+--- programs/Xserver/hw/xfree86/drivers/i810/i810_accel.c 30 Jul 2004 20:30:52 -0000 1.4
++++ programs/Xserver/hw/xfree86/drivers/i810/i810_accel.c 15 Dec 2004 09:35:23 -0000 1.4.2.1
+@@ -259,7 +259,7 @@
+ #ifdef XF86DRI
+ /* VT switching tries to do this.
+ */
+- if (!pI810->LockHeld && pI810->directRenderingEnabled) {
++ if ((!pI810->LockHeld && pI810->directRenderingEnabled) || !pScrn->vtSema) {
+ return;
+ }
+ #endif
+Index: programs/Xserver/hw/xfree86/drivers/i810/i810_dri.c
+===================================================================
+RCS file: /cvs/xorg/xc/programs/Xserver/hw/xfree86/drivers/i810/i810_dri.c,v
+retrieving revision 1.4
+retrieving revision 1.4.4.1
+diff -u -u -r1.4 -r1.4.4.1
+--- programs/Xserver/hw/xfree86/drivers/i810/i810_dri.c 22 Jun 2004 14:28:46 -0000 1.4
++++ programs/Xserver/hw/xfree86/drivers/i810/i810_dri.c 15 Dec 2004 09:35:23 -0000 1.4.4.1
+@@ -290,7 +290,7 @@
+ unsigned long dcacheHandle;
+ int sysmem_size = 0;
+ int back_size = 0;
+- int pitch_idx = 0;
++ unsigned int pitch_idx = 0;
+ int bufs;
+ int width = pScrn->displayWidth * pI810->cpp;
+ int i;
+Index: programs/Xserver/hw/xfree86/drivers/i810/i810_driver.c
+===================================================================
+RCS file: /cvs/xorg/xc/programs/Xserver/hw/xfree86/drivers/i810/i810_driver.c,v
+retrieving revision 1.9
+retrieving revision 1.9.2.1
+diff -u -u -r1.9 -r1.9.2.1
+--- programs/Xserver/hw/xfree86/drivers/i810/i810_driver.c 25 Aug 2004 00:30:41 -0000 1.9
++++ programs/Xserver/hw/xfree86/drivers/i810/i810_driver.c 15 Dec 2004 09:35:23 -0000 1.9.2.1
+@@ -1124,14 +1124,6 @@
+ xf86SetOperatingState(resVgaIo, pI810->pEnt->index, ResUnusedOpr);
+ xf86SetOperatingState(resVgaMem, pI810->pEnt->index, ResDisableOpr);
+
+- pI810->LpRing = xalloc(sizeof(I810RingBuffer));
+- if (!pI810->LpRing) {
+- xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
+- "Could not allocate lpring data structure.\n");
+- I810FreeRec(pScrn);
+- return FALSE;
+- }
+-
+ return TRUE;
+ }
+
+@@ -1159,7 +1151,7 @@
+ I810MapMem(ScrnInfoPtr pScrn)
+ {
+ I810Ptr pI810 = I810PTR(pScrn);
+- unsigned i;
++ long i;
+
+ for (i = 2; i < pI810->FbMapSize; i <<= 1) ;
+ pI810->FbMapSize = i;
+@@ -2074,6 +2066,13 @@
+ pI810 = I810PTR(pScrn);
+ hwp = VGAHWPTR(pScrn);
+
++ pI810->LpRing = xcalloc(sizeof(I810RingBuffer),1);
++ if (!pI810->LpRing) {
++ xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
++ "Could not allocate lpring data structure.\n");
++ return FALSE;
++ }
++
+ miClearVisualTypes();
+
+ /* Re-implemented Direct Color support, -jens */
+Index: programs/Xserver/hw/xfree86/drivers/i810/i810_memory.c
+===================================================================
+RCS file: /cvs/xorg/xc/programs/Xserver/hw/xfree86/drivers/i810/i810_memory.c,v
+retrieving revision 1.4
+retrieving revision 1.4.2.1
+diff -u -u -r1.4 -r1.4.2.1
+--- programs/Xserver/hw/xfree86/drivers/i810/i810_memory.c 30 Aug 2004 03:19:08 -0000 1.4
++++ programs/Xserver/hw/xfree86/drivers/i810/i810_memory.c 15 Dec 2004 09:35:23 -0000 1.4.2.1
+@@ -55,7 +55,7 @@
+ int
+ I810AllocLow(I810MemRange * result, I810MemRange * pool, int size)
+ {
+- if (size > pool->Size)
++ if (size > (long)pool->Size)
+ return 0;
+
+ pool->Size -= size;
+@@ -69,7 +69,7 @@
+ int
+ I810AllocHigh(I810MemRange * result, I810MemRange * pool, int size)
+ {
+- if (size > pool->Size)
++ if (size > (long)pool->Size)
+ return 0;
+
+ pool->Size -= size;
+Index: programs/Xserver/hw/xfree86/drivers/i810/i810_reg.h
+===================================================================
+RCS file: /cvs/xorg/xc/programs/Xserver/hw/xfree86/drivers/i810/i810_reg.h,v
+retrieving revision 1.3
+retrieving revision 1.3.4.1
+diff -u -u -r1.3 -r1.3.4.1
+--- programs/Xserver/hw/xfree86/drivers/i810/i810_reg.h 22 Jun 2004 14:28:46 -0000 1.3
++++ programs/Xserver/hw/xfree86/drivers/i810/i810_reg.h 15 Dec 2004 09:35:23 -0000 1.3.4.1
+@@ -459,11 +459,11 @@
+ #define I830_HEAD_MASK 0x001FFFFC
+
+ #define RING_START 0x08
+-#define START_ADDR 0x00FFFFF8
++#define START_ADDR 0x03FFFFF8
+ #define I830_RING_START_MASK 0xFFFFF000
+
+ #define RING_LEN 0x0C
+-#define RING_NR_PAGES 0x000FF000
++#define RING_NR_PAGES 0x001FF000
+ #define I830_RING_NR_PAGES 0x001FF000
+ #define RING_REPORT_MASK 0x00000006
+ #define RING_REPORT_64K 0x00000002
+Index: programs/Xserver/hw/xfree86/drivers/i810/i830.h
+===================================================================
+RCS file: /cvs/xorg/xc/programs/Xserver/hw/xfree86/drivers/i810/i830.h,v
+retrieving revision 1.5
+retrieving revision 1.5.4.1
+diff -u -u -r1.5 -r1.5.4.1
+--- programs/Xserver/hw/xfree86/drivers/i810/i830.h 6 Jul 2004 14:37:47 -0000 1.5
++++ programs/Xserver/hw/xfree86/drivers/i810/i830.h 15 Dec 2004 09:35:23 -0000 1.5.4.1
+@@ -180,17 +180,17 @@
+ int CacheLines;
+
+ /* These are set in PreInit and never changed. */
+- unsigned long FbMapSize;
+- unsigned long TotalVideoRam;
++ long FbMapSize;
++ long TotalVideoRam;
+ I830MemRange StolenMemory; /* pre-allocated memory */
+- unsigned long BIOSMemorySize; /* min stolen pool size */
++ long BIOSMemorySize; /* min stolen pool size */
+ int BIOSMemSizeLoc;
+
+ /* These change according to what has been allocated. */
+ long FreeMemory;
+ I830MemRange MemoryAperture;
+ I830MemPool StolenPool;
+- unsigned long allocatedMemory;
++ long allocatedMemory;
+
+ /* Regions allocated either from the above pools, or from agpgart. */
+ /* for single and dual head configurations */
+@@ -348,7 +348,7 @@
+ int xoffset;
+ int yoffset;
+
+- int SaveGeneration;
++ unsigned int SaveGeneration;
+ Bool vbeRestoreWorkaround;
+ Bool displayInfo;
+ Bool devicePresence;
+@@ -415,7 +415,7 @@
+ extern Bool I830BindGARTMemory(ScrnInfoPtr pScrn);
+ extern Bool I830UnbindGARTMemory(ScrnInfoPtr pScrn);
+ extern unsigned long I830AllocVidMem(ScrnInfoPtr pScrn, I830MemRange *result,
+- I830MemPool *pool, unsigned long size,
++ I830MemPool *pool, long size,
+ unsigned long alignment, int flags);
+
+ extern void I830PrintAllRegisters(I830RegPtr i830Reg);
+Index: programs/Xserver/hw/xfree86/drivers/i810/i830_driver.c
+===================================================================
+RCS file: /cvs/xorg/xc/programs/Xserver/hw/xfree86/drivers/i810/i830_driver.c,v
+retrieving revision 1.6
+retrieving revision 1.6.2.1
+diff -u -u -r1.6 -r1.6.2.1
+--- programs/Xserver/hw/xfree86/drivers/i810/i830_driver.c 30 Jul 2004 20:38:27 -0000 1.6
++++ programs/Xserver/hw/xfree86/drivers/i810/i830_driver.c 15 Dec 2004 09:35:23 -0000 1.6.2.1
+@@ -594,6 +594,7 @@
+ I830Ptr pI830 = I830PTR(pScrn);
+ vbeInfoPtr pVbe = pI830->pVbe;
+ CARD32 temp;
++
+ #ifdef I915G_WORKAROUND
+ int getmode;
+ int mode;
+@@ -1018,7 +1019,7 @@
+ I830MapMem(ScrnInfoPtr pScrn)
+ {
+ I830Ptr pI830 = I830PTR(pScrn);
+- unsigned i;
++ long i;
+
+ for (i = 2; i < pI830->FbMapSize; i <<= 1) ;
+ pI830->FbMapSize = i;
+@@ -2898,7 +2899,7 @@
+ OUTREG(LP_RING + RING_TAIL, 0);
+ OUTREG(LP_RING + RING_HEAD, 0);
+
+- if ((pI830->LpRing->mem.Start & I830_RING_START_MASK) !=
++ if ((long)(pI830->LpRing->mem.Start & I830_RING_START_MASK) !=
+ pI830->LpRing->mem.Start) {
+ xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
+ "I830SetRingRegs: Ring buffer start (%lx) violates its "
+@@ -3441,7 +3442,7 @@
+ I830Ptr pI8301 = I830PTR(pI830->entityPrivate->pScrn_1);
+
+ temp = INREG(stridereg);
+- if (temp / pI8301->cpp != pI830->entityPrivate->pScrn_1->displayWidth) {
++ if (temp / pI8301->cpp != (CARD32)(pI830->entityPrivate->pScrn_1->displayWidth)) {
+ xf86DrvMsg(pScrn->scrnIndex, X_WARNING,
+ "Correcting plane %c stride (%d -> %d)\n", PIPE_NAME(pI830->pipe),
+ (int)(temp / pI8301->cpp), pI830->entityPrivate->pScrn_1->displayWidth);
+@@ -3459,7 +3460,7 @@
+ sizereg = pI830->pipe ? DSPASIZE : DSPBSIZE;
+
+ temp = INREG(stridereg);
+- if (temp / pI8302->cpp != pI830->entityPrivate->pScrn_2->displayWidth) {
++ if (temp / pI8302->cpp != (CARD32)(pI830->entityPrivate->pScrn_2->displayWidth)) {
+ xf86DrvMsg(pScrn->scrnIndex, X_WARNING,
+ "Correcting plane %c stride (%d -> %d)\n", PIPE_NAME(!pI830->pipe),
+ (int)(temp / pI8302->cpp), pI830->entityPrivate->pScrn_2->displayWidth);
+@@ -3478,7 +3479,7 @@
+ I830Ptr pI8302 = I830PTR(pI830->entityPrivate->pScrn_2);
+
+ temp = INREG(stridereg);
+- if (temp / pI8301->cpp != pI830->entityPrivate->pScrn_1->displayWidth) {
++ if (temp / pI8301->cpp != (CARD32)(pI830->entityPrivate->pScrn_1->displayWidth)) {
+ xf86DrvMsg(pScrn->scrnIndex, X_WARNING,
+ "Correcting plane %c stride (%d -> %d)\n", PIPE_NAME(pI830->pipe),
+ (int)(temp / pI8301->cpp), pI830->entityPrivate->pScrn_1->displayWidth);
+@@ -3494,7 +3495,7 @@
+ sizereg = !pI830->pipe ? DSPASIZE : DSPBSIZE;
+
+ temp = INREG(stridereg);
+- if (temp / pI8302->cpp != pI830->entityPrivate->pScrn_2->displayWidth) {
++ if (temp / pI8302->cpp != ((CARD32)pI830->entityPrivate->pScrn_2->displayWidth)) {
+ xf86DrvMsg(pScrn->scrnIndex, X_WARNING,
+ "Correcting plane %c stride (%d -> %d)\n", PIPE_NAME(!pI830->pipe),
+ (int)(temp / pI8302->cpp), pI830->entityPrivate->pScrn_2->displayWidth);
+@@ -3515,7 +3516,7 @@
+ continue;
+
+ temp = INREG(stridereg);
+- if (temp / pI830->cpp != pScrn->displayWidth) {
++ if (temp / pI830->cpp != (CARD32)pScrn->displayWidth) {
+ xf86DrvMsg(pScrn->scrnIndex, X_WARNING,
+ "Correcting plane %c stride (%d -> %d)\n", PIPE_NAME(i),
+ (int)(temp / pI830->cpp), pScrn->displayWidth);
+@@ -4354,6 +4355,9 @@
+ SaveHWOperatingState(pScrn);
+ #endif
+
++ ResetState(pScrn, TRUE);
++ RestoreHWState(pScrn);
++
+ if (IsPrimary(pScrn)) {
+ if (!SetDisplayDevices(pScrn, pI830->savedDevices)) {
+ xf86DrvMsg(pScrn->scrnIndex, X_WARNING,
+@@ -4365,8 +4369,6 @@
+ }
+ }
+
+- ResetState(pScrn, TRUE);
+- RestoreHWState(pScrn);
+ RestoreBIOSMemSize(pScrn);
+ if (IsPrimary(pScrn))
+ I830UnbindGARTMemory(pScrn);
+@@ -4506,7 +4508,8 @@
+ ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+ I830Ptr pI830 = I830PTR(pScrn);
+ Bool on = xf86IsUnblank(mode);
+- CARD32 temp, ctrl, base, i;
++ CARD32 temp, ctrl, base;
++ int i;
+
+ DPRINTF(PFX, "I830BIOSSaveScreen: %d, on is %s\n", mode, BOOLTOSTRING(on));
+
+Index: programs/Xserver/hw/xfree86/drivers/i810/i830_memory.c
+===================================================================
+RCS file: /cvs/xorg/xc/programs/Xserver/hw/xfree86/drivers/i810/i830_memory.c,v
+retrieving revision 1.4
+retrieving revision 1.4.4.1
+diff -u -u -r1.4 -r1.4.4.1
+--- programs/Xserver/hw/xfree86/drivers/i810/i830_memory.c 6 Jul 2004 14:37:47 -0000 1.4
++++ programs/Xserver/hw/xfree86/drivers/i810/i830_memory.c 15 Dec 2004 09:35:23 -0000 1.4.4.1
+@@ -63,10 +63,10 @@
+ */
+ static unsigned long
+ AllocFromPool(ScrnInfoPtr pScrn, I830MemRange *result, I830MemPool *pool,
+- unsigned long size, unsigned long alignment, int flags)
++ long size, unsigned long alignment, int flags)
+ {
+ I830Ptr pI830 = I830PTR(pScrn);
+- unsigned long needed, start, end;
++ long needed, start, end;
+ Bool dryrun = ((flags & ALLOCATE_DRY_RUN) != 0);
+
+ if (!result || !pool || !size)
+@@ -94,7 +94,7 @@
+ }
+ }
+ if (needed > pool->Free.Size) {
+- unsigned long extra;
++ long extra;
+ /* See if the pool can be grown. */
+ if (pI830->StolenOnly && !dryrun)
+ return 0;
+@@ -107,7 +107,7 @@
+ return 0;
+ }
+
+- if (!dryrun && (extra > pI830->MemoryAperture.Size))
++ if (!dryrun && ((long)extra > pI830->MemoryAperture.Size))
+ return 0;
+
+ pool->Free.Size += extra;
+@@ -136,7 +136,7 @@
+ }
+
+ static unsigned long
+-AllocFromAGP(ScrnInfoPtr pScrn, I830MemRange *result, unsigned long size,
++AllocFromAGP(ScrnInfoPtr pScrn, I830MemRange *result, long size,
+ unsigned long alignment, int flags)
+ {
+ I830Ptr pI830 = I830PTR(pScrn);
+@@ -212,7 +212,7 @@
+
+ unsigned long
+ I830AllocVidMem(ScrnInfoPtr pScrn, I830MemRange *result, I830MemPool *pool,
+- unsigned long size, unsigned long alignment, int flags)
++ long size, unsigned long alignment, int flags)
+ {
+ I830Ptr pI830 = I830PTR(pScrn);
+ Bool dryrun = ((flags & ALLOCATE_DRY_RUN) != 0);
+@@ -392,7 +392,7 @@
+ I830Allocate2DMemory(ScrnInfoPtr pScrn, const int flags)
+ {
+ I830Ptr pI830 = I830PTR(pScrn);
+- unsigned long size, alloced;
++ long size, alloced;
+ Bool dryrun = ((flags & ALLOCATE_DRY_RUN) != 0);
+ int verbosity = dryrun ? 4 : 1;
+ const char *s = dryrun ? "[dryrun] " : "";
+@@ -610,9 +610,9 @@
+ return FALSE;
+ }
+ } else {
+- unsigned long lineSize;
+- unsigned long extra = 0;
+- unsigned long maxFb = 0;
++ long lineSize;
++ long extra = 0;
++ long maxFb = 0;
+
+ /*
+ * XXX Need to "free" up any 3D allocations if the DRI ended up
+@@ -857,7 +857,7 @@
+ I830GetExcessMemoryAllocations(ScrnInfoPtr pScrn)
+ {
+ I830Ptr pI830 = I830PTR(pScrn);
+- unsigned long allocated;
++ long allocated;
+
+ allocated = pI830->StolenPool.Total.Size + pI830->allocatedMemory;
+ if (allocated > pI830->TotalVideoRam)
+@@ -1367,7 +1367,7 @@
+ I830Ptr pI830 = I830PTR(pScrn);
+ int pitch, ntiles, i;
+ static int nextTile = 0;
+- static int tileGeneration = -1;
++ static unsigned int tileGeneration = -1;
+
+ #if 0
+ /* Hack to "improve" the alignment of the front buffer.
diff --git a/x11-servers/xorg-server/files/patch-i830_video.c b/x11-servers/xorg-server/files/patch-i830_video.c
new file mode 100644
index 000000000000..259ad42669c1
--- /dev/null
+++ b/x11-servers/xorg-server/files/patch-i830_video.c
@@ -0,0 +1,11 @@
+--- programs/Xserver/hw/xfree86/drivers/i810/i830_video.c.orig Fri Dec 31 13:43:36 2004
++++ programs/Xserver/hw/xfree86/drivers/i810/i830_video.c Fri Dec 31 13:44:22 2004
+@@ -632,7 +632,7 @@
+ pPriv->gamma0 = 0x080808;
+
+ /* gotta uninit this someplace */
+- REGION_INIT(pScreen, &pPriv->clip, NullBox, 0);
++ REGION_NULL(pScreen, &pPriv->clip);
+
+ pI830->adaptor = adapt;
+
diff --git a/x11-servers/xorg-server/files/patch-xfree86-Imakefile b/x11-servers/xorg-server/files/patch-xfree86-Imakefile
new file mode 100644
index 000000000000..2bd0fe1e1745
--- /dev/null
+++ b/x11-servers/xorg-server/files/patch-xfree86-Imakefile
@@ -0,0 +1,12 @@
+--- programs/Xserver/hw/xfree86/Imakefile.orig Fri Dec 31 14:08:32 2004
++++ programs/Xserver/hw/xfree86/Imakefile Fri Dec 31 14:08:34 2004
+@@ -217,8 +217,8 @@
+ InstallManPage(Xorg,$(MANDIR))
+ InstallGenManPage(xorg.conf,$(FILEMANDIR),$(FILEMANSUFFIX))
+
++InstallNamedNonExec($(XORGCONFIG),xorg.conf.eg,$(LIBDIR))
+ #if 0
+-InstallNamedNonExec($(XORGCONFIG),XF86Config.eg,$(LIBDIR))
+ InstallNamedNonExec($(XF98CONFIG),XF86Config.98,$(LIBDIR))
+ #endif
+ InstallNamedNonExec(Options,Options,$(LIBDIR))
diff --git a/x11-servers/xorg-server/files/patch-xorgconf.cpp b/x11-servers/xorg-server/files/patch-xorgconf.cpp
new file mode 100644
index 000000000000..e21fac8d8484
--- /dev/null
+++ b/x11-servers/xorg-server/files/patch-xorgconf.cpp
@@ -0,0 +1,14 @@
+--- programs/Xserver/hw/xfree86/xorgconf.cpp.orig Fri Dec 31 14:40:27 2004
++++ programs/Xserver/hw/xfree86/xorgconf.cpp Fri Dec 31 14:40:28 2004
+@@ -624,3 +624,11 @@
+ InputDevice "Keyboard1" "CoreKeyboard"
+ EndSection
+
++
++XCOMM Two experimental extensions are available -- Composite and XEVIE. Uncomment
++XCOMM the section below to enable Composite. Many extensions can also be disabled
++XCOMM in this manner.
++
++XCOMM Section "Extensions"
++XCOMM Option "Composite" "Enable"
++XCOMM EndSection
diff --git a/x11-servers/xorg-server/pkg-plist b/x11-servers/xorg-server/pkg-plist
index e69e46d0ec56..6ef4d946e931 100644
--- a/x11-servers/xorg-server/pkg-plist
+++ b/x11-servers/xorg-server/pkg-plist
@@ -76,6 +76,7 @@ lib/X11/etc/Xinstall.sh
lib/X11/etc/xmodmap.std
lib/X11/getconfig/cfg.sample
lib/X11/getconfig/xorg.cfg
+lib/X11/xorg.conf.eg
lib/X11/xserver/SecurityPolicy
%%AMD64_I386%%lib/modules/drivers/apm_drv.o
%%AMD64_I386%%lib/modules/drivers/ark_drv.o
diff --git a/x11-servers/xorg-server/scripts/configure b/x11-servers/xorg-server/scripts/configure
index ba6b214f80d3..267479720d4d 100644
--- a/x11-servers/xorg-server/scripts/configure
+++ b/x11-servers/xorg-server/scripts/configure
@@ -28,6 +28,7 @@ echo "#define BuildXFree86ConfigTools YES" >> $LOCALDEF
if [ X$WITH_DEBUG != X ]; then
export CFLAGS="-g $CFLAGS"
echo "#define InstPgmFlags" >> $LOCALDEF
+ echo "#define MakeDllModules YES" >> $LOCALDEF
fi
sh $PORTSDIR/x11-servers/xorg-server/scripts/configure.gen