-----Original Message----- From: Pekka Paalanen ppaalanen@gmail.com Sent: Tuesday, October 12, 2021 5:20 PM To: Shankar, Uma uma.shankar@intel.com Cc: intel-gfx@lists.freedesktop.org; dri-devel@lists.freedesktop.org; harry.wentland@amd.com; ville.syrjala@linux.intel.com; brian.starkey@arm.com; sebastian@sebastianwick.net; Shashank.Sharma@amd.com Subject: Re: [RFC v2 03/22] drm: Add Plane Degamma Mode property
On Tue, 7 Sep 2021 03:08:45 +0530 Uma Shankar uma.shankar@intel.com wrote:
Add Plane Degamma Mode as an enum property. Create a helper function for all plane color management features.
This is an enum property with values as blob_id's and exposes the various gamma modes supported and the lut ranges. Getting the blob id in userspace, user can get the mode supported and also the range of gamma mode supported with number of lut coefficients. It can then set one of the modes using this enum property.
Lut values will be sent through separate GAMMA_LUT blob property.
Signed-off-by: Uma Shankar uma.shankar@intel.com
Documentation/gpu/drm-kms.rst | 90 ++++++++++++++++++++++ drivers/gpu/drm/drm_atomic.c | 1 + drivers/gpu/drm/drm_atomic_state_helper.c | 2 + drivers/gpu/drm/drm_atomic_uapi.c | 4 + drivers/gpu/drm/drm_color_mgmt.c | 93 ++++++++++++++++++++++- include/drm/drm_mode_object.h | 2 +- include/drm/drm_plane.h | 23 ++++++ 7 files changed, 212 insertions(+), 3 deletions(-)
diff --git a/Documentation/gpu/drm-kms.rst b/Documentation/gpu/drm-kms.rst index 1ef7951ded5e..f4658417bf20 100644 --- a/Documentation/gpu/drm-kms.rst +++ b/Documentation/gpu/drm-kms.rst @@ -545,9 +545,99 @@ Damage Tracking Properties Color Management Properties
+Below is how a typical hardware pipeline for color will look like:
+.. kernel-render:: DOT
- :alt: Display Color Pipeline
- :caption: Display Color Pipeline Overview
- digraph "KMS" {
node [shape=box]
subgraph cluster_static {
style=dashed
label="Display Color Hardware Blocks"
node [bgcolor=grey style=filled]
"Plane Degamma A" -> "Plane CSC/CTM A"
"Plane CSC/CTM A" -> "Plane Gamma A"
"Pipe Blender" [color=lightblue,style=filled, width=5.25, height=0.75];
"Plane Gamma A" -> "Pipe Blender"
"Pipe Blender" -> "Pipe DeGamma"
"Pipe DeGamma" -> "Pipe CSC/CTM"
"Pipe CSC/CTM" -> "Pipe Gamma"
"Pipe Gamma" -> "Pipe Output"
}
subgraph cluster_static {
style=dashed
node [shape=box]
"Plane Degamma B" -> "Plane CSC/CTM B"
"Plane CSC/CTM B" -> "Plane Gamma B"
"Plane Gamma B" -> "Pipe Blender"
}
subgraph cluster_static {
style=dashed
node [shape=box]
"Plane Degamma C" -> "Plane CSC/CTM C"
"Plane CSC/CTM C" -> "Plane Gamma C"
"Plane Gamma C" -> "Pipe Blender"
}
subgraph cluster_fb {
style=dashed
label="RAM"
node [shape=box width=1.7 height=0.2]
"FB 1" -> "Plane Degamma A"
"FB 2" -> "Plane Degamma B"
"FB 3" -> "Plane Degamma C"
}
- }
+In real world usecases,
+1. Plane Degamma can be used to linearize a non linear gamma encoded +framebuffer. This is needed to do any linear math like color space +conversion. For ex, linearize frames encoded in SRGB or by HDR curve.
Hi,
Maybe better to avoid the term "gamma" as the curves are not always a pure power function.
sRGB with a small s.
Sure Pekka, will update these.
Thanks & Regards, Uma Shankar
Thanks, pq
+2. Later Plane CTM block can convert the content to some different +colorspace. For ex, SRGB to BT2020 etc.
+3. Plane Gamma block can be used later to re-apply the non-linear +curve. This can also be used to apply Tone Mapping for HDR usecases.
+All the layers or framebuffers need to be converted to same color +space and format before blending. The plane color hardware blocks can +help with this. Once the Data is blended, similar color processing +can be done on blended output using pipe color hardware blocks.
+DRM Properties have been created to define and expose all these +hardware blocks to userspace. A userspace application (compositor or +any color app) can use these interfaces and define policies to +efficiently use the display hardware for such color operations.
+Pipe Color Management Properties +---------------------------------
.. kernel-doc:: drivers/gpu/drm/drm_color_mgmt.c :doc: overview
+Plane Color Management Properties +---------------------------------
+.. kernel-doc:: drivers/gpu/drm/drm_color_mgmt.c
- :doc: Plane Color Properties
+.. kernel-doc:: drivers/gpu/drm/drm_color_mgmt.c
- :doc: export
Tile Group Property