Commit d32dfcf8 authored by Daniel Stone's avatar Daniel Stone Committed by Simon Ser

backend-drm: Enforce content protection for hardware planes

62626cbf ensures that the GL render will not render a view's content
to the screen when the surface has requested a higher content-protection
level than the output currently offers.

When the HDCP MR was split into the core content-protection support in !83
and specific DRM support for HDCP in !48 (not yet landed), this opened a
hole where the DRM backend could promote a view to a hardware plane,
even if the output offered a lower protection level than the surface
wanted to enforce.

In the DRM backend, check the desired protection level, and refuse to
promote the view to a hardware plane if the output does not offer
sufficient protection. This will lead to presentation falling back to
the renderer, which may censor the content, reduce quality, etc.
Signed-off-by: Daniel Stone's avatarDaniel Stone <>
Fixes: 4b6e73d6 ("libweston: Add support to set content-protection for a weston_surface")
parent 5f592c78
......@@ -497,6 +497,10 @@ drm_fb_get_from_view(struct drm_output_state *state, struct weston_view *ev)
if (!drm_view_transform_supported(ev, &output->base))
return NULL;
if (ev->surface->protection_mode == WESTON_SURFACE_PROTECTION_MODE_ENFORCED &&
ev->surface->desired_protection > output->base.current_protection)
return NULL;
if (!buffer)
return NULL;
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