backend/drm: use local DRM FD for wlr_rend

The new wlr_renderer_autocreate API is great for compositors, however
it causes some issues with DRM multi-GPU support.

A DRM child backend wants the compositor to use the parent GPU, so it
exposes the parent's DRM FD in get_drm_fd. However, in order to be able
to perform multi-GPU buffer copies, the child DRM backend still needs to
create a local renderer.

Use the new private wlr_renderer_autocreate_with_drm_fd function to
avoid creating a renderer for the parent GPU.

Fixes: e128e6c08d ("render: drop egl parameters from wlr_renderer_autocreate")
This commit is contained in:
Simon Ser 2021-01-16 22:31:53 +01:00
parent 2f11914613
commit 9e98f497af

View file

@ -28,7 +28,7 @@ bool init_drm_renderer(struct wlr_drm_backend *drm,
return false; return false;
} }
renderer->wlr_rend = wlr_renderer_autocreate(&drm->backend); renderer->wlr_rend = wlr_renderer_autocreate_with_drm_fd(drm->fd);
if (!renderer->wlr_rend) { if (!renderer->wlr_rend) {
wlr_log(WLR_ERROR, "Failed to create EGL/WLR renderer"); wlr_log(WLR_ERROR, "Failed to create EGL/WLR renderer");
goto error_gbm; goto error_gbm;