backend-drm: Enforce content protection for hardware planes
62626cbfec
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 <daniels@collabora.com> Fixes:4b6e73d617
("libweston: Add support to set content-protection for a weston_surface")
This commit is contained in:
parent
5f592c7855
commit
d32dfcf833
@ -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;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user