When we merged the drm_plane color pipeline API the major gap
that existed was the lack of a YUV to RGB conversion colorop.
We deprecated any legacy drm_plane color properties, which
means that the COLOR_RANGE and COLOR_ENCODING properties can't
be used with the COLOR_PIPELINE property on a drm_plane. In
practice this means that we can't use a COLOR_PIPELINE on
YCbCr encoded framebuffers.

This patchset expands on the CSC_FF colorop proposed by Chaitanya
and adds limited range variants of the YCbCr to RGB conversions.

His full patchset can be found at
https://patchwork.freedesktop.org/patch/709860

This code has been tested with IGT and an experimental KWin branch.

IGT branch:
https://gitlab.freedesktop.org/hwentland/igt-gpu-tools/-/tree/csc-ff-colorop

KWin branch:
https://invent.kde.org/hwentlan/kwin/-/tree/csc-3dlut

The kernel branch containing these changes, based on drm-misc-next
can be found at:
https://gitlab.freedesktop.org/hwentland/linux/-/tree/csc-ff-colorop

In order to successfully use this branch you might need a few
bugfixes. The kernel tree containing those fixes plus these patches
can be found at:
https://gitlab.freedesktop.org/hwentland/linux/-/tree/csc-ff-colorop-all

Further background on this work can be found at:
https://hwentland.github.io/2026/03/10/plane-color-pipeline-csc-3d-lut-kwin.html

v2:
- use Chaitanya's CSC_FF block for named matrices

Cc: Alex Hung <[email protected]>
Cc: Daniel Stone <[email protected]>
Cc: Chaitanya Kumar Borah <[email protected]>
Cc: Uma Shankar <[email protected]>
Cc: Louis Chauvet <[email protected]>
Cc: Melissa Wen <[email protected]>
Cc: Simon Ser <[email protected]>

Chaitanya Kumar Borah (1):
  drm/colorop: Add DRM_COLOROP_CSC_FF

Harry Wentland (8):
  drm/colorop: Add limited-range YUV-to-RGB CSC FF enum values
  drm/vkms: Add CSC FF colorop to color pipeline
  drm/vkms: Add atomic check and matrix handling for CSC FF colorop
  drm/amd/display: Add CSC FF colorop to color pipeline
  drm/amd/display: Implement CSC FF colorop color space mapping
  drm/amd/display: Use GAMCOR for first TF if CSC is used
  drm/amd/display: Check actual state during commit_tail
  drm/amd/display: Set color_space to plane_infos

 .../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c |  14 ++-
 .../amd/display/amdgpu_dm/amdgpu_dm_color.c   | 102 ++++++++++++++++-
 .../amd/display/amdgpu_dm/amdgpu_dm_colorop.c |  27 ++++-
 .../amd/display/amdgpu_dm/amdgpu_dm_colorop.h |   1 +
 drivers/gpu/drm/drm_atomic.c                  |   4 +
 drivers/gpu/drm/drm_atomic_uapi.c             |   4 +
 drivers/gpu/drm/drm_colorop.c                 | 108 ++++++++++++++++++
 drivers/gpu/drm/vkms/vkms_colorop.c           |  66 +++++++----
 drivers/gpu/drm/vkms/vkms_composer.c          |   6 +
 drivers/gpu/drm/vkms/vkms_plane.c             |  70 +++++++++++-
 include/drm/drm_colorop.h                     | 102 +++++++++++++++++
 include/uapi/drm/drm_mode.h                   |  13 +++
 12 files changed, 487 insertions(+), 30 deletions(-)

--
2.53.0

Reply via email to