All of lore.kernel.org
 help / color / mirror / Atom feed
From: Arun R Murthy <arun.r.murthy@intel.com>
To: "Maarten Lankhorst" <maarten.lankhorst@linux.intel.com>,
	"Maxime Ripard" <mripard@kernel.org>,
	"Thomas Zimmermann" <tzimmermann@suse.de>,
	"David Airlie" <airlied@gmail.com>,
	"Simona Vetter" <simona@ffwll.ch>,
	"Harry Wentland" <harry.wentland@amd.com>,
	"Leo Li" <sunpeng.li@amd.com>,
	"Rodrigo Siqueira" <siqueira@igalia.com>,
	"Alex Deucher" <alexander.deucher@amd.com>,
	"Christian König" <christian.koenig@amd.com>,
	"Jani Nikula" <jani.nikula@linux.intel.com>,
	"Rodrigo Vivi" <rodrigo.vivi@intel.com>,
	"Joonas Lahtinen" <joonas.lahtinen@linux.intel.com>,
	"Tvrtko Ursulin" <tursulin@ursulin.net>,
	"Lucas De Marchi" <lucas.demarchi@intel.com>,
	"Thomas Hellström" <thomas.hellstrom@linux.intel.com>,
	uma.shankar@intel.com, chaitanya.kumar.borah@intel.com,
	suraj.kandpal@intel.com
Cc: dri-devel@lists.freedesktop.org, amd-gfx@lists.freedesktop.org,
	 intel-gfx@lists.freedesktop.org, intel-xe@lists.freedesktop.org,
	 "Imported from f20250128-dpst-v8-0-871b94d777f8"@intel.com,
	 Arun R Murthy <arun.r.murthy@intel.com>
Subject: [PATCH v9 07/20] drm/colorop: Export function to create pipeline element iet lut
Date: Mon, 01 Dec 2025 13:58:49 +0530	[thread overview]
Message-ID: <20251201-dpst-v9-7-e462d55dba65@intel.com> (raw)
In-Reply-To: <20251201-dpst-v9-0-e462d55dba65@intel.com>

The generated histogram can be used the user algorithm to generate a
LUT, which is referred as image enhanced LUT. This is fed back to the
hardware to get an enhanced image.

Signed-off-by: Arun R Murthy <arun.r.murthy@intel.com>
---
 drivers/gpu/drm/drm_atomic_uapi.c | 21 +++++++++----
 drivers/gpu/drm/drm_colorop.c     | 62 +++++++++++++++++++++++++++++++++++++++
 include/drm/drm_colorop.h         | 17 +++++++++++
 3 files changed, 94 insertions(+), 6 deletions(-)

diff --git a/drivers/gpu/drm/drm_atomic_uapi.c b/drivers/gpu/drm/drm_atomic_uapi.c
index 3505c00dfc5168de3476fb94bced123f9c886cb2..579210be8288d6788a6cfc357394c3794b13a417 100644
--- a/drivers/gpu/drm/drm_atomic_uapi.c
+++ b/drivers/gpu/drm/drm_atomic_uapi.c
@@ -719,6 +719,7 @@ static int drm_atomic_color_set_data_property(struct drm_colorop *colorop,
 	ssize_t elem_size = -1;
 	ssize_t size = -1;
 	bool replaced = false;
+	u32 ret;
 
 	switch (colorop->type) {
 	case DRM_COLOROP_1D_LUT:
@@ -731,17 +732,25 @@ static int drm_atomic_color_set_data_property(struct drm_colorop *colorop,
 		size = colorop->size * colorop->size * colorop->size *
 		       sizeof(struct drm_color_lut32);
 		break;
+	case DRM_COLOROP_IET:
+		elem_size = state->data->length;
+		break;
 	default:
 		/* should never get here */
 		return -EINVAL;
 	}
 
-	return drm_property_replace_blob_from_id(colorop->dev,
-						 &state->data,
-						 val,
-						 size,
-						 elem_size,
-						 &replaced);
+	ret = drm_property_replace_blob_from_id(colorop->dev,
+						&state->data,
+						val,
+						size,
+						elem_size,
+						&replaced);
+
+	if (colorop->type == DRM_COLOROP_IET && !ret)
+		state->iet_lut_updated |= replaced;
+
+	return ret;
 }
 
 /**
diff --git a/drivers/gpu/drm/drm_colorop.c b/drivers/gpu/drm/drm_colorop.c
index e3e22db3b911e79979488b1493e72cd9a11ed418..797a6f5ef79c7cc04109e87c44566f2461aee965 100644
--- a/drivers/gpu/drm/drm_colorop.c
+++ b/drivers/gpu/drm/drm_colorop.c
@@ -545,6 +545,68 @@ int drm_crtc_colorop_histogram_init(struct drm_colorop *colorop,
 }
 EXPORT_SYMBOL(drm_crtc_colorop_histogram_init);
 
+/**
+ * drm_crtc_colorop_iet_lut_init
+ *
+ * @crtc: pointer to the struct drm_crtc.
+ * @caps: pointer to the struct drm_iet_caps, holds the
+ *	  image enhancement LUT hardware capabilities.
+ *
+ * This 1DLUT is used by the hardware to enahance the image. Hardware
+ * interpolates this LUT value to generate the enhanced output image.
+ *
+ * The blob property IET_LUT_CAPS points to the struct drm_iet_lut_caps
+ * The blob property DATA points to the struct drm_iet_1dlut_sample
+ * Description of the structure is in include/uapi/drm/drm_mode.h
+ *
+ * RETURNS:
+ * Zero for success or -errno
+ */
+int drm_crtc_colorop_iet_lut_init(struct drm_colorop *colorop,
+				  struct drm_crtc *crtc,
+				  struct drm_iet_caps *caps,
+				  uint32_t flags)
+{
+	struct drm_property *prop;
+	struct drm_iet_caps *blob_data;
+	struct drm_property_blob *blob;
+	int ret = 0;
+
+	ret = drm_crtc_colorop_init(crtc->dev, colorop, crtc,
+				    DRM_COLOROP_IET, flags);
+	if (ret)
+		return ret;
+
+	blob = drm_property_create_blob(crtc->dev,
+					sizeof(struct drm_iet_caps),
+					NULL);
+	if (IS_ERR(blob))
+		return -1;
+	blob_data = blob->data;
+	blob_data->iet_mode = caps->iet_mode;
+	blob_data->nr_iet_sample_formats = caps->nr_iet_sample_formats;
+	blob_data->nr_iet_lut_entries = caps->nr_iet_lut_entries;
+	blob_data->iet_sample_format = caps->iet_sample_format;
+
+	/* IET LUT Capabilities */
+	prop = drm_property_create(crtc->dev, DRM_MODE_PROP_ATOMIC |
+				   DRM_MODE_PROP_IMMUTABLE | DRM_MODE_PROP_BLOB,
+				   "IET_LUT_CAPS", blob->base.id);
+	if (!prop)
+		return -ENOMEM;
+	colorop->iet_lut_caps_property = prop;
+	drm_object_attach_property(&colorop->base, colorop->iet_lut_caps_property,
+				   0);
+
+	/* IET LUT data */
+	ret = drm_colorop_create_data_prop(crtc->dev, colorop);
+	if (ret)
+		return ret;
+
+	return 0;
+}
+EXPORT_SYMBOL(drm_crtc_colorop_iet_lut_init);
+
 static void __drm_atomic_helper_colorop_duplicate_state(struct drm_colorop *colorop,
 							struct drm_colorop_state *state)
 {
diff --git a/include/drm/drm_colorop.h b/include/drm/drm_colorop.h
index 4d905c13274c13d8d50e1c9e45a87feec72f82ae..fa37277232dbec3c7c58781d27cfaf62163b6922 100644
--- a/include/drm/drm_colorop.h
+++ b/include/drm/drm_colorop.h
@@ -215,6 +215,12 @@ struct drm_colorop_state {
 	 * Flag to say that the histogram data is updated by the KMD.
 	 */
 	bool histogram_updated;
+	/**
+	 * @iet_lut_updated:
+	 *
+	 * Boolean flag to say that there are some updates on iet_lut property
+	 */
+	bool iet_lut_updated;
 
 	/** @state: backpointer to global drm_atomic_state */
 	struct drm_atomic_state *state;
@@ -399,6 +405,13 @@ struct drm_colorop {
 	 */
 	struct drm_property *histogram_data_property;
 
+	/**
+	 * @iet_lut_caps_proeprty
+	 * Optional colorpipeline property for writing the
+	 * image enhanced LUT
+	 */
+	struct drm_property *iet_lut_caps_property;
+
 	/**
 	 * @data_property:
 	 *
@@ -463,6 +476,10 @@ int drm_crtc_colorop_histogram_init(struct drm_colorop *colorop,
 				    struct drm_crtc *crtc,
 				    struct drm_histogram_caps *caps,
 				    uint32_t flags);
+int drm_crtc_colorop_iet_lut_init(struct drm_colorop *colorop,
+				  struct drm_crtc *crtc,
+				  struct drm_iet_caps *caps,
+				  uint32_t flags);
 
 struct drm_colorop_state *
 drm_atomic_helper_colorop_duplicate_state(struct drm_colorop *colorop);

-- 
2.25.1


  parent reply	other threads:[~2025-12-01  8:29 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-12-01  8:28 [PATCH v9 00/20] Display Global Histogram Arun R Murthy
2025-12-01  8:28 ` [PATCH v9 01/20] DO_NOT_REVIEW: plane/crtc color pipeline Arun R Murthy
2025-12-01  8:28 ` [PATCH v9 02/20] drm: Define histogram structures exposed to user Arun R Murthy
2025-12-01  8:28 ` [PATCH v9 03/20] drm: Add new element histogram for colorop Arun R Murthy
2025-12-01  8:28 ` [PATCH v9 04/20] drm/colorop: Export function to create pipeline element histogram Arun R Murthy
2025-12-01  8:28 ` [PATCH v9 05/20] drm: Define ImageEnhancemenT LUT structures exposed to user Arun R Murthy
2025-12-01  8:28 ` [PATCH v9 06/20] drm: Add new element Image EnhancemenT for colorop Arun R Murthy
2025-12-01  8:28 ` Arun R Murthy [this message]
2025-12-01  8:28 ` [PATCH v9 08/20] drm/i915/histogram: Define registers for histogram Arun R Murthy
2025-12-01  8:28 ` [PATCH v9 09/20] drm/i915/histogram: Add support " Arun R Murthy
2025-12-01  8:28 ` [PATCH v9 10/20] drm/xe: Add histogram support to Xe builds Arun R Murthy
2025-12-01  8:28 ` [PATCH v9 11/20] drm/i915/histogram: histogram interrupt handling Arun R Murthy
2025-12-01  8:28 ` [PATCH DO_NOT_RTEVIEW v9 12/20] Plane Color Pipeline support for Intel platforms Arun R Murthy
2025-12-01  8:28 ` [PATCH v9 13/20] drm/i915/colorop: Add crtc color pipeline for i915 Arun R Murthy
2025-12-01  8:28 ` [PATCH v9 14/20] drm/i915/histogram: Hook i915 histogram with drm histogram Arun R Murthy
2025-12-01  8:28 ` [PATCH v9 15/20] drm/i915/iet: Add support to writing the IET LUT data Arun R Murthy
2025-12-01  8:28 ` [PATCH v9 16/20] drm/i915/colorop: create IET LUT properties Arun R Murthy
2025-12-01  8:28 ` [PATCH v9 17/20] drm/i915/crtc: Hook i915 IET LUT with the drm IET properties Arun R Murthy
2025-12-01  8:29 ` [PATCH v9 18/20] drm/i915/histogram: histogram delay counter doesn't reset Arun R Murthy
2025-12-01  8:29 ` [PATCH v9 19/20] drm/i915/histogram: Histogram changes for Display 20+ Arun R Murthy
2025-12-01  8:29 ` [PATCH v9 20/20] drm/i915/histogram: Enable pipe dithering Arun R Murthy
2025-12-01 10:41 ` ✗ Fi.CI.BUILD: failure for Display Global Histogram (rev14) Patchwork

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20251201-dpst-v9-7-e462d55dba65@intel.com \
    --to=arun.r.murthy@intel.com \
    --cc="Imported from f20250128-dpst-v8-0-871b94d777f8"@intel.com \
    --cc=airlied@gmail.com \
    --cc=alexander.deucher@amd.com \
    --cc=amd-gfx@lists.freedesktop.org \
    --cc=chaitanya.kumar.borah@intel.com \
    --cc=christian.koenig@amd.com \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=harry.wentland@amd.com \
    --cc=intel-gfx@lists.freedesktop.org \
    --cc=intel-xe@lists.freedesktop.org \
    --cc=jani.nikula@linux.intel.com \
    --cc=joonas.lahtinen@linux.intel.com \
    --cc=lucas.demarchi@intel.com \
    --cc=maarten.lankhorst@linux.intel.com \
    --cc=mripard@kernel.org \
    --cc=rodrigo.vivi@intel.com \
    --cc=simona@ffwll.ch \
    --cc=siqueira@igalia.com \
    --cc=sunpeng.li@amd.com \
    --cc=suraj.kandpal@intel.com \
    --cc=thomas.hellstrom@linux.intel.com \
    --cc=tursulin@ursulin.net \
    --cc=tzimmermann@suse.de \
    --cc=uma.shankar@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.