[Intel-gfx] [PATCH 00/21] Add Support for Plane Color Lut and CSC features
Harry Wentland
harry.wentland at amd.com
Wed Jun 2 23:42:19 UTC 2021
On 2021-06-02 4:22 p.m., Shankar, Uma wrote:
>
>
>> -----Original Message-----
>> From: Pekka Paalanen <ppaalanen at gmail.com>
>> Sent: Wednesday, June 2, 2021 2:59 PM
>> To: Shankar, Uma <uma.shankar at intel.com>
>> Cc: intel-gfx at lists.freedesktop.org; dri-devel at lists.freedesktop.org; Modem,
>> Bhanuprakash <bhanuprakash.modem at intel.com>; Harry Wentland
>> <harry.wentland at 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 at 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>>>
>> 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(-)
>>>
>
More information about the Intel-gfx
mailing list