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

Reply via email to