drisw: probe kms if fd is passed
authorMike Blumenkrantz <michael.blumenkrantz@gmail.com>
Thu, 9 Jun 2022 15:03:13 +0000 (11:03 -0400)
committerMarge Bot <emma+marge@anholt.net>
Thu, 16 Jun 2022 23:15:09 +0000 (23:15 +0000)
Reviewed-by: Adam Jackson <ajax@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16949>

src/gallium/frontends/dri/drisw.c

index efdb84f..3ed69a1 100644 (file)
@@ -526,7 +526,7 @@ drisw_init_screen(__DRIscreen * sPriv)
       return NULL;
 
    screen->sPriv = sPriv;
-   screen->fd = -1;
+   screen->fd = sPriv->fd;
 
    screen->swrast_no_present = debug_get_option_swrast_no_present();
 
@@ -537,7 +537,12 @@ drisw_init_screen(__DRIscreen * sPriv)
          lf = &drisw_shm_lf;
    }
 
-   if (pipe_loader_sw_probe_dri(&screen->dev, lf)) {
+   bool success = false;
+   if (screen->fd != -1)
+      success = pipe_loader_sw_probe_kms(&screen->dev, screen->fd);
+   if (!success)
+      success = pipe_loader_sw_probe_dri(&screen->dev, lf);
+   if (success) {
       pscreen = pipe_loader_create_screen(screen->dev);
       dri_init_options(screen);
    }