mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
To: "Cristian Ciocaltea" <cristian.ciocaltea@collabora.com>,
	"Maxime Ripard" <mripard@kernel.org>,
	"Thomas Zimmermann" <tzimmermann@suse.de>,
	"David Airlie" <airlied@gmail.com>,
	"Simona Vetter" <simona@ffwll.ch>,
	"Sandy Huang" <hjc@rock-chips.com>,
	"Heiko Stübner" <heiko@sntech.de>,
	"Andy Yan" <andy.yan@rock-chips.com>,
	"Louis Chauvet" <louis.chauvet@bootlin.com>,
	"Haneen Mohammed" <hamohammed.sa@gmail.com>,
	"Melissa Wen" <melissa.srw@gmail.com>,
	"Jani Nikula" <jani.nikula@linux.intel.com>,
	"Andy Shevchenko" <andriy.shevchenko@linux.intel.com>
Cc: "Robert Mader" <robert.mader@collabora.com>,
	kernel@collabora.com, dri-devel@lists.freedesktop.org,
	linux-kernel@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org,
	linux-rockchip@lists.infradead.org,
	"Nícolas F. R. A. Prado" <nfraprado@collabora.com>,
	"Diederik de Haas" <diederik@cknow-tech.com>,
	"AngeloGioacchino Del Regno"
	<angelogioacchino.delregno@collabora.com>,
	"Matt Roper" <matthew.d.roper@intel.com>
Subject: Re: [PATCH v7 0/4] Introduce BACKGROUND_COLOR DRM CRTC property
Date: Mon, 16 Feb 2026 15:56:44 +0100	[thread overview]
Message-ID: <b50e26a3-6c89-40f4-80a1-c8fc6d091141@linux.intel.com> (raw)
In-Reply-To: <20260204-rk3588-bgcolor-v7-0-78d1d01c5ca1@collabora.com>

Hey,

Den 2026-02-04 kl. 21:02, skrev Cristian Ciocaltea:
> Some display controllers can be hardware-configured to present non-black
> colors for pixels which are not covered by any plane (or are exposed
> through transparent regions of higher planes).
> 
> The 1st patch of the series provides DIV_ROUND_CLOSEST() to uapi, as a
> prerequisite to the 2nd patch introducing the BACKGROUND_COLOR DRM
> property that can be attached to a CRTC via a dedicated helper function.
> A 64-bit ARGB color value format is also defined and can be manipulated
> with the help of a few utility macros.
> 
> Note this is a reworked version of the patch [1] submitted (many) years
> ago by Matt Roper.  The main changes are:
> 
> * Renamed DRM_ARGB_<COMP>() to DRM_ARGB64_GET<C>_BPC() while providing
>   convenience wrappers to extract all 16 bits of a specific color via
>   DRM_ARGB64_GET<C>()
> * Replaced drm_argb() function with DRM_ARGB64_PREP_BPC() macro, to
>   improve uAPI consistency and readability; additionally fixed a bug in
>   case of using bpc < 16: the unused least-significant bits of a given
>   component in the output value would contain the unused
>   most-significant bits of the following component in the input value,
>   instead of being set to 0
> * Replaced GENMASK_ULL(63, 0) with U64_MAX when calling
>   drm_property_create_range() to create the BACKGROUND_COLOR property
> * Moved crtc_state->bgcolor initialization from
>   __drm_atomic_helper_crtc_reset() to
>   __drm_atomic_helper_crtc_state_reset()
> * Replaced '*bgcolor*' occurrences to '*background_color*' for
>   consistency with the actual property name in both storage field and
>   helper functions names
> 
> The subsequent patches add background color support to VKMS and the VOP2
> display controller used in the RK3568, RK3576, and RK3588 Rockchip SoC
> families.
> 
> The validation has been done using a dedicated IGT test [2] - see the
> reported results below.
> 
> On the userland side, a Weston merge request [3] is available, providing
> support for the BACKGROUND_COLOR CRTC property to the DRM backend.  It
> relies on the already existing background-color setting in weston.ini:
> 
>   [shell]
>   background-color=0xAARRGGBB
> 
> [1] https://lore.kernel.org/all/20190930224707.14904-2-matthew.d.roper@intel.com/
> [2] https://lore.kernel.org/all/20251219-crtc-bgcolor-v3-1-31b589911588@collabora.com/
> [3] https://gitlab.freedesktop.org/wayland/weston/-/merge_requests/1845
> 
> IGT kms_crtc_background_color test results
> ==========================================
> 
> * VKMS
> 
> virtme-ng$ IGT_FORCE_DRIVER=vkms build/tests/kms_crtc_background_color
> 
> IGT-Version: 2.3-g6b07138e8 (x86_64) (Linux: 6.19.0-rc1-virtme x86_64)
> Using IGT_SRANDOM=1766149634 for randomisation
> Opened device: /dev/dri/card0
> Starting subtest: background-color-red
> Starting dynamic subtest: pipe-A-Virtual-1
> Dynamic subtest pipe-A-Virtual-1: SUCCESS (0.071s)
> Subtest background-color-red: SUCCESS (0.073s)
> Starting subtest: background-color-green
> Starting dynamic subtest: pipe-A-Virtual-1
> Dynamic subtest pipe-A-Virtual-1: SUCCESS (0.074s)
> Subtest background-color-green: SUCCESS (0.074s)
> Starting subtest: background-color-blue
> Starting dynamic subtest: pipe-A-Virtual-1
> Dynamic subtest pipe-A-Virtual-1: SUCCESS (0.074s)
> Subtest background-color-blue: SUCCESS (0.074s)
> Starting subtest: background-color-yellow
> Starting dynamic subtest: pipe-A-Virtual-1
> Dynamic subtest pipe-A-Virtual-1: SUCCESS (0.072s)
> Subtest background-color-yellow: SUCCESS (0.073s)
> Starting subtest: background-color-purple
> Starting dynamic subtest: pipe-A-Virtual-1
> Dynamic subtest pipe-A-Virtual-1: SUCCESS (0.072s)
> Subtest background-color-purple: SUCCESS (0.074s)
> Starting subtest: background-color-cyan
> Starting dynamic subtest: pipe-A-Virtual-1
> Dynamic subtest pipe-A-Virtual-1: SUCCESS (0.074s)
> Subtest background-color-cyan: SUCCESS (0.074s)
> Starting subtest: background-color-black
> Starting dynamic subtest: pipe-A-Virtual-1
> Dynamic subtest pipe-A-Virtual-1: SUCCESS (0.072s)
> Subtest background-color-black: SUCCESS (0.072s)
> Starting subtest: background-color-white
> Starting dynamic subtest: pipe-A-Virtual-1
> Dynamic subtest pipe-A-Virtual-1: SUCCESS (0.073s)
> Subtest background-color-white: SUCCESS (0.074s)
> 
> * Radxa ROCK 5B (RK3588)
> 
> rock5b$ build/tests/kms_crtc_background_color --device drm:/dev/dri/card1
> 
> IGT-Version: 2.2-g3e4ec308e (aarch64) (Linux: 6.18.0-rc1 aarch64)
> Using IGT_SRANDOM=1762774806 for randomisation
> Opened device: /dev/dri/card1
> Starting subtest: background-color-red
> Starting dynamic subtest: pipe-C-DP-1
> Dynamic subtest pipe-C-DP-1: SUCCESS (0.491s)
> Subtest background-color-red: SUCCESS (0.493s)
> Starting subtest: background-color-green
> Starting dynamic subtest: pipe-C-DP-1
> Dynamic subtest pipe-C-DP-1: SUCCESS (0.533s)
> Subtest background-color-green: SUCCESS (0.535s)
> Starting subtest: background-color-blue
> Starting dynamic subtest: pipe-C-DP-1
> Dynamic subtest pipe-C-DP-1: SUCCESS (0.541s)
> Subtest background-color-blue: SUCCESS (0.544s)
> Starting subtest: background-color-yellow
> Starting dynamic subtest: pipe-C-DP-1
> Dynamic subtest pipe-C-DP-1: SUCCESS (0.535s)
> Subtest background-color-yellow: SUCCESS (0.537s)
> Starting subtest: background-color-purple
> Starting dynamic subtest: pipe-C-DP-1
> Dynamic subtest pipe-C-DP-1: SUCCESS (0.536s)
> Subtest background-color-purple: SUCCESS (0.538s)
> Starting subtest: background-color-cyan
> Starting dynamic subtest: pipe-C-DP-1
> Dynamic subtest pipe-C-DP-1: SUCCESS (0.539s)
> Subtest background-color-cyan: SUCCESS (0.541s)
> Starting subtest: background-color-black
> Starting dynamic subtest: pipe-C-DP-1
> (kms_crtc_background_color:744) igt_pipe_crc-WARNING: Warning on condition all_zero in function crc_sanity_checks, file ../lib/igt_pipe_crc.c:475
> (kms_crtc_background_color:744) igt_pipe_crc-WARNING: Suspicious CRC: All values are 0.
> (kms_crtc_background_color:744) igt_pipe_crc-WARNING: Warning on condition all_zero in function crc_sanity_checks, file ../lib/igt_pipe_crc.c:475
> (kms_crtc_background_color:744) igt_pipe_crc-WARNING: Suspicious CRC: All values are 0.
> Dynamic subtest pipe-C-DP-1: SUCCESS (0.535s)
> Subtest background-color-black: SUCCESS (0.537s)
> Starting subtest: background-color-white
> Starting dynamic subtest: pipe-C-DP-1
> Dynamic subtest pipe-C-DP-1: SUCCESS (0.540s)
> Subtest background-color-white: SUCCESS (0.542s)
> 
> Signed-off-by: Cristian Ciocaltea <cristian.ciocaltea@collabora.com>
> ---
> Changes in v7:
> - Consistently put "({" on a separate line for all macro definitions
>   (Andy Shevchenko)
> - Rebased series onto latest drm-misc-next
> - Link to v6: https://lore.kernel.org/r/20260129-rk3588-bgcolor-v6-0-c15f755a4055@collabora.com
> 
> Changes in v6:
> - Collected Acked-by & Reviewed-by tags from Andy S & Angelo
> - Handled feedback from Andy Shevchenko
>   * Fixed up styling for __KERNEL_DIV_ROUND_CLOSEST() macro
>   * Made use of __GENMASK() helper in __DRM_ARGB64_PREP*() and
>     __DRM_ARGB64_GET*() definitions
>   * Introduced DRM_ARGB64_GET*_BPCS() as an alternative for
>     DRM_ARGB64_GET*_BPC() to help when performance is more important
>     than accuracy, e.g. used it along with FIELD_MODIFY() in the vop2
>     related patch to simplify a bit the bgcolor operations
> - Link to v5: https://lore.kernel.org/r/20260127-rk3588-bgcolor-v5-0-b25aa8613211@collabora.com
> 
> Changes in v5:
> - Collected Reviewed-by & Tested-by tags from Nícolas & Diederik
> - Dumped background_color prop value in drm_atomic_crtc_print_state()
>   and updated comment in drm_crtc_state (Nícolas)
> - Documented the reasons of not using the DRM_ARGB64_GET*_BPC() helpers
>   in vop2 related patch (Nícolas)
> - Rebased series onto latest drm-misc-next
> - Link to v4: https://lore.kernel.org/r/20251219-rk3588-bgcolor-v4-0-2ff1127ea757@collabora.com
> 
> Changes in v4:
> - Switched to simple bit-shifting approach when performing the bpc
>   conversion in the vop2 driver, to avoid the expensive division since
>   we shouldn't be concerned anymore about the precision (Chaoyi)
> - Rebased series onto latest drm-misc-next
> - Link to v3: https://lore.kernel.org/r/20251118-rk3588-bgcolor-v3-0-a2cc909428ea@collabora.com
> 
> Changes in v3:
> - Added new patches:
>   * uapi: Provide DIV_ROUND_CLOSEST()
>   * drm/vkms: Support setting custom background color
> - Improved DRM_ARGB64_{PREP|GET}*() helpers by using a conversion ratio
>   for better color approximation when dealing with less than 16 bits of
>   precision
> - Mentioned the IGT test in the cover letter while documenting the
>   validation results; also dropped references to the now useless
>   modetest wrapper script and its generated report
> - Rebased series onto latest drm-misc-next
> - Link to v2: https://lore.kernel.org/r/20251013-rk3588-bgcolor-v2-0-25cc3810ba8c@collabora.com
> 
> Changes in v2:
> - Improved uAPI consistency and readability by introducing
>   DRM_ARGB64_PREP*() and DRM_ARGB64_GET*() helper macros
> - Updated several code comment sections
> - Referenced the counterpart Weston support in the cover letter
> - Rebased series onto v6.18-rc1
> - Link to v1: https://lore.kernel.org/r/20250902-rk3588-bgcolor-v1-0-fd97df91d89f@collabora.com
> 
> ---
> Cristian Ciocaltea (4):
>       uapi: Provide DIV_ROUND_CLOSEST()
>       drm: Add CRTC background color property
>       drm/vkms: Support setting custom background color
>       drm/rockchip: vop2: Support setting custom background color
> 
>  drivers/gpu/drm/drm_atomic.c                 |  1 +
>  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 +++
>  drivers/gpu/drm/rockchip/rockchip_drm_vop2.c | 17 +++++-
>  drivers/gpu/drm/rockchip/rockchip_drm_vop2.h |  4 ++
>  drivers/gpu/drm/vkms/vkms_composer.c         | 10 +++-
>  drivers/gpu/drm/vkms/vkms_crtc.c             |  3 ++
>  include/drm/drm_blend.h                      |  4 +-
>  include/drm/drm_crtc.h                       | 12 +++++
>  include/drm/drm_mode_config.h                |  5 ++
>  include/linux/math.h                         | 18 +------
>  include/uapi/drm/drm_mode.h                  | 80 ++++++++++++++++++++++++++++
>  include/uapi/linux/const.h                   | 18 +++++++
>  15 files changed, 197 insertions(+), 25 deletions(-)
> ---
> base-commit: cff3f89ffbdd4b6c43a117c01aaf5b290ff80803
> change-id: 20250829-rk3588-bgcolor-c1a7b9a507bc

Excellent, I still have the original patches in a branch somewhere for intel/display.
Will rebase once this lands!

      parent reply	other threads:[~2026-02-16 14:56 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-02-04 20:02 Cristian Ciocaltea
2026-02-04 20:02 ` [PATCH v7 1/4] uapi: Provide DIV_ROUND_CLOSEST() Cristian Ciocaltea
2026-02-04 20:02 ` [PATCH v7 2/4] drm: Add CRTC background color property Cristian Ciocaltea
2026-02-04 20:02 ` [PATCH v7 3/4] drm/vkms: Support setting custom background color Cristian Ciocaltea
2026-02-06 14:04   ` Louis Chauvet
2026-02-04 20:02 ` [PATCH v7 4/4] drm/rockchip: vop2: " Cristian Ciocaltea
2026-02-14  7:41   ` Andy Yan
2026-02-16 14:56 ` Maarten Lankhorst [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=b50e26a3-6c89-40f4-80a1-c8fc6d091141@linux.intel.com \
    --to=maarten.lankhorst@linux.intel.com \
    --cc=airlied@gmail.com \
    --cc=andriy.shevchenko@linux.intel.com \
    --cc=andy.yan@rock-chips.com \
    --cc=angelogioacchino.delregno@collabora.com \
    --cc=cristian.ciocaltea@collabora.com \
    --cc=diederik@cknow-tech.com \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=hamohammed.sa@gmail.com \
    --cc=heiko@sntech.de \
    --cc=hjc@rock-chips.com \
    --cc=jani.nikula@linux.intel.com \
    --cc=kernel@collabora.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-rockchip@lists.infradead.org \
    --cc=louis.chauvet@bootlin.com \
    --cc=matthew.d.roper@intel.com \
    --cc=melissa.srw@gmail.com \
    --cc=mripard@kernel.org \
    --cc=nfraprado@collabora.com \
    --cc=robert.mader@collabora.com \
    --cc=simona@ffwll.ch \
    --cc=tzimmermann@suse.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®