On Tue, 7 Sep 2021 03:08:42 +0530 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 | | > | +---+-----+ +----+------+ +----+-----+ | > | | | | | > +--------------------------------------------+ > +------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 Hi, thank you for this. I do believe the KMS UAPI should expose what hardware can do (prescribed operations) rather than how they would be often used (to realize a conversion from one space description to another). This proposal fits quite nicely with what I have envisioned for Weston. I mainly went over the big picture by commenting in detail on the proposal document, and not looking too carefully at the other documentation or UAPI details at this time. Unfortunately I was unable to decipher how userspace is supposed to use the XE_LPD special gamma features. Thanks, pq > > 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 >