Intel-XE Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: Arun R Murthy <arun.r.murthy@intel.com>
To: intel-xe@lists.freedesktop.org, intel-gfx@lists.freedesktop.org,
	dri-devel@lists.freedesktop.org
Cc: Arun R Murthy <arun.r.murthy@intel.com>
Subject: [PATCHv3 01/10] drm/crtc: Add histogram properties
Date: Mon,  9 Dec 2024 21:54:55 +0530	[thread overview]
Message-ID: <20241209162504.2146697-2-arun.r.murthy@intel.com> (raw)
In-Reply-To: <20241209162504.2146697-1-arun.r.murthy@intel.com>

Add variables for histogram drm_property, its corrsponding crtc_state
variables and define the structure pointed by the blob property.

struct drm_histogram and drm_iet defined in include/uapi/drm/drm_mode.h

The property HISTOGRAM_ENABLE allows user to enable/disable the
histogram feature in the hardware. Upon KMD enabling by writing to the
hardware registers, a histogram is generated. Histogram is composed of
'n' bins with each bin being an integer(pixel count).
An event HISTOGRAM will be sent to the user. User upon recieving this
event user can read the hardware generated histogram using crtc property
HISTOGRAM_DATA. User can use this histogram data, apply various
equilization techniques to come up with a pixel factor. This pixel
factor is an array of integer with 'n+1' elements. This is fed back to
the KMD by crtc property HISTOGRAM_IET. KMD will write this IET data
back to the hardware to see the enhancement/equilization done to the
images on that pipe.
The crtc property HISTOGRAM_DATA and HISTOGRAM_IET is of type blob.

For crtc property HISTOGRAM_DATA,
the blob data pointer will be the address of the struct drm_histogram.
struct drm_histogram {
	u64 data_ptr;
	u32 nr_elements;
}
Histogram is composed of @nr_elements of bins with each bin being an
integer value, referred to as pixel_count.
The element @data_ptr holds the address of histogam.
Sample:
Historgram[0] = 2050717
Historgram[1] = 244619
Historgram[2] = 173368
....
Historgram[31] = 21631

For crtc_property HISTOGRAM_IET,
the blob data pointer will be the address of the struct drm_iet.
struct drm_iet {
	u64 data_ptr;
	u32 nr_elements;
}
ImageEnhancemenT(IET) is composed of @nr_elements of bins with each bin
being an integer value, referred to as pixel factor.
The element @data_ptr holds the addess of pixel factor.
Sample:
Pixel Factor[0] = 1023
Pixel Factor[1] = 695
Pixel Factor[2] = 1023
....
Pixel Factor[32] = 512

Histogram is the statistics generated with 'n' number of frames on a
pipe.
Usually the size of pixel factor is one more than the size of histogram
data.

Signed-off-by: Arun R Murthy <arun.r.murthy@intel.com>
---
 include/drm/drm_crtc.h      | 51 +++++++++++++++++++++++++++++++++++++
 include/uapi/drm/drm_mode.h | 24 +++++++++++++++++
 2 files changed, 75 insertions(+)

diff --git a/include/drm/drm_crtc.h b/include/drm/drm_crtc.h
index 8b48a1974da3..f0f4a73e2e31 100644
--- a/include/drm/drm_crtc.h
+++ b/include/drm/drm_crtc.h
@@ -274,6 +274,41 @@ struct drm_crtc_state {
 	 */
 	struct drm_property_blob *gamma_lut;
 
+	/**
+	 * @histogram_enable:
+	 *
+	 * This will be set if histogram needs to be enabled for the CRTC.
+	 */
+	bool histogram_enable;
+
+	/**
+	 * @histogram_data:
+	 *
+	 * The blob points to the structure drm_histogram.
+	 * The element data in drm_histogram will hold the pointer to the
+	 * histogram data generated by the hardware. This histogram data is
+	 * an array of integer. This integer value is the pixel count of the
+	 * incoming frames.
+	 */
+	struct drm_property_blob *histogram_data;
+
+	/**
+	 * @histogram_iet:
+	 *
+	 * The blob points to the struct drm_iet.
+	 * The element data_ptr in drm_iet will hold the pointer to the
+	 * image enhancement generated by the algorithm that is to
+	 * be fed back to the hardware. This IET data is an array of type
+	 * integer and is referred to as a pixel factor.
+	 */
+	struct drm_property_blob *histogram_iet;
+	/**
+	 * @histogram_iet_updates:
+	 *
+	 * Convey that the image enhanced data has been updated by the user
+	 */
+	bool histogram_iet_updated;
+
 	/**
 	 * @target_vblank:
 	 *
@@ -1088,6 +1123,22 @@ struct drm_crtc {
 	 */
 	struct drm_property *scaling_filter_property;
 
+	/**
+	 * @histogram_enable_property: Optional CRTC property for enabling or
+	 * disabling global histogram.
+	 */
+	struct drm_property *histogram_enable_property;
+	/**
+	 * @histogram_data_proeprty: Optional CRTC property for getting the
+	 * histogram blob data.
+	 */
+	struct drm_property *histogram_data_property;
+	/**
+	 * @histogram_iet_proeprty: Optional CRTC property for writing the
+	 * image enhanced blob data
+	 */
+	struct drm_property *histogram_iet_property;
+
 	/**
 	 * @state:
 	 *
diff --git a/include/uapi/drm/drm_mode.h b/include/uapi/drm/drm_mode.h
index c082810c08a8..c384ed8452c7 100644
--- a/include/uapi/drm/drm_mode.h
+++ b/include/uapi/drm/drm_mode.h
@@ -1355,6 +1355,30 @@ struct drm_mode_closefb {
 	__u32 pad;
 };
 
+/**
+ * struct drm_histogram
+ * @data_ptr: pointer to the array of bins which is of type integer. This
+ *	      is the histogram data termed as pixel count.
+ * @nr_elements: number of elements pointed by the data @data_ptr
+ */
+struct drm_histogram {
+	__u64 data_ptr;
+	__u32 nr_elements;
+};
+
+/**
+ * struct drm_iet
+ * @data_ptr: pointer to the array of bins which is of type integer. This
+ *	      is the image enhanced data, termed as pixel factor.
+ * @nr_elements: number of elements pointed by the data @data_ptr
+ * @reserved: reserved for future use
+ */
+struct drm_iet {
+	__u64 data_ptr;
+	__u32 nr_elements;
+	__u32 reserved;
+};
+
 #if defined(__cplusplus)
 }
 #endif
-- 
2.25.1


  reply	other threads:[~2024-12-09 16:34 UTC|newest]

Thread overview: 32+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-12-09 16:24 [PATCHv10 00/10] Display Global Histogram Arun R Murthy
2024-12-09 16:24 ` Arun R Murthy [this message]
2024-12-10  0:26   ` [PATCHv3 01/10] drm/crtc: Add histogram properties Dmitry Baryshkov
2024-12-10  8:42     ` Murthy, Arun R
2024-12-10 12:27       ` Dmitry Baryshkov
2024-12-10 17:52         ` Murthy, Arun R
2024-12-13 10:51           ` Dmitry Baryshkov
2025-01-06  6:05             ` Murthy, Arun R
2024-12-10  0:58   ` Dmitry Baryshkov
2024-12-09 16:24 ` [PATCHv3 02/10] drm/crtc: Expose API to create drm crtc property for histogram Arun R Murthy
2024-12-09 16:24 ` [PATCH 03/10] drm/i915/histogram: Define registers " Arun R Murthy
2024-12-09 16:24 ` [PATCH 04/10] drm/i915/histogram: Add support " Arun R Murthy
2024-12-09 16:24 ` [PATCH 05/10] drm/xe: Add histogram support to Xe builds Arun R Murthy
2024-12-09 16:25 ` [PATCH 06/10] drm/i915/histogram: histogram interrupt handling Arun R Murthy
2024-12-09 16:25 ` [PATCHv3 07/10] drm/i915/display: Handle drm-crtc histogram property updates Arun R Murthy
2024-12-10 12:48   ` Kandpal, Suraj
2024-12-09 16:25 ` [PATCH 08/10] drm/i915/histogram: histogram delay counter doesnt reset Arun R Murthy
2024-12-09 16:25 ` [PATCH 09/10] drm/i915/histogram: Histogram changes for Display 20+ Arun R Murthy
2024-12-09 16:25 ` [PATCHv2 10/10] drm/i915/histogram: Enable pipe dithering Arun R Murthy
2024-12-10 12:45   ` Kandpal, Suraj
2024-12-09 16:46 ` ✓ CI.Patch_applied: success for Display Global Histogram (rev6) Patchwork
2024-12-09 16:47 ` ✗ CI.checkpatch: warning " Patchwork
2024-12-09 16:48 ` ✓ CI.KUnit: success " Patchwork
2024-12-09 16:57 ` [PATCHv10 00/10] Display Global Histogram Matt Roper
2024-12-09 17:43   ` Raag Jadav
2024-12-09 18:18     ` Matt Roper
2024-12-09 18:57       ` Raag Jadav
2024-12-09 20:17       ` Raag Jadav
2024-12-10  8:43   ` Murthy, Arun R
2024-12-09 17:06 ` ✓ CI.Build: success for Display Global Histogram (rev6) Patchwork
2024-12-09 17:08 ` ✗ CI.Hooks: failure " Patchwork
2024-12-09 17:10 ` ✗ CI.checksparse: warning " 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=20241209162504.2146697-2-arun.r.murthy@intel.com \
    --to=arun.r.murthy@intel.com \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=intel-gfx@lists.freedesktop.org \
    --cc=intel-xe@lists.freedesktop.org \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox