> -----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. 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(-) > >