backend/drm: add wlr_drm_backend_get_parent()

Allows compositors to figure out whether a DRM backend is
secondary on a multi-GPU setup.
This commit is contained in:
Simon Ser 2023-12-11 17:47:19 +01:00 committed by Simon Zeni
parent 3531007b75
commit fc7a0b93dd
2 changed files with 10 additions and 0 deletions

View file

@ -96,6 +96,11 @@ bool wlr_backend_is_drm(struct wlr_backend *b) {
return b->impl == &backend_impl; return b->impl == &backend_impl;
} }
struct wlr_backend *wlr_drm_backend_get_parent(struct wlr_backend *backend) {
struct wlr_drm_backend *drm = get_drm_backend_from_backend(backend);
return drm->parent ? &drm->parent->backend : NULL;
}
static void handle_session_active(struct wl_listener *listener, void *data) { static void handle_session_active(struct wl_listener *listener, void *data) {
struct wlr_drm_backend *drm = struct wlr_drm_backend *drm =
wl_container_of(listener, drm, session_active); wl_container_of(listener, drm, session_active);

View file

@ -43,6 +43,11 @@ struct wlr_backend *wlr_drm_backend_create(struct wl_display *display,
bool wlr_backend_is_drm(struct wlr_backend *backend); bool wlr_backend_is_drm(struct wlr_backend *backend);
bool wlr_output_is_drm(struct wlr_output *output); bool wlr_output_is_drm(struct wlr_output *output);
/**
* Get the parent DRM backend, if any.
*/
struct wlr_backend *wlr_drm_backend_get_parent(struct wlr_backend *backend);
/** /**
* Get the KMS connector object ID. * Get the KMS connector object ID.
*/ */