Commit 5ff289a1 authored by Daniel Stone's avatar Daniel Stone

compositor-drm: Introduce drm_plane_is_available

Helper for the pattern of checking whether or not a plane can be used on
an output during the current repaint cycle.
Signed-off-by: Daniel Stone's avatarDaniel Stone <>
Reviewed-by: Pekka Paalanen's avatarPekka Paalanen <>
parent bc15f684
......@@ -657,9 +657,25 @@ drm_output_update_msc(struct drm_output *output, unsigned int seq);
static void
drm_output_destroy(struct weston_output *output_base);
static int
drm_plane_crtc_supported(struct drm_output *output, struct drm_plane *plane)
* Returns true if the plane can be used on the given output for its current
* repaint cycle.
static bool
drm_plane_is_available(struct drm_plane *plane, struct drm_output *output)
/* The plane still has a request not yet completed by the kernel. */
if (!plane->state_cur->complete)
return false;
/* The plane is still active on another output. */
if (plane->state_cur->output && plane->state_cur->output != output)
return false;
/* Check whether the plane can be used with this CRTC; possible_crtcs
* is a bitmask of CRTC indices (pipe), rather than CRTC object ID. */
return !!(plane->possible_crtcs & (1 << output->pipe));
......@@ -2024,12 +2040,7 @@ drm_output_prepare_overlay_view(struct drm_output_state *output_state,
if (!drm_plane_crtc_supported(output, p))
if (!p->state_cur->complete)
if (p->state_cur->output && p->state_cur->output != output)
if (!drm_plane_is_available(p, output))
state = drm_output_state_get_plane(output_state, p);
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment