nv30: import new driver for GeForce FX/6/7 chipsets, and Quadro variants
[mesa.git] / src / gallium / winsys / nouveau / drm / nouveau_drm_winsys.c
1 #include "pipe/p_context.h"
2 #include "pipe/p_state.h"
3 #include "util/u_format.h"
4 #include "util/u_memory.h"
5 #include "util/u_inlines.h"
6
7 #include "nouveau_drm_public.h"
8
9 #include "nouveau/nouveau_winsys.h"
10 #include "nouveau/nouveau_screen.h"
11
12 struct pipe_screen *
13 nouveau_drm_screen_create(int fd)
14 {
15 struct nouveau_device *dev = NULL;
16 struct pipe_screen *(*init)(struct nouveau_device *);
17 int ret;
18
19 ret = nouveau_device_wrap(fd, 0, &dev);
20 if (ret)
21 return NULL;
22
23 switch (dev->chipset & 0xf0) {
24 case 0x30:
25 case 0x40:
26 case 0x60:
27 init = nv30_screen_create;
28 break;
29 case 0x50:
30 case 0x80:
31 case 0x90:
32 case 0xa0:
33 init = nv50_screen_create;
34 break;
35 case 0xc0:
36 case 0xd0:
37 init = nvc0_screen_create;
38 break;
39 default:
40 debug_printf("%s: unknown chipset nv%02x\n", __func__,
41 dev->chipset);
42 return NULL;
43 }
44
45 return init(dev);
46 }