diff --git a/backend/session/session.c b/backend/session/session.c index a076543a..cfb69ac2 100644 --- a/backend/session/session.c +++ b/backend/session/session.c @@ -265,12 +265,20 @@ static struct wlr_device *open_if_kms(struct wlr_session *restrict session, return NULL; } - drmVersion *ver = drmGetVersion(dev->fd); - if (!ver) { + // The kernel errors out with EOPNOTSUPP if DRIVER_MODESET isn't set + drmModeRes *res = drmModeGetResources(dev->fd); + if (!res) { + if (errno != EOPNOTSUPP) { + wlr_log_errno(WLR_ERROR, "drmModeGetResources(%s) failed", path); + } + goto out_dev; + } + if (res->count_crtcs == 0) { + drmModeFreeResources(res); goto out_dev; } + drmModeFreeResources(res); - drmFreeVersion(ver); return dev; out_dev: