xorg-x11-server/xserver-1.6.1-nouveau.patch
Peter Hutterer f21d354227 * Tue Feb 16 2010 Peter Hutterer <peter.hutterer@redhat.com> 1.7.99.901-1.2010208
- Update to today's git master (1.8RC1)
- xserver-1.7.4-reset-sli-pointers.patch: drop, upstream
- Enable udev config, drop hal.
- Require system-setup-keyboard (renamed fedora-setup-keyboard)
2010-02-16 05:59:00 +00:00

109 lines
3.4 KiB
Diff

From 05c3ac7e882e0f46f908cc165f87d0e81399431d Mon Sep 17 00:00:00 2001
From: Fedora X Ninjas <x@fedoraproject.org>
Date: Tue, 16 Feb 2010 11:38:17 +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 | 18 +++++++++++++++++-
3 files changed, 27 insertions(+), 5 deletions(-)
diff --git a/glx/glxdri.c b/glx/glxdri.c
index 21e44d1..30b820c 100644
--- a/glx/glxdri.c
+++ b/glx/glxdri.c
@@ -968,6 +968,7 @@ __glXDRIscreenProbe(ScreenPtr pScreen)
const __DRIconfig **driConfigs;
const __DRIextension **extensions;
int i;
+ int from = X_ERROR;
if (!xf86LoaderCheckSymbol("DRIQueryDirectRenderingCapable") ||
!DRIQueryDirectRenderingCapable(pScreen, &isCapable) ||
@@ -1047,7 +1048,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;
}
@@ -1184,7 +1187,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 0f998de..a244809 100644
--- a/glx/glxdri2.c
+++ b/glx/glxdri2.c
@@ -676,6 +676,7 @@ __glXDRIscreenProbe(ScreenPtr pScreen)
const __DRIextension **extensions;
const __DRIconfig **driConfigs;
int i;
+ int from = X_ERROR;
screen = xcalloc(1, sizeof *screen);
if (screen == NULL)
@@ -702,7 +703,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;
}
@@ -793,7 +796,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 7f4ada8..369101c 100644
--- a/hw/xfree86/common/xf86AutoConfig.c
+++ b/hw/xfree86/common/xf86AutoConfig.c
@@ -192,7 +192,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 0x1b36: driverList[0] = "qxl"; break;
case 0x1163: driverList[0] = "rendition"; break;
--
1.6.6.1