nvc0: initial support for GM20x GPUs
authorBen Skeggs <bskeggs@redhat.com>
Mon, 15 Feb 2016 21:56:44 +0000 (07:56 +1000)
committerBen Skeggs <bskeggs@redhat.com>
Tue, 16 Feb 2016 05:57:16 +0000 (15:57 +1000)
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Acked-by: Ilia Mirkin <imirkin@alum.mit.edu>
src/gallium/drivers/nouveau/codegen/nv50_ir_ra.cpp
src/gallium/drivers/nouveau/codegen/nv50_ir_target.cpp
src/gallium/drivers/nouveau/nv_object.xml.h
src/gallium/drivers/nouveau/nvc0/nvc0_screen.c
src/gallium/winsys/nouveau/drm/nouveau_drm_winsys.c

index de39be872e45a3ef41229da33e0a42cc30f02d2c..d877c253a1751318b2f4c903fd7241c4a344829e 100644 (file)
@@ -968,6 +968,7 @@ GCRA::coalesce(ArrayList& insns)
    case 0xf0:
    case 0x100:
    case 0x110:
+   case 0x120:
       ret = doCoalesce(insns, JOIN_MASK_UNION);
       break;
    default:
@@ -2231,6 +2232,7 @@ RegAlloc::InsertConstraintsPass::visit(BasicBlock *bb)
             texConstraintNVE0(tex);
             break;
          case 0x110:
+         case 0x120:
             texConstraintGM107(tex);
             break;
          default:
index ae0a8bb61d11309199ba03ab5ebc224c7ef04d00..89d3a08937f09ad43eb774314ed644f08799dea2 100644 (file)
@@ -143,6 +143,7 @@ Target *Target::create(unsigned int chipset)
    STATIC_ASSERT(Elements(operationClass) == OP_LAST + 1);
    switch (chipset & ~0xf) {
    case 0x110:
+   case 0x120:
       return getTargetGM107(chipset);
    case 0xc0:
    case 0xd0:
index 0a0e187dc028d9695d77fdd123714c8dcfc32025..61c7b32ea560e51f476d2ebe41ae19ae3882c3a8 100644 (file)
@@ -192,6 +192,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #define NVF0_3D_CLASS                                          0x0000a197
 #define NVEA_3D_CLASS                                          0x0000a297
 #define GM107_3D_CLASS                                         0x0000b097
+#define GM200_3D_CLASS                                         0x0000b197
 #define NV50_2D_CLASS                                          0x0000502d
 #define NVC0_2D_CLASS                                          0x0000902d
 #define NV50_COMPUTE_CLASS                                     0x000050c0
index ec7471c9672c68634550b951283ab79aaf4bfb97..9413d350a35eba90f26ccd44ff18286d1f3136ee 100644 (file)
@@ -603,6 +603,7 @@ nvc0_screen_init_compute(struct nvc0_screen *screen)
    case 0xf0:
    case 0x100:
    case 0x110:
+   case 0x120:
       return 0;
    default:
       return -1;
@@ -665,6 +666,7 @@ nvc0_screen_create(struct nouveau_device *dev)
    case 0xf0:
    case 0x100:
    case 0x110:
+   case 0x120:
       break;
    default:
       return NULL;
@@ -733,6 +735,7 @@ nvc0_screen_create(struct nouveau_device *dev)
    PUSH_DATA (push, screen->nvsw->handle);
 
    switch (dev->chipset & ~0xf) {
+   case 0x120:
    case 0x110:
    case 0x100:
    case 0xf0:
@@ -784,6 +787,9 @@ nvc0_screen_create(struct nouveau_device *dev)
    PUSH_DATA (push, screen->fence.bo->offset + 16);
 
    switch (dev->chipset & ~0xf) {
+   case 0x120:
+      obj_class = GM200_3D_CLASS;
+      break;
    case 0x110:
       obj_class = GM107_3D_CLASS;
       break;
index c44424f4f4aa7a9cf9635bfb9fc4e70178480ca7..598ffcbd06967389b7bfa8c4b80ff655390e95c4 100644 (file)
@@ -122,6 +122,7 @@ nouveau_drm_screen_create(int fd)
        case 0xf0:
        case 0x100:
        case 0x110:
+       case 0x120:
                init = nvc0_screen_create;
                break;
        default: