Update to the 6.8.99.16 snapshot, and add in a fix for a memory leak in cursor

change handling as well as a merge of some important nv changes to avoid hangs
and reduce corruption in some cases.
This commit is contained in:
Eric Anholt 2005-10-16 08:46:41 +00:00
parent 4fd61099e1
commit adc07e5471
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/head/; revision=145537
8 changed files with 318 additions and 69 deletions

View File

@ -6,8 +6,7 @@
#
PORTNAME= xorg-server
PORTVERSION= 6.8.99.12
PORTREVISION= 2
PORTVERSION= 6.8.99.16
CATEGORIES= x11-servers
MASTER_SITES= http://xorg.freedesktop.org/snapshots/
DISTNAME= xorg-x11-${PORTVERSION}

View File

@ -1,2 +1,2 @@
MD5 (xorg/xorg-x11-6.8.99.12.tar.bz2) = 4d717b2c0bb1214e8f85ad3992690d2c
SIZE (xorg/xorg-x11-6.8.99.12.tar.bz2) = 44997357
MD5 (xorg/xorg-x11-6.8.99.16.tar.bz2) = ae32054482f193d1579ab6f8cda66a7e
SIZE (xorg/xorg-x11-6.8.99.16.tar.bz2) = 45369937

View File

@ -0,0 +1,42 @@
Index: programs/Xserver/dix/events.c
===================================================================
RCS file: /cvs/xorg/xc/programs/Xserver/dix/events.c,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -u -r1.16 -r1.17
--- programs/Xserver/dix/events.c 15 Jul 2005 05:48:29 -0000 1.16
+++ programs/Xserver/dix/events.c 25 Aug 2005 22:11:04 -0000 1.17
@@ -1,4 +1,4 @@
-/* $XdotOrg: xc/programs/Xserver/dix/events.c,v 1.16 2005/07/15 05:48:29 kem Exp $ */
+/* $XdotOrg: xc/programs/Xserver/dix/events.c,v 1.17 2005/08/25 22:11:04 anholt Exp $ */
/* $XFree86: xc/programs/Xserver/dix/events.c,v 3.51 2004/01/12 17:04:52 tsi Exp $ */
/************************************************************
@@ -675,7 +675,9 @@
(sprite.current->bits->yhot != cursor->bits->yhot))
XineramaCheckPhysLimits(cursor, FALSE);
(*sprite.screen->DisplayCursor)(sprite.screen, cursor);
+ FreeCursor(sprite.current, (Cursor)0);
sprite.current = cursor;
+ sprite.current->refcnt++;
}
}
@@ -930,7 +932,9 @@
(ScreenPtr)NULL);
(*sprite.hotPhys.pScreen->DisplayCursor) (sprite.hotPhys.pScreen,
cursor);
+ FreeCursor(sprite.current, (Cursor)0);
sprite.current = cursor;
+ sprite.current->refcnt++;
}
}
@@ -2184,6 +2188,7 @@
#endif
sprite.win = win;
sprite.current = wCursor (win);
+ sprite.current->refcnt++;
spriteTraceGood = 1;
ROOT = win;
(*pScreen->CursorLimits) (

View File

@ -1,38 +0,0 @@
Index: programs/Xserver/hw/xfree86/os-support/bsd/drm/Imakefile
===================================================================
RCS file: /cvs/xorg/xc/programs/Xserver/hw/xfree86/os-support/bsd/drm/Imakefile,v
retrieving revision 1.3
diff -u -r1.3 Imakefile
--- programs/Xserver/hw/xfree86/os-support/bsd/drm/Imakefile 16 Jun 2004 09:39:15 -0000 1.3
+++ programs/Xserver/hw/xfree86/os-support/bsd/drm/Imakefile 22 Jun 2005 23:22:13 -0000
@@ -15,8 +15,6 @@
#endif
#if defined(FreeBSDArchitecture)
-COMPATSRC = xf86drmCompat.c
-COMPATOBJ = xf86drmCompat.o
OS_SUBDIR = freebsd
#elif defined(NetBSDArchitecture)
OS_SUBDIR = netbsd
@@ -30,14 +28,12 @@
xf86drmHash.c \
xf86drmRandom.c \
xf86drmSL.c \
- $(COMPATSRC) \
$(MSRC)
OBJS = xf86drm.o \
xf86drmHash.o \
xf86drmRandom.o \
xf86drmSL.o \
- $(COMPATOBJ) \
$(MOBJ)
INCLUDES = -I$(XF86COMSRC) -I$(XF86OSSRC) -I. -I$(SERVERSRC)/include \
@@ -63,6 +59,5 @@
LinkSourceFile(xf86drmHash.c,$(XF86OSSRC)/linux/drm)
LinkSourceFile(xf86drmRandom.c,$(XF86OSSRC)/linux/drm)
LinkSourceFile(xf86drmSL.c,$(XF86OSSRC)/linux/drm)
-LinkSourceFile(xf86drmCompat.c,$(XF86OSSRC)/linux/drm)
InstallDriverSDKLibraryModule(drm,$(DRIVERSDKMODULEDIR),$(OS_SUBDIR))

View File

@ -0,0 +1,268 @@
Index: nv_driver.c
===================================================================
RCS file: /cvs/xorg/xc/programs/Xserver/hw/xfree86/drivers/nv/nv_driver.c,v
retrieving revision 1.16
retrieving revision 1.18
diff -u -u -r1.16 -r1.18
--- programs/Xserver/hw/xfree86/drivers/nv/nv_driver.c 11 Jul 2005 02:29:57 -0000 1.16
+++ programs/Xserver/hw/xfree86/drivers/nv/nv_driver.c 29 Sep 2005 21:47:29 -0000 1.18
@@ -1,4 +1,4 @@
-/* $XdotOrg: xc/programs/Xserver/hw/xfree86/drivers/nv/nv_driver.c,v 1.16 2005/07/11 02:29:57 ajax Exp $ */
+/* $XdotOrg: xc/programs/Xserver/hw/xfree86/drivers/nv/nv_driver.c,v 1.18 2005/09/29 21:47:29 aplattner Exp $ */
/* $XConsortium: nv_driver.c /main/3 1996/10/28 05:13:37 kaleb $ */
/*
* Copyright 1996-1997 David J. McKay
@@ -87,6 +87,8 @@
0
};
+/* Known cards as of 2005/09/21 */
+
static SymTabRec NVKnownChipsets[] =
{
{ 0x12D20018, "RIVA 128" },
@@ -205,7 +207,7 @@
#else
{ 0x10DE0329, "0x0329" },
#endif
- { 0x10DE032A, "Quadro NVS 280 PCI" },
+ { 0x10DE032A, "Quadro NVS 55/280 PCI" },
{ 0x10DE032B, "Quadro FX 500/600 PCI" },
{ 0x10DE032C, "GeForce FX Go53xx Series" },
{ 0x10DE032D, "GeForce FX Go5100" },
@@ -238,12 +240,14 @@
{ 0x10DE0043, "0x0043" },
{ 0x10DE0045, "GeForce 6800 GT" },
{ 0x10DE0046, "GeForce 6800 GT" },
+ { 0x10DE0048, "GeForce 6800 XT" },
{ 0x10DE0049, "0x0049" },
{ 0x10DE004E, "Quadro FX 4000" },
{ 0x10DE00C0, "0x00C0" },
{ 0x10DE00C1, "GeForce 6800" },
{ 0x10DE00C2, "GeForce 6800 LE" },
+ { 0x10DE00C3, "GeForce 6800 XT" },
{ 0x10DE00C8, "GeForce Go 6800" },
{ 0x10DE00C9, "GeForce Go 6800 Ultra" },
{ 0x10DE00CC, "Quadro FX Go1400" },
@@ -266,16 +270,16 @@
{ 0x10DE014E, "Quadro FX 540" },
{ 0x10DE014F, "GeForce 6200" },
- { 0x10DE0160, "0x0160" },
+ { 0x10DE0160, "GeForce 6500" },
{ 0x10DE0161, "GeForce 6200 TurboCache(TM)" },
{ 0x10DE0162, "GeForce 6200SE TurboCache(TM)" },
- { 0x10DE0163, "0x0163" },
+ { 0x10DE0163, "GeForce 6200 LE" },
{ 0x10DE0164, "GeForce Go 6200" },
{ 0x10DE0165, "Quadro NVS 285" },
{ 0x10DE0166, "GeForce Go 6400" },
{ 0x10DE0167, "GeForce Go 6200" },
{ 0x10DE0168, "GeForce Go 6400" },
- { 0x10DE0169, "0x0169" },
+ { 0x10DE0169, "GeForce 6250" },
{ 0x10DE016B, "0x016B" },
{ 0x10DE016C, "0x016C" },
{ 0x10DE016D, "0x016D" },
@@ -293,10 +297,10 @@
{ 0x10DE0090, "0x0090" },
{ 0x10DE0091, "GeForce 7800 GTX" },
- { 0x10DE0092, "0x0092" },
+ { 0x10DE0092, "GeForce 7800 GT" },
{ 0x10DE0093, "0x0093" },
{ 0x10DE0094, "0x0094" },
- { 0x10DE0098, "0x0098" },
+ { 0x10DE0098, "GeForce Go 7800" },
{ 0x10DE0099, "GeForce Go 7800 GTX" },
{ 0x10DE009C, "0x009C" },
{ 0x10DE009D, "Quadro FX 4500" },
@@ -699,6 +703,8 @@
case 0x0210:
case 0x0220:
case 0x0230:
+ case 0x0290:
+ case 0x0390:
NVChipsets[numUsed].token = pciid;
NVChipsets[numUsed].name = "Unknown NVIDIA chip";
NVPciChipsets[numUsed].numChipset = pciid;
@@ -1389,6 +1395,8 @@
case 0x0210:
case 0x0220:
case 0x0230:
+ case 0x0290:
+ case 0x0390:
pNv->Architecture = NV_ARCH_40;
break;
default:
@@ -1425,9 +1433,13 @@
}
}
- pNv->FbUsableSize = pNv->FbMapSize - (128 * 1024);
+ if(pNv->Architecture >= NV_ARCH_40)
+ pNv->FbUsableSize = pNv->FbMapSize - (560 * 1024);
+ else
+ pNv->FbUsableSize = pNv->FbMapSize - (128 * 1024);
pNv->ScratchBufferSize = (pNv->Architecture < NV_ARCH_10) ? 8192 : 16384;
pNv->ScratchBufferStart = pNv->FbUsableSize - pNv->ScratchBufferSize;
+ pNv->CursorStart = pNv->FbUsableSize + (32 * 1024);
/*
* Setup the ClockRanges, which describe what clock ranges are available,
Index: nv_hw.c
===================================================================
RCS file: /cvs/xorg/xc/programs/Xserver/hw/xfree86/drivers/nv/nv_hw.c,v
retrieving revision 1.7
retrieving revision 1.11
diff -u -u -r1.7 -r1.11
--- programs/Xserver/hw/xfree86/drivers/nv/nv_hw.c 11 Jul 2005 02:29:58 -0000 1.7
+++ programs/Xserver/hw/xfree86/drivers/nv/nv_hw.c 29 Sep 2005 21:47:29 -0000 1.11
@@ -919,7 +919,7 @@
RIVA_HW_STATE *state
)
{
- int i;
+ int i, j;
pNv->PMC[0x0140/4] = 0x00000000;
pNv->PMC[0x0200/4] = 0xFFFF00FF;
@@ -932,16 +932,28 @@
if(pNv->Architecture == NV_ARCH_04) {
pNv->PFB[0x0200/4] = state->config;
- } else if ((pNv->Chipset & 0xfff0) == 0x0090) {
- for(i = 0; i < 15; i++) {
- pNv->PFB[(0x0600 + (i * 0x10))/4] = 0;
- pNv->PFB[(0x0604 + (i * 0x10))/4] = pNv->FbMapSize - 1;
- }
- } else {
+ } else
+ if((pNv->Architecture < NV_ARCH_40) ||
+ ((pNv->Chipset & 0xfff0) == 0x0040))
+ {
for(i = 0; i < 8; i++) {
pNv->PFB[(0x0240 + (i * 0x10))/4] = 0;
pNv->PFB[(0x0244 + (i * 0x10))/4] = pNv->FbMapSize - 1;
}
+ } else {
+ int regions = 12;
+
+ if(((pNv->Chipset & 0xfff0) == 0x0090) ||
+ ((pNv->Chipset & 0xfff0) == 0x01D0) ||
+ ((pNv->Chipset & 0xfff0) == 0x0290))
+ {
+ regions = 15;
+ }
+
+ for(i = 0; i < regions; i++) {
+ pNv->PFB[(0x0600 + (i * 0x10))/4] = 0;
+ pNv->PFB[(0x0604 + (i * 0x10))/4] = pNv->FbMapSize - 1;
+ }
}
if(pNv->Architecture >= NV_ARCH_40) {
@@ -1160,6 +1172,12 @@
pNv->PGRAPH[0x0090/4] = 0x00008000;
pNv->PGRAPH[0x0610/4] = 0x00be3c5f;
+ j = pNv->REGS[0x1540/4] & 0xff;
+ if(j) {
+ for(i = 0; !(j & 1); j >>= 1, i++);
+ pNv->PGRAPH[0x5000/4] = i;
+ }
+
if((pNv->Chipset & 0xfff0) == 0x0040) {
pNv->PGRAPH[0x09b0/4] = 0x83280fff;
pNv->PGRAPH[0x09b4/4] = 0x000000a0;
@@ -1176,6 +1194,7 @@
pNv->PFB[0x033C/4] &= 0xffff7fff;
break;
case 0x00C0:
+ case 0x0120:
pNv->PGRAPH[0x0828/4] = 0x007596ff;
pNv->PGRAPH[0x082C/4] = 0x00000108;
break;
@@ -1200,6 +1219,7 @@
pNv->PRAMDAC[0x0608/4] |= 0x00100000;
break;
case 0x0090:
+ case 0x0290:
pNv->PRAMDAC[0x0608/4] |= 0x00100000;
pNv->PGRAPH[0x0828/4] = 0x07830610;
pNv->PGRAPH[0x082C/4] = 0x0000016A;
@@ -1247,12 +1267,32 @@
}
}
- if((pNv->Chipset & 0xfff0) == 0x0090) {
- for(i = 0; i < 60; i++)
- pNv->PGRAPH[(0x0D00/4) + i] = pNv->PFB[(0x0600/4) + i];
- } else {
- for(i = 0; i < 32; i++)
+ if((pNv->Architecture < NV_ARCH_40) ||
+ ((pNv->Chipset & 0xfff0) == 0x0040))
+ {
+ for(i = 0; i < 32; i++) {
pNv->PGRAPH[(0x0900/4) + i] = pNv->PFB[(0x0240/4) + i];
+ pNv->PGRAPH[(0x6900/4) + i] = pNv->PFB[(0x0240/4) + i];
+ }
+ } else {
+ if(((pNv->Chipset & 0xfff0) == 0x0090) ||
+ ((pNv->Chipset & 0xfff0) == 0x01D0) ||
+ ((pNv->Chipset & 0xfff0) == 0x0290))
+ {
+ for(i = 0; i < 60; i++) {
+ pNv->PGRAPH[(0x0D00/4) + i] = pNv->PFB[(0x0600/4) + i];
+ pNv->PGRAPH[(0x6900/4) + i] = pNv->PFB[(0x0600/4) + i];
+ }
+ } else {
+ for(i = 0; i < 48; i++) {
+ pNv->PGRAPH[(0x0900/4) + i] = pNv->PFB[(0x0600/4) + i];
+ if(((pNv->Chipset & 0xfff0) != 0x0160) &&
+ ((pNv->Chipset & 0xfff0) != 0x0220))
+ {
+ pNv->PGRAPH[(0x6900/4) + i] = pNv->PFB[(0x0600/4) + i];
+ }
+ }
+ }
}
if(pNv->Architecture >= NV_ARCH_40) {
@@ -1267,7 +1307,10 @@
pNv->PGRAPH[0x0864/4] = pNv->FbMapSize - 1;
pNv->PGRAPH[0x0868/4] = pNv->FbMapSize - 1;
} else {
- if((pNv->Chipset & 0xfff0) == 0x0090) {
+ if(((pNv->Chipset & 0xfff0) == 0x0090) ||
+ ((pNv->Chipset & 0xfff0) == 0x01D0) ||
+ ((pNv->Chipset & 0xfff0) == 0x0290))
+ {
pNv->PGRAPH[0x0DF0/4] = pNv->PFB[0x0200/4];
pNv->PGRAPH[0x0DF4/4] = pNv->PFB[0x0204/4];
} else {
Index: nv_setup.c
===================================================================
RCS file: /cvs/xorg/xc/programs/Xserver/hw/xfree86/drivers/nv/nv_setup.c,v
retrieving revision 1.8
retrieving revision 1.10
diff -u -u -r1.8 -r1.10
--- programs/Xserver/hw/xfree86/drivers/nv/nv_setup.c 5 Aug 2005 03:52:28 -0000 1.8
+++ programs/Xserver/hw/xfree86/drivers/nv/nv_setup.c 29 Sep 2005 21:47:29 -0000 1.10
@@ -317,7 +317,6 @@
pNv->CrystalFreqKHz = 27000;
}
- pNv->CursorStart = (pNv->RamAmountKBytes - 96) * 1024;
pNv->CURSOR = NULL; /* can't set this here */
pNv->MinVClockFreqKHz = 12000;
pNv->MaxVClockFreqKHz = pNv->twoStagePLL ? 400000 : 350000;
@@ -448,6 +447,7 @@
case 0x0144:
case 0x0146:
case 0x0148:
+ case 0x0098:
case 0x0099:
mobile = TRUE;
break;

View File

@ -1,15 +0,0 @@
Index: programs/Xserver/hw/xfree86/drivers/ati/radeon_driver.c
===================================================================
RCS file: /cvs/xorg/xc/programs/Xserver/hw/xfree86/drivers/ati/radeon_driver.c,v
retrieving revision 1.54
diff -u -r1.54 radeon_driver.c
--- programs/Xserver/hw/xfree86/drivers/ati/radeon_driver.c 15 Jun 2005 23:40:50 -0000 1.54
+++ programs/Xserver/hw/xfree86/drivers/ati/radeon_driver.c 22 Jun 2005 22:37:22 -0000
@@ -2501,6 +2501,7 @@
case PCI_CHIP_RV370_5464:
info->IsMobility = TRUE;
case PCI_CHIP_RV370_5B60:
+ case PCI_CHIP_RV370_5B62:
case PCI_CHIP_RV370_5B64:
case PCI_CHIP_RV370_5B65:
info->ChipFamily = CHIP_FAMILY_RV380;

View File

@ -1,10 +0,0 @@
--- lib/xkbfile/xkbout.c.orig Fri May 7 18:05:29 2004
+++ lib/xkbfile/xkbout.c Fri May 7 18:05:29 2004
@@ -54,7 +54,6 @@
#include "XKBsrv.h"
#include <X11/extensions/XKBgeom.h>
-#include "extensions/XKBfile.h"
#endif

View File

@ -34,6 +34,10 @@ include/X11/pixmaps/computer.xpm
include/X11/pixmaps/keyboard.xpm
include/X11/pixmaps/monitor.xpm
include/X11/pixmaps/mouse.xpm
include/X11/fonts/bdfint.h
include/X11/fonts/pcf.h
include/X11/misc.h
include/X11/os.h
lib/X11/Cards
lib/X11/Options
lib/X11/app-defaults/XOrgCfg
@ -164,9 +168,8 @@ lib/modules/libcfb.so
lib/modules/libcfb16.so
lib/modules/libcfb24.so
lib/modules/libcfb32.so
lib/modules/libcw.so
lib/modules/libdamage.so
lib/modules/libddc.so
lib/modules/libexa.so
lib/modules/libfb.so
lib/modules/libi2c.so
lib/modules/libint10.so