[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <20251223-mtk-post-blend-color-pipeline-v3-0-7d969f9a37a0@collabora.com>
Date: Tue, 23 Dec 2025 15:01:20 -0300
From: Ariel D'Alessandro <ariel.dalessandro@...labora.com>
To: Maarten Lankhorst <maarten.lankhorst@...ux.intel.com>,
Maxime Ripard <mripard@...nel.org>, Thomas Zimmermann <tzimmermann@...e.de>,
David Airlie <airlied@...il.com>, Simona Vetter <simona@...ll.ch>,
Chun-Kuang Hu <chunkuang.hu@...nel.org>,
Philipp Zabel <p.zabel@...gutronix.de>,
Matthias Brugger <matthias.bgg@...il.com>,
AngeloGioacchino Del Regno <angelogioacchino.delregno@...labora.com>,
Louis Chauvet <louis.chauvet@...tlin.com>,
Haneen Mohammed <hamohammed.sa@...il.com>,
Melissa Wen <melissa.srw@...il.com>
Cc: dri-devel@...ts.freedesktop.org, linux-kernel@...r.kernel.org,
linux-mediatek@...ts.infradead.org, linux-arm-kernel@...ts.infradead.org,
kernel@...labora.com,
Nícolas F. R. A. Prado <nfraprado@...labora.com>,
Ariel D'Alessandro <ariel.dalessandro@...labora.com>,
Harry Wentland <harry.wentland@....com>
Subject: [PATCH v3 00/21] Introduce support for CRTC (post-blend) color
pipeline
This series is based on "Color Pipeline API w/ VKMS" [1]. It reuses the
same concept of a color pipeline API but for the post-blend stage
instead of pre-blend, by attaching the COLOR_PIPELINE property to the
CRTC rather than a plane.
The patches in the series first implement the necessary changes in the
DRM core to allow for CRTC (post-blend) color pipelines and expose it
through the uAPI, and then implement support in both the MediaTek KMS
driver and in VKMS.
This series has been tested with IGT, with the latest revision of patch
series "Support post-blend color pipeline API" [2] applied, on top of
VKMS, as well as with Weston, with a WIP branch [3], on a MT8195-Tomato
Chromebook and a MT8188 Genio 700 EVK, where both gamma LUT and CTM
color transformations have been simultaneously configured in hardware
through the API and validated (test commits for weston at [4]).
[1] https://lore.kernel.org/all/20251115000237.3561250-1-alex.hung@amd.com/
[2] https://lore.kernel.org/igt-dev/20250912-post-blend-colorops-v1-0-83fc62420cba@collabora.com/T/#t
[3] https://gitlab.collabora.com/nfraprado/weston/-/tree/post-blend-colorops?ref_type=heads
[4] https://gitlab.collabora.com/nfraprado/weston/-/tree/post-blend-color-pipeline-lut-ctm-test?ref_type=tags
Signed-off-by: Nícolas F. R. A. Prado <nfraprado@...labora.com>
Co-developed-by: Ariel D'Alessandro <ariel.dalessandro@...labora.com>
Signed-off-by: Ariel D'Alessandro <ariel.dalessandro@...labora.com>
---
Changes in v3:
- Aligned terminology between plane (pre-blend) and crtc (post-blend)
color pipeline (Harry Wentland). Replaced all naming s/post-blend/crtc
- Reworked cleanup in vkms_initialize_post_blend_color_pipeline (Louis
Chauvet).
- Added check on CLIENT_CAP while setting COLOR_PIPELINE property (Louis
Chauvet).
- Moved common color_pipeline property initialization code to
drivers/gpu/drm/drm_property.c
- Added missing support for CRTC (post-blend) color pipeline
configuration in VKMS.
- Added missing return value checks in mtk_crtc_create()
- Added drm_color_lut_to_lut32() and made use of it in mtk_disp_gamma.c
- Added drm_color_ctm_to_ctm_3x4() and made use of it in mtk_disp_ccorr.c
- Split plane and crtc fields descriptions in struct drm_colorop
- Link to v2: https://lore.kernel.org/r/20250917-mtk-post-blend-color-pipeline-v2-0-ac4471b44758@collabora.com
Changes in v2:
- Split core DRM changes for post-blend color pipelines from single
commit into smaller changes
- Added post-blend color pipeline support in VKMS
- Introduced driver cap, and made client cap depend on it (daniels)
- Made deprecated color props (GAMMA_LUT, DEGAMMA_LUT, CTM) available as
read-only when post-blend color pipelines are enabled (daniels)
- Created colorop_modeset_lock/unlock to commonize locking pattern for
colorops (louis.chauvet)
- Added helper for post-blend 1D curve colorop creation
- Link to v1: https://lore.kernel.org/r/20250822-mtk-post-blend-color-pipeline-v1-0-a9446d4aca82@collabora.com
---
Ariel D'Alessandro (2):
drm: Add helper to extract a 3x4 matrix from any CTM matrix dimensions
drm: Add helper to extract a LUT entry from either 16-bit or 32-bit LUT
Nícolas F. R. A. Prado (19):
drm/crtc: Add color pipeline to CRTC state
drm/colorop: Allow parenting colorop to CRTC
drm: Factor out common color_pipeline property initialization code
drm/crtc: Add COLOR_PIPELINE property
drm: Introduce DRM_CAP_CRTC_COLOR_PIPELINE
drm: Introduce DRM_CLIENT_CAP_CRTC_COLOR_PIPELINE
drm/atomic: Pass crtc_color_pipeline client cap to atomic check
drm/atomic: Print the color pipeline as part of the CRTC state print
drm/colorop: Factor out common paths from colorops helpers
drm/colorop: Introduce colorop helpers for crtc
drm/crtc: Track crtc color pipeline client cap in drm_crtc_state
drm/mediatek: Support CRTC colorops for gamma and ctm
drm/mediatek: ccorr: Support CRTC color pipeline API
drm/mediatek: gamma: Support CRTC color pipeline API
drm/mediatek: Set CRTC color pipeline driver cap
drm/vkms: Rename existing color pipeline helpers to contain "plane"
drm/vkms: Prepare pre_blend_color_transform() for CRTC color pipelines
drm/vkms: Introduce support for post-blend color pipeline
drm/vkms: Set CRTC color pipeline driver cap
drivers/gpu/drm/drm_atomic.c | 9 +-
drivers/gpu/drm/drm_atomic_uapi.c | 71 +++++++-
drivers/gpu/drm/drm_colorop.c | 242 +++++++++++++++++++++-----
drivers/gpu/drm/drm_connector.c | 1 +
drivers/gpu/drm/drm_crtc.c | 31 ++++
drivers/gpu/drm/drm_crtc_internal.h | 1 +
drivers/gpu/drm/drm_ioctl.c | 12 ++
drivers/gpu/drm/drm_mode_object.c | 9 +
drivers/gpu/drm/drm_plane.c | 35 +---
drivers/gpu/drm/drm_property.c | 44 +++++
drivers/gpu/drm/mediatek/mtk_crtc.c | 222 ++++++++++++++++++++++-
drivers/gpu/drm/mediatek/mtk_ddp_comp.c | 6 +-
drivers/gpu/drm/mediatek/mtk_ddp_comp.h | 2 +
drivers/gpu/drm/mediatek/mtk_disp_ccorr.c | 88 ++++++++--
drivers/gpu/drm/mediatek/mtk_disp_drv.h | 6 +-
drivers/gpu/drm/mediatek/mtk_disp_gamma.c | 68 ++++++--
drivers/gpu/drm/mediatek/mtk_drm_drv.c | 3 +-
drivers/gpu/drm/vkms/tests/vkms_config_test.c | 70 +++++---
drivers/gpu/drm/vkms/vkms_colorop.c | 110 +++++++++++-
drivers/gpu/drm/vkms/vkms_composer.c | 13 +-
drivers/gpu/drm/vkms/vkms_config.c | 5 +-
drivers/gpu/drm/vkms/vkms_config.h | 29 ++-
drivers/gpu/drm/vkms/vkms_crtc.c | 6 +-
drivers/gpu/drm/vkms/vkms_drv.c | 10 +-
drivers/gpu/drm/vkms/vkms_drv.h | 8 +-
drivers/gpu/drm/vkms/vkms_output.c | 3 +-
drivers/gpu/drm/vkms/vkms_plane.c | 2 +-
include/drm/drm_atomic.h | 20 +++
include/drm/drm_atomic_uapi.h | 2 +
include/drm/drm_color_mgmt.h | 61 +++++++
include/drm/drm_colorop.h | 25 ++-
include/drm/drm_crtc.h | 27 +++
include/drm/drm_drv.h | 6 +
include/drm/drm_file.h | 7 +
include/drm/drm_property.h | 5 +
include/uapi/drm/drm.h | 25 +++
36 files changed, 1109 insertions(+), 175 deletions(-)
---
base-commit: b96bcfba104c65db41378a04f5ccac186f79578f
change-id: 20250730-mtk-post-blend-color-pipeline-498e1a9cc53e
Best regards,
--
Ariel D'Alessandro <ariel.dalessandro@...labora.com>
Powered by blists - more mailing lists