nouveau: remove use of deprecated nouveau_device_wrap()
[mesa.git] / src / mesa / drivers / dri / nouveau / nouveau_screen.c
index 153f18e4a34845a1274da0f01a176542e8d18c1e..1a74ae2c53d571ae64b1bd3205f98017b95cb3f7 100644 (file)
@@ -40,6 +40,9 @@
 #include "main/renderbuffer.h"
 #include "swrast/s_renderbuffer.h"
 
+#include <nvif/class.h>
+#include <nvif/cl0080.h>
+
 static const __DRIextension *nouveau_screen_extensions[];
 
 static void
@@ -99,12 +102,24 @@ nouveau_init_screen2(__DRIscreen *dri_screen)
        dri_screen->driverPrivate = screen;
 
        /* Open the DRM device. */
-       ret = nouveau_device_wrap(dri_screen->fd, 0, &screen->device);
+       ret = nouveau_drm_new(dri_screen->fd, &screen->drm);
        if (ret) {
                nouveau_error("Error opening the DRM device.\n");
                goto fail;
        }
 
+       screen->drm->nvif = false;
+
+       ret = nouveau_device_new(&screen->drm->client, NV_DEVICE,
+                                &(struct nv_device_v0) {
+                                       .device = ~0ULL,
+                                }, sizeof(struct nv_device_v0),
+                                &screen->device);
+       if (ret) {
+               nouveau_error("Error creating device object.\n");
+               goto fail;
+       }
+
        /* Choose the card specific function pointers. */
        switch (screen->device->chipset & 0xf0) {
        case 0x00:
@@ -213,6 +228,7 @@ nouveau_destroy_screen(__DRIscreen *dri_screen)
                return;
 
        nouveau_device_del(&screen->device);
+       nouveau_drm_del(&screen->drm);
 
        free(screen);
        dri_screen->driverPrivate = NULL;