Mesa (master): nouveau: allow NV3x's to be used with nouveau_vieux

Ilia Mirkin imirkin at kemper.freedesktop.org
Tue Aug 30 04:46:55 UTC 2016


Module: Mesa
Branch: master
Commit: 91681302d0308a70aece883c3b56a18f9a44041f
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=91681302d0308a70aece883c3b56a18f9a44041f

Author: Ilia Mirkin <imirkin at alum.mit.edu>
Date:   Sat Aug 27 19:46:25 2016 -0400

nouveau: allow NV3x's to be used with nouveau_vieux

NV34 and possibly other NV3x hardware has the capability of exposing the
NV25 graph class. This allows forcing nouveau_vieux to be used instead
of the gallium driver, primarily for testing purposes. (Among other
things, NV2x only ever came as AGP or inside an Xbox, never PCI/PCIe).

Signed-off-by: Ilia Mirkin <imirkin at alum.mit.edu>

---

 src/loader/pci_id_driver_map.c                | 4 +++-
 src/mesa/drivers/dri/nouveau/nouveau_screen.c | 1 +
 src/mesa/drivers/dri/nouveau/nv04_surface.c   | 4 +++-
 3 files changed, 7 insertions(+), 2 deletions(-)

diff --git a/src/loader/pci_id_driver_map.c b/src/loader/pci_id_driver_map.c
index 3c4657f..8b2079e 100644
--- a/src/loader/pci_id_driver_map.c
+++ b/src/loader/pci_id_driver_map.c
@@ -25,6 +25,7 @@ int is_nouveau_vieux(int fd);
 
 #ifdef HAVE_LIBDRM
 
+#include <stdlib.h>
 #include <xf86drm.h>
 #include <nouveau_drm.h>
 
@@ -45,7 +46,8 @@ int
 is_nouveau_vieux(int fd)
 {
    int chipset = nouveau_chipset(fd);
-   return chipset > 0 && chipset < 0x30;
+   return (chipset > 0 && chipset < 0x30) ||
+      (chipset < 0x40 && getenv("NOUVEAU_VIEUX") != NULL);
 }
 
 #else
diff --git a/src/mesa/drivers/dri/nouveau/nouveau_screen.c b/src/mesa/drivers/dri/nouveau/nouveau_screen.c
index 0545e68..de578a5 100644
--- a/src/mesa/drivers/dri/nouveau/nouveau_screen.c
+++ b/src/mesa/drivers/dri/nouveau/nouveau_screen.c
@@ -130,6 +130,7 @@ nouveau_init_screen2(__DRIscreen *dri_screen)
 		dri_screen->max_gl_es1_version = 10;
 		break;
 	case 0x20:
+	case 0x30:
 		screen->driver = &nv20_driver;
 		dri_screen->max_gl_compat_version = 13;
 		dri_screen->max_gl_es1_version = 10;
diff --git a/src/mesa/drivers/dri/nouveau/nv04_surface.c b/src/mesa/drivers/dri/nouveau/nv04_surface.c
index 968c05f..b1f0ea0 100644
--- a/src/mesa/drivers/dri/nouveau/nv04_surface.c
+++ b/src/mesa/drivers/dri/nouveau/nv04_surface.c
@@ -577,8 +577,10 @@ nv04_surface_init(struct gl_context *ctx)
 	/* Swizzled surface. */
 	if (context_chipset(ctx) < 0x20)
 		class = NV04_SURFACE_SWZ_CLASS;
-	else
+	else if (context_chipset (ctx) < 0x30)
 		class = NV20_SURFACE_SWZ_CLASS;
+	else
+		class = NV30_SURFACE_SWZ_CLASS;
 
 	ret = nouveau_object_new(chan, handle++, class, NULL, 0, &hw->swzsurf);
 	if (ret)




More information about the mesa-commit mailing list