diff --git a/libweston/backend-drm/state-propose.c b/libweston/backend-drm/state-propose.c index e98e986f..767c34f4 100644 --- a/libweston/backend-drm/state-propose.c +++ b/libweston/backend-drm/state-propose.c @@ -691,6 +691,24 @@ drm_output_prepare_plane_view(struct drm_output_state *state, } } + if (mode == DRM_OUTPUT_PROPOSE_STATE_RENDERER_ONLY && + (plane->type == WDRM_PLANE_TYPE_OVERLAY || + plane->type == WDRM_PLANE_TYPE_PRIMARY)) { + drm_debug(b, "\t\t\t\t[plane] not adding plane %d to " + "candidate list: renderer-only mode\n", + plane->plane_id); + continue; + } + + if (plane->type != WDRM_PLANE_TYPE_CURSOR && + b->sprites_are_broken) { + drm_debug(b, "\t\t\t\t[plane] not adding plane %d, type %s to " + "candidate list: sprites are broken!\n", + plane->plane_id, + drm_output_get_plane_type_name(plane)); + continue; + } + if (!drm_output_plane_view_has_valid_format(plane, state, ev, fb)) { drm_debug(b, "\t\t\t\t[plane] not adding plane %d to " "candidate list: invalid pixel format\n",