diff options
-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) |