commit 7838b62
Michael Forney
·
2014-01-31 21:04:40 +0000 UTC
parent 5eb5146
nouveau: Keep track of chipset architecture
1 files changed,
+33,
-0
+33,
-0
1@@ -36,11 +36,19 @@
2 #include <nouveau.h>
3 #include <sys/mman.h>
4
5+enum nv_architecture
6+{
7+ NV_ARCH_50 = 0x50,
8+ NV_ARCH_C0 = 0xc0,
9+ NV_ARCH_E0 = 0xe0
10+};
11+
12 struct nouveau_context
13 {
14 struct wld_context base;
15 struct nouveau_device * device;
16 struct nouveau_client * client;
17+ enum nv_architecture architecture;
18 };
19
20 struct nouveau_renderer
21@@ -88,6 +96,31 @@ struct wld_context * driver_create_context(int drm_fd)
22 if (nouveau_device_wrap(drm_fd, 0, &context->device) != 0)
23 goto error1;
24
25+ switch (context->device->chipset & ~0xf)
26+ {
27+ /* TODO: Support NV50
28+ case 0x50:
29+ case 0x80:
30+ case 0x90:
31+ case 0xa0:
32+ context->architecture = NV_ARCH_50;
33+ break;
34+ */
35+ case 0xc0:
36+ case 0xd0:
37+ context->architecture = NV_ARCH_C0;
38+ break;
39+ /* TODO: Support NVE0
40+ case 0xe0:
41+ case 0xf0:
42+ case 0x100:
43+ context->architecture = NV_ARCH_E0;
44+ break;
45+ */
46+ default:
47+ return NULL;
48+ }
49+
50 if (nouveau_client_new(context->device, &context->client) != 0)
51 goto error2;
52