@ -337,9 +337,8 @@ bool wlr_session_change_vt(struct wlr_session *session, unsigned vt) {
return libseat_switch_session ( session - > seat_handle , vt ) = = 0 ;
return libseat_switch_session ( session - > seat_handle , vt ) = = 0 ;
}
}
/* Tests if 'path' is KMS compatible by trying to open it.
/* Tests if 'path' is KMS compatible by trying to open it. Returns the opened
* It leaves the open device in * fd_out it it succeeds .
* device on success . */
*/
static struct wlr_device * open_if_kms ( struct wlr_session * restrict session ,
static struct wlr_device * open_if_kms ( struct wlr_session * restrict session ,
const char * restrict path ) {
const char * restrict path ) {
if ( ! path ) {
if ( ! path ) {
@ -351,25 +350,13 @@ static struct wlr_device *open_if_kms(struct wlr_session *restrict session,
return NULL ;
return NULL ;
}
}
// The kernel errors out with EOPNOTSUPP if DRIVER_MODESET isn't set
if ( ! drmIsKMS ( dev - > fd ) ) {
drmModeRes * res = drmModeGetResources ( dev - > fd ) ;
wlr_log ( WLR_DEBUG , " Ignoring '%s': not a KMS device " , path ) ;
if ( ! res ) {
wlr_session_close_file ( session , dev ) ;
if ( errno ! = EOPNOTSUPP ) {
return NULL ;
wlr_log_errno ( WLR_ERROR , " drmModeGetResources(%s) failed " , path ) ;
}
goto out_dev ;
}
if ( res - > count_crtcs = = 0 ) {
drmModeFreeResources ( res ) ;
goto out_dev ;
}
}
drmModeFreeResources ( res ) ;
return dev ;
return dev ;
out_dev :
wlr_session_close_file ( session , dev ) ;
return NULL ;
}
}
static ssize_t explicit_find_gpus ( struct wlr_session * session ,
static ssize_t explicit_find_gpus ( struct wlr_session * session ,