diff options
author | Ilia Mirkin <[email protected]> | 2016-08-27 19:46:25 -0400 |
---|---|---|
committer | Ilia Mirkin <[email protected]> | 2016-08-30 00:21:42 -0400 |
commit | 91681302d0308a70aece883c3b56a18f9a44041f (patch) | |
tree | 5cc17f6ced120756f506410b353deece920e3edc | |
parent | ab0917311fbf7b0f03afc4aa1239d7b02b00fc87 (diff) |
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 <[email protected]>
-rw-r--r-- | src/loader/pci_id_driver_map.c | 4 | ||||
-rw-r--r-- | src/mesa/drivers/dri/nouveau/nouveau_screen.c | 1 | ||||
-rw-r--r-- | 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 3c4657fd014..8b2079e4354 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 0545e68cbe1..de578a5d70f 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 968c05f6593..b1f0ea0a983 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) |