On 2021-06-02 4:22 p.m., Shankar, Uma wrote:
-----Original Message----- From: Pekka Paalanen ppaalanen@gmail.com Sent: Wednesday, June 2, 2021 2:59 PM To: Shankar, Uma uma.shankar@intel.com Cc: intel-gfx@lists.freedesktop.org; dri-devel@lists.freedesktop.org; Modem, Bhanuprakash bhanuprakash.modem@intel.com; Harry Wentland harry.wentland@amd.com 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@intel.com 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%3E%3E%... 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%3E%3E%... 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(-)