#define GP102_3D_CLASS 0x0000c197
#define GV100_3D_CLASS 0x0000c397
#define TU102_3D_CLASS 0x0000c597
+#define GA102_3D_CLASS 0x0000c797
#define NV50_2D_CLASS 0x0000502d
#define NVC0_2D_CLASS 0x0000902d
#define NV50_COMPUTE_CLASS 0x000050c0
#define GP104_COMPUTE_CLASS 0x0000c1c0
#define GV100_COMPUTE_CLASS 0x0000c3c0
#define TU102_COMPUTE_CLASS 0x0000c5c0
+#define GA102_COMPUTE_CLASS 0x0000c7c0
#define NV84_CRYPT_CLASS 0x000074c1
#define BLOB_NVC0_PCOPY1_CLASS 0x000090b8
#define BLOB_NVC0_PCOPY0_CLASS 0x000090b5
#define PASCAL_DMA_COPY_B 0x0000c1b5
#define VOLTA_DMA_COPY_A 0x0000c3b5
#define TURING_DMA_COPY_A 0x0000c5b5
+#define AMPERE_DMA_COPY_A 0x0000c6b5
+#define AMPERE_DMA_COPY_B 0x0000c7b5
#define NVE4_P2MF_CLASS 0x0000a040
#define NVF0_P2MF_CLASS 0x0000a140
#define NV31_MPEG_CLASS 0x00003174
nvc0_screen_init_compute(struct nvc0_screen *screen)
{
const struct nouveau_mclass computes[] = {
+ { GA102_COMPUTE_CLASS, -1 },
{ TU102_COMPUTE_CLASS, -1 },
{ GV100_COMPUTE_CLASS, -1 },
{ GP104_COMPUTE_CLASS, -1 },
case 0x130:
case 0x140:
case 0x160:
+ case 0x170:
break;
default:
return NULL;
if (screen->m2mf->oclass >= NVE4_P2MF_CLASS) {
const struct nouveau_mclass copys[] = {
+ { AMPERE_DMA_COPY_B, -1 },
+ { AMPERE_DMA_COPY_A, -1 },
{ TURING_DMA_COPY_A, -1 },
{ VOLTA_DMA_COPY_A, -1 },
{ PASCAL_DMA_COPY_B, -1 },
PUSH_DATA (push, screen->fence.bo->offset + 16);
const struct nouveau_mclass threeds[] = {
+ { GA102_3D_CLASS, -1 },
{ TU102_3D_CLASS, -1 },
{ GV100_3D_CLASS, -1 },
{ GP102_3D_CLASS, -1 },