[RFC 09/33] drm: Add color information to plane state

Uma Shankar uma.shankar at intel.com
Tue Aug 29 16:03:58 UTC 2023


Add a new structure drm_plane_color to plane state. It consists
of blobs with data needed for respective color HW blocks.

Currently defining below blobs

  pre-csc: can be used to linearize the input frame buffer data.

  csc: used for color space conversion.

  post-csc: can be used non-linearize frame buffer data or
            to perform Tone mapping for HDR use-cases

  private: can be used for vendor specific fixed function operations

This can be extended to include other color operations as well.

Co-developed-by: Chaitanya Kumar Borah <chaitanya.kumar.borah at intel.com>
Signed-off-by: Chaitanya Kumar Borah <chaitanya.kumar.borah at intel.com>
Signed-off-by: Uma Shankar <uma.shankar at intel.com>
---
 include/drm/drm_plane.h | 41 +++++++++++++++++++++++++++++++++++++++++
 1 file changed, 41 insertions(+)

diff --git a/include/drm/drm_plane.h b/include/drm/drm_plane.h
index fcd589cb38f2..601b01e47a93 100644
--- a/include/drm/drm_plane.h
+++ b/include/drm/drm_plane.h
@@ -245,6 +245,47 @@ struct drm_plane_state {
 	 */
 	struct drm_property_blob *set_color_pipeline_data;
 
+	/**
+	 * @drm_plane_color:
+	 *
+	 * Encapsulates all color states.
+	 */
+	struct drm_plane_color {
+		/**
+		 * @pre_csc_lut:
+		 *
+		 * Lookup table for converting framebuffer pixel data before apply the
+		 * color conversion matrix @ctm. See drm_plane_enable_color_mgmt(). The
+		 * blob (if not NULL) is an array of &struct drm_color_lut_ext.
+		 */
+		struct drm_property_blob *pre_csc_lut;
+
+		/**
+		 * @ctm:
+		 *
+		 * Color transformation matrix. See drm_plane_enable_color_mgmt(). The
+		 * blob (if not NULL) is a &struct drm_color_ctm.
+		 */
+		struct drm_property_blob *ctm;
+
+		/**
+		 * @post_csc_lut:
+		 *
+		 * Lookup table for converting framebuffer pixel data after applying the
+		 * color conversion matrix @ctm. See drm_plane_enable_color_mgmt(). The
+		 * blob (if not NULL) is an array of &struct drm_color_lut_ext.
+		 */
+		struct drm_property_blob *post_csc_lut;
+
+		/**
+		 * @private_color_op_data:
+		 *
+		 * This blob is intended for drivers to implement driver private color operations.
+		 * For example: Parameterized/non-parameterized fixed function operations
+		 */
+		struct drm_property_blob *private_color_op_data;
+	} color;
+
 	/**
 	 * @color_mgmt_changed: Plane color pipeline state has changed
 	 * Used by the atomic helpers and
-- 
2.38.1



More information about the dri-devel mailing list