This series adds color pipeline support for SDR planes in i915 and exposes the functionality to userspace through the DRM colorop framework.
In contrast to HDR planes, SDR planes have LUTs with smaller sizes and a fixed function CSC block in contrast to a programmable CTM. The series first introduces a new DRM colorop type, DRM_COLOROP_FIXED_MATRIX, which represents fixed-function CSC blocks where userspace selects predefined hardware conversion modes instead of programming arbitrary matrices. It also adds the YUV correction HW block. With this the color pipeline can accept both limited range and full range YUV framebuffers. With that, the SDR plane color pipeline looks like. [YUV Range Correct] -> [1D LUT] -> [CSC] -> [1D LUT] v2: - Naming changes [Pekka] - Adds YUV color range correct block v3: - Fix NC matrix enum name and string [Melissa] - Extract and simplify glk_plane_color_ctl_input_csc into helpers (new prep patches) - Restructure SDR pre/post-CSC LUT loops to match HDR function pattern - Drop HDR pre-CSC LUT clamping fix (submitted separately) - Rebase IGT series (needs update): https://patchwork.freedesktop.org/series/165021/ A rough updated IGT implementation with some additional test can be found here. https://github.com/ckborah/igt-sandbox/tree/color/sdr-sw-ref Cc: Harry Wentland <[email protected]> Cc: Louis Chauvet <[email protected]> Cc: Melissa Wen <[email protected]> Cc: Simon Ser <[email protected]> Cc: Alex Hung <[email protected]> Cc: Daniel Stone <[email protected]> Cc: Uma Shankar <[email protected]> Cc: Maarten Lankhorst <[email protected]> Cc: Pekka Paalanen <[email protected]> Cc: Pranay Samala <[email protected]> Cc: Swati Sharma <[email protected]> Cc: Naveen Kumar <[email protected]> Chaitanya Kumar Borah (10): drm/colorop: Add DRM_COLOROP_FIXED_MATRIX drm/i915/color: Add CSC on SDR plane color pipeline drm/i915/display: extract glk_plane_color_ctl_input_csc helper drm/i915/display: simplify glk_plane_color_ctl_input_csc drm/i915/display: Track CSC mode in intel plane state drm/i915/display: Program input CSC on SDR planes drm/i915/color: Add YCbCr limited-to-full range color block support drm/i915/color: Add YUV range correction to SDR plane pipeline drm/i915/color: Add support for 1D LUT in SDR planes drm/i915/color: Add color pipeline support for SDR planes Pranay Samala (4): drm/i915/color: Extract HDR pre-CSC LUT programming to helper function drm/i915/color: Program Pre-CSC registers for SDR drm/i915/color: Extract HDR post-CSC LUT programming to helper function drm/i915/color: Program Plane Post CSC registers for SDR planes drivers/gpu/drm/drm_atomic.c | 4 + drivers/gpu/drm/drm_atomic_uapi.c | 7 + drivers/gpu/drm/drm_colorop.c | 106 +++++++++++++ drivers/gpu/drm/i915/display/intel_color.c | 140 +++++++++++++++--- .../drm/i915/display/intel_color_pipeline.c | 43 +++++- .../drm/i915/display/intel_display_limits.h | 2 + .../drm/i915/display/intel_display_types.h | 3 + drivers/gpu/drm/i915/display/intel_plane.c | 15 +- .../drm/i915/display/skl_universal_plane.c | 84 ++++++++--- include/drm/drm_colorop.h | 84 +++++++++++ include/uapi/drm/drm_mode.h | 12 ++ 11 files changed, 447 insertions(+), 53 deletions(-) -- 2.25.1
