Re: [Intel-gfx] [RFC v2 00/22] Add Support for Plane Color Lut and CSC features

Harry Wentland
2022-02-02T16:12:13Z

On 2021-09-06 17:38, Uma Shankar wrote:
> This is how a typical display color hardware pipeline looks like:
> +-------------------------------------------+
> | RAM |
> | +------+ +---------+ +---------+ |
> | | FB 1 | | FB 2 | | FB N | |
> | +------+ +---------+ +---------+ |
> +-------------------------------------------+
> | Plane Color Hardware Block |
> +--------------------------------------------+
> | +---v-----+ +---v-------+ +---v------+ |
> | | Plane A | | Plane B | | Plane N | |
> | | DeGamma | | Degamma | | Degamma | |
> | +---+-----+ +---+-------+ +---+------+ |
> | | | | |
> | +---v-----+ +---v-------+ +---v------+ |
> | |Plane A | | Plane B | | Plane N | |
> | |CSC/CTM | | CSC/CTM | | CSC/CTM | |
> | +---+-----+ +----+------+ +----+-----+ |
> | | | | |
> | +---v-----+ +----v------+ +----v-----+ |
> | | Plane A | | Plane B | | Plane N | |
> | | Gamma | | Gamma | | Gamma | |
> | +---+-----+ +----+------+ +----+-----+ |

We've had a number of discussions on naming for these properties but I
don't think we've arrived at a consensus. It has come up repeatedly,
though, that gamma/degamma might be misleading terms.

I've opened a ticket on gitlab to help track this item and would like
it if we could discuss the merits of different naming schemes over
there:

https://gitlab.freedesktop.org/pq/color-and-hdr/-/issues/7

Uma, I tried to tag you but don't see you on gitlab.freedesktop.org.

Harry

> | | | | |
> +--------------------------------------------+
> +------v--------------v---------------v-------|
> || ||
> || Pipe Blender ||
> +--------------------+------------------------+
> | | |
> | +-----------v----------+ |
> | | Pipe DeGamma | |
> | | | |
> | +-----------+----------+ |
> | | Pipe Color |
> | +-----------v----------+ Hardware |
> | | Pipe CSC/CTM | |
> | | | |
> | +-----------+----------+ |
> | | |
> | +-----------v----------+ |
> | | Pipe Gamma | |
> | | | |
> | +-----------+----------+ |
> | | |
> +---------------------------------------------+
> |
> v
> Pipe Output
>
> This patch series adds properties for plane color features. It adds
> properties for degamma used to linearize data and CSC used for gamut
> conversion. It also includes Gamma support used to again non-linearize
> data as per panel supported color space. These can be utilize by user
> space to convert planes from one format to another, one color space to
> another etc.
>
> Userspace can take smart blending decisions and utilize these hardware
> supported plane color features to get accurate color profile. The same
> can help in consistent color quality from source to panel taking
> advantage of advanced color features in hardware.
>
> These patches add the property interfaces and enable helper functions.
> This series adds Intel's XE_LPD hw specific plane gamma feature. We
> can build up and add other platform/hardware specific implementation
> on top of this series.
>
> Credits: Special mention and credits to Ville Syrjala for coming up
> with a design for this feature and inputs. This series is based on
> his original design and idea.
>
> Note: Userspace support for this new UAPI will be done on Chrome in
> alignment with weston and general opensource community.
> Discussion ongoing with Harry Wentland, Pekka and community on color
> pipeline and UAPI design. Harry's RFC below:
> https://patchwork.freedesktop.org/series/89506/
> We need to converge on a common UAPI interface which caters to
> all the modern color hardware pipelines.
>
> ToDo: State readout for this feature will be added next.
>
> v2: Added UAPI description and added change in the rfc section of
> kernel Documentation folder
>
> Uma Shankar (22):
> drm: RFC for Plane Color Hardware Pipeline
> drm: Add Enhanced Gamma and color lut range attributes
> drm: Add Plane Degamma Mode property
> drm: Add Plane Degamma Lut property
> drm/i915/xelpd: Define Degamma Lut range struct for HDR planes
> drm/i915/xelpd: Add register definitions for Plane Degamma
> drm/i915/xelpd: Enable plane color features
> drm/i915/xelpd: Add color capabilities of SDR planes
> drm/i915/xelpd: Program Plane Degamma Registers
> drm/i915/xelpd: Add plane color check to glk_plane_color_ctl
> drm/i915/xelpd: Initialize plane color features
> drm/i915/xelpd: Load plane color luts from atomic flip
> drm: Add Plane CTM property
> drm: Add helper to attach Plane ctm property
> drm/i915/xelpd: Define Plane CSC Registers
> drm/i915/xelpd: Enable Plane CSC
> drm: Add Plane Gamma Mode property
> drm: Add Plane Gamma Lut property
> drm/i915/xelpd: Define and Initialize Plane Gamma Lut range
> drm/i915/xelpd: Add register definitions for Plane Gamma
> drm/i915/xelpd: Program Plane Gamma Registers
> drm/i915/xelpd: Enable plane gamma
>
> Documentation/gpu/drm-kms.rst | 90 +++
> Documentation/gpu/rfc/drm_color_pipeline.rst | 167 ++++++
> drivers/gpu/drm/drm_atomic.c | 1 +
> drivers/gpu/drm/drm_atomic_state_helper.c | 12 +
> drivers/gpu/drm/drm_atomic_uapi.c | 38 ++
> drivers/gpu/drm/drm_color_mgmt.c | 177 +++++-
> .../gpu/drm/i915/display/intel_atomic_plane.c | 6 +
> .../gpu/drm/i915/display/intel_atomic_plane.h | 2 +
> drivers/gpu/drm/i915/display/intel_color.c | 513 ++++++++++++++++++
> drivers/gpu/drm/i915/display/intel_color.h | 2 +
> .../drm/i915/display/skl_universal_plane.c | 15 +-
> drivers/gpu/drm/i915/i915_drv.h | 3 +
> drivers/gpu/drm/i915/i915_reg.h | 176 +++++-
> include/drm/drm_mode_object.h | 2 +-
> include/drm/drm_plane.h | 81 +++
> include/uapi/drm/drm_mode.h | 58 ++
> 16 files changed, 1337 insertions(+), 6 deletions(-)
> create mode 100644 Documentation/gpu/rfc/drm_color_pipeline.rst
>