backend-drm: make dma-buf feedback device specific

The scanout format for the dma-buf feedback are specific to the kms device that
is used for scanout. Therefore, we have to pass the device of the output when
retrieving the scanout formats.

Signed-off-by: Michael Tretter <m.tretter@pengutronix.de>
This commit is contained in:
Michael Tretter 2021-11-29 14:12:27 +01:00 committed by Daniel Stone
parent 101c0f6b8b
commit 615a37dc88
2 changed files with 6 additions and 7 deletions

View File

@ -1711,10 +1711,9 @@ drm_output_deinit_planes(struct drm_output *output)
}
static struct weston_drm_format_array *
get_scanout_formats(struct drm_backend *b)
get_scanout_formats(struct drm_device *device)
{
struct weston_compositor *ec = b->compositor;
struct drm_device *device = b->drm;
struct weston_compositor *ec = device->backend->compositor;
const struct weston_drm_format_array *renderer_formats;
struct weston_drm_format_array *scanout_formats, union_planes_formats;
struct drm_plane *plane;
@ -3240,7 +3239,7 @@ drm_backend_create(struct weston_compositor *compositor,
* table was already created and populated with
* renderer's format/modifier pairs. So now we must
* compute the scanout formats indices in the table */
scanout_formats = get_scanout_formats(b);
scanout_formats = get_scanout_formats(b->drm);
if (!scanout_formats)
goto err_udev_monitor;
ret = weston_dmabuf_feedback_format_table_set_scanout_indices(compositor->dmabuf_feedback_format_table,

View File

@ -326,12 +326,12 @@ drm_output_check_zpos_plane_states(struct drm_output_state *state)
}
static bool
dmabuf_feedback_maybe_update(struct drm_backend *b, struct weston_view *ev,
dmabuf_feedback_maybe_update(struct drm_device *device, struct weston_view *ev,
uint32_t try_view_on_plane_failure_reasons)
{
struct weston_dmabuf_feedback *dmabuf_feedback = ev->surface->dmabuf_feedback;
struct weston_dmabuf_feedback_tranche *scanout_tranche;
struct drm_device *device = b->drm;
struct drm_backend *b = device->backend;
dev_t scanout_dev = device->drm.devnum;
uint32_t scanout_flags = ZWP_LINUX_DMABUF_FEEDBACK_V1_TRANCHE_FLAGS_SCANOUT;
uint32_t action_needed = ACTION_NEEDED_NONE;
@ -971,7 +971,7 @@ drm_assign_planes(struct weston_output *output_base)
/* Update dmabuf-feedback if needed */
if (ev->surface->dmabuf_feedback)
dmabuf_feedback_maybe_update(b, ev,
dmabuf_feedback_maybe_update(device, ev,
pnode->try_view_on_plane_failure_reasons);
pnode->try_view_on_plane_failure_reasons = FAILURE_REASONS_NONE;