backend/session: fix KMS device filtering

As explained in [1], user-space should perform a drmModeGetResources
call to figure out whether a device supports KMS.

[1]: https://gitlab.freedesktop.org/mesa/drm/-/merge_requests/127
This commit is contained in:
Simon Ser 2021-02-23 20:53:50 +01:00
parent c5dad8b626
commit 73137ace84
1 changed files with 11 additions and 3 deletions

View File

@ -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: