On 2021-06-02 4:22 p.m., Shankar, Uma wrote: > > >> -----Original Message----- >> From: Pekka Paalanen <ppaalanen@xxxxxxxxx> >> Sent: Wednesday, June 2, 2021 2:59 PM >> To: Shankar, Uma <uma.shankar@xxxxxxxxx> >> Cc: intel-gfx@xxxxxxxxxxxxxxxxxxxxx; dri-devel@xxxxxxxxxxxxxxxxxxxxx; Modem, >> Bhanuprakash <bhanuprakash.modem@xxxxxxxxx>; Harry Wentland >> <harry.wentland@xxxxxxx> >> Subject: Re: [PATCH 00/21] Add Support for Plane Color Lut and CSC features >> >> On Tue, 1 Jun 2021 16:21:57 +0530 >> Uma Shankar <uma.shankar@xxxxxxxxx> 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 | | >>> | +---+-----+ +----+------+ +----+-----+ | >>> | | | | | >>> +--------------------------------------------+ >>> +------v--------------v---------------v-------| >>> || || >>> || Pipe Blender || >>> +--------------------+------------------------+ >>> | | | >>> | +-----------v----------+ | >>> | | Pipe DeGamma | | >>> | | | | >>> | +-----------+----------+ | >>> | | Pipe Color | >>> | +-----------v----------+ Hardware | >>> | | Pipe CSC/CTM | | >>> | | | | >>> | +-----------+----------+ | >>> | | | >>> | +-----------v----------+ | >>> | | Pipe Gamma | | >>> | | | | >>> | +-----------+----------+ | >>> | | | >>> +---------------------------------------------+ >>> | >>> v >>> Pipe Output >> >> Hi, >> >> this is an excellent picture. I have long been wanting schematics like that in the DRM >> UAPI documentation. Another note on that: >> https://lists.freedesktop.org/archives/dri-devel/2021-May/307310.html>>> >> But the schematic for DRM UAPI documentation needs to be written in terms of the >> abstract KMS pipeline with property names spelled out, like in what Ville sketched in >> that email. > > Sure Pekka, I can add that. > >>> 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. >> >> This is very much welcome! >> >> There is also the thread: >> https://lists.freedesktop.org/archives/dri-devel/2021-May/306726.html>>> >> Everything mentioned will interact with each other by changing what the abstract >> KMS pixel pipeline does. I think you and Harry should probably look at each others' >> suggestions and see how to fit them all into a single abstract KMS pipeline. >> >> People are adding new pieces into KMS left and right, and I fear we lose sight of how >> everything will actually work together when all KMS properties are supposed to be >> generic and potentially present simultaneously. This is why I would very much like to >> have that *whole* abstract KMS pipeline documented with *everything*. Otherwise >> it is coming really hard fast to figure out how generic userspace should use all these >> KMS properties together. >> >> Or if there cannot be a single abstract KMS pipeline, then sure, have multiple, as long >> as they are documented and how userspace will know which pipeline it is dealing >> with, and what things are mutually exclusive so we can avoid writing userspace code >> for combinations that will never exist. > > This is a good suggestion to have the whole pipeline and properties documented along with > the exact usages. We may end with 2 properties almost doing similar work but needed due to > underlying hardware, but we can get that properly documented and defined. > > I will discuss with Harry and Ville as well to define this. > Just wanted to let you know that I've seen and read through both of Shankar's patchsets and had some thoughts but haven't found the time to respond. I will respond soon. I very much agree with Pekka. We need to make sure this all plays well together and is well documented. Maybe a library to deal with DRM KMS color management/HDR would even be helpful. Not sure yet how I feel about that. Harry > Regards, > Uma Shankar >> >> Thanks, >> pq >> >>> 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. We >>> will notify the list once we have that ready for review. >>> >>> ToDo: State readout for this feature will be added next. >>> >>> Uma Shankar (21): >>> 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 +++ >>> 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 ++ >>> 15 files changed, 1170 insertions(+), 6 deletions(-) >>> >