diff options
author | Ben Skeggs <skeggsb@gmail.com> | 2008-01-30 00:05:50 +1100 |
---|---|---|
committer | Ben Skeggs <skeggsb@gmail.com> | 2008-01-30 00:05:59 +1100 |
commit | ae7dcae81bc54bc16f16127f2fa1d01d9aa2332c (patch) | |
tree | cfeab4bc9aaab3d5db79b698437bb85c128ff4a3 /src/mesa/pipe | |
parent | d342a6eeccb829dfbdb95f259bc9a272a16a8b4b (diff) |
nouveau: support nv67
Diffstat (limited to 'src/mesa/pipe')
-rw-r--r-- | src/mesa/pipe/nv40/nv40_context.c | 34 |
1 files changed, 21 insertions, 13 deletions
diff --git a/src/mesa/pipe/nv40/nv40_context.c b/src/mesa/pipe/nv40/nv40_context.c index f6fdd6b437..d0d9583e32 100644 --- a/src/mesa/pipe/nv40/nv40_context.c +++ b/src/mesa/pipe/nv40/nv40_context.c @@ -188,26 +188,34 @@ nv40_init_hwctx(struct nv40_context *nv40, int curie_class) return TRUE; } -#define GRCLASS4097_CHIPSETS 0x00000baf -#define GRCLASS4497_CHIPSETS 0x00005450 +#define NV4X_GRCLASS4097_CHIPSETS 0x00000baf +#define NV4X_GRCLASS4497_CHIPSETS 0x00005450 +#define NV6X_GRCLASS4497_CHIPSETS 0x00000080 + struct pipe_context * nv40_create(struct pipe_winsys *pipe_winsys, struct nouveau_winsys *nvws, unsigned chipset) { struct nv40_context *nv40; - int curie_class, ret; - - if ((chipset & 0xf0) != 0x40) { - NOUVEAU_ERR("Not a NV4X chipset\n"); - return NULL; + int curie_class = 0, ret; + + switch (chipset & 0xf0) { + case 0x40: + if (NV4X_GRCLASS4097_CHIPSETS & (1 << (chipset & 0x0f))) + curie_class = NV40TCL; + else + if (NV4X_GRCLASS4497_CHIPSETS & (1 << (chipset & 0x0f))) + curie_class = NV44TCL; + break; + case 0x60: + if (NV6X_GRCLASS4497_CHIPSETS & (1 << (chipset & 0x0f))) + curie_class = NV44TCL; + break; + default: + break; } - if (GRCLASS4097_CHIPSETS & (1 << (chipset & 0x0f))) { - curie_class = NV40TCL; - } else - if (GRCLASS4497_CHIPSETS & (1 << (chipset & 0x0f))) { - curie_class = NV44TCL; - } else { + if (!curie_class) { NOUVEAU_ERR("Unknown NV4x chipset: NV%02x\n", chipset); return NULL; } |