On Fri, 2025-12-19 at 23:46 +0200, Cristian Ciocaltea wrote:
> Some display controllers can be hardware programmed to show non-black
> colors for pixels that are either not covered by any plane or are
> exposed through transparent regions of higher planes. This feature
> can
> help reduce memory bandwidth usage, e.g. in compositors managing a UI
> with a solid background color while using smaller planes to render
> the
> remaining content.
>
> To support this capability, introduce the BACKGROUND_COLOR standard
> DRM
> mode property, which can be attached to a CRTC through the
> drm_crtc_attach_background_color_property() helper function.
>
> Additionally, define a 64-bit ARGB format value to be built with the
> help of a couple of dedicated DRM_ARGB64_PREP*() helpers. Individual
> color components can be extracted with desired precision using the
> corresponding DRM_ARGB64_GET*() macros.
>
> Co-developed-by: Matt Roper <[email protected]>
> Signed-off-by: Matt Roper <[email protected]>
> Signed-off-by: Cristian Ciocaltea <[email protected]>
> ---
> drivers/gpu/drm/drm_atomic_state_helper.c | 1 +
> drivers/gpu/drm/drm_atomic_uapi.c | 4 ++
> drivers/gpu/drm/drm_blend.c | 39 ++++++++++++++++--
> drivers/gpu/drm/drm_mode_config.c | 6 +++
> include/drm/drm_blend.h | 4 +-
> include/drm/drm_crtc.h | 12 ++++++
> include/drm/drm_mode_config.h | 5 +++
> include/uapi/drm/drm_mode.h | 67
> +++++++++++++++++++++++++++++++
> 8 files changed, 133 insertions(+), 5 deletions(-)
You should also add a dump for this property in
drm_atomic_crtc_print_state().
>
> diff --git a/include/drm/drm_crtc.h b/include/drm/drm_crtc.h
> index 66278ffeebd6..d99a74258d3d 100644
> --- a/include/drm/drm_crtc.h
> +++ b/include/drm/drm_crtc.h
> @@ -274,6 +274,18 @@ struct drm_crtc_state {
> */
> struct drm_property_blob *gamma_lut;
>
> + /**
> + * @background_color:
> + *
> + * RGB value representing the pipe's background color. The
> background
> + * color (aka "canvas color") of a pipe is the color that
> will be used
> + * for pixels not covered by a plane, or covered by
> transparent pixels
> + * of a plane. The value here should be built using
> DRM_ARGB64_PREP*()
> + * helpers, while the individual color components can be
> extracted with
> + * desired precision via the DRM_ARGB64_GET*() macros.
> + */
> + u64 background_color;
> +
/s/pipe/CRTC/ . pipe is an intel term but this is a generic CRTC
property.
Other than that,
Reviewed-by: Nícolas F. R. A. Prado <[email protected]>
--
Thanks,
Nícolas