diff --git a/src/egl/drivers/dri2/platform_surfaceless.c b/src/egl/drivers/dri2/platform_surfaceless.c
index 70b302c0ce42f8ec8a5a6961bf3e267d009e4e55..ebd954cf5a72ba8a21d8c1da05b61b71ccd8fa4a 100644
--- a/src/egl/drivers/dri2/platform_surfaceless.c
+++ b/src/egl/drivers/dri2/platform_surfaceless.c
@@ -305,6 +305,16 @@ surfaceless_probe_device(_EGLDisplay *dpy, bool swrast)
       dri2_dpy->driver_name = NULL;
    }
 
+   /* No rendernodes, so let's make it without one if we don't need real HW */
+   if (swrast) {
+      dri2_dpy->driver_name = strdup("kms_swrast");
+      dri2_dpy->fd = -1;
+      if (dri2_load_driver_dri3(dpy))
+         return true;
+      free(dri2_dpy->driver_name);
+      dri2_dpy->driver_name = NULL;
+   }
+
    return false;
 }