Re: [PATCH v4 2/4] drm: Add CRTC background color property
From: Nícolas F. R. A. Prado <hidden>
Date: 2026-01-26 18:24:20
Also in:
dri-devel, linux-rockchip, lkml
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 <redacted> Signed-off-by: Matt Roper <redacted> Signed-off-by: Cristian Ciocaltea <redacted> --- 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().
quoted hunk ↗ jump to hunk
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 <redacted> -- Thanks, Nícolas