aboutsummaryrefslogtreecommitdiffstats
path: root/contrib/packages/rpm/el5/SOURCES/xserver-1.6.1-nouveau.patch
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/packages/rpm/el5/SOURCES/xserver-1.6.1-nouveau.patch')
-rw-r--r--contrib/packages/rpm/el5/SOURCES/xserver-1.6.1-nouveau.patch108
1 files changed, 108 insertions, 0 deletions
diff --git a/contrib/packages/rpm/el5/SOURCES/xserver-1.6.1-nouveau.patch b/contrib/packages/rpm/el5/SOURCES/xserver-1.6.1-nouveau.patch
new file mode 100644
index 00000000..c6428ec1
--- /dev/null
+++ b/contrib/packages/rpm/el5/SOURCES/xserver-1.6.1-nouveau.patch
@@ -0,0 +1,108 @@
+From b3872657c551d884141196cb098f53d3c01d1d3d Mon Sep 17 00:00:00 2001
+From: Fedora X Ninjas <x@fedoraproject.org>
+Date: Tue, 23 Jun 2009 13:52:23 +1000
+Subject: [PATCH] autoconfig: select nouveau by default for NVIDIA GPUs
+
+Also, don't treat DRI setup failure as an error for nouveau.
+---
+ glx/glxdri.c | 7 +++++--
+ glx/glxdri2.c | 7 +++++--
+ hw/xfree86/common/xf86AutoConfig.c | 27 ++++++++++++++++++++++++++-
+ 3 files changed, 36 insertions(+), 5 deletions(-)
+
+diff --git a/glx/glxdri.c b/glx/glxdri.c
+index 5fb75a4..45c79c9 100644
+--- a/glx/glxdri.c
++++ b/glx/glxdri.c
+@@ -967,6 +967,7 @@ __glXDRIscreenProbe(ScreenPtr pScreen)
+ const __DRIconfig **driConfigs;
+ const __DRIextension **extensions;
+ int i;
++ int from = X_ERROR;
+
+ if (!xf86LoaderCheckSymbol("DRIQueryDirectRenderingCapable") ||
+ !DRIQueryDirectRenderingCapable(pScreen, &isCapable) ||
+@@ -1046,7 +1047,9 @@ __glXDRIscreenProbe(ScreenPtr pScreen)
+
+ screen->driver = dlopen(filename, RTLD_LAZY | RTLD_LOCAL);
+ if (screen->driver == NULL) {
+- LogMessage(X_ERROR, "AIGLX error: dlopen of %s failed (%s)\n",
++ if (!strcmp(driverName, "nouveau"))
++ from = X_INFO;
++ LogMessage(from, "AIGLX error: dlopen of %s failed (%s)\n",
+ filename, dlerror());
+ goto handle_error;
+ }
+@@ -1183,7 +1186,7 @@ __glXDRIscreenProbe(ScreenPtr pScreen)
+
+ xfree(screen);
+
+- LogMessage(X_ERROR, "AIGLX: reverting to software rendering\n");
++ LogMessage(from, "AIGLX: reverting to software rendering\n");
+
+ return NULL;
+ }
+diff --git a/glx/glxdri2.c b/glx/glxdri2.c
+index 529b2df..ff4490b 100644
+--- a/glx/glxdri2.c
++++ b/glx/glxdri2.c
+@@ -587,6 +587,7 @@ __glXDRIscreenProbe(ScreenPtr pScreen)
+ const __DRIextension **extensions;
+ const __DRIconfig **driConfigs;
+ int i;
++ int from = X_ERROR;
+
+ screen = xcalloc(1, sizeof *screen);
+ if (screen == NULL)
+@@ -613,7 +614,9 @@ __glXDRIscreenProbe(ScreenPtr pScreen)
+
+ screen->driver = dlopen(filename, RTLD_LAZY | RTLD_LOCAL);
+ if (screen->driver == NULL) {
+- LogMessage(X_ERROR, "AIGLX error: dlopen of %s failed (%s)\n",
++ if (!strcmp(driverName, "nouveau"))
++ from = X_INFO;
++ LogMessage(from, "AIGLX error: dlopen of %s failed (%s)\n",
+ filename, dlerror());
+ goto handle_error;
+ }
+@@ -692,7 +695,7 @@ __glXDRIscreenProbe(ScreenPtr pScreen)
+
+ xfree(screen);
+
+- LogMessage(X_ERROR, "AIGLX: reverting to software rendering\n");
++ LogMessage(from, "AIGLX: reverting to software rendering\n");
+
+ return NULL;
+ }
+diff --git a/hw/xfree86/common/xf86AutoConfig.c b/hw/xfree86/common/xf86AutoConfig.c
+index bc4c80b..d8fa80f 100644
+--- a/hw/xfree86/common/xf86AutoConfig.c
++++ b/hw/xfree86/common/xf86AutoConfig.c
+@@ -180,7 +180,23 @@ videoPtrToDriverList(struct pci_device *dev,
+ break;
+ case 0x102b: driverList[0] = "mga"; break;
+ case 0x10c8: driverList[0] = "neomagic"; break;
+- case 0x10de: case 0x12d2: driverList[0] = "nv"; break;
++ case 0x10de: case 0x12d2:
++ switch (dev->device_id) {
++ /* NV1 */
++ case 0x0008:
++ case 0x0009:
++ driverList[0] = "vesa";
++ break;
++ /* NV3 */
++ case 0x0018:
++ case 0x0019:
++ driverList[0] = "nv";
++ break;
++ default:
++ driverList[0] = "nouveau";
++ break;
++ }
++ break;
+ case 0x1106: driverList[0] = "openchrome"; break;
+ case 0x1163: driverList[0] = "rendition"; break;
+ case 0x5333:
+--
+1.6.2.2
+