Re: [PATCH v4 2/4] drm: Add CRTC background color property

From: F. R. A. Prado

Date: Mon Jan 26 2026 - 13:24:29 EST


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 <matthew.d.roper@xxxxxxxxx>
> Signed-off-by: Matt Roper <matthew.d.roper@xxxxxxxxx>
> Signed-off-by: Cristian Ciocaltea <cristian.ciocaltea@xxxxxxxxxxxxx>
> ---
>  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 <nfraprado@xxxxxxxxxxxxx>

--
Thanks,

Nícolas