diff --git a/src/gallium/frontends/dri/drisw.c b/src/gallium/frontends/dri/drisw.c index efdb84fc3a3..3ed69a1fd23 100644 --- a/src/gallium/frontends/dri/drisw.c +++ b/src/gallium/frontends/dri/drisw.c @@ -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); }