Intel-XE Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 04/10] drm/i915/display: Add filter lut values
  2025-03-04 10:28 [PATCH 00/10] Introduce drm sharpness property Nemesa Garg
@ 2025-03-04 10:28 ` Nemesa Garg
  2025-03-11 12:00   ` Nautiyal, Ankit K
  0 siblings, 1 reply; 36+ messages in thread
From: Nemesa Garg @ 2025-03-04 10:28 UTC (permalink / raw)
  To: intel-gfx, intel-xe, dri-devel; +Cc: Nemesa Garg

Add the register bits related to filter lut values
and populate the table.

Signed-off-by: Nemesa Garg <nemesa.garg@intel.com>
---
 drivers/gpu/drm/i915/display/intel_casf.c     | 22 +++++++++++++++++++
 drivers/gpu/drm/i915/display/intel_casf.h     |  3 +++
 .../gpu/drm/i915/display/intel_casf_regs.h    | 11 ++++++++++
 3 files changed, 36 insertions(+)

diff --git a/drivers/gpu/drm/i915/display/intel_casf.c b/drivers/gpu/drm/i915/display/intel_casf.c
index 2c406e7c5fb6..ed72bccbb93f 100644
--- a/drivers/gpu/drm/i915/display/intel_casf.c
+++ b/drivers/gpu/drm/i915/display/intel_casf.c
@@ -25,6 +25,28 @@
  * to original image.
  */
 
+/* Default LUT values to be loaded one time. */
+static const u16 sharpness_lut[] = {
+	4095, 2047, 1364, 1022, 816, 678, 579,
+	504, 444, 397, 357, 323, 293, 268, 244, 224,
+	204, 187, 170, 154, 139, 125, 111, 98, 85,
+	73, 60, 48, 36, 24, 12, 0
+};
+
+void intel_filter_lut_load(struct intel_crtc *crtc,
+			   const struct intel_crtc_state *crtc_state)
+{
+	struct intel_display *display = to_intel_display(crtc_state);
+	int i;
+
+	intel_de_write(display, SHRPLUT_INDEX(crtc->pipe),
+		       INDEX_AUTO_INCR | INDEX_VALUE(0));
+
+	for (i = 0; i < ARRAY_SIZE(sharpness_lut); i++)
+		intel_de_write(display, SHRPLUT_DATA(crtc->pipe),
+			       sharpness_lut[i]);
+}
+
 void intel_casf_update_strength(struct intel_crtc_state *crtc_state)
 {
 	struct intel_display *display = to_intel_display(crtc_state);
diff --git a/drivers/gpu/drm/i915/display/intel_casf.h b/drivers/gpu/drm/i915/display/intel_casf.h
index 6e308c367c17..faeed50de2ba 100644
--- a/drivers/gpu/drm/i915/display/intel_casf.h
+++ b/drivers/gpu/drm/i915/display/intel_casf.h
@@ -9,8 +9,11 @@
 #include <linux/types.h>
 
 struct intel_crtc_state;
+struct intel_crtc;
 
 int intel_casf_compute_config(struct intel_crtc_state *crtc_state);
 void intel_casf_update_strength(struct intel_crtc_state *new_crtc_state);
+void intel_filter_lut_load(struct intel_crtc *crtc,
+			   const struct intel_crtc_state *crtc_state);
 
 #endif /* __INTEL_CASF_H__ */
diff --git a/drivers/gpu/drm/i915/display/intel_casf_regs.h b/drivers/gpu/drm/i915/display/intel_casf_regs.h
index e5fa4d9bb309..c61755a401ff 100644
--- a/drivers/gpu/drm/i915/display/intel_casf_regs.h
+++ b/drivers/gpu/drm/i915/display/intel_casf_regs.h
@@ -19,5 +19,16 @@
 #define   SHARPNESS_FILTER_SIZE_5X5    REG_FIELD_PREP(FILTER_SIZE_MASK, 1)
 #define   SHARPNESS_FILTER_SIZE_7X7    REG_FIELD_PREP(FILTER_SIZE_MASK, 2)
 
+#define _SHRPLUT_DATA_A                        0x682B8
+#define _SHRPLUT_DATA_B                        0x68AB8
+#define SHRPLUT_DATA(pipe)             _MMIO_PIPE(pipe, _SHRPLUT_DATA_A, _SHRPLUT_DATA_B)
+
+#define _SHRPLUT_INDEX_A               0x682B4
+#define _SHRPLUT_INDEX_B               0x68AB4
+#define SHRPLUT_INDEX(pipe)            _MMIO_PIPE(pipe, _SHRPLUT_INDEX_A, _SHRPLUT_INDEX_B)
+#define   INDEX_AUTO_INCR              REG_BIT(10)
+#define   INDEX_VALUE_MASK             REG_GENMASK(4, 0)
+#define   INDEX_VALUE(x)               REG_FIELD_PREP(INDEX_VALUE_MASK, (x))
+
 #endif /* __INTEL_CASF_REGS__ */
 
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 36+ messages in thread

* Re: [PATCH 04/10] drm/i915/display: Add filter lut values
  2025-03-04 10:28 ` [PATCH 04/10] drm/i915/display: Add filter lut values Nemesa Garg
@ 2025-03-11 12:00   ` Nautiyal, Ankit K
  0 siblings, 0 replies; 36+ messages in thread
From: Nautiyal, Ankit K @ 2025-03-11 12:00 UTC (permalink / raw)
  To: Nemesa Garg, intel-gfx, intel-xe, dri-devel


On 3/4/2025 3:58 PM, Nemesa Garg wrote:
> Add the register bits related to filter lut values
> and populate the table.
Lets have some more details about the LUT values and the fact that they 
are only needed to be loaded once.
With that fixed this looks good to me.

Reviewed-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>


>
> Signed-off-by: Nemesa Garg <nemesa.garg@intel.com>
> ---
>   drivers/gpu/drm/i915/display/intel_casf.c     | 22 +++++++++++++++++++
>   drivers/gpu/drm/i915/display/intel_casf.h     |  3 +++
>   .../gpu/drm/i915/display/intel_casf_regs.h    | 11 ++++++++++
>   3 files changed, 36 insertions(+)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_casf.c b/drivers/gpu/drm/i915/display/intel_casf.c
> index 2c406e7c5fb6..ed72bccbb93f 100644
> --- a/drivers/gpu/drm/i915/display/intel_casf.c
> +++ b/drivers/gpu/drm/i915/display/intel_casf.c
> @@ -25,6 +25,28 @@
>    * to original image.
>    */
>   
> +/* Default LUT values to be loaded one time. */
> +static const u16 sharpness_lut[] = {
> +	4095, 2047, 1364, 1022, 816, 678, 579,
> +	504, 444, 397, 357, 323, 293, 268, 244, 224,
> +	204, 187, 170, 154, 139, 125, 111, 98, 85,
> +	73, 60, 48, 36, 24, 12, 0
> +};
> +
> +void intel_filter_lut_load(struct intel_crtc *crtc,
> +			   const struct intel_crtc_state *crtc_state)
> +{
> +	struct intel_display *display = to_intel_display(crtc_state);
> +	int i;
> +
> +	intel_de_write(display, SHRPLUT_INDEX(crtc->pipe),
> +		       INDEX_AUTO_INCR | INDEX_VALUE(0));
> +
> +	for (i = 0; i < ARRAY_SIZE(sharpness_lut); i++)
> +		intel_de_write(display, SHRPLUT_DATA(crtc->pipe),
> +			       sharpness_lut[i]);
> +}
> +
>   void intel_casf_update_strength(struct intel_crtc_state *crtc_state)
>   {
>   	struct intel_display *display = to_intel_display(crtc_state);
> diff --git a/drivers/gpu/drm/i915/display/intel_casf.h b/drivers/gpu/drm/i915/display/intel_casf.h
> index 6e308c367c17..faeed50de2ba 100644
> --- a/drivers/gpu/drm/i915/display/intel_casf.h
> +++ b/drivers/gpu/drm/i915/display/intel_casf.h
> @@ -9,8 +9,11 @@
>   #include <linux/types.h>
>   
>   struct intel_crtc_state;
> +struct intel_crtc;
>   
>   int intel_casf_compute_config(struct intel_crtc_state *crtc_state);
>   void intel_casf_update_strength(struct intel_crtc_state *new_crtc_state);
> +void intel_filter_lut_load(struct intel_crtc *crtc,
> +			   const struct intel_crtc_state *crtc_state);
>   
>   #endif /* __INTEL_CASF_H__ */
> diff --git a/drivers/gpu/drm/i915/display/intel_casf_regs.h b/drivers/gpu/drm/i915/display/intel_casf_regs.h
> index e5fa4d9bb309..c61755a401ff 100644
> --- a/drivers/gpu/drm/i915/display/intel_casf_regs.h
> +++ b/drivers/gpu/drm/i915/display/intel_casf_regs.h
> @@ -19,5 +19,16 @@
>   #define   SHARPNESS_FILTER_SIZE_5X5    REG_FIELD_PREP(FILTER_SIZE_MASK, 1)
>   #define   SHARPNESS_FILTER_SIZE_7X7    REG_FIELD_PREP(FILTER_SIZE_MASK, 2)
>   
> +#define _SHRPLUT_DATA_A                        0x682B8
> +#define _SHRPLUT_DATA_B                        0x68AB8
> +#define SHRPLUT_DATA(pipe)             _MMIO_PIPE(pipe, _SHRPLUT_DATA_A, _SHRPLUT_DATA_B)
> +
> +#define _SHRPLUT_INDEX_A               0x682B4
> +#define _SHRPLUT_INDEX_B               0x68AB4
> +#define SHRPLUT_INDEX(pipe)            _MMIO_PIPE(pipe, _SHRPLUT_INDEX_A, _SHRPLUT_INDEX_B)
> +#define   INDEX_AUTO_INCR              REG_BIT(10)
> +#define   INDEX_VALUE_MASK             REG_GENMASK(4, 0)
> +#define   INDEX_VALUE(x)               REG_FIELD_PREP(INDEX_VALUE_MASK, (x))
> +
>   #endif /* __INTEL_CASF_REGS__ */
>   

^ permalink raw reply	[flat|nested] 36+ messages in thread

* [PATCH 04/10] drm/i915/display: Add filter lut values
  2025-04-02 12:56 [PATCH 00/10] Introduce drm sharpness property Nemesa Garg
@ 2025-04-02 12:56 ` Nemesa Garg
  0 siblings, 0 replies; 36+ messages in thread
From: Nemesa Garg @ 2025-04-02 12:56 UTC (permalink / raw)
  To: intel-gfx, dri-devel, intel-xe; +Cc: Nemesa Garg, Ankit Nautiyal

Add the register bits related to filter lut values.
These values are golden values and these value has
to be loaded one time while enabling the casf.

v2: update commit message[Ankit]

Signed-off-by: Nemesa Garg <nemesa.garg@intel.com>
Reviewed-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
---
 drivers/gpu/drm/i915/display/intel_casf.c     | 22 +++++++++++++++++++
 drivers/gpu/drm/i915/display/intel_casf.h     |  3 +++
 .../gpu/drm/i915/display/intel_casf_regs.h    | 11 ++++++++++
 3 files changed, 36 insertions(+)

diff --git a/drivers/gpu/drm/i915/display/intel_casf.c b/drivers/gpu/drm/i915/display/intel_casf.c
index 79a59e768c32..4d1a92199eb7 100644
--- a/drivers/gpu/drm/i915/display/intel_casf.c
+++ b/drivers/gpu/drm/i915/display/intel_casf.c
@@ -28,6 +28,28 @@
  * original image.
  */
 
+/* Default LUT values to be loaded one time. */
+static const u16 sharpness_lut[] = {
+	4095, 2047, 1364, 1022, 816, 678, 579,
+	504, 444, 397, 357, 323, 293, 268, 244, 224,
+	204, 187, 170, 154, 139, 125, 111, 98, 85,
+	73, 60, 48, 36, 24, 12, 0
+};
+
+void intel_filter_lut_load(struct intel_crtc *crtc,
+			   const struct intel_crtc_state *crtc_state)
+{
+	struct intel_display *display = to_intel_display(crtc_state);
+	int i;
+
+	intel_de_write(display, SHRPLUT_INDEX(crtc->pipe),
+		       INDEX_AUTO_INCR | INDEX_VALUE(0));
+
+	for (i = 0; i < ARRAY_SIZE(sharpness_lut); i++)
+		intel_de_write(display, SHRPLUT_DATA(crtc->pipe),
+			       sharpness_lut[i]);
+}
+
 void intel_casf_update_strength(struct intel_crtc_state *crtc_state)
 {
 	struct intel_display *display = to_intel_display(crtc_state);
diff --git a/drivers/gpu/drm/i915/display/intel_casf.h b/drivers/gpu/drm/i915/display/intel_casf.h
index 83523fe66c48..80642809c08b 100644
--- a/drivers/gpu/drm/i915/display/intel_casf.h
+++ b/drivers/gpu/drm/i915/display/intel_casf.h
@@ -9,9 +9,12 @@
 #include <linux/types.h>
 
 struct intel_crtc_state;
+struct intel_crtc;
 
 int intel_casf_compute_config(struct intel_crtc_state *crtc_state);
 void intel_casf_update_strength(struct intel_crtc_state *new_crtc_state);
 void intel_casf_sharpness_get_config(struct intel_crtc_state *crtc_state);
+void intel_filter_lut_load(struct intel_crtc *crtc,
+			   const struct intel_crtc_state *crtc_state);
 
 #endif /* __INTEL_CASF_H__ */
diff --git a/drivers/gpu/drm/i915/display/intel_casf_regs.h b/drivers/gpu/drm/i915/display/intel_casf_regs.h
index c24ba281ae37..b96950a48335 100644
--- a/drivers/gpu/drm/i915/display/intel_casf_regs.h
+++ b/drivers/gpu/drm/i915/display/intel_casf_regs.h
@@ -19,4 +19,15 @@
 #define   SHARPNESS_FILTER_SIZE_5X5    REG_FIELD_PREP(FILTER_SIZE_MASK, 1)
 #define   SHARPNESS_FILTER_SIZE_7X7    REG_FIELD_PREP(FILTER_SIZE_MASK, 2)
 
+#define _SHRPLUT_DATA_A                        0x682B8
+#define _SHRPLUT_DATA_B                        0x68AB8
+#define SHRPLUT_DATA(pipe)             _MMIO_PIPE(pipe, _SHRPLUT_DATA_A, _SHRPLUT_DATA_B)
+
+#define _SHRPLUT_INDEX_A               0x682B4
+#define _SHRPLUT_INDEX_B               0x68AB4
+#define SHRPLUT_INDEX(pipe)            _MMIO_PIPE(pipe, _SHRPLUT_INDEX_A, _SHRPLUT_INDEX_B)
+#define   INDEX_AUTO_INCR              REG_BIT(10)
+#define   INDEX_VALUE_MASK             REG_GENMASK(4, 0)
+#define   INDEX_VALUE(x)               REG_FIELD_PREP(INDEX_VALUE_MASK, (x))
+
 #endif /* __INTEL_CASF_REGS__ */
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 36+ messages in thread

* [PATCH 04/10] drm/i915/display: Add filter lut values
  2025-04-08 10:24 [PATCH 00/10] Introduce drm sharpness property Nemesa Garg
@ 2025-04-08 10:25 ` Nemesa Garg
  0 siblings, 0 replies; 36+ messages in thread
From: Nemesa Garg @ 2025-04-08 10:25 UTC (permalink / raw)
  To: intel-gfx, dri-devel, intel-xe; +Cc: Nemesa Garg, Ankit Nautiyal

Add the register bits related to filter lut values.
These values are golden values and these value has
to be loaded one time while enabling the casf.

v2: update commit message[Ankit]

Signed-off-by: Nemesa Garg <nemesa.garg@intel.com>
Reviewed-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
---
 drivers/gpu/drm/i915/display/intel_casf.c     | 22 +++++++++++++++++++
 drivers/gpu/drm/i915/display/intel_casf.h     |  3 +++
 .../gpu/drm/i915/display/intel_casf_regs.h    | 11 ++++++++++
 3 files changed, 36 insertions(+)

diff --git a/drivers/gpu/drm/i915/display/intel_casf.c b/drivers/gpu/drm/i915/display/intel_casf.c
index 576dce477339..cb7d925cd16e 100644
--- a/drivers/gpu/drm/i915/display/intel_casf.c
+++ b/drivers/gpu/drm/i915/display/intel_casf.c
@@ -28,6 +28,28 @@
  * original image.
  */
 
+/* Default LUT values to be loaded one time. */
+static const u16 sharpness_lut[] = {
+	4095, 2047, 1364, 1022, 816, 678, 579,
+	504, 444, 397, 357, 323, 293, 268, 244, 224,
+	204, 187, 170, 154, 139, 125, 111, 98, 85,
+	73, 60, 48, 36, 24, 12, 0
+};
+
+void intel_filter_lut_load(struct intel_crtc *crtc,
+			   const struct intel_crtc_state *crtc_state)
+{
+	struct intel_display *display = to_intel_display(crtc_state);
+	int i;
+
+	intel_de_write(display, SHRPLUT_INDEX(crtc->pipe),
+		       INDEX_AUTO_INCR | INDEX_VALUE(0));
+
+	for (i = 0; i < ARRAY_SIZE(sharpness_lut); i++)
+		intel_de_write(display, SHRPLUT_DATA(crtc->pipe),
+			       sharpness_lut[i]);
+}
+
 void intel_casf_update_strength(struct intel_crtc_state *crtc_state)
 {
 	struct intel_display *display = to_intel_display(crtc_state);
diff --git a/drivers/gpu/drm/i915/display/intel_casf.h b/drivers/gpu/drm/i915/display/intel_casf.h
index 83523fe66c48..80642809c08b 100644
--- a/drivers/gpu/drm/i915/display/intel_casf.h
+++ b/drivers/gpu/drm/i915/display/intel_casf.h
@@ -9,9 +9,12 @@
 #include <linux/types.h>
 
 struct intel_crtc_state;
+struct intel_crtc;
 
 int intel_casf_compute_config(struct intel_crtc_state *crtc_state);
 void intel_casf_update_strength(struct intel_crtc_state *new_crtc_state);
 void intel_casf_sharpness_get_config(struct intel_crtc_state *crtc_state);
+void intel_filter_lut_load(struct intel_crtc *crtc,
+			   const struct intel_crtc_state *crtc_state);
 
 #endif /* __INTEL_CASF_H__ */
diff --git a/drivers/gpu/drm/i915/display/intel_casf_regs.h b/drivers/gpu/drm/i915/display/intel_casf_regs.h
index c24ba281ae37..b96950a48335 100644
--- a/drivers/gpu/drm/i915/display/intel_casf_regs.h
+++ b/drivers/gpu/drm/i915/display/intel_casf_regs.h
@@ -19,4 +19,15 @@
 #define   SHARPNESS_FILTER_SIZE_5X5    REG_FIELD_PREP(FILTER_SIZE_MASK, 1)
 #define   SHARPNESS_FILTER_SIZE_7X7    REG_FIELD_PREP(FILTER_SIZE_MASK, 2)
 
+#define _SHRPLUT_DATA_A                        0x682B8
+#define _SHRPLUT_DATA_B                        0x68AB8
+#define SHRPLUT_DATA(pipe)             _MMIO_PIPE(pipe, _SHRPLUT_DATA_A, _SHRPLUT_DATA_B)
+
+#define _SHRPLUT_INDEX_A               0x682B4
+#define _SHRPLUT_INDEX_B               0x68AB4
+#define SHRPLUT_INDEX(pipe)            _MMIO_PIPE(pipe, _SHRPLUT_INDEX_A, _SHRPLUT_INDEX_B)
+#define   INDEX_AUTO_INCR              REG_BIT(10)
+#define   INDEX_VALUE_MASK             REG_GENMASK(4, 0)
+#define   INDEX_VALUE(x)               REG_FIELD_PREP(INDEX_VALUE_MASK, (x))
+
 #endif /* __INTEL_CASF_REGS__ */
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 36+ messages in thread

* [PATCH 04/10] drm/i915/display: Add filter lut values
  2025-05-19 12:26 [PATCH 00/10] Introduce drm sharpness property Nemesa Garg
@ 2025-05-19 12:26 ` Nemesa Garg
  2025-05-19 12:45   ` Jani Nikula
  0 siblings, 1 reply; 36+ messages in thread
From: Nemesa Garg @ 2025-05-19 12:26 UTC (permalink / raw)
  To: intel-gfx, intel-xe, dri-devel; +Cc: Nemesa Garg, Ankit Nautiyal

Add the register bits related to filter lut values.
These values are golden values and these value has
to be loaded one time while enabling the casf.

v2: update commit message[Ankit]

Signed-off-by: Nemesa Garg <nemesa.garg@intel.com>
Reviewed-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
---
 drivers/gpu/drm/i915/display/intel_casf.c     | 22 +++++++++++++++++++
 drivers/gpu/drm/i915/display/intel_casf.h     |  3 +++
 .../gpu/drm/i915/display/intel_casf_regs.h    | 11 ++++++++++
 3 files changed, 36 insertions(+)

diff --git a/drivers/gpu/drm/i915/display/intel_casf.c b/drivers/gpu/drm/i915/display/intel_casf.c
index 314d3fe19884..6dab67eb77ab 100644
--- a/drivers/gpu/drm/i915/display/intel_casf.c
+++ b/drivers/gpu/drm/i915/display/intel_casf.c
@@ -30,6 +30,28 @@
  * original image.
  */
 
+/* Default LUT values to be loaded one time. */
+static const u16 sharpness_lut[] = {
+	4095, 2047, 1364, 1022, 816, 678, 579,
+	504, 444, 397, 357, 323, 293, 268, 244, 224,
+	204, 187, 170, 154, 139, 125, 111, 98, 85,
+	73, 60, 48, 36, 24, 12, 0
+};
+
+void intel_filter_lut_load(struct intel_crtc *crtc,
+			   const struct intel_crtc_state *crtc_state)
+{
+	struct intel_display *display = to_intel_display(crtc_state);
+	int i;
+
+	intel_de_write(display, SHRPLUT_INDEX(crtc->pipe),
+		       INDEX_AUTO_INCR | INDEX_VALUE(0));
+
+	for (i = 0; i < ARRAY_SIZE(sharpness_lut); i++)
+		intel_de_write(display, SHRPLUT_DATA(crtc->pipe),
+			       sharpness_lut[i]);
+}
+
 void intel_casf_update_strength(struct intel_crtc_state *crtc_state)
 {
 	struct intel_display *display = to_intel_display(crtc_state);
diff --git a/drivers/gpu/drm/i915/display/intel_casf.h b/drivers/gpu/drm/i915/display/intel_casf.h
index 83523fe66c48..80642809c08b 100644
--- a/drivers/gpu/drm/i915/display/intel_casf.h
+++ b/drivers/gpu/drm/i915/display/intel_casf.h
@@ -9,9 +9,12 @@
 #include <linux/types.h>
 
 struct intel_crtc_state;
+struct intel_crtc;
 
 int intel_casf_compute_config(struct intel_crtc_state *crtc_state);
 void intel_casf_update_strength(struct intel_crtc_state *new_crtc_state);
 void intel_casf_sharpness_get_config(struct intel_crtc_state *crtc_state);
+void intel_filter_lut_load(struct intel_crtc *crtc,
+			   const struct intel_crtc_state *crtc_state);
 
 #endif /* __INTEL_CASF_H__ */
diff --git a/drivers/gpu/drm/i915/display/intel_casf_regs.h b/drivers/gpu/drm/i915/display/intel_casf_regs.h
index c24ba281ae37..b96950a48335 100644
--- a/drivers/gpu/drm/i915/display/intel_casf_regs.h
+++ b/drivers/gpu/drm/i915/display/intel_casf_regs.h
@@ -19,4 +19,15 @@
 #define   SHARPNESS_FILTER_SIZE_5X5    REG_FIELD_PREP(FILTER_SIZE_MASK, 1)
 #define   SHARPNESS_FILTER_SIZE_7X7    REG_FIELD_PREP(FILTER_SIZE_MASK, 2)
 
+#define _SHRPLUT_DATA_A                        0x682B8
+#define _SHRPLUT_DATA_B                        0x68AB8
+#define SHRPLUT_DATA(pipe)             _MMIO_PIPE(pipe, _SHRPLUT_DATA_A, _SHRPLUT_DATA_B)
+
+#define _SHRPLUT_INDEX_A               0x682B4
+#define _SHRPLUT_INDEX_B               0x68AB4
+#define SHRPLUT_INDEX(pipe)            _MMIO_PIPE(pipe, _SHRPLUT_INDEX_A, _SHRPLUT_INDEX_B)
+#define   INDEX_AUTO_INCR              REG_BIT(10)
+#define   INDEX_VALUE_MASK             REG_GENMASK(4, 0)
+#define   INDEX_VALUE(x)               REG_FIELD_PREP(INDEX_VALUE_MASK, (x))
+
 #endif /* __INTEL_CASF_REGS__ */
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 36+ messages in thread

* Re: [PATCH 04/10] drm/i915/display: Add filter lut values
  2025-05-19 12:26 ` [PATCH 04/10] drm/i915/display: Add filter lut values Nemesa Garg
@ 2025-05-19 12:45   ` Jani Nikula
  2025-05-27  3:26     ` Garg, Nemesa
  0 siblings, 1 reply; 36+ messages in thread
From: Jani Nikula @ 2025-05-19 12:45 UTC (permalink / raw)
  To: Nemesa Garg, intel-gfx, intel-xe, dri-devel; +Cc: Nemesa Garg, Ankit Nautiyal

On Mon, 19 May 2025, Nemesa Garg <nemesa.garg@intel.com> wrote:
> Add the register bits related to filter lut values.
> These values are golden values and these value has
> to be loaded one time while enabling the casf.
>
> v2: update commit message[Ankit]
>
> Signed-off-by: Nemesa Garg <nemesa.garg@intel.com>
> Reviewed-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
> ---
>  drivers/gpu/drm/i915/display/intel_casf.c     | 22 +++++++++++++++++++
>  drivers/gpu/drm/i915/display/intel_casf.h     |  3 +++
>  .../gpu/drm/i915/display/intel_casf_regs.h    | 11 ++++++++++
>  3 files changed, 36 insertions(+)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_casf.c b/drivers/gpu/drm/i915/display/intel_casf.c
> index 314d3fe19884..6dab67eb77ab 100644
> --- a/drivers/gpu/drm/i915/display/intel_casf.c
> +++ b/drivers/gpu/drm/i915/display/intel_casf.c
> @@ -30,6 +30,28 @@
>   * original image.
>   */
>  
> +/* Default LUT values to be loaded one time. */
> +static const u16 sharpness_lut[] = {
> +	4095, 2047, 1364, 1022, 816, 678, 579,
> +	504, 444, 397, 357, 323, 293, 268, 244, 224,
> +	204, 187, 170, 154, 139, 125, 111, 98, 85,
> +	73, 60, 48, 36, 24, 12, 0
> +};
> +
> +void intel_filter_lut_load(struct intel_crtc *crtc,
> +			   const struct intel_crtc_state *crtc_state)

Everything else in the file is prefixed intel_casf_, why is this called
intel_filter_lut_load()?

> +{
> +	struct intel_display *display = to_intel_display(crtc_state);
> +	int i;
> +
> +	intel_de_write(display, SHRPLUT_INDEX(crtc->pipe),
> +		       INDEX_AUTO_INCR | INDEX_VALUE(0));
> +
> +	for (i = 0; i < ARRAY_SIZE(sharpness_lut); i++)
> +		intel_de_write(display, SHRPLUT_DATA(crtc->pipe),
> +			       sharpness_lut[i]);
> +}
> +
>  void intel_casf_update_strength(struct intel_crtc_state *crtc_state)
>  {
>  	struct intel_display *display = to_intel_display(crtc_state);
> diff --git a/drivers/gpu/drm/i915/display/intel_casf.h b/drivers/gpu/drm/i915/display/intel_casf.h
> index 83523fe66c48..80642809c08b 100644
> --- a/drivers/gpu/drm/i915/display/intel_casf.h
> +++ b/drivers/gpu/drm/i915/display/intel_casf.h
> @@ -9,9 +9,12 @@
>  #include <linux/types.h>
>  
>  struct intel_crtc_state;
> +struct intel_crtc;
>  
>  int intel_casf_compute_config(struct intel_crtc_state *crtc_state);
>  void intel_casf_update_strength(struct intel_crtc_state *new_crtc_state);
>  void intel_casf_sharpness_get_config(struct intel_crtc_state *crtc_state);
> +void intel_filter_lut_load(struct intel_crtc *crtc,
> +			   const struct intel_crtc_state *crtc_state);
>  
>  #endif /* __INTEL_CASF_H__ */
> diff --git a/drivers/gpu/drm/i915/display/intel_casf_regs.h b/drivers/gpu/drm/i915/display/intel_casf_regs.h
> index c24ba281ae37..b96950a48335 100644
> --- a/drivers/gpu/drm/i915/display/intel_casf_regs.h
> +++ b/drivers/gpu/drm/i915/display/intel_casf_regs.h
> @@ -19,4 +19,15 @@
>  #define   SHARPNESS_FILTER_SIZE_5X5    REG_FIELD_PREP(FILTER_SIZE_MASK, 1)
>  #define   SHARPNESS_FILTER_SIZE_7X7    REG_FIELD_PREP(FILTER_SIZE_MASK, 2)
>  
> +#define _SHRPLUT_DATA_A                        0x682B8
> +#define _SHRPLUT_DATA_B                        0x68AB8
> +#define SHRPLUT_DATA(pipe)             _MMIO_PIPE(pipe, _SHRPLUT_DATA_A, _SHRPLUT_DATA_B)
> +
> +#define _SHRPLUT_INDEX_A               0x682B4
> +#define _SHRPLUT_INDEX_B               0x68AB4
> +#define SHRPLUT_INDEX(pipe)            _MMIO_PIPE(pipe, _SHRPLUT_INDEX_A, _SHRPLUT_INDEX_B)
> +#define   INDEX_AUTO_INCR              REG_BIT(10)
> +#define   INDEX_VALUE_MASK             REG_GENMASK(4, 0)
> +#define   INDEX_VALUE(x)               REG_FIELD_PREP(INDEX_VALUE_MASK, (x))
> +
>  #endif /* __INTEL_CASF_REGS__ */

-- 
Jani Nikula, Intel

^ permalink raw reply	[flat|nested] 36+ messages in thread

* RE: [PATCH 04/10] drm/i915/display: Add filter lut values
  2025-05-19 12:45   ` Jani Nikula
@ 2025-05-27  3:26     ` Garg, Nemesa
  0 siblings, 0 replies; 36+ messages in thread
From: Garg, Nemesa @ 2025-05-27  3:26 UTC (permalink / raw)
  To: Jani Nikula, intel-gfx@lists.freedesktop.org,
	intel-xe@lists.freedesktop.org, dri-devel@lists.freedesktop.org
  Cc: Nautiyal, Ankit K



> -----Original Message-----
> From: Jani Nikula <jani.nikula@linux.intel.com>
> Sent: Monday, May 19, 2025 6:15 PM
> To: Garg, Nemesa <nemesa.garg@intel.com>; intel-gfx@lists.freedesktop.org;
> intel-xe@lists.freedesktop.org; dri-devel@lists.freedesktop.org
> Cc: Garg, Nemesa <nemesa.garg@intel.com>; Nautiyal, Ankit K
> <ankit.k.nautiyal@intel.com>
> Subject: Re: [PATCH 04/10] drm/i915/display: Add filter lut values
> 
> On Mon, 19 May 2025, Nemesa Garg <nemesa.garg@intel.com> wrote:
> > Add the register bits related to filter lut values.
> > These values are golden values and these value has to be loaded one
> > time while enabling the casf.
> >
> > v2: update commit message[Ankit]
> >
> > Signed-off-by: Nemesa Garg <nemesa.garg@intel.com>
> > Reviewed-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
> > ---
> >  drivers/gpu/drm/i915/display/intel_casf.c     | 22 +++++++++++++++++++
> >  drivers/gpu/drm/i915/display/intel_casf.h     |  3 +++
> >  .../gpu/drm/i915/display/intel_casf_regs.h    | 11 ++++++++++
> >  3 files changed, 36 insertions(+)
> >
> > diff --git a/drivers/gpu/drm/i915/display/intel_casf.c
> > b/drivers/gpu/drm/i915/display/intel_casf.c
> > index 314d3fe19884..6dab67eb77ab 100644
> > --- a/drivers/gpu/drm/i915/display/intel_casf.c
> > +++ b/drivers/gpu/drm/i915/display/intel_casf.c
> > @@ -30,6 +30,28 @@
> >   * original image.
> >   */
> >
> > +/* Default LUT values to be loaded one time. */ static const u16
> > +sharpness_lut[] = {
> > +	4095, 2047, 1364, 1022, 816, 678, 579,
> > +	504, 444, 397, 357, 323, 293, 268, 244, 224,
> > +	204, 187, 170, 154, 139, 125, 111, 98, 85,
> > +	73, 60, 48, 36, 24, 12, 0
> > +};
> > +
> > +void intel_filter_lut_load(struct intel_crtc *crtc,
> > +			   const struct intel_crtc_state *crtc_state)
> 
> Everything else in the file is prefixed intel_casf_, why is this called
> intel_filter_lut_load()?
> Will change to intel_casf_lut_load().
> > +{
> > +	struct intel_display *display = to_intel_display(crtc_state);
> > +	int i;
> > +
> > +	intel_de_write(display, SHRPLUT_INDEX(crtc->pipe),
> > +		       INDEX_AUTO_INCR | INDEX_VALUE(0));
> > +
> > +	for (i = 0; i < ARRAY_SIZE(sharpness_lut); i++)
> > +		intel_de_write(display, SHRPLUT_DATA(crtc->pipe),
> > +			       sharpness_lut[i]);
> > +}
> > +
> >  void intel_casf_update_strength(struct intel_crtc_state *crtc_state)
> > {
> >  	struct intel_display *display = to_intel_display(crtc_state); diff
> > --git a/drivers/gpu/drm/i915/display/intel_casf.h
> > b/drivers/gpu/drm/i915/display/intel_casf.h
> > index 83523fe66c48..80642809c08b 100644
> > --- a/drivers/gpu/drm/i915/display/intel_casf.h
> > +++ b/drivers/gpu/drm/i915/display/intel_casf.h
> > @@ -9,9 +9,12 @@
> >  #include <linux/types.h>
> >
> >  struct intel_crtc_state;
> > +struct intel_crtc;
> >
> >  int intel_casf_compute_config(struct intel_crtc_state *crtc_state);
> > void intel_casf_update_strength(struct intel_crtc_state
> > *new_crtc_state);  void intel_casf_sharpness_get_config(struct
> > intel_crtc_state *crtc_state);
> > +void intel_filter_lut_load(struct intel_crtc *crtc,
> > +			   const struct intel_crtc_state *crtc_state);
> >
> >  #endif /* __INTEL_CASF_H__ */
> > diff --git a/drivers/gpu/drm/i915/display/intel_casf_regs.h
> > b/drivers/gpu/drm/i915/display/intel_casf_regs.h
> > index c24ba281ae37..b96950a48335 100644
> > --- a/drivers/gpu/drm/i915/display/intel_casf_regs.h
> > +++ b/drivers/gpu/drm/i915/display/intel_casf_regs.h
> > @@ -19,4 +19,15 @@
> >  #define   SHARPNESS_FILTER_SIZE_5X5
> REG_FIELD_PREP(FILTER_SIZE_MASK, 1)
> >  #define   SHARPNESS_FILTER_SIZE_7X7
> REG_FIELD_PREP(FILTER_SIZE_MASK, 2)
> >
> > +#define _SHRPLUT_DATA_A                        0x682B8
> > +#define _SHRPLUT_DATA_B                        0x68AB8
> > +#define SHRPLUT_DATA(pipe)             _MMIO_PIPE(pipe,
> _SHRPLUT_DATA_A, _SHRPLUT_DATA_B)
> > +
> > +#define _SHRPLUT_INDEX_A               0x682B4
> > +#define _SHRPLUT_INDEX_B               0x68AB4
> > +#define SHRPLUT_INDEX(pipe)            _MMIO_PIPE(pipe,
> _SHRPLUT_INDEX_A, _SHRPLUT_INDEX_B)
> > +#define   INDEX_AUTO_INCR              REG_BIT(10)
> > +#define   INDEX_VALUE_MASK             REG_GENMASK(4, 0)
> > +#define   INDEX_VALUE(x)               REG_FIELD_PREP(INDEX_VALUE_MASK,
> (x))
> > +
> >  #endif /* __INTEL_CASF_REGS__ */
> 
> --
> Jani Nikula, Intel

^ permalink raw reply	[flat|nested] 36+ messages in thread

* [PATCH 04/10] drm/i915/display: Add filter lut values
  2025-07-24 13:45 [PATCH 00/10] Introduce drm sharpness property Nemesa Garg
@ 2025-07-24 13:45 ` Nemesa Garg
  0 siblings, 0 replies; 36+ messages in thread
From: Nemesa Garg @ 2025-07-24 13:45 UTC (permalink / raw)
  To: intel-gfx, dri-devel, intel-xe; +Cc: Nemesa Garg, Ankit Nautiyal

Add the register bits related to filter lut values.
These values are golden values and these value has
to be loaded one time while enabling the casf.

v2: update commit message[Ankit]
v3: Make filter_load fn name same[Jani]

Signed-off-by: Nemesa Garg <nemesa.garg@intel.com>
Reviewed-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
---
 drivers/gpu/drm/i915/display/intel_casf.c     | 40 +++++++++++++++++++
 drivers/gpu/drm/i915/display/intel_casf.h     |  3 ++
 .../gpu/drm/i915/display/intel_casf_regs.h    | 11 +++++
 3 files changed, 54 insertions(+)

diff --git a/drivers/gpu/drm/i915/display/intel_casf.c b/drivers/gpu/drm/i915/display/intel_casf.c
index 6a877c7c76fa..18a8a621016a 100644
--- a/drivers/gpu/drm/i915/display/intel_casf.c
+++ b/drivers/gpu/drm/i915/display/intel_casf.c
@@ -30,6 +30,46 @@
  * original image.
  */
 
+/* Default LUT values to be loaded one time. */
+static const u16 sharpness_lut[] = {
+	4095, 2047, 1364, 1022, 816, 678, 579,
+	504, 444, 397, 357, 323, 293, 268, 244, 224,
+	204, 187, 170, 154, 139, 125, 111, 98, 85,
+	73, 60, 48, 36, 24, 12, 0
+};
+
+const u16 filtercoeff_1[] = {
+	FILTER_COEFF_0_0, FILTER_COEFF_0_0, FILTER_COEFF_0_5,
+	FILTER_COEFF_1_0, FILTER_COEFF_0_5, FILTER_COEFF_0_0,
+	FILTER_COEFF_0_0,
+};
+
+const u16 filtercoeff_2[] = {
+	FILTER_COEFF_0_0, FILTER_COEFF_0_25, FILTER_COEFF_0_5,
+	FILTER_COEFF_1_0, FILTER_COEFF_0_5, FILTER_COEFF_0_25,
+	FILTER_COEFF_0_0,
+};
+
+const u16 filtercoeff_3[] = {
+	FILTER_COEFF_0_125, FILTER_COEFF_0_25, FILTER_COEFF_0_5,
+	FILTER_COEFF_1_0, FILTER_COEFF_0_5, FILTER_COEFF_0_25,
+	FILTER_COEFF_0_125,
+};
+
+void intel_casf_filter_lut_load(struct intel_crtc *crtc,
+				const struct intel_crtc_state *crtc_state)
+{
+	struct intel_display *display = to_intel_display(crtc_state);
+	int i;
+
+	intel_de_write(display, SHRPLUT_INDEX(crtc->pipe),
+		       INDEX_AUTO_INCR | INDEX_VALUE(0));
+
+	for (i = 0; i < ARRAY_SIZE(sharpness_lut); i++)
+		intel_de_write(display, SHRPLUT_DATA(crtc->pipe),
+			       sharpness_lut[i]);
+}
+
 void intel_casf_update_strength(struct intel_crtc_state *crtc_state)
 {
 	struct intel_display *display = to_intel_display(crtc_state);
diff --git a/drivers/gpu/drm/i915/display/intel_casf.h b/drivers/gpu/drm/i915/display/intel_casf.h
index 83523fe66c48..3edbc3ad51cf 100644
--- a/drivers/gpu/drm/i915/display/intel_casf.h
+++ b/drivers/gpu/drm/i915/display/intel_casf.h
@@ -9,9 +9,12 @@
 #include <linux/types.h>
 
 struct intel_crtc_state;
+struct intel_crtc;
 
 int intel_casf_compute_config(struct intel_crtc_state *crtc_state);
 void intel_casf_update_strength(struct intel_crtc_state *new_crtc_state);
 void intel_casf_sharpness_get_config(struct intel_crtc_state *crtc_state);
+void intel_casf_filter_lut_load(struct intel_crtc *crtc,
+				const struct intel_crtc_state *crtc_state);
 
 #endif /* __INTEL_CASF_H__ */
diff --git a/drivers/gpu/drm/i915/display/intel_casf_regs.h b/drivers/gpu/drm/i915/display/intel_casf_regs.h
index c24ba281ae37..b96950a48335 100644
--- a/drivers/gpu/drm/i915/display/intel_casf_regs.h
+++ b/drivers/gpu/drm/i915/display/intel_casf_regs.h
@@ -19,4 +19,15 @@
 #define   SHARPNESS_FILTER_SIZE_5X5    REG_FIELD_PREP(FILTER_SIZE_MASK, 1)
 #define   SHARPNESS_FILTER_SIZE_7X7    REG_FIELD_PREP(FILTER_SIZE_MASK, 2)
 
+#define _SHRPLUT_DATA_A                        0x682B8
+#define _SHRPLUT_DATA_B                        0x68AB8
+#define SHRPLUT_DATA(pipe)             _MMIO_PIPE(pipe, _SHRPLUT_DATA_A, _SHRPLUT_DATA_B)
+
+#define _SHRPLUT_INDEX_A               0x682B4
+#define _SHRPLUT_INDEX_B               0x68AB4
+#define SHRPLUT_INDEX(pipe)            _MMIO_PIPE(pipe, _SHRPLUT_INDEX_A, _SHRPLUT_INDEX_B)
+#define   INDEX_AUTO_INCR              REG_BIT(10)
+#define   INDEX_VALUE_MASK             REG_GENMASK(4, 0)
+#define   INDEX_VALUE(x)               REG_FIELD_PREP(INDEX_VALUE_MASK, (x))
+
 #endif /* __INTEL_CASF_REGS__ */
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 36+ messages in thread

* [PATCH 04/10] drm/i915/display: Add filter lut values
  2025-08-07  9:28 [PATCH 00/10] Introduce drm sharpness property Nemesa Garg
@ 2025-08-07  9:28 ` Nemesa Garg
  0 siblings, 0 replies; 36+ messages in thread
From: Nemesa Garg @ 2025-08-07  9:28 UTC (permalink / raw)
  To: intel-gfx, intel-xe, dri-devel; +Cc: Nemesa Garg, Ankit Nautiyal

Add the register bits related to filter lut values.
These values are golden values and these value has
to be loaded one time while enabling the casf.

v2: update commit message[Ankit]
v3: Make filter_load fn name same[Jani]

Signed-off-by: Nemesa Garg <nemesa.garg@intel.com>
Reviewed-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
---
 drivers/gpu/drm/i915/display/intel_casf.c     | 40 +++++++++++++++++++
 drivers/gpu/drm/i915/display/intel_casf.h     |  3 ++
 .../gpu/drm/i915/display/intel_casf_regs.h    | 11 +++++
 3 files changed, 54 insertions(+)

diff --git a/drivers/gpu/drm/i915/display/intel_casf.c b/drivers/gpu/drm/i915/display/intel_casf.c
index 6a877c7c76fa..18a8a621016a 100644
--- a/drivers/gpu/drm/i915/display/intel_casf.c
+++ b/drivers/gpu/drm/i915/display/intel_casf.c
@@ -30,6 +30,46 @@
  * original image.
  */
 
+/* Default LUT values to be loaded one time. */
+static const u16 sharpness_lut[] = {
+	4095, 2047, 1364, 1022, 816, 678, 579,
+	504, 444, 397, 357, 323, 293, 268, 244, 224,
+	204, 187, 170, 154, 139, 125, 111, 98, 85,
+	73, 60, 48, 36, 24, 12, 0
+};
+
+const u16 filtercoeff_1[] = {
+	FILTER_COEFF_0_0, FILTER_COEFF_0_0, FILTER_COEFF_0_5,
+	FILTER_COEFF_1_0, FILTER_COEFF_0_5, FILTER_COEFF_0_0,
+	FILTER_COEFF_0_0,
+};
+
+const u16 filtercoeff_2[] = {
+	FILTER_COEFF_0_0, FILTER_COEFF_0_25, FILTER_COEFF_0_5,
+	FILTER_COEFF_1_0, FILTER_COEFF_0_5, FILTER_COEFF_0_25,
+	FILTER_COEFF_0_0,
+};
+
+const u16 filtercoeff_3[] = {
+	FILTER_COEFF_0_125, FILTER_COEFF_0_25, FILTER_COEFF_0_5,
+	FILTER_COEFF_1_0, FILTER_COEFF_0_5, FILTER_COEFF_0_25,
+	FILTER_COEFF_0_125,
+};
+
+void intel_casf_filter_lut_load(struct intel_crtc *crtc,
+				const struct intel_crtc_state *crtc_state)
+{
+	struct intel_display *display = to_intel_display(crtc_state);
+	int i;
+
+	intel_de_write(display, SHRPLUT_INDEX(crtc->pipe),
+		       INDEX_AUTO_INCR | INDEX_VALUE(0));
+
+	for (i = 0; i < ARRAY_SIZE(sharpness_lut); i++)
+		intel_de_write(display, SHRPLUT_DATA(crtc->pipe),
+			       sharpness_lut[i]);
+}
+
 void intel_casf_update_strength(struct intel_crtc_state *crtc_state)
 {
 	struct intel_display *display = to_intel_display(crtc_state);
diff --git a/drivers/gpu/drm/i915/display/intel_casf.h b/drivers/gpu/drm/i915/display/intel_casf.h
index 83523fe66c48..3edbc3ad51cf 100644
--- a/drivers/gpu/drm/i915/display/intel_casf.h
+++ b/drivers/gpu/drm/i915/display/intel_casf.h
@@ -9,9 +9,12 @@
 #include <linux/types.h>
 
 struct intel_crtc_state;
+struct intel_crtc;
 
 int intel_casf_compute_config(struct intel_crtc_state *crtc_state);
 void intel_casf_update_strength(struct intel_crtc_state *new_crtc_state);
 void intel_casf_sharpness_get_config(struct intel_crtc_state *crtc_state);
+void intel_casf_filter_lut_load(struct intel_crtc *crtc,
+				const struct intel_crtc_state *crtc_state);
 
 #endif /* __INTEL_CASF_H__ */
diff --git a/drivers/gpu/drm/i915/display/intel_casf_regs.h b/drivers/gpu/drm/i915/display/intel_casf_regs.h
index c24ba281ae37..b96950a48335 100644
--- a/drivers/gpu/drm/i915/display/intel_casf_regs.h
+++ b/drivers/gpu/drm/i915/display/intel_casf_regs.h
@@ -19,4 +19,15 @@
 #define   SHARPNESS_FILTER_SIZE_5X5    REG_FIELD_PREP(FILTER_SIZE_MASK, 1)
 #define   SHARPNESS_FILTER_SIZE_7X7    REG_FIELD_PREP(FILTER_SIZE_MASK, 2)
 
+#define _SHRPLUT_DATA_A                        0x682B8
+#define _SHRPLUT_DATA_B                        0x68AB8
+#define SHRPLUT_DATA(pipe)             _MMIO_PIPE(pipe, _SHRPLUT_DATA_A, _SHRPLUT_DATA_B)
+
+#define _SHRPLUT_INDEX_A               0x682B4
+#define _SHRPLUT_INDEX_B               0x68AB4
+#define SHRPLUT_INDEX(pipe)            _MMIO_PIPE(pipe, _SHRPLUT_INDEX_A, _SHRPLUT_INDEX_B)
+#define   INDEX_AUTO_INCR              REG_BIT(10)
+#define   INDEX_VALUE_MASK             REG_GENMASK(4, 0)
+#define   INDEX_VALUE(x)               REG_FIELD_PREP(INDEX_VALUE_MASK, (x))
+
 #endif /* __INTEL_CASF_REGS__ */
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 36+ messages in thread

* [PATCH 04/10] drm/i915/display: Add filter lut values
  2025-09-26 11:37 [PATCH 00/10] Introduce drm sharpness property Nemesa Garg
@ 2025-09-26 11:37 ` Nemesa Garg
  2025-10-01  5:31   ` Nautiyal, Ankit K
  0 siblings, 1 reply; 36+ messages in thread
From: Nemesa Garg @ 2025-09-26 11:37 UTC (permalink / raw)
  To: intel-gfx, intel-xe, dri-devel; +Cc: Nemesa Garg

Add the register bits related to filter lut values.
These values are golden values and these value has
to be loaded one time while enabling the casf.

v2: update commit message[Ankit]
v3: Make filter_load fn name same[Jani]
v4: Define the filter macros here

Signed-off-by: Nemesa Garg <nemesa.garg@intel.com>
---
 drivers/gpu/drm/i915/display/intel_casf.c     | 47 +++++++++++++++++++
 drivers/gpu/drm/i915/display/intel_casf.h     |  3 ++
 .../gpu/drm/i915/display/intel_casf_regs.h    | 11 +++++
 3 files changed, 61 insertions(+)

diff --git a/drivers/gpu/drm/i915/display/intel_casf.c b/drivers/gpu/drm/i915/display/intel_casf.c
index 4597e576b6dc..45bc67377d21 100644
--- a/drivers/gpu/drm/i915/display/intel_casf.c
+++ b/drivers/gpu/drm/i915/display/intel_casf.c
@@ -16,6 +16,13 @@
 #define MAX_PIXELS_FOR_3_TAP_FILTER (1920 * 1080)
 #define MAX_PIXELS_FOR_5_TAP_FILTER (3840 * 2160)
 
+#define FILTER_COEFF_0_125 125
+#define FILTER_COEFF_0_25 250
+#define FILTER_COEFF_0_5 500
+#define FILTER_COEFF_1_0 1000
+#define FILTER_COEFF_0_0 0
+#define SET_POSITIVE_SIGN(x) ((x) & (~SIGN))
+
 /**
  * DOC: Content Adaptive Sharpness Filter (CASF)
  *
@@ -31,6 +38,46 @@
  * original image.
  */
 
+/* Default LUT values to be loaded one time. */
+static const u16 sharpness_lut[] = {
+	4095, 2047, 1364, 1022, 816, 678, 579,
+	504, 444, 397, 357, 323, 293, 268, 244, 224,
+	204, 187, 170, 154, 139, 125, 111, 98, 85,
+	73, 60, 48, 36, 24, 12, 0
+};
+
+const u16 filtercoeff_1[] = {
+	FILTER_COEFF_0_0, FILTER_COEFF_0_0, FILTER_COEFF_0_5,
+	FILTER_COEFF_1_0, FILTER_COEFF_0_5, FILTER_COEFF_0_0,
+	FILTER_COEFF_0_0,
+};
+
+const u16 filtercoeff_2[] = {
+	FILTER_COEFF_0_0, FILTER_COEFF_0_25, FILTER_COEFF_0_5,
+	FILTER_COEFF_1_0, FILTER_COEFF_0_5, FILTER_COEFF_0_25,
+	FILTER_COEFF_0_0,
+};
+
+const u16 filtercoeff_3[] = {
+	FILTER_COEFF_0_125, FILTER_COEFF_0_25, FILTER_COEFF_0_5,
+	FILTER_COEFF_1_0, FILTER_COEFF_0_5, FILTER_COEFF_0_25,
+	FILTER_COEFF_0_125,
+};
+
+void intel_casf_filter_lut_load(struct intel_crtc *crtc,
+				const struct intel_crtc_state *crtc_state)
+{
+	struct intel_display *display = to_intel_display(crtc_state);
+	int i;
+
+	intel_de_write(display, SHRPLUT_INDEX(crtc->pipe),
+		       INDEX_AUTO_INCR | INDEX_VALUE(0));
+
+	for (i = 0; i < ARRAY_SIZE(sharpness_lut); i++)
+		intel_de_write(display, SHRPLUT_DATA(crtc->pipe),
+			       sharpness_lut[i]);
+}
+
 void intel_casf_update_strength(struct intel_crtc_state *crtc_state)
 {
 	struct intel_display *display = to_intel_display(crtc_state);
diff --git a/drivers/gpu/drm/i915/display/intel_casf.h b/drivers/gpu/drm/i915/display/intel_casf.h
index 83523fe66c48..3edbc3ad51cf 100644
--- a/drivers/gpu/drm/i915/display/intel_casf.h
+++ b/drivers/gpu/drm/i915/display/intel_casf.h
@@ -9,9 +9,12 @@
 #include <linux/types.h>
 
 struct intel_crtc_state;
+struct intel_crtc;
 
 int intel_casf_compute_config(struct intel_crtc_state *crtc_state);
 void intel_casf_update_strength(struct intel_crtc_state *new_crtc_state);
 void intel_casf_sharpness_get_config(struct intel_crtc_state *crtc_state);
+void intel_casf_filter_lut_load(struct intel_crtc *crtc,
+				const struct intel_crtc_state *crtc_state);
 
 #endif /* __INTEL_CASF_H__ */
diff --git a/drivers/gpu/drm/i915/display/intel_casf_regs.h b/drivers/gpu/drm/i915/display/intel_casf_regs.h
index c24ba281ae37..b96950a48335 100644
--- a/drivers/gpu/drm/i915/display/intel_casf_regs.h
+++ b/drivers/gpu/drm/i915/display/intel_casf_regs.h
@@ -19,4 +19,15 @@
 #define   SHARPNESS_FILTER_SIZE_5X5    REG_FIELD_PREP(FILTER_SIZE_MASK, 1)
 #define   SHARPNESS_FILTER_SIZE_7X7    REG_FIELD_PREP(FILTER_SIZE_MASK, 2)
 
+#define _SHRPLUT_DATA_A                        0x682B8
+#define _SHRPLUT_DATA_B                        0x68AB8
+#define SHRPLUT_DATA(pipe)             _MMIO_PIPE(pipe, _SHRPLUT_DATA_A, _SHRPLUT_DATA_B)
+
+#define _SHRPLUT_INDEX_A               0x682B4
+#define _SHRPLUT_INDEX_B               0x68AB4
+#define SHRPLUT_INDEX(pipe)            _MMIO_PIPE(pipe, _SHRPLUT_INDEX_A, _SHRPLUT_INDEX_B)
+#define   INDEX_AUTO_INCR              REG_BIT(10)
+#define   INDEX_VALUE_MASK             REG_GENMASK(4, 0)
+#define   INDEX_VALUE(x)               REG_FIELD_PREP(INDEX_VALUE_MASK, (x))
+
 #endif /* __INTEL_CASF_REGS__ */
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 36+ messages in thread

* Re: [PATCH 04/10] drm/i915/display: Add filter lut values
  2025-09-26 11:37 ` [PATCH 04/10] drm/i915/display: Add filter lut values Nemesa Garg
@ 2025-10-01  5:31   ` Nautiyal, Ankit K
  0 siblings, 0 replies; 36+ messages in thread
From: Nautiyal, Ankit K @ 2025-10-01  5:31 UTC (permalink / raw)
  To: Nemesa Garg, intel-gfx, intel-xe, dri-devel


On 9/26/2025 5:07 PM, Nemesa Garg wrote:
> Add the register bits related to filter lut values.
> These values are golden values and these value has
> to be loaded one time while enabling the casf.
>
> v2: update commit message[Ankit]
> v3: Make filter_load fn name same[Jani]
> v4: Define the filter macros here
>
> Signed-off-by: Nemesa Garg <nemesa.garg@intel.com>
> ---
>   drivers/gpu/drm/i915/display/intel_casf.c     | 47 +++++++++++++++++++
>   drivers/gpu/drm/i915/display/intel_casf.h     |  3 ++
>   .../gpu/drm/i915/display/intel_casf_regs.h    | 11 +++++
>   3 files changed, 61 insertions(+)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_casf.c b/drivers/gpu/drm/i915/display/intel_casf.c
> index 4597e576b6dc..45bc67377d21 100644
> --- a/drivers/gpu/drm/i915/display/intel_casf.c
> +++ b/drivers/gpu/drm/i915/display/intel_casf.c
> @@ -16,6 +16,13 @@
>   #define MAX_PIXELS_FOR_3_TAP_FILTER (1920 * 1080)
>   #define MAX_PIXELS_FOR_5_TAP_FILTER (3840 * 2160)
>   
> +#define FILTER_COEFF_0_125 125
> +#define FILTER_COEFF_0_25 250
> +#define FILTER_COEFF_0_5 500
> +#define FILTER_COEFF_1_0 1000
> +#define FILTER_COEFF_0_0 0
> +#define SET_POSITIVE_SIGN(x) ((x) & (~SIGN))
> +
>   /**
>    * DOC: Content Adaptive Sharpness Filter (CASF)
>    *
> @@ -31,6 +38,46 @@
>    * original image.
>    */
>   
> +/* Default LUT values to be loaded one time. */
> +static const u16 sharpness_lut[] = {
> +	4095, 2047, 1364, 1022, 816, 678, 579,
> +	504, 444, 397, 357, 323, 293, 268, 244, 224,
> +	204, 187, 170, 154, 139, 125, 111, 98, 85,
> +	73, 60, 48, 36, 24, 12, 0
> +};
> +
> +const u16 filtercoeff_1[] = {
> +	FILTER_COEFF_0_0, FILTER_COEFF_0_0, FILTER_COEFF_0_5,
> +	FILTER_COEFF_1_0, FILTER_COEFF_0_5, FILTER_COEFF_0_0,
> +	FILTER_COEFF_0_0,
> +};
> +
> +const u16 filtercoeff_2[] = {
> +	FILTER_COEFF_0_0, FILTER_COEFF_0_25, FILTER_COEFF_0_5,
> +	FILTER_COEFF_1_0, FILTER_COEFF_0_5, FILTER_COEFF_0_25,
> +	FILTER_COEFF_0_0,
> +};
> +
> +const u16 filtercoeff_3[] = {
> +	FILTER_COEFF_0_125, FILTER_COEFF_0_25, FILTER_COEFF_0_5,
> +	FILTER_COEFF_1_0, FILTER_COEFF_0_5, FILTER_COEFF_0_25,
> +	FILTER_COEFF_0_125,
> +};
> +
> +void intel_casf_filter_lut_load(struct intel_crtc *crtc,
> +				const struct intel_crtc_state *crtc_state)

This should be static and should be called from intel_casf_enable().


> +{
> +	struct intel_display *display = to_intel_display(crtc_state);
> +	int i;
> +
> +	intel_de_write(display, SHRPLUT_INDEX(crtc->pipe),
> +		       INDEX_AUTO_INCR | INDEX_VALUE(0));
> +
> +	for (i = 0; i < ARRAY_SIZE(sharpness_lut); i++)
> +		intel_de_write(display, SHRPLUT_DATA(crtc->pipe),
> +			       sharpness_lut[i]);
> +}
> +
>   void intel_casf_update_strength(struct intel_crtc_state *crtc_state)
>   {
>   	struct intel_display *display = to_intel_display(crtc_state);
> diff --git a/drivers/gpu/drm/i915/display/intel_casf.h b/drivers/gpu/drm/i915/display/intel_casf.h
> index 83523fe66c48..3edbc3ad51cf 100644
> --- a/drivers/gpu/drm/i915/display/intel_casf.h
> +++ b/drivers/gpu/drm/i915/display/intel_casf.h
> @@ -9,9 +9,12 @@
>   #include <linux/types.h>
>   
>   struct intel_crtc_state;
> +struct intel_crtc;
>   
>   int intel_casf_compute_config(struct intel_crtc_state *crtc_state);
>   void intel_casf_update_strength(struct intel_crtc_state *new_crtc_state);
>   void intel_casf_sharpness_get_config(struct intel_crtc_state *crtc_state);
> +void intel_casf_filter_lut_load(struct intel_crtc *crtc,
> +				const struct intel_crtc_state *crtc_state);
>   
>   #endif /* __INTEL_CASF_H__ */
> diff --git a/drivers/gpu/drm/i915/display/intel_casf_regs.h b/drivers/gpu/drm/i915/display/intel_casf_regs.h
> index c24ba281ae37..b96950a48335 100644
> --- a/drivers/gpu/drm/i915/display/intel_casf_regs.h
> +++ b/drivers/gpu/drm/i915/display/intel_casf_regs.h
> @@ -19,4 +19,15 @@
>   #define   SHARPNESS_FILTER_SIZE_5X5    REG_FIELD_PREP(FILTER_SIZE_MASK, 1)
>   #define   SHARPNESS_FILTER_SIZE_7X7    REG_FIELD_PREP(FILTER_SIZE_MASK, 2)
>   
> +#define _SHRPLUT_DATA_A                        0x682B8
> +#define _SHRPLUT_DATA_B                        0x68AB8
> +#define SHRPLUT_DATA(pipe)             _MMIO_PIPE(pipe, _SHRPLUT_DATA_A, _SHRPLUT_DATA_B)
> +
> +#define _SHRPLUT_INDEX_A               0x682B4
> +#define _SHRPLUT_INDEX_B               0x68AB4

It seems the macros and the registers offsets seems to be not separated 
by tab, but spaces in some places.

Can you check these once?

As per i915_reg.h : “Indent macro values from macro names using TABs"

Regards,

Ankit


> +#define SHRPLUT_INDEX(pipe)            _MMIO_PIPE(pipe, _SHRPLUT_INDEX_A, _SHRPLUT_INDEX_B)
> +#define   INDEX_AUTO_INCR              REG_BIT(10)
> +#define   INDEX_VALUE_MASK             REG_GENMASK(4, 0)
> +#define   INDEX_VALUE(x)               REG_FIELD_PREP(INDEX_VALUE_MASK, (x))
> +
>   #endif /* __INTEL_CASF_REGS__ */

^ permalink raw reply	[flat|nested] 36+ messages in thread

* [PATCH 00/10]  Introduce drm sharpness property
@ 2025-10-01  6:34 Nemesa Garg
  2025-10-01  6:34 ` [PATCH 01/10] drm/drm_crtc: Introduce sharpness strength property Nemesa Garg
                   ` (15 more replies)
  0 siblings, 16 replies; 36+ messages in thread
From: Nemesa Garg @ 2025-10-01  6:34 UTC (permalink / raw)
  To: intel-gfx, intel-xe, dri-devel; +Cc: Nemesa Garg

 Many a times images are blurred or upscaled content is also not as
crisp as original rendered image. Traditional sharpening techniques often
apply a uniform level of enhancement across entire image, which sometimes
result in over-sharpening of some areas and potential loss of natural details.

Intel has come up with Display Engine based adaptive sharpening filter
with minimal power and performance impact. From LNL onwards, the Display
hardware can use one of the pipe scaler for adaptive sharpness filter.
This can be used for both gaming and non-gaming use cases like photos,
image viewing. It works on a region of pixels depending on the tap size.

This is an attempt to introduce an adaptive sharpness solution which
helps in improving the image quality. For this new CRTC property is added.
The user can set this property with desired sharpness strength value with
0-255. A value of 1 representing minimum sharpening strength and 255
representing maximum sharpness strength. A strength value of 0 means no
sharpening or sharpening feature disabled.
It works on a region of pixels depending on the tap size. The coefficients
are used to generate an alpha value which is used to blend the sharpened
image to original image.

Middleware MR link: https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3665
IGT patchwork link: https://patchwork.freedesktop.org/series/130218/

Continuing discussions from:  https://patchwork.freedesktop.org/series/129888/

https://invent.kde.org/plasma/kwin/-/merge_requests/7689
Got ack from kwin maintainer on the UAPI patch.

Minor changes in patch 3, 4 and 5 hence require rb.

Nemesa Garg (10):
  drm/drm_crtc: Introduce sharpness strength property
  drm/i915/display: Introduce HAS_CASF for sharpness support
  drm/i915/display: Add CASF strength and winsize
  drm/i915/display: Add filter lut values
  drm/i915/display: Compute the scaler coefficients
  drm/i915/display: Add and compute scaler parameter
  drm/i915/display: Configure the second scaler
  drm/i915/display: Set and get the casf config
  drm/i915/display: Enable/disable casf
  drm/i915/display: Expose sharpness strength property

 drivers/gpu/drm/drm_atomic_uapi.c             |   4 +
 drivers/gpu/drm/drm_crtc.c                    |  35 +++
 drivers/gpu/drm/i915/Makefile                 |   1 +
 drivers/gpu/drm/i915/display/intel_casf.c     | 293 ++++++++++++++++++
 drivers/gpu/drm/i915/display/intel_casf.h     |  22 ++
 .../gpu/drm/i915/display/intel_casf_regs.h    |  33 ++
 drivers/gpu/drm/i915/display/intel_crtc.c     |   3 +
 .../drm/i915/display/intel_crtc_state_dump.c  |   5 +
 drivers/gpu/drm/i915/display/intel_display.c  |  37 ++-
 .../drm/i915/display/intel_display_device.h   |   1 +
 .../drm/i915/display/intel_display_types.h    |  15 +
 drivers/gpu/drm/i915/display/skl_scaler.c     |  91 +++++-
 drivers/gpu/drm/i915/display/skl_scaler.h     |   2 +
 drivers/gpu/drm/xe/Makefile                   |   1 +
 include/drm/drm_crtc.h                        |  18 ++
 15 files changed, 548 insertions(+), 13 deletions(-)
 create mode 100644 drivers/gpu/drm/i915/display/intel_casf.c
 create mode 100644 drivers/gpu/drm/i915/display/intel_casf.h
 create mode 100644 drivers/gpu/drm/i915/display/intel_casf_regs.h

-- 
2.25.1


^ permalink raw reply	[flat|nested] 36+ messages in thread

* [PATCH 01/10] drm/drm_crtc: Introduce sharpness strength property
  2025-10-01  6:34 [PATCH 00/10] Introduce drm sharpness property Nemesa Garg
@ 2025-10-01  6:34 ` Nemesa Garg
  2025-10-04 10:08   ` Dmitry Baryshkov
  2025-10-01  6:34 ` [PATCH 02/10] drm/i915/display: Introduce HAS_CASF for sharpness support Nemesa Garg
                   ` (14 subsequent siblings)
  15 siblings, 1 reply; 36+ messages in thread
From: Nemesa Garg @ 2025-10-01  6:34 UTC (permalink / raw)
  To: intel-gfx, intel-xe, dri-devel
  Cc: Nemesa Garg, Ankit Nautiyal, Adarsh G M, Simona Vetter

Introduce a new crtc property "SHARPNESS_STRENGTH" that allows
the user to set the intensity so as to get the sharpness effect.
The value of this property can be set from 0-255.
It is useful in scenario when the output is blurry and user
want to sharpen the pixels. User can increase/decrease the
sharpness level depending on the content displayed.

v2: Rename crtc property variable [Arun]
    Add modeset detail in uapi doc[Uma]
v3: Fix build issue
v4: Modify the subject line[Ankit]

Signed-off-by: Nemesa Garg <nemesa.garg@intel.com>
Reviewed-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
Tested-by: Adarsh G M <Adarsh.g.m@intel.com>
Acked-by: Simona Vetter <simona.vetter@ffwll.ch>
---
 drivers/gpu/drm/drm_atomic_uapi.c |  4 ++++
 drivers/gpu/drm/drm_crtc.c        | 35 +++++++++++++++++++++++++++++++
 include/drm/drm_crtc.h            | 18 ++++++++++++++++
 3 files changed, 57 insertions(+)

diff --git a/drivers/gpu/drm/drm_atomic_uapi.c b/drivers/gpu/drm/drm_atomic_uapi.c
index 85dbdaa4a2e2..b2cb5ae5a139 100644
--- a/drivers/gpu/drm/drm_atomic_uapi.c
+++ b/drivers/gpu/drm/drm_atomic_uapi.c
@@ -419,6 +419,8 @@ static int drm_atomic_crtc_set_property(struct drm_crtc *crtc,
 		set_out_fence_for_crtc(state->state, crtc, fence_ptr);
 	} else if (property == crtc->scaling_filter_property) {
 		state->scaling_filter = val;
+	} else if (property == crtc->sharpness_strength_property) {
+		state->sharpness_strength = val;
 	} else if (crtc->funcs->atomic_set_property) {
 		return crtc->funcs->atomic_set_property(crtc, state, property, val);
 	} else {
@@ -456,6 +458,8 @@ drm_atomic_crtc_get_property(struct drm_crtc *crtc,
 		*val = 0;
 	else if (property == crtc->scaling_filter_property)
 		*val = state->scaling_filter;
+	else if (property == crtc->sharpness_strength_property)
+		*val = state->sharpness_strength;
 	else if (crtc->funcs->atomic_get_property)
 		return crtc->funcs->atomic_get_property(crtc, state, property, val);
 	else {
diff --git a/drivers/gpu/drm/drm_crtc.c b/drivers/gpu/drm/drm_crtc.c
index 46655339003d..a7797d260f1e 100644
--- a/drivers/gpu/drm/drm_crtc.c
+++ b/drivers/gpu/drm/drm_crtc.c
@@ -229,6 +229,25 @@ struct dma_fence *drm_crtc_create_fence(struct drm_crtc *crtc)
  * 		Driver's default scaling filter
  * 	Nearest Neighbor:
  * 		Nearest Neighbor scaling filter
+ * SHARPNESS_STRENGTH:
+ *	Atomic property for setting the sharpness strength/intensity by userspace.
+ *
+ *	The value of this property is set as an integer value ranging
+ *	from 0 - 255 where:
+ *
+ *	0: Sharpness feature is disabled(default value).
+ *
+ *	1: Minimum sharpness.
+ *
+ *	255: Maximum sharpness.
+ *
+ *	User can gradually increase or decrease the sharpness level and can
+ *	set the optimum value depending on content.
+ *	This value will be passed to kernel through the UAPI.
+ *	The setting of this property does not require modeset.
+ *	The sharpness effect takes place post blending on the final composed output.
+ *	If the feature is disabled, the content remains same without any sharpening effect
+ *	and when this feature is applied, it enhances the clarity of the content.
  */
 
 __printf(6, 0)
@@ -940,6 +959,22 @@ int drm_crtc_create_scaling_filter_property(struct drm_crtc *crtc,
 }
 EXPORT_SYMBOL(drm_crtc_create_scaling_filter_property);
 
+int drm_crtc_create_sharpness_strength_property(struct drm_crtc *crtc)
+{
+	struct drm_device *dev = crtc->dev;
+	struct drm_property *prop =
+		drm_property_create_range(dev, 0, "SHARPNESS_STRENGTH", 0, 255);
+
+	if (!prop)
+		return -ENOMEM;
+
+	crtc->sharpness_strength_property = prop;
+	drm_object_attach_property(&crtc->base, prop, 0);
+
+	return 0;
+}
+EXPORT_SYMBOL(drm_crtc_create_sharpness_strength_property);
+
 /**
  * drm_crtc_in_clone_mode - check if the given CRTC state is in clone mode
  *
diff --git a/include/drm/drm_crtc.h b/include/drm/drm_crtc.h
index 2d2a0bd526cf..66278ffeebd6 100644
--- a/include/drm/drm_crtc.h
+++ b/include/drm/drm_crtc.h
@@ -317,6 +317,17 @@ struct drm_crtc_state {
 	 */
 	enum drm_scaling_filter scaling_filter;
 
+	/**
+	 * @sharpness_strength:
+	 *
+	 * Used by the user to set the sharpness intensity.
+	 * The value ranges from 0-255.
+	 * Default value is 0 which disable the sharpness feature.
+	 * Any value greater than 0 enables sharpening with the
+	 * specified strength.
+	 */
+	u8 sharpness_strength;
+
 	/**
 	 * @event:
 	 *
@@ -1088,6 +1099,12 @@ struct drm_crtc {
 	 */
 	struct drm_property *scaling_filter_property;
 
+	/**
+	 * @sharpness_strength_property: property to apply
+	 * the intensity of the sharpness requested.
+	 */
+	struct drm_property *sharpness_strength_property;
+
 	/**
 	 * @state:
 	 *
@@ -1324,4 +1341,5 @@ static inline struct drm_crtc *drm_crtc_find(struct drm_device *dev,
 int drm_crtc_create_scaling_filter_property(struct drm_crtc *crtc,
 					    unsigned int supported_filters);
 bool drm_crtc_in_clone_mode(struct drm_crtc_state *crtc_state);
+int drm_crtc_create_sharpness_strength_property(struct drm_crtc *crtc);
 #endif /* __DRM_CRTC_H__ */
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 36+ messages in thread

* [PATCH 02/10] drm/i915/display: Introduce HAS_CASF for sharpness support
  2025-10-01  6:34 [PATCH 00/10] Introduce drm sharpness property Nemesa Garg
  2025-10-01  6:34 ` [PATCH 01/10] drm/drm_crtc: Introduce sharpness strength property Nemesa Garg
@ 2025-10-01  6:34 ` Nemesa Garg
  2025-10-01  6:34 ` [PATCH 03/10] drm/i915/display: Add CASF strength and winsize Nemesa Garg
                   ` (13 subsequent siblings)
  15 siblings, 0 replies; 36+ messages in thread
From: Nemesa Garg @ 2025-10-01  6:34 UTC (permalink / raw)
  To: intel-gfx, intel-xe, dri-devel; +Cc: Nemesa Garg, Ankit Nautiyal

Add HAS_CASF macro to check whether platform supports
the content adaptive sharpness capability or not.

v2: Update commit message[Ankit]
v3: Remove \n from middle[Jani]
v4: Remove the logging part

Signed-off-by: Nemesa Garg <nemesa.garg@intel.com>
Reviewed-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
---
 drivers/gpu/drm/i915/display/intel_display_device.h | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/gpu/drm/i915/display/intel_display_device.h b/drivers/gpu/drm/i915/display/intel_display_device.h
index 0e062753cf9b..e91907b34d43 100644
--- a/drivers/gpu/drm/i915/display/intel_display_device.h
+++ b/drivers/gpu/drm/i915/display/intel_display_device.h
@@ -146,6 +146,7 @@ struct intel_display_platforms {
 #define HAS_ASYNC_FLIPS(__display)	(DISPLAY_VER(__display) >= 5)
 #define HAS_AS_SDP(__display)		(DISPLAY_VER(__display) >= 13)
 #define HAS_BIGJOINER(__display)	(DISPLAY_VER(__display) >= 11 && HAS_DSC(__display))
+#define HAS_CASF(__display)		(DISPLAY_VER(__display) >= 20)
 #define HAS_CDCLK_CRAWL(__display)	(DISPLAY_INFO(__display)->has_cdclk_crawl)
 #define HAS_CDCLK_SQUASH(__display)	(DISPLAY_INFO(__display)->has_cdclk_squash)
 #define HAS_CMRR(__display)		(DISPLAY_VER(__display) >= 20)
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 36+ messages in thread

* [PATCH 03/10] drm/i915/display: Add CASF strength and winsize
  2025-10-01  6:34 [PATCH 00/10] Introduce drm sharpness property Nemesa Garg
  2025-10-01  6:34 ` [PATCH 01/10] drm/drm_crtc: Introduce sharpness strength property Nemesa Garg
  2025-10-01  6:34 ` [PATCH 02/10] drm/i915/display: Introduce HAS_CASF for sharpness support Nemesa Garg
@ 2025-10-01  6:34 ` Nemesa Garg
  2025-10-09 10:51   ` Nautiyal, Ankit K
  2025-10-01  6:34 ` [PATCH 04/10] drm/i915/display: Add filter lut values Nemesa Garg
                   ` (12 subsequent siblings)
  15 siblings, 1 reply; 36+ messages in thread
From: Nemesa Garg @ 2025-10-01  6:34 UTC (permalink / raw)
  To: intel-gfx, intel-xe, dri-devel; +Cc: Nemesa Garg

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain; charset=y, Size: 10724 bytes --]

Add register definitions for sharpness strength and
filter window size used by CASF. Provide functions to
read and write these fields.

The sharpness strength value is determined by user input,
while the winsize is based on the resolution. The casf_enable
flag should be set if the platform supports sharpness adjustments
and the user API strength is not zero. Once sharpness is
enabled, update the strength bit of the register whenever
the user changes the strength value, as the enable bit and
winsize bit remain constant.

Introduce helper to enable, disable and update strength.
Add relavant strength and winsize in both enable and disable.

v2: Introduce get_config for casf[Ankit]
v3: Replace 0 with FILTER_STRENGTH_MASK[Ankit]
v4: After updating strength add win_sz register
v5: Replace u16 with u32 for total_pixel
v6: Add casf logging
v7: Add helper for enable and disable casf

Signed-off-by: Nemesa Garg <nemesa.garg@intel.com>
---
 drivers/gpu/drm/i915/Makefile                 |   1 +
 drivers/gpu/drm/i915/display/intel_casf.c     | 131 ++++++++++++++++++
 drivers/gpu/drm/i915/display/intel_casf.h     |  19 +++
 .../gpu/drm/i915/display/intel_casf_regs.h    |  22 +++
 .../drm/i915/display/intel_crtc_state_dump.c  |   5 +
 .../drm/i915/display/intel_display_types.h    |   7 +
 drivers/gpu/drm/i915/display/skl_scaler.c     |   1 +
 drivers/gpu/drm/xe/Makefile                   |   1 +
 8 files changed, 187 insertions(+)
 create mode 100644 drivers/gpu/drm/i915/display/intel_casf.c
 create mode 100644 drivers/gpu/drm/i915/display/intel_casf.h
 create mode 100644 drivers/gpu/drm/i915/display/intel_casf_regs.h

diff --git a/drivers/gpu/drm/i915/Makefile b/drivers/gpu/drm/i915/Makefile
index 78a45a6681df..2aeb1da455d7 100644
--- a/drivers/gpu/drm/i915/Makefile
+++ b/drivers/gpu/drm/i915/Makefile
@@ -228,6 +228,7 @@ i915-y += \
 	display/intel_bios.o \
 	display/intel_bo.o \
 	display/intel_bw.o \
+	display/intel_casf.o \
 	display/intel_cdclk.o \
 	display/intel_cmtg.o \
 	display/intel_color.o \
diff --git a/drivers/gpu/drm/i915/display/intel_casf.c b/drivers/gpu/drm/i915/display/intel_casf.c
new file mode 100644
index 000000000000..ad2faed5c1b3
--- /dev/null
+++ b/drivers/gpu/drm/i915/display/intel_casf.c
@@ -0,0 +1,131 @@
+// SPDX-License-Identifier: MIT
+/*
+ * Copyright © 2025 Intel Corporation
+ *
+ */
+
+#include <drm/drm_print.h>
+
+#include "i915_reg.h"
+#include "intel_casf.h"
+#include "intel_casf_regs.h"
+#include "intel_de.h"
+#include "intel_display_regs.h"
+#include "intel_display_types.h"
+
+#define MAX_PIXELS_FOR_3_TAP_FILTER (1920 * 1080)
+#define MAX_PIXELS_FOR_5_TAP_FILTER (3840 * 2160)
+
+/**
+ * DOC: Content Adaptive Sharpness Filter (CASF)
+ *
+ * Starting from LNL the display engine supports an
+ * adaptive sharpening filter, enhancing the image
+ * quality. The display hardware utilizes the second
+ * pipe scaler for implementing CASF.
+ * If sharpness is being enabled then pipe scaling
+ * cannot be used.
+ * This filter operates on a region of pixels based
+ * on the tap size. Coefficients are used to generate
+ * an alpha value which blends the sharpened image to
+ * original image.
+ */
+
+void intel_casf_update_strength(struct intel_crtc_state *crtc_state)
+{
+	struct intel_display *display = to_intel_display(crtc_state);
+	struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
+	int win_size;
+
+	intel_de_rmw(display, SHARPNESS_CTL(crtc->pipe), FILTER_STRENGTH_MASK,
+		     FILTER_STRENGTH(crtc_state->hw.casf_params.strength));
+
+	win_size = intel_de_read(display, SKL_PS_WIN_SZ(crtc->pipe, 1));
+
+	intel_de_write_fw(display, SKL_PS_WIN_SZ(crtc->pipe, 1), win_size);
+}
+
+static void intel_casf_compute_win_size(struct intel_crtc_state *crtc_state)
+{
+	const struct drm_display_mode *mode = &crtc_state->hw.adjusted_mode;
+	u32 total_pixels = mode->hdisplay * mode->vdisplay;
+
+	if (total_pixels <= MAX_PIXELS_FOR_3_TAP_FILTER)
+		crtc_state->hw.casf_params.win_size = SHARPNESS_FILTER_SIZE_3X3;
+	else if (total_pixels <= MAX_PIXELS_FOR_5_TAP_FILTER)
+		crtc_state->hw.casf_params.win_size = SHARPNESS_FILTER_SIZE_5X5;
+	else
+		crtc_state->hw.casf_params.win_size = SHARPNESS_FILTER_SIZE_7X7;
+}
+
+int intel_casf_compute_config(struct intel_crtc_state *crtc_state)
+{
+	struct intel_display *display = to_intel_display(crtc_state);
+
+	if (!HAS_CASF(display))
+		return 0;
+
+	if (crtc_state->uapi.sharpness_strength == 0) {
+		crtc_state->hw.casf_params.casf_enable = false;
+		crtc_state->hw.casf_params.strength = 0;
+		return 0;
+	}
+
+	crtc_state->hw.casf_params.casf_enable = true;
+
+	/*
+	 * HW takes a value in form (1.0 + strength) in 4.4 fixed format.
+	 * Strength is from 0.0-14.9375 ie from 0-239.
+	 * User can give value from 0-255 but is clamped to 239.
+	 * Ex. User gives 85 which is 5.3125 and adding 1.0 gives 6.3125.
+	 * 6.3125 in 4.4 format is b01100101 which is equal to 101.
+	 * Also 85 + 16 = 101.
+	 */
+	crtc_state->hw.casf_params.strength =
+		min(crtc_state->uapi.sharpness_strength, 0xEF) + 0x10;
+
+	intel_casf_compute_win_size(crtc_state);
+
+	return 0;
+}
+
+void intel_casf_sharpness_get_config(struct intel_crtc_state *crtc_state)
+{
+	struct intel_display *display = to_intel_display(crtc_state);
+	struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
+	u32 sharp;
+
+	sharp = intel_de_read(display, SHARPNESS_CTL(crtc->pipe));
+	if (sharp & FILTER_EN) {
+		if (drm_WARN_ON(display->drm,
+				REG_FIELD_GET(FILTER_STRENGTH_MASK, sharp) < 16))
+			crtc_state->hw.casf_params.strength = 0;
+		else
+			crtc_state->hw.casf_params.strength =
+				REG_FIELD_GET(FILTER_STRENGTH_MASK, sharp);
+		crtc_state->hw.casf_params.casf_enable = true;
+		crtc_state->hw.casf_params.win_size =
+			REG_FIELD_GET(FILTER_SIZE_MASK, sharp);
+	}
+}
+
+void intel_casf_enable(struct intel_crtc_state *crtc_state)
+{
+	struct intel_display *display = to_intel_display(crtc_state);
+	struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
+	u32 sharpness_ctl;
+
+	sharpness_ctl = FILTER_EN | FILTER_STRENGTH(crtc_state->hw.casf_params.strength);
+
+	sharpness_ctl |= crtc_state->hw.casf_params.win_size;
+
+	intel_de_write(display, SHARPNESS_CTL(crtc->pipe), sharpness_ctl);
+}
+
+void intel_casf_disable(const struct intel_crtc_state *crtc_state)
+{
+	struct intel_display *display = to_intel_display(crtc_state);
+	struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
+
+	intel_de_write(display, SHARPNESS_CTL(crtc->pipe), 0);
+}
diff --git a/drivers/gpu/drm/i915/display/intel_casf.h b/drivers/gpu/drm/i915/display/intel_casf.h
new file mode 100644
index 000000000000..753871880279
--- /dev/null
+++ b/drivers/gpu/drm/i915/display/intel_casf.h
@@ -0,0 +1,19 @@
+/* SPDX-License-Identifier: MIT */
+/*
+ * Copyright © 2025 Intel Corporation
+ */
+
+#ifndef __INTEL_CASF_H__
+#define __INTEL_CASF_H__
+
+#include <linux/types.h>
+
+struct intel_crtc_state;
+
+int intel_casf_compute_config(struct intel_crtc_state *crtc_state);
+void intel_casf_update_strength(struct intel_crtc_state *new_crtc_state);
+void intel_casf_sharpness_get_config(struct intel_crtc_state *crtc_state);
+void intel_casf_enable(struct intel_crtc_state *crtc_state);
+void intel_casf_disable(const struct intel_crtc_state *crtc_state);
+
+#endif /* __INTEL_CASF_H__ */
diff --git a/drivers/gpu/drm/i915/display/intel_casf_regs.h b/drivers/gpu/drm/i915/display/intel_casf_regs.h
new file mode 100644
index 000000000000..bd763efe5c1b
--- /dev/null
+++ b/drivers/gpu/drm/i915/display/intel_casf_regs.h
@@ -0,0 +1,22 @@
+/* SPDX-License-Identifier: MIT */
+/*
+ * Copyright © 2025 Intel Corporation
+ */
+
+#ifndef __INTEL_CASF_REGS_H__
+#define __INTEL_CASF_REGS_H__
+
+#include "intel_display_reg_defs.h"
+
+#define _SHARPNESS_CTL_A		0x682B0
+#define _SHARPNESS_CTL_B		0x68AB0
+#define SHARPNESS_CTL(pipe)		_MMIO_PIPE(pipe, _SHARPNESS_CTL_A, _SHARPNESS_CTL_B)
+#define   FILTER_EN			REG_BIT(31)
+#define   FILTER_STRENGTH_MASK		REG_GENMASK(15, 8)
+#define   FILTER_STRENGTH(x)		REG_FIELD_PREP(FILTER_STRENGTH_MASK, (x))
+#define   FILTER_SIZE_MASK		REG_GENMASK(1, 0)
+#define   SHARPNESS_FILTER_SIZE_3X3	REG_FIELD_PREP(FILTER_SIZE_MASK, 0)
+#define   SHARPNESS_FILTER_SIZE_5X5	REG_FIELD_PREP(FILTER_SIZE_MASK, 1)
+#define   SHARPNESS_FILTER_SIZE_7X7	REG_FIELD_PREP(FILTER_SIZE_MASK, 2)
+
+#endif /* __INTEL_CASF_REGS__ */
diff --git a/drivers/gpu/drm/i915/display/intel_crtc_state_dump.c b/drivers/gpu/drm/i915/display/intel_crtc_state_dump.c
index a14bcda4446c..1e309e7e7947 100644
--- a/drivers/gpu/drm/i915/display/intel_crtc_state_dump.c
+++ b/drivers/gpu/drm/i915/display/intel_crtc_state_dump.c
@@ -374,6 +374,11 @@ void intel_crtc_state_dump(const struct intel_crtc_state *pipe_config,
 
 	intel_vdsc_state_dump(&p, 0, pipe_config);
 
+	drm_printf(&p, "sharpness strength: %d, sharpness tap size: %d, sharpness enable: %d\n",
+		   pipe_config->hw.casf_params.strength,
+		   pipe_config->hw.casf_params.win_size,
+		   pipe_config->hw.casf_params.casf_enable);
+
 dump_planes:
 	if (!state)
 		return;
diff --git a/drivers/gpu/drm/i915/display/intel_display_types.h b/drivers/gpu/drm/i915/display/intel_display_types.h
index 029c47743f8b..771026f788d8 100644
--- a/drivers/gpu/drm/i915/display/intel_display_types.h
+++ b/drivers/gpu/drm/i915/display/intel_display_types.h
@@ -946,6 +946,12 @@ struct intel_csc_matrix {
 	u16 postoff[3];
 };
 
+struct intel_casf {
+	u8 strength;
+	u8 win_size;
+	bool casf_enable;
+};
+
 struct intel_crtc_state {
 	/*
 	 * uapi (drm) state. This is the software state shown to userspace.
@@ -982,6 +988,7 @@ struct intel_crtc_state {
 		struct drm_property_blob *degamma_lut, *gamma_lut, *ctm;
 		struct drm_display_mode mode, pipe_mode, adjusted_mode;
 		enum drm_scaling_filter scaling_filter;
+		struct intel_casf casf_params;
 	} hw;
 
 	/* actual state of LUTs */
diff --git a/drivers/gpu/drm/i915/display/skl_scaler.c b/drivers/gpu/drm/i915/display/skl_scaler.c
index c6cccf170ff1..19aeb8d5b79c 100644
--- a/drivers/gpu/drm/i915/display/skl_scaler.c
+++ b/drivers/gpu/drm/i915/display/skl_scaler.c
@@ -6,6 +6,7 @@
 #include <drm/drm_print.h>
 
 #include "i915_utils.h"
+#include "intel_casf_regs.h"
 #include "intel_de.h"
 #include "intel_display_regs.h"
 #include "intel_display_trace.h"
diff --git a/drivers/gpu/drm/xe/Makefile b/drivers/gpu/drm/xe/Makefile
index 3c5d2388997d..457aff1cf095 100644
--- a/drivers/gpu/drm/xe/Makefile
+++ b/drivers/gpu/drm/xe/Makefile
@@ -233,6 +233,7 @@ xe-$(CONFIG_DRM_XE_DISPLAY) += \
 	i915-display/intel_backlight.o \
 	i915-display/intel_bios.o \
 	i915-display/intel_bw.o \
+	i915-display/intel_casf.o \
 	i915-display/intel_cdclk.o \
 	i915-display/intel_cmtg.o \
 	i915-display/intel_color.o \
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 36+ messages in thread

* [PATCH 04/10] drm/i915/display: Add filter lut values
  2025-10-01  6:34 [PATCH 00/10] Introduce drm sharpness property Nemesa Garg
                   ` (2 preceding siblings ...)
  2025-10-01  6:34 ` [PATCH 03/10] drm/i915/display: Add CASF strength and winsize Nemesa Garg
@ 2025-10-01  6:34 ` Nemesa Garg
  2025-10-09 10:51   ` Nautiyal, Ankit K
  2025-10-01  6:34 ` [PATCH 05/10] drm/i915/display: Compute the scaler coefficients Nemesa Garg
                   ` (11 subsequent siblings)
  15 siblings, 1 reply; 36+ messages in thread
From: Nemesa Garg @ 2025-10-01  6:34 UTC (permalink / raw)
  To: intel-gfx, intel-xe, dri-devel; +Cc: Nemesa Garg

Add the register bits related to filter lut values
and helper to load the casf filter lut.

These values are golden values and these value has
to be loaded one time while enabling the casf.

v2: update commit message[Ankit]
v3: Add intel_casf prefix to filter_load fn[Jani]
v4: Define the filter macros here

Signed-off-by: Nemesa Garg <nemesa.garg@intel.com>
---
 drivers/gpu/drm/i915/display/intel_casf.c     | 49 +++++++++++++++++++
 drivers/gpu/drm/i915/display/intel_casf.h     |  1 +
 .../gpu/drm/i915/display/intel_casf_regs.h    | 11 +++++
 3 files changed, 61 insertions(+)

diff --git a/drivers/gpu/drm/i915/display/intel_casf.c b/drivers/gpu/drm/i915/display/intel_casf.c
index ad2faed5c1b3..313ed6b10317 100644
--- a/drivers/gpu/drm/i915/display/intel_casf.c
+++ b/drivers/gpu/drm/i915/display/intel_casf.c
@@ -16,6 +16,13 @@
 #define MAX_PIXELS_FOR_3_TAP_FILTER (1920 * 1080)
 #define MAX_PIXELS_FOR_5_TAP_FILTER (3840 * 2160)
 
+#define FILTER_COEFF_0_125 125
+#define FILTER_COEFF_0_25 250
+#define FILTER_COEFF_0_5 500
+#define FILTER_COEFF_1_0 1000
+#define FILTER_COEFF_0_0 0
+#define SET_POSITIVE_SIGN(x) ((x) & (~SIGN))
+
 /**
  * DOC: Content Adaptive Sharpness Filter (CASF)
  *
@@ -31,6 +38,46 @@
  * original image.
  */
 
+/* Default LUT values to be loaded one time. */
+static const u16 sharpness_lut[] = {
+	4095, 2047, 1364, 1022, 816, 678, 579,
+	504, 444, 397, 357, 323, 293, 268, 244, 224,
+	204, 187, 170, 154, 139, 125, 111, 98, 85,
+	73, 60, 48, 36, 24, 12, 0
+};
+
+const u16 filtercoeff_1[] = {
+	FILTER_COEFF_0_0, FILTER_COEFF_0_0, FILTER_COEFF_0_5,
+	FILTER_COEFF_1_0, FILTER_COEFF_0_5, FILTER_COEFF_0_0,
+	FILTER_COEFF_0_0,
+};
+
+const u16 filtercoeff_2[] = {
+	FILTER_COEFF_0_0, FILTER_COEFF_0_25, FILTER_COEFF_0_5,
+	FILTER_COEFF_1_0, FILTER_COEFF_0_5, FILTER_COEFF_0_25,
+	FILTER_COEFF_0_0,
+};
+
+const u16 filtercoeff_3[] = {
+	FILTER_COEFF_0_125, FILTER_COEFF_0_25, FILTER_COEFF_0_5,
+	FILTER_COEFF_1_0, FILTER_COEFF_0_5, FILTER_COEFF_0_25,
+	FILTER_COEFF_0_125,
+};
+
+static void intel_casf_filter_lut_load(struct intel_crtc *crtc,
+				       const struct intel_crtc_state *crtc_state)
+{
+	struct intel_display *display = to_intel_display(crtc_state);
+	int i;
+
+	intel_de_write(display, SHRPLUT_INDEX(crtc->pipe),
+		       INDEX_AUTO_INCR | INDEX_VALUE(0));
+
+	for (i = 0; i < ARRAY_SIZE(sharpness_lut); i++)
+		intel_de_write(display, SHRPLUT_DATA(crtc->pipe),
+			       sharpness_lut[i]);
+}
+
 void intel_casf_update_strength(struct intel_crtc_state *crtc_state)
 {
 	struct intel_display *display = to_intel_display(crtc_state);
@@ -115,6 +162,8 @@ void intel_casf_enable(struct intel_crtc_state *crtc_state)
 	struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
 	u32 sharpness_ctl;
 
+	intel_casf_filter_lut_load(crtc, crtc_state);
+
 	sharpness_ctl = FILTER_EN | FILTER_STRENGTH(crtc_state->hw.casf_params.strength);
 
 	sharpness_ctl |= crtc_state->hw.casf_params.win_size;
diff --git a/drivers/gpu/drm/i915/display/intel_casf.h b/drivers/gpu/drm/i915/display/intel_casf.h
index 753871880279..e8432b4bc52b 100644
--- a/drivers/gpu/drm/i915/display/intel_casf.h
+++ b/drivers/gpu/drm/i915/display/intel_casf.h
@@ -9,6 +9,7 @@
 #include <linux/types.h>
 
 struct intel_crtc_state;
+struct intel_crtc;
 
 int intel_casf_compute_config(struct intel_crtc_state *crtc_state);
 void intel_casf_update_strength(struct intel_crtc_state *new_crtc_state);
diff --git a/drivers/gpu/drm/i915/display/intel_casf_regs.h b/drivers/gpu/drm/i915/display/intel_casf_regs.h
index bd763efe5c1b..87803cca510f 100644
--- a/drivers/gpu/drm/i915/display/intel_casf_regs.h
+++ b/drivers/gpu/drm/i915/display/intel_casf_regs.h
@@ -19,4 +19,15 @@
 #define   SHARPNESS_FILTER_SIZE_5X5	REG_FIELD_PREP(FILTER_SIZE_MASK, 1)
 #define   SHARPNESS_FILTER_SIZE_7X7	REG_FIELD_PREP(FILTER_SIZE_MASK, 2)
 
+#define _SHRPLUT_DATA_A			0x682B8
+#define _SHRPLUT_DATA_B			0x68AB8
+#define SHRPLUT_DATA(pipe)		_MMIO_PIPE(pipe, _SHRPLUT_DATA_A, _SHRPLUT_DATA_B)
+
+#define _SHRPLUT_INDEX_A		0x682B4
+#define _SHRPLUT_INDEX_B		0x68AB4
+#define SHRPLUT_INDEX(pipe)		_MMIO_PIPE(pipe, _SHRPLUT_INDEX_A, _SHRPLUT_INDEX_B)
+#define   INDEX_AUTO_INCR		REG_BIT(10)
+#define   INDEX_VALUE_MASK		REG_GENMASK(4, 0)
+#define   INDEX_VALUE(x)		REG_FIELD_PREP(INDEX_VALUE_MASK, (x))
+
 #endif /* __INTEL_CASF_REGS__ */
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 36+ messages in thread

* [PATCH 05/10] drm/i915/display: Compute the scaler coefficients
  2025-10-01  6:34 [PATCH 00/10] Introduce drm sharpness property Nemesa Garg
                   ` (3 preceding siblings ...)
  2025-10-01  6:34 ` [PATCH 04/10] drm/i915/display: Add filter lut values Nemesa Garg
@ 2025-10-01  6:34 ` Nemesa Garg
  2025-10-09 10:52   ` Nautiyal, Ankit K
  2025-10-01  6:34 ` [PATCH 06/10] drm/i915/display: Add and compute scaler parameter Nemesa Garg
                   ` (10 subsequent siblings)
  15 siblings, 1 reply; 36+ messages in thread
From: Nemesa Garg @ 2025-10-01  6:34 UTC (permalink / raw)
  To: intel-gfx, intel-xe, dri-devel; +Cc: Nemesa Garg

The sharpness property requires the use of one of the scaler
so need to set the sharpness scaler coefficient values.
These values are based on experiments and vary for different
tap value/win size. These values are normalized by taking the
sum of all values and then dividing each value with a sum.

Add helper to compute and set the scaler coefficients.

v2: Fix ifndef header naming issue reported by kernel test robot
v3: Rename file name[Arun]
    Replace array size number with macro[Arun]
v4: Correct the register format[Jani]
    Add brief comment and expalin about file[Jani]
    Remove coefficient value from crtc_state[Jani]
v5: Fix build issue
v6: Add new function for writing coefficients[Ankit]
v7: Add cooments and add a scaler id check [Ankit]
v8: Remove casf_enable from here[Ankit]
v9: Removed REG and use shift operator[Jani]
v10: Remove filter macros
v11: Add casf_write_coeff funtion to casf_enable

Signed-off-by: Nemesa Garg <nemesa.garg@intel.com>
---
 drivers/gpu/drm/i915/display/intel_casf.c     | 99 +++++++++++++++++++
 drivers/gpu/drm/i915/display/intel_casf.h     |  1 +
 .../drm/i915/display/intel_display_types.h    |  8 ++
 3 files changed, 108 insertions(+)

diff --git a/drivers/gpu/drm/i915/display/intel_casf.c b/drivers/gpu/drm/i915/display/intel_casf.c
index 313ed6b10317..91f2362405b9 100644
--- a/drivers/gpu/drm/i915/display/intel_casf.c
+++ b/drivers/gpu/drm/i915/display/intel_casf.c
@@ -133,6 +133,8 @@ int intel_casf_compute_config(struct intel_crtc_state *crtc_state)
 
 	intel_casf_compute_win_size(crtc_state);
 
+	intel_casf_scaler_compute_config(crtc_state);
+
 	return 0;
 }
 
@@ -156,6 +158,101 @@ void intel_casf_sharpness_get_config(struct intel_crtc_state *crtc_state)
 	}
 }
 
+static int casf_coeff_tap(int i)
+{
+	return i % SCALER_FILTER_NUM_TAPS;
+}
+
+static u32 casf_coeff(struct intel_crtc_state *crtc_state, int t)
+{
+	struct scaler_filter_coeff value;
+	u32 coeff;
+
+	value = crtc_state->hw.casf_params.coeff[t];
+	value.sign = 0;
+
+	coeff = value.sign << 15 | value.exp << 12 | value.mantissa << 3;
+	return coeff;
+}
+
+/*
+ * 17 phase of 7 taps requires 119 coefficients in 60 dwords per set.
+ * To enable casf:  program scaler coefficients with the coeffients
+ * that are calculated and stored in hw.casf_params.coeff as per
+ * SCALER_COEFFICIENT_FORMAT
+ */
+static void intel_casf_write_coeff(struct intel_crtc_state *crtc_state)
+{
+	struct intel_display *display = to_intel_display(crtc_state);
+	struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
+	int id = crtc_state->scaler_state.scaler_id;
+	int i;
+
+	if (id != 1) {
+		drm_WARN(display->drm, 0, "Second scaler not enabled\n");
+		return;
+	}
+
+	intel_de_write_fw(display, GLK_PS_COEF_INDEX_SET(crtc->pipe, id, 0),
+			  PS_COEF_INDEX_AUTO_INC);
+
+	for (i = 0; i < 17 * SCALER_FILTER_NUM_TAPS; i += 2) {
+		u32 tmp;
+		int t;
+
+		t = casf_coeff_tap(i);
+		tmp = casf_coeff(crtc_state, t);
+
+		t = casf_coeff_tap(i + 1);
+		tmp |= casf_coeff(crtc_state, t) << 16;
+
+		intel_de_write_fw(display, GLK_PS_COEF_DATA_SET(crtc->pipe, id, 0),
+				  tmp);
+	}
+}
+
+static void convert_sharpness_coef_binary(struct scaler_filter_coeff *coeff,
+					  u16 coefficient)
+{
+	if (coefficient < 25) {
+		coeff->mantissa = (coefficient * 2048) / 100;
+		coeff->exp = 3;
+	} else if (coefficient < 50) {
+		coeff->mantissa = (coefficient * 1024) / 100;
+		coeff->exp = 2;
+	} else if (coefficient < 100) {
+		coeff->mantissa = (coefficient * 512) / 100;
+		coeff->exp = 1;
+	} else {
+		coeff->mantissa = (coefficient * 256) / 100;
+		coeff->exp = 0;
+	}
+}
+
+void intel_casf_scaler_compute_config(struct intel_crtc_state *crtc_state)
+{
+	const u16 *filtercoeff;
+	u16 filter_coeff[SCALER_FILTER_NUM_TAPS];
+	u16 sumcoeff = 0;
+	int i;
+
+	if (crtc_state->hw.casf_params.win_size == 0)
+		filtercoeff = filtercoeff_1;
+	else if (crtc_state->hw.casf_params.win_size == 1)
+		filtercoeff = filtercoeff_2;
+	else
+		filtercoeff = filtercoeff_3;
+
+	for (i = 0; i < SCALER_FILTER_NUM_TAPS; i++)
+		sumcoeff += *(filtercoeff + i);
+
+	for (i = 0; i < SCALER_FILTER_NUM_TAPS; i++) {
+		filter_coeff[i] = (*(filtercoeff + i) * 100 / sumcoeff);
+		convert_sharpness_coef_binary(&crtc_state->hw.casf_params.coeff[i],
+					      filter_coeff[i]);
+	}
+}
+
 void intel_casf_enable(struct intel_crtc_state *crtc_state)
 {
 	struct intel_display *display = to_intel_display(crtc_state);
@@ -164,6 +261,8 @@ void intel_casf_enable(struct intel_crtc_state *crtc_state)
 
 	intel_casf_filter_lut_load(crtc, crtc_state);
 
+	intel_casf_write_coeff(crtc_state);
+
 	sharpness_ctl = FILTER_EN | FILTER_STRENGTH(crtc_state->hw.casf_params.strength);
 
 	sharpness_ctl |= crtc_state->hw.casf_params.win_size;
diff --git a/drivers/gpu/drm/i915/display/intel_casf.h b/drivers/gpu/drm/i915/display/intel_casf.h
index e8432b4bc52b..13e5003a23fc 100644
--- a/drivers/gpu/drm/i915/display/intel_casf.h
+++ b/drivers/gpu/drm/i915/display/intel_casf.h
@@ -16,5 +16,6 @@ void intel_casf_update_strength(struct intel_crtc_state *new_crtc_state);
 void intel_casf_sharpness_get_config(struct intel_crtc_state *crtc_state);
 void intel_casf_enable(struct intel_crtc_state *crtc_state);
 void intel_casf_disable(const struct intel_crtc_state *crtc_state);
+void intel_casf_scaler_compute_config(struct intel_crtc_state *crtc_state);
 
 #endif /* __INTEL_CASF_H__ */
diff --git a/drivers/gpu/drm/i915/display/intel_display_types.h b/drivers/gpu/drm/i915/display/intel_display_types.h
index 771026f788d8..0eae95add055 100644
--- a/drivers/gpu/drm/i915/display/intel_display_types.h
+++ b/drivers/gpu/drm/i915/display/intel_display_types.h
@@ -946,7 +946,15 @@ struct intel_csc_matrix {
 	u16 postoff[3];
 };
 
+struct scaler_filter_coeff {
+	u16 sign;
+	u16 exp;
+	u16 mantissa;
+};
+
 struct intel_casf {
+#define SCALER_FILTER_NUM_TAPS 7
+	struct scaler_filter_coeff coeff[SCALER_FILTER_NUM_TAPS];
 	u8 strength;
 	u8 win_size;
 	bool casf_enable;
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 36+ messages in thread

* [PATCH 06/10] drm/i915/display: Add and compute scaler parameter
  2025-10-01  6:34 [PATCH 00/10] Introduce drm sharpness property Nemesa Garg
                   ` (4 preceding siblings ...)
  2025-10-01  6:34 ` [PATCH 05/10] drm/i915/display: Compute the scaler coefficients Nemesa Garg
@ 2025-10-01  6:34 ` Nemesa Garg
  2025-10-01  6:34 ` [PATCH 07/10] drm/i915/display: Configure the second scaler Nemesa Garg
                   ` (9 subsequent siblings)
  15 siblings, 0 replies; 36+ messages in thread
From: Nemesa Garg @ 2025-10-01  6:34 UTC (permalink / raw)
  To: intel-gfx, intel-xe, dri-devel; +Cc: Nemesa Garg, Ankit Nautiyal

Compute the values for second scaler for sharpness.
Fill the register bits corresponding to the scaler.

v1: Rename the title of patch [Ankit]
v2: Remove setup_casf from here[Ankit]
v3: Add skl_scaler_setup_casf in casf_enable

Signed-off-by: Nemesa Garg <nemesa.garg@intel.com>
Reviewed-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
---
 drivers/gpu/drm/i915/display/intel_casf.c |  6 +++
 drivers/gpu/drm/i915/display/skl_scaler.c | 46 +++++++++++++++++++++++
 drivers/gpu/drm/i915/display/skl_scaler.h |  2 +
 3 files changed, 54 insertions(+)

diff --git a/drivers/gpu/drm/i915/display/intel_casf.c b/drivers/gpu/drm/i915/display/intel_casf.c
index 91f2362405b9..8c84a1759919 100644
--- a/drivers/gpu/drm/i915/display/intel_casf.c
+++ b/drivers/gpu/drm/i915/display/intel_casf.c
@@ -12,6 +12,7 @@
 #include "intel_de.h"
 #include "intel_display_regs.h"
 #include "intel_display_types.h"
+#include "skl_scaler.h"
 
 #define MAX_PIXELS_FOR_3_TAP_FILTER (1920 * 1080)
 #define MAX_PIXELS_FOR_5_TAP_FILTER (3840 * 2160)
@@ -268,6 +269,8 @@ void intel_casf_enable(struct intel_crtc_state *crtc_state)
 	sharpness_ctl |= crtc_state->hw.casf_params.win_size;
 
 	intel_de_write(display, SHARPNESS_CTL(crtc->pipe), sharpness_ctl);
+
+	skl_scaler_setup_casf(crtc_state);
 }
 
 void intel_casf_disable(const struct intel_crtc_state *crtc_state)
@@ -275,5 +278,8 @@ void intel_casf_disable(const struct intel_crtc_state *crtc_state)
 	struct intel_display *display = to_intel_display(crtc_state);
 	struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
 
+	intel_de_write(display, SKL_PS_CTRL(crtc->pipe, 1), 0);
+	intel_de_write(display, SKL_PS_WIN_POS(crtc->pipe, 1), 0);
 	intel_de_write(display, SHARPNESS_CTL(crtc->pipe), 0);
+	intel_de_write(display, SKL_PS_WIN_SZ(crtc->pipe, 1), 0);
 }
diff --git a/drivers/gpu/drm/i915/display/skl_scaler.c b/drivers/gpu/drm/i915/display/skl_scaler.c
index 19aeb8d5b79c..33ad1dd16bb2 100644
--- a/drivers/gpu/drm/i915/display/skl_scaler.c
+++ b/drivers/gpu/drm/i915/display/skl_scaler.c
@@ -739,6 +739,52 @@ static void skl_scaler_setup_filter(struct intel_display *display,
 	}
 }
 
+#define CASF_SCALER_FILTER_SELECT \
+	(PS_FILTER_PROGRAMMED | \
+	PS_Y_VERT_FILTER_SELECT(0) | \
+	PS_Y_HORZ_FILTER_SELECT(0) | \
+	PS_UV_VERT_FILTER_SELECT(0) | \
+	PS_UV_HORZ_FILTER_SELECT(0))
+
+void skl_scaler_setup_casf(struct intel_crtc_state *crtc_state)
+{
+	struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
+	struct intel_display *display = to_intel_display(crtc);
+	struct drm_display_mode *adjusted_mode =
+	&crtc_state->hw.adjusted_mode;
+	struct intel_crtc_scaler_state *scaler_state =
+		&crtc_state->scaler_state;
+	struct drm_rect src, dest;
+	int id, width, height;
+	int x = 0, y = 0;
+	enum pipe pipe = crtc->pipe;
+	u32 ps_ctrl;
+
+	width = adjusted_mode->crtc_hdisplay;
+	height = adjusted_mode->crtc_vdisplay;
+
+	drm_rect_init(&dest, x, y, width, height);
+
+	width = drm_rect_width(&dest);
+	height = drm_rect_height(&dest);
+	id = scaler_state->scaler_id;
+
+	drm_rect_init(&src, 0, 0,
+		      drm_rect_width(&crtc_state->pipe_src) << 16,
+		      drm_rect_height(&crtc_state->pipe_src) << 16);
+
+	trace_intel_pipe_scaler_update_arm(crtc, id, x, y, width, height);
+
+	ps_ctrl = PS_SCALER_EN | PS_BINDING_PIPE | scaler_state->scalers[id].mode |
+		  CASF_SCALER_FILTER_SELECT;
+
+	intel_de_write_fw(display, SKL_PS_CTRL(pipe, id), ps_ctrl);
+	intel_de_write_fw(display, SKL_PS_WIN_POS(pipe, id),
+			  PS_WIN_XPOS(x) | PS_WIN_YPOS(y));
+	intel_de_write_fw(display, SKL_PS_WIN_SZ(pipe, id),
+			  PS_WIN_XSIZE(width) | PS_WIN_YSIZE(height));
+}
+
 void skl_pfit_enable(const struct intel_crtc_state *crtc_state)
 {
 	struct intel_display *display = to_intel_display(crtc_state);
diff --git a/drivers/gpu/drm/i915/display/skl_scaler.h b/drivers/gpu/drm/i915/display/skl_scaler.h
index 12a19016c5f6..f2256984a97e 100644
--- a/drivers/gpu/drm/i915/display/skl_scaler.h
+++ b/drivers/gpu/drm/i915/display/skl_scaler.h
@@ -36,6 +36,8 @@ void skl_scaler_disable(const struct intel_crtc_state *old_crtc_state);
 
 void skl_scaler_get_config(struct intel_crtc_state *crtc_state);
 
+void skl_scaler_setup_casf(struct intel_crtc_state *crtc_state);
+
 enum drm_mode_status
 skl_scaler_mode_valid(struct intel_display *display,
 		      const struct drm_display_mode *mode,
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 36+ messages in thread

* [PATCH 07/10] drm/i915/display: Configure the second scaler
  2025-10-01  6:34 [PATCH 00/10] Introduce drm sharpness property Nemesa Garg
                   ` (5 preceding siblings ...)
  2025-10-01  6:34 ` [PATCH 06/10] drm/i915/display: Add and compute scaler parameter Nemesa Garg
@ 2025-10-01  6:34 ` Nemesa Garg
  2025-10-01  6:34 ` [PATCH 08/10] drm/i915/display: Set and get the casf config Nemesa Garg
                   ` (8 subsequent siblings)
  15 siblings, 0 replies; 36+ messages in thread
From: Nemesa Garg @ 2025-10-01  6:34 UTC (permalink / raw)
  To: intel-gfx, intel-xe, dri-devel; +Cc: Nemesa Garg, Ankit Nautiyal

Both sharpness and panel fitter use pipe scaler,
but only one can be enabled at a time. Furthermore
sharpness uses second scaler. So for CASF, check if
second scaler is available and make sure that only
either of panel fitter or sharpness is enabled at
a time.

v2: Add the panel fitting check before enabling sharpness
v3: Reframe commit message[Arun]
v4: Replace string based comparison with plane_state[Jani]
v5: Rebase
v6: Fix build issue
v7: Remove scaler id from verify_crtc_state[Ankit]
v8: Change the patch title. Add code comment.
    Move the config part in patch#6. [Ankit]
v9: Refactor the patch[Ankit]
v10: Modify the header of patch[Ankit]

Signed-off-by: Nemesa Garg <nemesa.garg@intel.com>
Reviewed-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
---
 drivers/gpu/drm/i915/display/intel_casf.c    |  8 +++++++
 drivers/gpu/drm/i915/display/intel_casf.h    |  1 +
 drivers/gpu/drm/i915/display/intel_display.c |  4 +++-
 drivers/gpu/drm/i915/display/skl_scaler.c    | 25 +++++++++++++++-----
 4 files changed, 31 insertions(+), 7 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_casf.c b/drivers/gpu/drm/i915/display/intel_casf.c
index 8c84a1759919..026e5fadd63c 100644
--- a/drivers/gpu/drm/i915/display/intel_casf.c
+++ b/drivers/gpu/drm/i915/display/intel_casf.c
@@ -159,6 +159,14 @@ void intel_casf_sharpness_get_config(struct intel_crtc_state *crtc_state)
 	}
 }
 
+bool intel_casf_needs_scaler(const struct intel_crtc_state *crtc_state)
+{
+	if (crtc_state->hw.casf_params.casf_enable)
+		return true;
+
+	return false;
+}
+
 static int casf_coeff_tap(int i)
 {
 	return i % SCALER_FILTER_NUM_TAPS;
diff --git a/drivers/gpu/drm/i915/display/intel_casf.h b/drivers/gpu/drm/i915/display/intel_casf.h
index 13e5003a23fc..595c2b35e08d 100644
--- a/drivers/gpu/drm/i915/display/intel_casf.h
+++ b/drivers/gpu/drm/i915/display/intel_casf.h
@@ -17,5 +17,6 @@ void intel_casf_sharpness_get_config(struct intel_crtc_state *crtc_state);
 void intel_casf_enable(struct intel_crtc_state *crtc_state);
 void intel_casf_disable(const struct intel_crtc_state *crtc_state);
 void intel_casf_scaler_compute_config(struct intel_crtc_state *crtc_state);
+bool intel_casf_needs_scaler(const struct intel_crtc_state *crtc_state);
 
 #endif /* __INTEL_CASF_H__ */
diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
index b57efd870774..fce2830f1867 100644
--- a/drivers/gpu/drm/i915/display/intel_display.c
+++ b/drivers/gpu/drm/i915/display/intel_display.c
@@ -60,6 +60,7 @@
 #include "intel_audio.h"
 #include "intel_bo.h"
 #include "intel_bw.h"
+#include "intel_casf.h"
 #include "intel_cdclk.h"
 #include "intel_clock_gating.h"
 #include "intel_color.h"
@@ -4222,7 +4223,8 @@ static int intel_crtc_atomic_check(struct intel_atomic_state *state,
 
 	if (DISPLAY_VER(display) >= 9) {
 		if (intel_crtc_needs_modeset(crtc_state) ||
-		    intel_crtc_needs_fastset(crtc_state)) {
+		    intel_crtc_needs_fastset(crtc_state) ||
+		    intel_casf_needs_scaler(crtc_state)) {
 			ret = skl_update_scaler_crtc(crtc_state);
 			if (ret)
 				return ret;
diff --git a/drivers/gpu/drm/i915/display/skl_scaler.c b/drivers/gpu/drm/i915/display/skl_scaler.c
index 33ad1dd16bb2..9cab3f9dc147 100644
--- a/drivers/gpu/drm/i915/display/skl_scaler.c
+++ b/drivers/gpu/drm/i915/display/skl_scaler.c
@@ -6,6 +6,7 @@
 #include <drm/drm_print.h>
 
 #include "i915_utils.h"
+#include "intel_casf.h"
 #include "intel_casf_regs.h"
 #include "intel_de.h"
 #include "intel_display_regs.h"
@@ -283,7 +284,8 @@ int skl_update_scaler_crtc(struct intel_crtc_state *crtc_state)
 				 drm_rect_width(&crtc_state->pipe_src),
 				 drm_rect_height(&crtc_state->pipe_src),
 				 width, height, NULL, 0,
-				 crtc_state->pch_pfit.enabled);
+				 crtc_state->pch_pfit.enabled ||
+				 intel_casf_needs_scaler(crtc_state));
 }
 
 /**
@@ -322,7 +324,9 @@ int skl_update_scaler_plane(struct intel_crtc_state *crtc_state,
 }
 
 static int intel_allocate_scaler(struct intel_crtc_scaler_state *scaler_state,
-				 struct intel_crtc *crtc)
+				 struct intel_crtc *crtc,
+				 struct intel_plane_state *plane_state,
+				 bool casf_scaler)
 {
 	int i;
 
@@ -330,6 +334,10 @@ static int intel_allocate_scaler(struct intel_crtc_scaler_state *scaler_state,
 		if (scaler_state->scalers[i].in_use)
 			continue;
 
+		/* CASF needs second scaler */
+		if (!plane_state && casf_scaler && i != 1)
+			continue;
+
 		scaler_state->scalers[i].in_use = true;
 
 		return i;
@@ -380,7 +388,7 @@ static int intel_atomic_setup_scaler(struct intel_crtc_state *crtc_state,
 				     int num_scalers_need, struct intel_crtc *crtc,
 				     const char *name, int idx,
 				     struct intel_plane_state *plane_state,
-				     int *scaler_id)
+				     int *scaler_id, bool casf_scaler)
 {
 	struct intel_display *display = to_intel_display(crtc);
 	struct intel_crtc_scaler_state *scaler_state = &crtc_state->scaler_state;
@@ -389,7 +397,7 @@ static int intel_atomic_setup_scaler(struct intel_crtc_state *crtc_state,
 	int vscale = 0;
 
 	if (*scaler_id < 0)
-		*scaler_id = intel_allocate_scaler(scaler_state, crtc);
+		*scaler_id = intel_allocate_scaler(scaler_state, crtc, plane_state, casf_scaler);
 
 	if (drm_WARN(display->drm, *scaler_id < 0,
 		     "Cannot find scaler for %s:%d\n", name, idx))
@@ -521,10 +529,14 @@ static int setup_crtc_scaler(struct intel_atomic_state *state,
 	struct intel_crtc_scaler_state *scaler_state =
 		&crtc_state->scaler_state;
 
+	if (intel_casf_needs_scaler(crtc_state) && crtc_state->pch_pfit.enabled)
+		return -EINVAL;
+
 	return intel_atomic_setup_scaler(crtc_state,
 					 hweight32(scaler_state->scaler_users),
 					 crtc, "CRTC", crtc->base.base.id,
-					 NULL, &scaler_state->scaler_id);
+					 NULL, &scaler_state->scaler_id,
+					 intel_casf_needs_scaler(crtc_state));
 }
 
 static int setup_plane_scaler(struct intel_atomic_state *state,
@@ -559,7 +571,8 @@ static int setup_plane_scaler(struct intel_atomic_state *state,
 	return intel_atomic_setup_scaler(crtc_state,
 					 hweight32(scaler_state->scaler_users),
 					 crtc, "PLANE", plane->base.base.id,
-					 plane_state, &plane_state->scaler_id);
+					 plane_state, &plane_state->scaler_id,
+					 false);
 }
 
 /**
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 36+ messages in thread

* [PATCH 08/10] drm/i915/display: Set and get the casf config
  2025-10-01  6:34 [PATCH 00/10] Introduce drm sharpness property Nemesa Garg
                   ` (6 preceding siblings ...)
  2025-10-01  6:34 ` [PATCH 07/10] drm/i915/display: Configure the second scaler Nemesa Garg
@ 2025-10-01  6:34 ` Nemesa Garg
  2025-10-01  6:34 ` [PATCH 09/10] drm/i915/display: Enable/disable casf Nemesa Garg
                   ` (7 subsequent siblings)
  15 siblings, 0 replies; 36+ messages in thread
From: Nemesa Garg @ 2025-10-01  6:34 UTC (permalink / raw)
  To: intel-gfx, intel-xe, dri-devel; +Cc: Nemesa Garg, Ankit Nautiyal

Set the configuration for CASF and capture it
in crtc_state and get the configuration by
reading back. Add the support to compare the
software and hardware state of CASF.

v2: Update subject[Ankit]
v3: Add the state compare[Ankit]

Signed-off-by: Nemesa Garg <nemesa.garg@intel.com>
Reviewed-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
---
 drivers/gpu/drm/i915/display/intel_display.c |  7 +++++++
 drivers/gpu/drm/i915/display/skl_scaler.c    | 19 +++++++++++++------
 2 files changed, 20 insertions(+), 6 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
index fce2830f1867..5924a8f5b1c7 100644
--- a/drivers/gpu/drm/i915/display/intel_display.c
+++ b/drivers/gpu/drm/i915/display/intel_display.c
@@ -4221,6 +4221,10 @@ static int intel_crtc_atomic_check(struct intel_atomic_state *state,
 		return ret;
 	}
 
+	ret = intel_casf_compute_config(crtc_state);
+	if (ret)
+		return ret;
+
 	if (DISPLAY_VER(display) >= 9) {
 		if (intel_crtc_needs_modeset(crtc_state) ||
 		    intel_crtc_needs_fastset(crtc_state) ||
@@ -5283,6 +5287,9 @@ intel_pipe_config_compare(const struct intel_crtc_state *current_config,
 
 		PIPE_CONF_CHECK_I(scaler_state.scaler_id);
 		PIPE_CONF_CHECK_I(pixel_rate);
+		PIPE_CONF_CHECK_BOOL(hw.casf_params.casf_enable);
+		PIPE_CONF_CHECK_I(hw.casf_params.win_size);
+		PIPE_CONF_CHECK_I(hw.casf_params.strength);
 
 		PIPE_CONF_CHECK_X(gamma_mode);
 		if (display->platform.cherryview)
diff --git a/drivers/gpu/drm/i915/display/skl_scaler.c b/drivers/gpu/drm/i915/display/skl_scaler.c
index 9cab3f9dc147..956b1f6cbaa5 100644
--- a/drivers/gpu/drm/i915/display/skl_scaler.c
+++ b/drivers/gpu/drm/i915/display/skl_scaler.c
@@ -981,16 +981,23 @@ void skl_scaler_get_config(struct intel_crtc_state *crtc_state)
 			continue;
 
 		id = i;
-		crtc_state->pch_pfit.enabled = true;
+
+		/* Read CASF regs for second scaler */
+		if (HAS_CASF(display) && id == 1)
+			intel_casf_sharpness_get_config(crtc_state);
+
+		if (!crtc_state->hw.casf_params.casf_enable)
+			crtc_state->pch_pfit.enabled = true;
 
 		pos = intel_de_read(display, SKL_PS_WIN_POS(crtc->pipe, i));
 		size = intel_de_read(display, SKL_PS_WIN_SZ(crtc->pipe, i));
 
-		drm_rect_init(&crtc_state->pch_pfit.dst,
-			      REG_FIELD_GET(PS_WIN_XPOS_MASK, pos),
-			      REG_FIELD_GET(PS_WIN_YPOS_MASK, pos),
-			      REG_FIELD_GET(PS_WIN_XSIZE_MASK, size),
-			      REG_FIELD_GET(PS_WIN_YSIZE_MASK, size));
+		if (!crtc_state->hw.casf_params.casf_enable)
+			drm_rect_init(&crtc_state->pch_pfit.dst,
+				      REG_FIELD_GET(PS_WIN_XPOS_MASK, pos),
+				      REG_FIELD_GET(PS_WIN_YPOS_MASK, pos),
+				      REG_FIELD_GET(PS_WIN_XSIZE_MASK, size),
+				      REG_FIELD_GET(PS_WIN_YSIZE_MASK, size));
 
 		scaler_state->scalers[i].in_use = true;
 		break;
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 36+ messages in thread

* [PATCH 09/10] drm/i915/display: Enable/disable casf
  2025-10-01  6:34 [PATCH 00/10] Introduce drm sharpness property Nemesa Garg
                   ` (7 preceding siblings ...)
  2025-10-01  6:34 ` [PATCH 08/10] drm/i915/display: Set and get the casf config Nemesa Garg
@ 2025-10-01  6:34 ` Nemesa Garg
  2025-10-01  6:35 ` [PATCH 10/10] drm/i915/display: Expose sharpness strength property Nemesa Garg
                   ` (6 subsequent siblings)
  15 siblings, 0 replies; 36+ messages in thread
From: Nemesa Garg @ 2025-10-01  6:34 UTC (permalink / raw)
  To: intel-gfx, intel-xe, dri-devel; +Cc: Nemesa Garg, Ankit Nautiyal

Call intel_casf_enable and intel_casf_disable
in atomic commit path to enable and disable casf.
Call intel_casf_update_strength to only update
the desired strength value.

v2: Introduce casf_enable here.[Ankit]
v3: Use is_disabling in casf_disabling.[Ankit]
v4: Swap old_state and new_state param.[Ankit]
v5: In disable fn move win_sz after sharpness_ctl.
v6: Rebase and update commit message.

Signed-off-by: Nemesa Garg <nemesa.garg@intel.com>
Reviewed-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
---
 drivers/gpu/drm/i915/display/intel_display.c | 26 ++++++++++++++++++++
 1 file changed, 26 insertions(+)

diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
index 5924a8f5b1c7..7c8a3ef8acd7 100644
--- a/drivers/gpu/drm/i915/display/intel_display.c
+++ b/drivers/gpu/drm/i915/display/intel_display.c
@@ -980,6 +980,24 @@ static bool audio_disabling(const struct intel_crtc_state *old_crtc_state,
 		 memcmp(old_crtc_state->eld, new_crtc_state->eld, MAX_ELD_BYTES) != 0);
 }
 
+static bool intel_casf_enabling(const struct intel_crtc_state *new_crtc_state,
+				const struct intel_crtc_state *old_crtc_state)
+{
+	if (!new_crtc_state->hw.active)
+		return false;
+
+	return is_enabling(hw.casf_params.casf_enable, old_crtc_state, new_crtc_state);
+}
+
+static bool intel_casf_disabling(const struct intel_crtc_state *old_crtc_state,
+				 const struct intel_crtc_state *new_crtc_state)
+{
+	if (!new_crtc_state->hw.active)
+		return false;
+
+	return is_disabling(hw.casf_params.casf_enable, old_crtc_state, new_crtc_state);
+}
+
 #undef is_disabling
 #undef is_enabling
 
@@ -1135,6 +1153,9 @@ static void intel_pre_plane_update(struct intel_atomic_state *state,
 	if (audio_disabling(old_crtc_state, new_crtc_state))
 		intel_encoders_audio_disable(state, crtc);
 
+	if (intel_casf_disabling(old_crtc_state, new_crtc_state))
+		intel_casf_disable(new_crtc_state);
+
 	intel_drrs_deactivate(old_crtc_state);
 
 	if (hsw_ips_pre_update(state, crtc))
@@ -6712,6 +6733,11 @@ static void intel_pre_update_crtc(struct intel_atomic_state *state,
 			intel_vrr_set_transcoder_timings(new_crtc_state);
 	}
 
+	if (intel_casf_enabling(new_crtc_state, old_crtc_state))
+		intel_casf_enable(new_crtc_state);
+	else if (new_crtc_state->hw.casf_params.strength != old_crtc_state->hw.casf_params.strength)
+		intel_casf_update_strength(new_crtc_state);
+
 	intel_fbc_update(state, crtc);
 
 	drm_WARN_ON(display->drm, !intel_display_power_is_enabled(display, POWER_DOMAIN_DC_OFF));
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 36+ messages in thread

* [PATCH 10/10] drm/i915/display: Expose sharpness strength property
  2025-10-01  6:34 [PATCH 00/10] Introduce drm sharpness property Nemesa Garg
                   ` (8 preceding siblings ...)
  2025-10-01  6:34 ` [PATCH 09/10] drm/i915/display: Enable/disable casf Nemesa Garg
@ 2025-10-01  6:35 ` Nemesa Garg
  2025-10-01  7:30 ` ✗ CI.checkpatch: warning for Introduce drm sharpness property Patchwork
                   ` (5 subsequent siblings)
  15 siblings, 0 replies; 36+ messages in thread
From: Nemesa Garg @ 2025-10-01  6:35 UTC (permalink / raw)
  To: intel-gfx, intel-xe, dri-devel; +Cc: Nemesa Garg, Ankit Nautiyal

Expose the drm crtc sharpness strength property which will enable
or disable the sharpness/casf based on user input. With this user
can set/update the strength of the sharpness or casf filter.

v2: Update subject[Ankit]

Signed-off-by: Nemesa Garg <nemesa.garg@intel.com>
Reviewed-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
---
 drivers/gpu/drm/i915/display/intel_crtc.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/drivers/gpu/drm/i915/display/intel_crtc.c b/drivers/gpu/drm/i915/display/intel_crtc.c
index a187db6df2d3..4102087aee62 100644
--- a/drivers/gpu/drm/i915/display/intel_crtc.c
+++ b/drivers/gpu/drm/i915/display/intel_crtc.c
@@ -390,6 +390,9 @@ int intel_crtc_init(struct intel_display *display, enum pipe pipe)
 
 	drm_WARN_ON(display->drm, drm_crtc_index(&crtc->base) != crtc->pipe);
 
+	if (HAS_CASF(display))
+		drm_crtc_create_sharpness_strength_property(&crtc->base);
+
 	return 0;
 
 fail:
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 36+ messages in thread

* ✗ CI.checkpatch: warning for Introduce drm sharpness property
  2025-10-01  6:34 [PATCH 00/10] Introduce drm sharpness property Nemesa Garg
                   ` (9 preceding siblings ...)
  2025-10-01  6:35 ` [PATCH 10/10] drm/i915/display: Expose sharpness strength property Nemesa Garg
@ 2025-10-01  7:30 ` Patchwork
  2025-10-01  7:31 ` ✓ CI.KUnit: success " Patchwork
                   ` (4 subsequent siblings)
  15 siblings, 0 replies; 36+ messages in thread
From: Patchwork @ 2025-10-01  7:30 UTC (permalink / raw)
  To: Nemesa Garg; +Cc: intel-xe

== Series Details ==

Series: Introduce drm sharpness property
URL   : https://patchwork.freedesktop.org/series/155272/
State : warning

== Summary ==

+ KERNEL=/kernel
+ git clone https://gitlab.freedesktop.org/drm/maintainer-tools mt
Cloning into 'mt'...
warning: redirecting to https://gitlab.freedesktop.org/drm/maintainer-tools.git/
+ git -C mt rev-list -n1 origin/master
fbd08a78c3a3bb17964db2a326514c69c1dca660
+ cd /kernel
+ git config --global --add safe.directory /kernel
+ git log -n1
commit 88b374aa3be67563884e00597db24cf3efbb0cdb
Author: Nemesa Garg <nemesa.garg@intel.com>
Date:   Wed Oct 1 12:05:00 2025 +0530

    drm/i915/display: Expose sharpness strength property
    
    Expose the drm crtc sharpness strength property which will enable
    or disable the sharpness/casf based on user input. With this user
    can set/update the strength of the sharpness or casf filter.
    
    v2: Update subject[Ankit]
    
    Signed-off-by: Nemesa Garg <nemesa.garg@intel.com>
    Reviewed-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
+ /mt/dim checkpatch bb42887c28cd6ede2c83547a9afc852a6aed3569 drm-intel
aa1e2e04821f drm/drm_crtc: Introduce sharpness strength property
3bad56fbfff7 drm/i915/display: Introduce HAS_CASF for sharpness support
1cdc34e2de71 drm/i915/display: Add CASF strength and winsize
-:43: WARNING:FILE_PATH_CHANGES: added, moved or deleted file(s), does MAINTAINERS need updating?
#43: 
new file mode 100644

total: 0 errors, 1 warnings, 0 checks, 223 lines checked
8eee5f23904d drm/i915/display: Add filter lut values
a6b4ffbc0772 drm/i915/display: Compute the scaler coefficients
-:26: WARNING:TYPO_SPELLING: 'funtion' may be misspelled - perhaps 'function'?
#26: 
v11: Add casf_write_coeff funtion to casf_enable
                          ^^^^^^^

total: 0 errors, 1 warnings, 0 checks, 138 lines checked
c7cc57b112db drm/i915/display: Add and compute scaler parameter
1405d29d9f2e drm/i915/display: Configure the second scaler
054375dea815 drm/i915/display: Set and get the casf config
c1d33e821a03 drm/i915/display: Enable/disable casf
88b374aa3be6 drm/i915/display: Expose sharpness strength property



^ permalink raw reply	[flat|nested] 36+ messages in thread

* ✓ CI.KUnit: success for Introduce drm sharpness property
  2025-10-01  6:34 [PATCH 00/10] Introduce drm sharpness property Nemesa Garg
                   ` (10 preceding siblings ...)
  2025-10-01  7:30 ` ✗ CI.checkpatch: warning for Introduce drm sharpness property Patchwork
@ 2025-10-01  7:31 ` Patchwork
  2025-10-01  7:47 ` ✗ CI.checksparse: warning " Patchwork
                   ` (3 subsequent siblings)
  15 siblings, 0 replies; 36+ messages in thread
From: Patchwork @ 2025-10-01  7:31 UTC (permalink / raw)
  To: Nemesa Garg; +Cc: intel-xe

== Series Details ==

Series: Introduce drm sharpness property
URL   : https://patchwork.freedesktop.org/series/155272/
State : success

== Summary ==

+ trap cleanup EXIT
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/xe/.kunitconfig
[07:30:37] Configuring KUnit Kernel ...
Generating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[07:30:42] Building KUnit Kernel ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
Building with:
$ make all compile_commands.json scripts_gdb ARCH=um O=.kunit --jobs=48
[07:31:11] Starting KUnit Kernel (1/1)...
[07:31:11] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[07:31:11] ================== guc_buf (11 subtests) ===================
[07:31:11] [PASSED] test_smallest
[07:31:11] [PASSED] test_largest
[07:31:11] [PASSED] test_granular
[07:31:11] [PASSED] test_unique
[07:31:11] [PASSED] test_overlap
[07:31:11] [PASSED] test_reusable
[07:31:11] [PASSED] test_too_big
[07:31:11] [PASSED] test_flush
[07:31:11] [PASSED] test_lookup
[07:31:11] [PASSED] test_data
[07:31:11] [PASSED] test_class
[07:31:11] ===================== [PASSED] guc_buf =====================
[07:31:11] =================== guc_dbm (7 subtests) ===================
[07:31:11] [PASSED] test_empty
[07:31:11] [PASSED] test_default
[07:31:11] ======================== test_size  ========================
[07:31:11] [PASSED] 4
[07:31:11] [PASSED] 8
[07:31:11] [PASSED] 32
[07:31:11] [PASSED] 256
[07:31:11] ==================== [PASSED] test_size ====================
[07:31:11] ======================= test_reuse  ========================
[07:31:11] [PASSED] 4
[07:31:11] [PASSED] 8
[07:31:11] [PASSED] 32
[07:31:11] [PASSED] 256
[07:31:11] =================== [PASSED] test_reuse ====================
[07:31:11] =================== test_range_overlap  ====================
[07:31:11] [PASSED] 4
[07:31:11] [PASSED] 8
[07:31:11] [PASSED] 32
[07:31:11] [PASSED] 256
[07:31:11] =============== [PASSED] test_range_overlap ================
[07:31:11] =================== test_range_compact  ====================
[07:31:11] [PASSED] 4
[07:31:11] [PASSED] 8
[07:31:11] [PASSED] 32
[07:31:11] [PASSED] 256
[07:31:11] =============== [PASSED] test_range_compact ================
[07:31:11] ==================== test_range_spare  =====================
[07:31:11] [PASSED] 4
[07:31:11] [PASSED] 8
[07:31:11] [PASSED] 32
[07:31:11] [PASSED] 256
[07:31:11] ================ [PASSED] test_range_spare =================
[07:31:11] ===================== [PASSED] guc_dbm =====================
[07:31:11] =================== guc_idm (6 subtests) ===================
[07:31:11] [PASSED] bad_init
[07:31:11] [PASSED] no_init
[07:31:11] [PASSED] init_fini
[07:31:11] [PASSED] check_used
[07:31:11] [PASSED] check_quota
[07:31:11] [PASSED] check_all
[07:31:11] ===================== [PASSED] guc_idm =====================
[07:31:11] ================== no_relay (3 subtests) ===================
[07:31:11] [PASSED] xe_drops_guc2pf_if_not_ready
[07:31:11] [PASSED] xe_drops_guc2vf_if_not_ready
[07:31:11] [PASSED] xe_rejects_send_if_not_ready
[07:31:11] ==================== [PASSED] no_relay =====================
[07:31:11] ================== pf_relay (14 subtests) ==================
[07:31:11] [PASSED] pf_rejects_guc2pf_too_short
[07:31:11] [PASSED] pf_rejects_guc2pf_too_long
[07:31:11] [PASSED] pf_rejects_guc2pf_no_payload
[07:31:11] [PASSED] pf_fails_no_payload
[07:31:11] [PASSED] pf_fails_bad_origin
[07:31:11] [PASSED] pf_fails_bad_type
[07:31:11] [PASSED] pf_txn_reports_error
[07:31:11] [PASSED] pf_txn_sends_pf2guc
[07:31:11] [PASSED] pf_sends_pf2guc
[07:31:11] [SKIPPED] pf_loopback_nop
[07:31:11] [SKIPPED] pf_loopback_echo
[07:31:11] [SKIPPED] pf_loopback_fail
[07:31:11] [SKIPPED] pf_loopback_busy
[07:31:11] [SKIPPED] pf_loopback_retry
[07:31:11] ==================== [PASSED] pf_relay =====================
[07:31:11] ================== vf_relay (3 subtests) ===================
[07:31:11] [PASSED] vf_rejects_guc2vf_too_short
[07:31:11] [PASSED] vf_rejects_guc2vf_too_long
[07:31:11] [PASSED] vf_rejects_guc2vf_no_payload
[07:31:11] ==================== [PASSED] vf_relay =====================
[07:31:11] ===================== lmtt (1 subtest) =====================
[07:31:11] ======================== test_ops  =========================
[07:31:11] [PASSED] 2-level
[07:31:11] [PASSED] multi-level
[07:31:11] ==================== [PASSED] test_ops =====================
[07:31:11] ====================== [PASSED] lmtt =======================
[07:31:11] ================= pf_service (11 subtests) =================
[07:31:11] [PASSED] pf_negotiate_any
[07:31:11] [PASSED] pf_negotiate_base_match
[07:31:11] [PASSED] pf_negotiate_base_newer
[07:31:11] [PASSED] pf_negotiate_base_next
[07:31:11] [SKIPPED] pf_negotiate_base_older
[07:31:11] [PASSED] pf_negotiate_base_prev
[07:31:11] [PASSED] pf_negotiate_latest_match
[07:31:11] [PASSED] pf_negotiate_latest_newer
[07:31:11] [PASSED] pf_negotiate_latest_next
[07:31:11] [SKIPPED] pf_negotiate_latest_older
[07:31:11] [SKIPPED] pf_negotiate_latest_prev
[07:31:11] =================== [PASSED] pf_service ====================
[07:31:11] ================= xe_guc_g2g (2 subtests) ==================
[07:31:11] ============== xe_live_guc_g2g_kunit_default  ==============
[07:31:11] ========= [SKIPPED] xe_live_guc_g2g_kunit_default ==========
[07:31:11] ============== xe_live_guc_g2g_kunit_allmem  ===============
[07:31:11] ========== [SKIPPED] xe_live_guc_g2g_kunit_allmem ==========
[07:31:11] =================== [SKIPPED] xe_guc_g2g ===================
[07:31:11] =================== xe_mocs (2 subtests) ===================
[07:31:11] ================ xe_live_mocs_kernel_kunit  ================
[07:31:11] =========== [SKIPPED] xe_live_mocs_kernel_kunit ============
[07:31:11] ================ xe_live_mocs_reset_kunit  =================
[07:31:11] ============ [SKIPPED] xe_live_mocs_reset_kunit ============
[07:31:11] ==================== [SKIPPED] xe_mocs =====================
[07:31:11] ================= xe_migrate (2 subtests) ==================
[07:31:11] ================= xe_migrate_sanity_kunit  =================
[07:31:11] ============ [SKIPPED] xe_migrate_sanity_kunit =============
[07:31:11] ================== xe_validate_ccs_kunit  ==================
[07:31:11] ============= [SKIPPED] xe_validate_ccs_kunit ==============
[07:31:11] =================== [SKIPPED] xe_migrate ===================
[07:31:11] ================== xe_dma_buf (1 subtest) ==================
[07:31:11] ==================== xe_dma_buf_kunit  =====================
[07:31:11] ================ [SKIPPED] xe_dma_buf_kunit ================
[07:31:11] =================== [SKIPPED] xe_dma_buf ===================
[07:31:11] ================= xe_bo_shrink (1 subtest) =================
[07:31:11] =================== xe_bo_shrink_kunit  ====================
[07:31:11] =============== [SKIPPED] xe_bo_shrink_kunit ===============
[07:31:11] ================== [SKIPPED] xe_bo_shrink ==================
[07:31:11] ==================== xe_bo (2 subtests) ====================
[07:31:11] ================== xe_ccs_migrate_kunit  ===================
[07:31:11] ============== [SKIPPED] xe_ccs_migrate_kunit ==============
[07:31:11] ==================== xe_bo_evict_kunit  ====================
[07:31:11] =============== [SKIPPED] xe_bo_evict_kunit ================
[07:31:11] ===================== [SKIPPED] xe_bo ======================
[07:31:11] ==================== args (11 subtests) ====================
[07:31:11] [PASSED] count_args_test
[07:31:11] [PASSED] call_args_example
[07:31:11] [PASSED] call_args_test
[07:31:11] [PASSED] drop_first_arg_example
[07:31:11] [PASSED] drop_first_arg_test
[07:31:11] [PASSED] first_arg_example
[07:31:11] [PASSED] first_arg_test
[07:31:11] [PASSED] last_arg_example
[07:31:11] [PASSED] last_arg_test
[07:31:11] [PASSED] pick_arg_example
[07:31:11] [PASSED] sep_comma_example
[07:31:11] ====================== [PASSED] args =======================
[07:31:11] =================== xe_pci (3 subtests) ====================
[07:31:11] ==================== check_graphics_ip  ====================
[07:31:11] [PASSED] 12.00 Xe_LP
[07:31:11] [PASSED] 12.10 Xe_LP+
[07:31:11] [PASSED] 12.55 Xe_HPG
[07:31:11] [PASSED] 12.60 Xe_HPC
[07:31:11] [PASSED] 12.70 Xe_LPG
[07:31:11] [PASSED] 12.71 Xe_LPG
[07:31:11] [PASSED] 12.74 Xe_LPG+
[07:31:11] [PASSED] 20.01 Xe2_HPG
[07:31:11] [PASSED] 20.02 Xe2_HPG
[07:31:11] [PASSED] 20.04 Xe2_LPG
[07:31:11] [PASSED] 30.00 Xe3_LPG
[07:31:11] [PASSED] 30.01 Xe3_LPG
[07:31:11] [PASSED] 30.03 Xe3_LPG
[07:31:11] ================ [PASSED] check_graphics_ip ================
[07:31:11] ===================== check_media_ip  ======================
[07:31:11] [PASSED] 12.00 Xe_M
[07:31:11] [PASSED] 12.55 Xe_HPM
[07:31:11] [PASSED] 13.00 Xe_LPM+
[07:31:11] [PASSED] 13.01 Xe2_HPM
[07:31:11] [PASSED] 20.00 Xe2_LPM
[07:31:11] [PASSED] 30.00 Xe3_LPM
[07:31:11] [PASSED] 30.02 Xe3_LPM
[07:31:11] ================= [PASSED] check_media_ip ==================
[07:31:11] ================= check_platform_gt_count  =================
[07:31:11] [PASSED] 0x9A60 (TIGERLAKE)
[07:31:11] [PASSED] 0x9A68 (TIGERLAKE)
[07:31:11] [PASSED] 0x9A70 (TIGERLAKE)
[07:31:11] [PASSED] 0x9A40 (TIGERLAKE)
[07:31:11] [PASSED] 0x9A49 (TIGERLAKE)
[07:31:11] [PASSED] 0x9A59 (TIGERLAKE)
[07:31:11] [PASSED] 0x9A78 (TIGERLAKE)
[07:31:11] [PASSED] 0x9AC0 (TIGERLAKE)
[07:31:11] [PASSED] 0x9AC9 (TIGERLAKE)
[07:31:11] [PASSED] 0x9AD9 (TIGERLAKE)
[07:31:11] [PASSED] 0x9AF8 (TIGERLAKE)
[07:31:11] [PASSED] 0x4C80 (ROCKETLAKE)
[07:31:11] [PASSED] 0x4C8A (ROCKETLAKE)
[07:31:11] [PASSED] 0x4C8B (ROCKETLAKE)
[07:31:11] [PASSED] 0x4C8C (ROCKETLAKE)
[07:31:11] [PASSED] 0x4C90 (ROCKETLAKE)
[07:31:11] [PASSED] 0x4C9A (ROCKETLAKE)
[07:31:11] [PASSED] 0x4680 (ALDERLAKE_S)
[07:31:11] [PASSED] 0x4682 (ALDERLAKE_S)
[07:31:11] [PASSED] 0x4688 (ALDERLAKE_S)
[07:31:11] [PASSED] 0x468A (ALDERLAKE_S)
[07:31:11] [PASSED] 0x468B (ALDERLAKE_S)
[07:31:11] [PASSED] 0x4690 (ALDERLAKE_S)
[07:31:11] [PASSED] 0x4692 (ALDERLAKE_S)
[07:31:11] [PASSED] 0x4693 (ALDERLAKE_S)
[07:31:11] [PASSED] 0x46A0 (ALDERLAKE_P)
[07:31:11] [PASSED] 0x46A1 (ALDERLAKE_P)
[07:31:11] [PASSED] 0x46A2 (ALDERLAKE_P)
[07:31:11] [PASSED] 0x46A3 (ALDERLAKE_P)
[07:31:11] [PASSED] 0x46A6 (ALDERLAKE_P)
[07:31:11] [PASSED] 0x46A8 (ALDERLAKE_P)
[07:31:11] [PASSED] 0x46AA (ALDERLAKE_P)
[07:31:11] [PASSED] 0x462A (ALDERLAKE_P)
[07:31:11] [PASSED] 0x4626 (ALDERLAKE_P)
[07:31:11] [PASSED] 0x4628 (ALDERLAKE_P)
[07:31:11] [PASSED] 0x46B0 (ALDERLAKE_P)
[07:31:11] [PASSED] 0x46B1 (ALDERLAKE_P)
[07:31:11] [PASSED] 0x46B2 (ALDERLAKE_P)
[07:31:11] [PASSED] 0x46B3 (ALDERLAKE_P)
[07:31:11] [PASSED] 0x46C0 (ALDERLAKE_P)
[07:31:11] [PASSED] 0x46C1 (ALDERLAKE_P)
[07:31:11] [PASSED] 0x46C2 (ALDERLAKE_P)
[07:31:11] [PASSED] 0x46C3 (ALDERLAKE_P)
[07:31:11] [PASSED] 0x46D0 (ALDERLAKE_N)
[07:31:11] [PASSED] 0x46D1 (ALDERLAKE_N)
[07:31:11] [PASSED] 0x46D2 (ALDERLAKE_N)
[07:31:11] [PASSED] 0x46D3 (ALDERLAKE_N)
[07:31:11] [PASSED] 0x46D4 (ALDERLAKE_N)
[07:31:11] [PASSED] 0xA721 (ALDERLAKE_P)
[07:31:11] [PASSED] 0xA7A1 (ALDERLAKE_P)
[07:31:11] [PASSED] 0xA7A9 (ALDERLAKE_P)
[07:31:11] [PASSED] 0xA7AC (ALDERLAKE_P)
[07:31:11] [PASSED] 0xA7AD (ALDERLAKE_P)
[07:31:11] [PASSED] 0xA720 (ALDERLAKE_P)
[07:31:11] [PASSED] 0xA7A0 (ALDERLAKE_P)
[07:31:11] [PASSED] 0xA7A8 (ALDERLAKE_P)
[07:31:11] [PASSED] 0xA7AA (ALDERLAKE_P)
[07:31:11] [PASSED] 0xA7AB (ALDERLAKE_P)
[07:31:11] [PASSED] 0xA780 (ALDERLAKE_S)
[07:31:11] [PASSED] 0xA781 (ALDERLAKE_S)
[07:31:11] [PASSED] 0xA782 (ALDERLAKE_S)
[07:31:11] [PASSED] 0xA783 (ALDERLAKE_S)
[07:31:11] [PASSED] 0xA788 (ALDERLAKE_S)
[07:31:11] [PASSED] 0xA789 (ALDERLAKE_S)
[07:31:11] [PASSED] 0xA78A (ALDERLAKE_S)
[07:31:11] [PASSED] 0xA78B (ALDERLAKE_S)
[07:31:11] [PASSED] 0x4905 (DG1)
[07:31:11] [PASSED] 0x4906 (DG1)
[07:31:11] [PASSED] 0x4907 (DG1)
[07:31:11] [PASSED] 0x4908 (DG1)
[07:31:11] [PASSED] 0x4909 (DG1)
[07:31:11] [PASSED] 0x56C0 (DG2)
[07:31:11] [PASSED] 0x56C2 (DG2)
[07:31:11] [PASSED] 0x56C1 (DG2)
[07:31:11] [PASSED] 0x7D51 (METEORLAKE)
[07:31:11] [PASSED] 0x7DD1 (METEORLAKE)
[07:31:11] [PASSED] 0x7D41 (METEORLAKE)
[07:31:11] [PASSED] 0x7D67 (METEORLAKE)
[07:31:11] [PASSED] 0xB640 (METEORLAKE)
[07:31:11] [PASSED] 0x56A0 (DG2)
[07:31:11] [PASSED] 0x56A1 (DG2)
[07:31:11] [PASSED] 0x56A2 (DG2)
[07:31:11] [PASSED] 0x56BE (DG2)
[07:31:11] [PASSED] 0x56BF (DG2)
[07:31:11] [PASSED] 0x5690 (DG2)
[07:31:11] [PASSED] 0x5691 (DG2)
[07:31:11] [PASSED] 0x5692 (DG2)
[07:31:11] [PASSED] 0x56A5 (DG2)
[07:31:11] [PASSED] 0x56A6 (DG2)
[07:31:11] [PASSED] 0x56B0 (DG2)
[07:31:11] [PASSED] 0x56B1 (DG2)
[07:31:11] [PASSED] 0x56BA (DG2)
[07:31:11] [PASSED] 0x56BB (DG2)
[07:31:11] [PASSED] 0x56BC (DG2)
[07:31:11] [PASSED] 0x56BD (DG2)
[07:31:11] [PASSED] 0x5693 (DG2)
[07:31:11] [PASSED] 0x5694 (DG2)
[07:31:11] [PASSED] 0x5695 (DG2)
[07:31:11] [PASSED] 0x56A3 (DG2)
[07:31:11] [PASSED] 0x56A4 (DG2)
[07:31:11] [PASSED] 0x56B2 (DG2)
[07:31:11] [PASSED] 0x56B3 (DG2)
[07:31:11] [PASSED] 0x5696 (DG2)
[07:31:11] [PASSED] 0x5697 (DG2)
[07:31:11] [PASSED] 0xB69 (PVC)
[07:31:11] [PASSED] 0xB6E (PVC)
[07:31:11] [PASSED] 0xBD4 (PVC)
[07:31:11] [PASSED] 0xBD5 (PVC)
[07:31:11] [PASSED] 0xBD6 (PVC)
[07:31:11] [PASSED] 0xBD7 (PVC)
[07:31:11] [PASSED] 0xBD8 (PVC)
[07:31:11] [PASSED] 0xBD9 (PVC)
[07:31:11] [PASSED] 0xBDA (PVC)
[07:31:11] [PASSED] 0xBDB (PVC)
[07:31:11] [PASSED] 0xBE0 (PVC)
[07:31:11] [PASSED] 0xBE1 (PVC)
[07:31:11] [PASSED] 0xBE5 (PVC)
[07:31:11] [PASSED] 0x7D40 (METEORLAKE)
[07:31:11] [PASSED] 0x7D45 (METEORLAKE)
[07:31:11] [PASSED] 0x7D55 (METEORLAKE)
[07:31:11] [PASSED] 0x7D60 (METEORLAKE)
[07:31:11] [PASSED] 0x7DD5 (METEORLAKE)
[07:31:11] [PASSED] 0x6420 (LUNARLAKE)
[07:31:11] [PASSED] 0x64A0 (LUNARLAKE)
[07:31:11] [PASSED] 0x64B0 (LUNARLAKE)
[07:31:11] [PASSED] 0xE202 (BATTLEMAGE)
[07:31:11] [PASSED] 0xE209 (BATTLEMAGE)
[07:31:11] [PASSED] 0xE20B (BATTLEMAGE)
[07:31:11] [PASSED] 0xE20C (BATTLEMAGE)
[07:31:11] [PASSED] 0xE20D (BATTLEMAGE)
[07:31:11] [PASSED] 0xE210 (BATTLEMAGE)
[07:31:11] [PASSED] 0xE211 (BATTLEMAGE)
[07:31:11] [PASSED] 0xE212 (BATTLEMAGE)
[07:31:11] [PASSED] 0xE216 (BATTLEMAGE)
[07:31:11] [PASSED] 0xE220 (BATTLEMAGE)
[07:31:11] [PASSED] 0xE221 (BATTLEMAGE)
[07:31:11] [PASSED] 0xE222 (BATTLEMAGE)
[07:31:11] [PASSED] 0xE223 (BATTLEMAGE)
[07:31:11] [PASSED] 0xB080 (PANTHERLAKE)
[07:31:11] [PASSED] 0xB081 (PANTHERLAKE)
[07:31:11] [PASSED] 0xB082 (PANTHERLAKE)
[07:31:11] [PASSED] 0xB083 (PANTHERLAKE)
[07:31:11] [PASSED] 0xB084 (PANTHERLAKE)
[07:31:11] [PASSED] 0xB085 (PANTHERLAKE)
[07:31:11] [PASSED] 0xB086 (PANTHERLAKE)
[07:31:11] [PASSED] 0xB087 (PANTHERLAKE)
[07:31:11] [PASSED] 0xB08F (PANTHERLAKE)
[07:31:11] [PASSED] 0xB090 (PANTHERLAKE)
[07:31:11] [PASSED] 0xB0A0 (PANTHERLAKE)
[07:31:11] [PASSED] 0xB0B0 (PANTHERLAKE)
[07:31:11] [PASSED] 0xFD80 (PANTHERLAKE)
[07:31:11] [PASSED] 0xFD81 (PANTHERLAKE)
[07:31:11] ============= [PASSED] check_platform_gt_count =============
[07:31:11] ===================== [PASSED] xe_pci ======================
[07:31:11] =================== xe_rtp (2 subtests) ====================
[07:31:11] =============== xe_rtp_process_to_sr_tests  ================
[07:31:11] [PASSED] coalesce-same-reg
[07:31:11] [PASSED] no-match-no-add
[07:31:11] [PASSED] match-or
[07:31:11] [PASSED] match-or-xfail
[07:31:11] [PASSED] no-match-no-add-multiple-rules
[07:31:11] [PASSED] two-regs-two-entries
[07:31:11] [PASSED] clr-one-set-other
[07:31:11] [PASSED] set-field
[07:31:11] [PASSED] conflict-duplicate
[07:31:11] [PASSED] conflict-not-disjoint
[07:31:11] [PASSED] conflict-reg-type
[07:31:11] =========== [PASSED] xe_rtp_process_to_sr_tests ============
[07:31:11] ================== xe_rtp_process_tests  ===================
[07:31:11] [PASSED] active1
[07:31:11] [PASSED] active2
[07:31:11] [PASSED] active-inactive
[07:31:11] [PASSED] inactive-active
[07:31:11] [PASSED] inactive-1st_or_active-inactive
[07:31:11] [PASSED] inactive-2nd_or_active-inactive
[07:31:11] [PASSED] inactive-last_or_active-inactive
[07:31:11] [PASSED] inactive-no_or_active-inactive
[07:31:11] ============== [PASSED] xe_rtp_process_tests ===============
[07:31:11] ===================== [PASSED] xe_rtp ======================
[07:31:11] ==================== xe_wa (1 subtest) =====================
[07:31:11] ======================== xe_wa_gt  =========================
[07:31:11] [PASSED] TIGERLAKE B0
[07:31:11] [PASSED] DG1 A0
[07:31:11] [PASSED] DG1 B0
[07:31:11] [PASSED] ALDERLAKE_S A0
[07:31:11] [PASSED] ALDERLAKE_S B0
stty: 'standard input': Inappropriate ioctl for device
[07:31:11] [PASSED] ALDERLAKE_S C0
[07:31:11] [PASSED] ALDERLAKE_S D0
[07:31:11] [PASSED] ALDERLAKE_P A0
[07:31:11] [PASSED] ALDERLAKE_P B0
[07:31:11] [PASSED] ALDERLAKE_P C0
[07:31:11] [PASSED] ALDERLAKE_S RPLS D0
[07:31:11] [PASSED] ALDERLAKE_P RPLU E0
[07:31:11] [PASSED] DG2 G10 C0
[07:31:11] [PASSED] DG2 G11 B1
[07:31:11] [PASSED] DG2 G12 A1
[07:31:11] [PASSED] METEORLAKE 12.70(Xe_LPG) A0 13.00(Xe_LPM+) A0
[07:31:11] [PASSED] METEORLAKE 12.71(Xe_LPG) A0 13.00(Xe_LPM+) A0
[07:31:11] [PASSED] METEORLAKE 12.74(Xe_LPG+) A0 13.00(Xe_LPM+) A0
[07:31:11] [PASSED] LUNARLAKE 20.04(Xe2_LPG) A0 20.00(Xe2_LPM) A0
[07:31:11] [PASSED] LUNARLAKE 20.04(Xe2_LPG) B0 20.00(Xe2_LPM) A0
[07:31:11] [PASSED] BATTLEMAGE 20.01(Xe2_HPG) A0 13.01(Xe2_HPM) A1
[07:31:11] [PASSED] PANTHERLAKE 30.00(Xe3_LPG) A0 30.00(Xe3_LPM) A0
[07:31:11] ==================== [PASSED] xe_wa_gt =====================
[07:31:11] ====================== [PASSED] xe_wa ======================
[07:31:11] ============================================================
[07:31:11] Testing complete. Ran 306 tests: passed: 288, skipped: 18
[07:31:11] Elapsed time: 33.796s total, 4.295s configuring, 29.134s building, 0.325s running

+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/tests/.kunitconfig
[07:31:11] Configuring KUnit Kernel ...
Regenerating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[07:31:13] Building KUnit Kernel ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
Building with:
$ make all compile_commands.json scripts_gdb ARCH=um O=.kunit --jobs=48
[07:31:36] Starting KUnit Kernel (1/1)...
[07:31:36] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[07:31:37] ============ drm_test_pick_cmdline (2 subtests) ============
[07:31:37] [PASSED] drm_test_pick_cmdline_res_1920_1080_60
[07:31:37] =============== drm_test_pick_cmdline_named  ===============
[07:31:37] [PASSED] NTSC
[07:31:37] [PASSED] NTSC-J
[07:31:37] [PASSED] PAL
[07:31:37] [PASSED] PAL-M
[07:31:37] =========== [PASSED] drm_test_pick_cmdline_named ===========
[07:31:37] ============== [PASSED] drm_test_pick_cmdline ==============
[07:31:37] == drm_test_atomic_get_connector_for_encoder (1 subtest) ===
[07:31:37] [PASSED] drm_test_drm_atomic_get_connector_for_encoder
[07:31:37] ==== [PASSED] drm_test_atomic_get_connector_for_encoder ====
[07:31:37] =========== drm_validate_clone_mode (2 subtests) ===========
[07:31:37] ============== drm_test_check_in_clone_mode  ===============
[07:31:37] [PASSED] in_clone_mode
[07:31:37] [PASSED] not_in_clone_mode
[07:31:37] ========== [PASSED] drm_test_check_in_clone_mode ===========
[07:31:37] =============== drm_test_check_valid_clones  ===============
[07:31:37] [PASSED] not_in_clone_mode
[07:31:37] [PASSED] valid_clone
[07:31:37] [PASSED] invalid_clone
[07:31:37] =========== [PASSED] drm_test_check_valid_clones ===========
[07:31:37] ============= [PASSED] drm_validate_clone_mode =============
[07:31:37] ============= drm_validate_modeset (1 subtest) =============
[07:31:37] [PASSED] drm_test_check_connector_changed_modeset
[07:31:37] ============== [PASSED] drm_validate_modeset ===============
[07:31:37] ====== drm_test_bridge_get_current_state (2 subtests) ======
[07:31:37] [PASSED] drm_test_drm_bridge_get_current_state_atomic
[07:31:37] [PASSED] drm_test_drm_bridge_get_current_state_legacy
[07:31:37] ======== [PASSED] drm_test_bridge_get_current_state ========
[07:31:37] ====== drm_test_bridge_helper_reset_crtc (3 subtests) ======
[07:31:37] [PASSED] drm_test_drm_bridge_helper_reset_crtc_atomic
[07:31:37] [PASSED] drm_test_drm_bridge_helper_reset_crtc_atomic_disabled
[07:31:37] [PASSED] drm_test_drm_bridge_helper_reset_crtc_legacy
[07:31:37] ======== [PASSED] drm_test_bridge_helper_reset_crtc ========
[07:31:37] ============== drm_bridge_alloc (2 subtests) ===============
[07:31:37] [PASSED] drm_test_drm_bridge_alloc_basic
[07:31:37] [PASSED] drm_test_drm_bridge_alloc_get_put
[07:31:37] ================ [PASSED] drm_bridge_alloc =================
[07:31:37] ================== drm_buddy (7 subtests) ==================
[07:31:37] [PASSED] drm_test_buddy_alloc_limit
[07:31:37] [PASSED] drm_test_buddy_alloc_optimistic
[07:31:37] [PASSED] drm_test_buddy_alloc_pessimistic
[07:31:37] [PASSED] drm_test_buddy_alloc_pathological
[07:31:37] [PASSED] drm_test_buddy_alloc_contiguous
[07:31:37] [PASSED] drm_test_buddy_alloc_clear
[07:31:37] [PASSED] drm_test_buddy_alloc_range_bias
[07:31:37] ==================== [PASSED] drm_buddy ====================
[07:31:37] ============= drm_cmdline_parser (40 subtests) =============
[07:31:37] [PASSED] drm_test_cmdline_force_d_only
[07:31:37] [PASSED] drm_test_cmdline_force_D_only_dvi
[07:31:37] [PASSED] drm_test_cmdline_force_D_only_hdmi
[07:31:37] [PASSED] drm_test_cmdline_force_D_only_not_digital
[07:31:37] [PASSED] drm_test_cmdline_force_e_only
[07:31:37] [PASSED] drm_test_cmdline_res
[07:31:37] [PASSED] drm_test_cmdline_res_vesa
[07:31:37] [PASSED] drm_test_cmdline_res_vesa_rblank
[07:31:37] [PASSED] drm_test_cmdline_res_rblank
[07:31:37] [PASSED] drm_test_cmdline_res_bpp
[07:31:37] [PASSED] drm_test_cmdline_res_refresh
[07:31:37] [PASSED] drm_test_cmdline_res_bpp_refresh
[07:31:37] [PASSED] drm_test_cmdline_res_bpp_refresh_interlaced
[07:31:37] [PASSED] drm_test_cmdline_res_bpp_refresh_margins
[07:31:37] [PASSED] drm_test_cmdline_res_bpp_refresh_force_off
[07:31:37] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on
[07:31:37] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on_analog
[07:31:37] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on_digital
[07:31:37] [PASSED] drm_test_cmdline_res_bpp_refresh_interlaced_margins_force_on
[07:31:37] [PASSED] drm_test_cmdline_res_margins_force_on
[07:31:37] [PASSED] drm_test_cmdline_res_vesa_margins
[07:31:37] [PASSED] drm_test_cmdline_name
[07:31:37] [PASSED] drm_test_cmdline_name_bpp
[07:31:37] [PASSED] drm_test_cmdline_name_option
[07:31:37] [PASSED] drm_test_cmdline_name_bpp_option
[07:31:37] [PASSED] drm_test_cmdline_rotate_0
[07:31:37] [PASSED] drm_test_cmdline_rotate_90
[07:31:37] [PASSED] drm_test_cmdline_rotate_180
[07:31:37] [PASSED] drm_test_cmdline_rotate_270
[07:31:37] [PASSED] drm_test_cmdline_hmirror
[07:31:37] [PASSED] drm_test_cmdline_vmirror
[07:31:37] [PASSED] drm_test_cmdline_margin_options
[07:31:37] [PASSED] drm_test_cmdline_multiple_options
[07:31:37] [PASSED] drm_test_cmdline_bpp_extra_and_option
[07:31:37] [PASSED] drm_test_cmdline_extra_and_option
[07:31:37] [PASSED] drm_test_cmdline_freestanding_options
[07:31:37] [PASSED] drm_test_cmdline_freestanding_force_e_and_options
[07:31:37] [PASSED] drm_test_cmdline_panel_orientation
[07:31:37] ================ drm_test_cmdline_invalid  =================
[07:31:37] [PASSED] margin_only
[07:31:37] [PASSED] interlace_only
[07:31:37] [PASSED] res_missing_x
[07:31:37] [PASSED] res_missing_y
[07:31:37] [PASSED] res_bad_y
[07:31:37] [PASSED] res_missing_y_bpp
[07:31:37] [PASSED] res_bad_bpp
[07:31:37] [PASSED] res_bad_refresh
[07:31:37] [PASSED] res_bpp_refresh_force_on_off
[07:31:37] [PASSED] res_invalid_mode
[07:31:37] [PASSED] res_bpp_wrong_place_mode
[07:31:37] [PASSED] name_bpp_refresh
[07:31:37] [PASSED] name_refresh
[07:31:37] [PASSED] name_refresh_wrong_mode
[07:31:37] [PASSED] name_refresh_invalid_mode
[07:31:37] [PASSED] rotate_multiple
[07:31:37] [PASSED] rotate_invalid_val
[07:31:37] [PASSED] rotate_truncated
[07:31:37] [PASSED] invalid_option
[07:31:37] [PASSED] invalid_tv_option
[07:31:37] [PASSED] truncated_tv_option
[07:31:37] ============ [PASSED] drm_test_cmdline_invalid =============
[07:31:37] =============== drm_test_cmdline_tv_options  ===============
[07:31:37] [PASSED] NTSC
[07:31:37] [PASSED] NTSC_443
[07:31:37] [PASSED] NTSC_J
[07:31:37] [PASSED] PAL
[07:31:37] [PASSED] PAL_M
[07:31:37] [PASSED] PAL_N
[07:31:37] [PASSED] SECAM
[07:31:37] [PASSED] MONO_525
[07:31:37] [PASSED] MONO_625
[07:31:37] =========== [PASSED] drm_test_cmdline_tv_options ===========
[07:31:37] =============== [PASSED] drm_cmdline_parser ================
[07:31:37] ========== drmm_connector_hdmi_init (20 subtests) ==========
[07:31:37] [PASSED] drm_test_connector_hdmi_init_valid
[07:31:37] [PASSED] drm_test_connector_hdmi_init_bpc_8
[07:31:37] [PASSED] drm_test_connector_hdmi_init_bpc_10
[07:31:37] [PASSED] drm_test_connector_hdmi_init_bpc_12
[07:31:37] [PASSED] drm_test_connector_hdmi_init_bpc_invalid
[07:31:37] [PASSED] drm_test_connector_hdmi_init_bpc_null
[07:31:37] [PASSED] drm_test_connector_hdmi_init_formats_empty
[07:31:37] [PASSED] drm_test_connector_hdmi_init_formats_no_rgb
[07:31:37] === drm_test_connector_hdmi_init_formats_yuv420_allowed  ===
[07:31:37] [PASSED] supported_formats=0x9 yuv420_allowed=1
[07:31:37] [PASSED] supported_formats=0x9 yuv420_allowed=0
[07:31:37] [PASSED] supported_formats=0x3 yuv420_allowed=1
[07:31:37] [PASSED] supported_formats=0x3 yuv420_allowed=0
[07:31:37] === [PASSED] drm_test_connector_hdmi_init_formats_yuv420_allowed ===
[07:31:37] [PASSED] drm_test_connector_hdmi_init_null_ddc
[07:31:37] [PASSED] drm_test_connector_hdmi_init_null_product
[07:31:37] [PASSED] drm_test_connector_hdmi_init_null_vendor
[07:31:37] [PASSED] drm_test_connector_hdmi_init_product_length_exact
[07:31:37] [PASSED] drm_test_connector_hdmi_init_product_length_too_long
[07:31:37] [PASSED] drm_test_connector_hdmi_init_product_valid
[07:31:37] [PASSED] drm_test_connector_hdmi_init_vendor_length_exact
[07:31:37] [PASSED] drm_test_connector_hdmi_init_vendor_length_too_long
[07:31:37] [PASSED] drm_test_connector_hdmi_init_vendor_valid
[07:31:37] ========= drm_test_connector_hdmi_init_type_valid  =========
[07:31:37] [PASSED] HDMI-A
[07:31:37] [PASSED] HDMI-B
[07:31:37] ===== [PASSED] drm_test_connector_hdmi_init_type_valid =====
[07:31:37] ======== drm_test_connector_hdmi_init_type_invalid  ========
[07:31:37] [PASSED] Unknown
[07:31:37] [PASSED] VGA
[07:31:37] [PASSED] DVI-I
[07:31:37] [PASSED] DVI-D
[07:31:37] [PASSED] DVI-A
[07:31:37] [PASSED] Composite
[07:31:37] [PASSED] SVIDEO
[07:31:37] [PASSED] LVDS
[07:31:37] [PASSED] Component
[07:31:37] [PASSED] DIN
[07:31:37] [PASSED] DP
[07:31:37] [PASSED] TV
[07:31:37] [PASSED] eDP
[07:31:37] [PASSED] Virtual
[07:31:37] [PASSED] DSI
[07:31:37] [PASSED] DPI
[07:31:37] [PASSED] Writeback
[07:31:37] [PASSED] SPI
[07:31:37] [PASSED] USB
[07:31:37] ==== [PASSED] drm_test_connector_hdmi_init_type_invalid ====
[07:31:37] ============ [PASSED] drmm_connector_hdmi_init =============
[07:31:37] ============= drmm_connector_init (3 subtests) =============
[07:31:37] [PASSED] drm_test_drmm_connector_init
[07:31:37] [PASSED] drm_test_drmm_connector_init_null_ddc
[07:31:37] ========= drm_test_drmm_connector_init_type_valid  =========
[07:31:37] [PASSED] Unknown
[07:31:37] [PASSED] VGA
[07:31:37] [PASSED] DVI-I
[07:31:37] [PASSED] DVI-D
[07:31:37] [PASSED] DVI-A
[07:31:37] [PASSED] Composite
[07:31:37] [PASSED] SVIDEO
[07:31:37] [PASSED] LVDS
[07:31:37] [PASSED] Component
[07:31:37] [PASSED] DIN
[07:31:37] [PASSED] DP
[07:31:37] [PASSED] HDMI-A
[07:31:37] [PASSED] HDMI-B
[07:31:37] [PASSED] TV
[07:31:37] [PASSED] eDP
[07:31:37] [PASSED] Virtual
[07:31:37] [PASSED] DSI
[07:31:37] [PASSED] DPI
[07:31:37] [PASSED] Writeback
[07:31:37] [PASSED] SPI
[07:31:37] [PASSED] USB
[07:31:37] ===== [PASSED] drm_test_drmm_connector_init_type_valid =====
[07:31:37] =============== [PASSED] drmm_connector_init ===============
[07:31:37] ========= drm_connector_dynamic_init (6 subtests) ==========
[07:31:37] [PASSED] drm_test_drm_connector_dynamic_init
[07:31:37] [PASSED] drm_test_drm_connector_dynamic_init_null_ddc
[07:31:37] [PASSED] drm_test_drm_connector_dynamic_init_not_added
[07:31:37] [PASSED] drm_test_drm_connector_dynamic_init_properties
[07:31:37] ===== drm_test_drm_connector_dynamic_init_type_valid  ======
[07:31:37] [PASSED] Unknown
[07:31:37] [PASSED] VGA
[07:31:37] [PASSED] DVI-I
[07:31:37] [PASSED] DVI-D
[07:31:37] [PASSED] DVI-A
[07:31:37] [PASSED] Composite
[07:31:37] [PASSED] SVIDEO
[07:31:37] [PASSED] LVDS
[07:31:37] [PASSED] Component
[07:31:37] [PASSED] DIN
[07:31:37] [PASSED] DP
[07:31:37] [PASSED] HDMI-A
[07:31:37] [PASSED] HDMI-B
[07:31:37] [PASSED] TV
[07:31:37] [PASSED] eDP
[07:31:37] [PASSED] Virtual
[07:31:37] [PASSED] DSI
[07:31:37] [PASSED] DPI
[07:31:37] [PASSED] Writeback
[07:31:37] [PASSED] SPI
[07:31:37] [PASSED] USB
[07:31:37] = [PASSED] drm_test_drm_connector_dynamic_init_type_valid ==
[07:31:37] ======== drm_test_drm_connector_dynamic_init_name  =========
[07:31:37] [PASSED] Unknown
[07:31:37] [PASSED] VGA
[07:31:37] [PASSED] DVI-I
[07:31:37] [PASSED] DVI-D
[07:31:37] [PASSED] DVI-A
[07:31:37] [PASSED] Composite
[07:31:37] [PASSED] SVIDEO
[07:31:37] [PASSED] LVDS
[07:31:37] [PASSED] Component
[07:31:37] [PASSED] DIN
[07:31:37] [PASSED] DP
[07:31:37] [PASSED] HDMI-A
[07:31:37] [PASSED] HDMI-B
[07:31:37] [PASSED] TV
[07:31:37] [PASSED] eDP
[07:31:37] [PASSED] Virtual
[07:31:37] [PASSED] DSI
[07:31:37] [PASSED] DPI
[07:31:37] [PASSED] Writeback
[07:31:37] [PASSED] SPI
[07:31:37] [PASSED] USB
[07:31:37] ==== [PASSED] drm_test_drm_connector_dynamic_init_name =====
[07:31:37] =========== [PASSED] drm_connector_dynamic_init ============
[07:31:37] ==== drm_connector_dynamic_register_early (4 subtests) =====
[07:31:37] [PASSED] drm_test_drm_connector_dynamic_register_early_on_list
[07:31:37] [PASSED] drm_test_drm_connector_dynamic_register_early_defer
[07:31:37] [PASSED] drm_test_drm_connector_dynamic_register_early_no_init
[07:31:37] [PASSED] drm_test_drm_connector_dynamic_register_early_no_mode_object
[07:31:37] ====== [PASSED] drm_connector_dynamic_register_early =======
[07:31:37] ======= drm_connector_dynamic_register (7 subtests) ========
[07:31:37] [PASSED] drm_test_drm_connector_dynamic_register_on_list
[07:31:37] [PASSED] drm_test_drm_connector_dynamic_register_no_defer
[07:31:37] [PASSED] drm_test_drm_connector_dynamic_register_no_init
[07:31:37] [PASSED] drm_test_drm_connector_dynamic_register_mode_object
[07:31:37] [PASSED] drm_test_drm_connector_dynamic_register_sysfs
[07:31:37] [PASSED] drm_test_drm_connector_dynamic_register_sysfs_name
[07:31:37] [PASSED] drm_test_drm_connector_dynamic_register_debugfs
[07:31:37] ========= [PASSED] drm_connector_dynamic_register ==========
[07:31:37] = drm_connector_attach_broadcast_rgb_property (2 subtests) =
[07:31:37] [PASSED] drm_test_drm_connector_attach_broadcast_rgb_property
[07:31:37] [PASSED] drm_test_drm_connector_attach_broadcast_rgb_property_hdmi_connector
[07:31:37] === [PASSED] drm_connector_attach_broadcast_rgb_property ===
[07:31:37] ========== drm_get_tv_mode_from_name (2 subtests) ==========
[07:31:37] ========== drm_test_get_tv_mode_from_name_valid  ===========
[07:31:37] [PASSED] NTSC
[07:31:37] [PASSED] NTSC-443
[07:31:37] [PASSED] NTSC-J
[07:31:37] [PASSED] PAL
[07:31:37] [PASSED] PAL-M
[07:31:37] [PASSED] PAL-N
[07:31:37] [PASSED] SECAM
[07:31:37] [PASSED] Mono
[07:31:37] ====== [PASSED] drm_test_get_tv_mode_from_name_valid =======
[07:31:37] [PASSED] drm_test_get_tv_mode_from_name_truncated
[07:31:37] ============ [PASSED] drm_get_tv_mode_from_name ============
[07:31:37] = drm_test_connector_hdmi_compute_mode_clock (12 subtests) =
[07:31:37] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb
[07:31:37] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_10bpc
[07:31:37] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_10bpc_vic_1
[07:31:37] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_12bpc
[07:31:37] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_12bpc_vic_1
[07:31:37] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_double
[07:31:37] = drm_test_connector_hdmi_compute_mode_clock_yuv420_valid  =
[07:31:37] [PASSED] VIC 96
[07:31:37] [PASSED] VIC 97
[07:31:37] [PASSED] VIC 101
[07:31:37] [PASSED] VIC 102
[07:31:37] [PASSED] VIC 106
[07:31:37] [PASSED] VIC 107
[07:31:37] === [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_valid ===
[07:31:37] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_10_bpc
[07:31:37] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_12_bpc
[07:31:37] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_8_bpc
[07:31:37] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_10_bpc
[07:31:37] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_12_bpc
[07:31:37] === [PASSED] drm_test_connector_hdmi_compute_mode_clock ====
[07:31:37] == drm_hdmi_connector_get_broadcast_rgb_name (2 subtests) ==
[07:31:37] === drm_test_drm_hdmi_connector_get_broadcast_rgb_name  ====
[07:31:37] [PASSED] Automatic
[07:31:37] [PASSED] Full
[07:31:37] [PASSED] Limited 16:235
[07:31:37] === [PASSED] drm_test_drm_hdmi_connector_get_broadcast_rgb_name ===
[07:31:37] [PASSED] drm_test_drm_hdmi_connector_get_broadcast_rgb_name_invalid
[07:31:37] ==== [PASSED] drm_hdmi_connector_get_broadcast_rgb_name ====
[07:31:37] == drm_hdmi_connector_get_output_format_name (2 subtests) ==
[07:31:37] === drm_test_drm_hdmi_connector_get_output_format_name  ====
[07:31:37] [PASSED] RGB
[07:31:37] [PASSED] YUV 4:2:0
[07:31:37] [PASSED] YUV 4:2:2
[07:31:37] [PASSED] YUV 4:4:4
[07:31:37] === [PASSED] drm_test_drm_hdmi_connector_get_output_format_name ===
[07:31:37] [PASSED] drm_test_drm_hdmi_connector_get_output_format_name_invalid
[07:31:37] ==== [PASSED] drm_hdmi_connector_get_output_format_name ====
[07:31:37] ============= drm_damage_helper (21 subtests) ==============
[07:31:37] [PASSED] drm_test_damage_iter_no_damage
[07:31:37] [PASSED] drm_test_damage_iter_no_damage_fractional_src
[07:31:37] [PASSED] drm_test_damage_iter_no_damage_src_moved
[07:31:37] [PASSED] drm_test_damage_iter_no_damage_fractional_src_moved
[07:31:37] [PASSED] drm_test_damage_iter_no_damage_not_visible
[07:31:37] [PASSED] drm_test_damage_iter_no_damage_no_crtc
[07:31:37] [PASSED] drm_test_damage_iter_no_damage_no_fb
[07:31:37] [PASSED] drm_test_damage_iter_simple_damage
[07:31:37] [PASSED] drm_test_damage_iter_single_damage
[07:31:37] [PASSED] drm_test_damage_iter_single_damage_intersect_src
[07:31:37] [PASSED] drm_test_damage_iter_single_damage_outside_src
[07:31:37] [PASSED] drm_test_damage_iter_single_damage_fractional_src
[07:31:37] [PASSED] drm_test_damage_iter_single_damage_intersect_fractional_src
[07:31:37] [PASSED] drm_test_damage_iter_single_damage_outside_fractional_src
[07:31:37] [PASSED] drm_test_damage_iter_single_damage_src_moved
[07:31:37] [PASSED] drm_test_damage_iter_single_damage_fractional_src_moved
[07:31:37] [PASSED] drm_test_damage_iter_damage
[07:31:37] [PASSED] drm_test_damage_iter_damage_one_intersect
[07:31:37] [PASSED] drm_test_damage_iter_damage_one_outside
[07:31:37] [PASSED] drm_test_damage_iter_damage_src_moved
[07:31:37] [PASSED] drm_test_damage_iter_damage_not_visible
[07:31:37] ================ [PASSED] drm_damage_helper ================
[07:31:37] ============== drm_dp_mst_helper (3 subtests) ==============
[07:31:37] ============== drm_test_dp_mst_calc_pbn_mode  ==============
[07:31:37] [PASSED] Clock 154000 BPP 30 DSC disabled
[07:31:37] [PASSED] Clock 234000 BPP 30 DSC disabled
[07:31:37] [PASSED] Clock 297000 BPP 24 DSC disabled
[07:31:37] [PASSED] Clock 332880 BPP 24 DSC enabled
[07:31:37] [PASSED] Clock 324540 BPP 24 DSC enabled
[07:31:37] ========== [PASSED] drm_test_dp_mst_calc_pbn_mode ==========
[07:31:37] ============== drm_test_dp_mst_calc_pbn_div  ===============
[07:31:37] [PASSED] Link rate 2000000 lane count 4
[07:31:37] [PASSED] Link rate 2000000 lane count 2
[07:31:37] [PASSED] Link rate 2000000 lane count 1
[07:31:37] [PASSED] Link rate 1350000 lane count 4
[07:31:37] [PASSED] Link rate 1350000 lane count 2
[07:31:37] [PASSED] Link rate 1350000 lane count 1
[07:31:37] [PASSED] Link rate 1000000 lane count 4
[07:31:37] [PASSED] Link rate 1000000 lane count 2
[07:31:37] [PASSED] Link rate 1000000 lane count 1
[07:31:37] [PASSED] Link rate 810000 lane count 4
[07:31:37] [PASSED] Link rate 810000 lane count 2
[07:31:37] [PASSED] Link rate 810000 lane count 1
[07:31:37] [PASSED] Link rate 540000 lane count 4
[07:31:37] [PASSED] Link rate 540000 lane count 2
[07:31:37] [PASSED] Link rate 540000 lane count 1
[07:31:37] [PASSED] Link rate 270000 lane count 4
[07:31:37] [PASSED] Link rate 270000 lane count 2
[07:31:37] [PASSED] Link rate 270000 lane count 1
[07:31:37] [PASSED] Link rate 162000 lane count 4
[07:31:37] [PASSED] Link rate 162000 lane count 2
[07:31:37] [PASSED] Link rate 162000 lane count 1
[07:31:37] ========== [PASSED] drm_test_dp_mst_calc_pbn_div ===========
[07:31:37] ========= drm_test_dp_mst_sideband_msg_req_decode  =========
[07:31:37] [PASSED] DP_ENUM_PATH_RESOURCES with port number
[07:31:37] [PASSED] DP_POWER_UP_PHY with port number
[07:31:37] [PASSED] DP_POWER_DOWN_PHY with port number
[07:31:37] [PASSED] DP_ALLOCATE_PAYLOAD with SDP stream sinks
[07:31:37] [PASSED] DP_ALLOCATE_PAYLOAD with port number
[07:31:37] [PASSED] DP_ALLOCATE_PAYLOAD with VCPI
[07:31:37] [PASSED] DP_ALLOCATE_PAYLOAD with PBN
[07:31:37] [PASSED] DP_QUERY_PAYLOAD with port number
[07:31:37] [PASSED] DP_QUERY_PAYLOAD with VCPI
[07:31:37] [PASSED] DP_REMOTE_DPCD_READ with port number
[07:31:37] [PASSED] DP_REMOTE_DPCD_READ with DPCD address
[07:31:37] [PASSED] DP_REMOTE_DPCD_READ with max number of bytes
[07:31:37] [PASSED] DP_REMOTE_DPCD_WRITE with port number
[07:31:37] [PASSED] DP_REMOTE_DPCD_WRITE with DPCD address
[07:31:37] [PASSED] DP_REMOTE_DPCD_WRITE with data array
[07:31:37] [PASSED] DP_REMOTE_I2C_READ with port number
[07:31:37] [PASSED] DP_REMOTE_I2C_READ with I2C device ID
[07:31:37] [PASSED] DP_REMOTE_I2C_READ with transactions array
[07:31:37] [PASSED] DP_REMOTE_I2C_WRITE with port number
[07:31:37] [PASSED] DP_REMOTE_I2C_WRITE with I2C device ID
[07:31:37] [PASSED] DP_REMOTE_I2C_WRITE with data array
[07:31:37] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream ID
[07:31:37] [PASSED] DP_QUERY_STREAM_ENC_STATUS with client ID
[07:31:37] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream event
[07:31:37] [PASSED] DP_QUERY_STREAM_ENC_STATUS with valid stream event
[07:31:37] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream behavior
[07:31:37] [PASSED] DP_QUERY_STREAM_ENC_STATUS with a valid stream behavior
[07:31:37] ===== [PASSED] drm_test_dp_mst_sideband_msg_req_decode =====
[07:31:37] ================ [PASSED] drm_dp_mst_helper ================
[07:31:37] ================== drm_exec (7 subtests) ===================
[07:31:37] [PASSED] sanitycheck
[07:31:37] [PASSED] test_lock
[07:31:37] [PASSED] test_lock_unlock
[07:31:37] [PASSED] test_duplicates
[07:31:37] [PASSED] test_prepare
[07:31:37] [PASSED] test_prepare_array
[07:31:37] [PASSED] test_multiple_loops
[07:31:37] ==================== [PASSED] drm_exec =====================
[07:31:37] =========== drm_format_helper_test (17 subtests) ===========
[07:31:37] ============== drm_test_fb_xrgb8888_to_gray8  ==============
[07:31:37] [PASSED] single_pixel_source_buffer
[07:31:37] [PASSED] single_pixel_clip_rectangle
[07:31:37] [PASSED] well_known_colors
[07:31:37] [PASSED] destination_pitch
[07:31:37] ========== [PASSED] drm_test_fb_xrgb8888_to_gray8 ==========
[07:31:37] ============= drm_test_fb_xrgb8888_to_rgb332  ==============
[07:31:37] [PASSED] single_pixel_source_buffer
[07:31:37] [PASSED] single_pixel_clip_rectangle
[07:31:37] [PASSED] well_known_colors
[07:31:37] [PASSED] destination_pitch
[07:31:37] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb332 ==========
[07:31:37] ============= drm_test_fb_xrgb8888_to_rgb565  ==============
[07:31:37] [PASSED] single_pixel_source_buffer
[07:31:37] [PASSED] single_pixel_clip_rectangle
[07:31:37] [PASSED] well_known_colors
[07:31:37] [PASSED] destination_pitch
[07:31:37] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb565 ==========
[07:31:37] ============ drm_test_fb_xrgb8888_to_xrgb1555  =============
[07:31:37] [PASSED] single_pixel_source_buffer
[07:31:37] [PASSED] single_pixel_clip_rectangle
[07:31:37] [PASSED] well_known_colors
[07:31:37] [PASSED] destination_pitch
[07:31:37] ======== [PASSED] drm_test_fb_xrgb8888_to_xrgb1555 =========
[07:31:37] ============ drm_test_fb_xrgb8888_to_argb1555  =============
[07:31:37] [PASSED] single_pixel_source_buffer
[07:31:37] [PASSED] single_pixel_clip_rectangle
[07:31:37] [PASSED] well_known_colors
[07:31:37] [PASSED] destination_pitch
[07:31:37] ======== [PASSED] drm_test_fb_xrgb8888_to_argb1555 =========
[07:31:37] ============ drm_test_fb_xrgb8888_to_rgba5551  =============
[07:31:37] [PASSED] single_pixel_source_buffer
[07:31:37] [PASSED] single_pixel_clip_rectangle
[07:31:37] [PASSED] well_known_colors
[07:31:37] [PASSED] destination_pitch
[07:31:37] ======== [PASSED] drm_test_fb_xrgb8888_to_rgba5551 =========
[07:31:37] ============= drm_test_fb_xrgb8888_to_rgb888  ==============
[07:31:37] [PASSED] single_pixel_source_buffer
[07:31:37] [PASSED] single_pixel_clip_rectangle
[07:31:37] [PASSED] well_known_colors
[07:31:37] [PASSED] destination_pitch
[07:31:37] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb888 ==========
[07:31:37] ============= drm_test_fb_xrgb8888_to_bgr888  ==============
[07:31:37] [PASSED] single_pixel_source_buffer
[07:31:37] [PASSED] single_pixel_clip_rectangle
[07:31:37] [PASSED] well_known_colors
[07:31:37] [PASSED] destination_pitch
[07:31:37] ========= [PASSED] drm_test_fb_xrgb8888_to_bgr888 ==========
[07:31:37] ============ drm_test_fb_xrgb8888_to_argb8888  =============
[07:31:37] [PASSED] single_pixel_source_buffer
[07:31:37] [PASSED] single_pixel_clip_rectangle
[07:31:37] [PASSED] well_known_colors
[07:31:37] [PASSED] destination_pitch
[07:31:37] ======== [PASSED] drm_test_fb_xrgb8888_to_argb8888 =========
[07:31:37] =========== drm_test_fb_xrgb8888_to_xrgb2101010  ===========
[07:31:37] [PASSED] single_pixel_source_buffer
[07:31:37] [PASSED] single_pixel_clip_rectangle
[07:31:37] [PASSED] well_known_colors
[07:31:37] [PASSED] destination_pitch
[07:31:37] ======= [PASSED] drm_test_fb_xrgb8888_to_xrgb2101010 =======
[07:31:37] =========== drm_test_fb_xrgb8888_to_argb2101010  ===========
[07:31:37] [PASSED] single_pixel_source_buffer
[07:31:37] [PASSED] single_pixel_clip_rectangle
[07:31:37] [PASSED] well_known_colors
[07:31:37] [PASSED] destination_pitch
[07:31:37] ======= [PASSED] drm_test_fb_xrgb8888_to_argb2101010 =======
[07:31:37] ============== drm_test_fb_xrgb8888_to_mono  ===============
[07:31:37] [PASSED] single_pixel_source_buffer
[07:31:37] [PASSED] single_pixel_clip_rectangle
[07:31:37] [PASSED] well_known_colors
[07:31:37] [PASSED] destination_pitch
[07:31:37] ========== [PASSED] drm_test_fb_xrgb8888_to_mono ===========
[07:31:37] ==================== drm_test_fb_swab  =====================
[07:31:37] [PASSED] single_pixel_source_buffer
[07:31:37] [PASSED] single_pixel_clip_rectangle
[07:31:37] [PASSED] well_known_colors
[07:31:37] [PASSED] destination_pitch
[07:31:37] ================ [PASSED] drm_test_fb_swab =================
[07:31:37] ============ drm_test_fb_xrgb8888_to_xbgr8888  =============
[07:31:37] [PASSED] single_pixel_source_buffer
[07:31:37] [PASSED] single_pixel_clip_rectangle
[07:31:37] [PASSED] well_known_colors
[07:31:37] [PASSED] destination_pitch
[07:31:37] ======== [PASSED] drm_test_fb_xrgb8888_to_xbgr8888 =========
[07:31:37] ============ drm_test_fb_xrgb8888_to_abgr8888  =============
[07:31:37] [PASSED] single_pixel_source_buffer
[07:31:37] [PASSED] single_pixel_clip_rectangle
[07:31:37] [PASSED] well_known_colors
[07:31:37] [PASSED] destination_pitch
[07:31:37] ======== [PASSED] drm_test_fb_xrgb8888_to_abgr8888 =========
[07:31:37] ================= drm_test_fb_clip_offset  =================
[07:31:37] [PASSED] pass through
[07:31:37] [PASSED] horizontal offset
[07:31:37] [PASSED] vertical offset
[07:31:37] [PASSED] horizontal and vertical offset
[07:31:37] [PASSED] horizontal offset (custom pitch)
[07:31:37] [PASSED] vertical offset (custom pitch)
[07:31:37] [PASSED] horizontal and vertical offset (custom pitch)
[07:31:37] ============= [PASSED] drm_test_fb_clip_offset =============
[07:31:37] =================== drm_test_fb_memcpy  ====================
[07:31:37] [PASSED] single_pixel_source_buffer: XR24 little-endian (0x34325258)
[07:31:37] [PASSED] single_pixel_source_buffer: XRA8 little-endian (0x38415258)
[07:31:37] [PASSED] single_pixel_source_buffer: YU24 little-endian (0x34325559)
[07:31:37] [PASSED] single_pixel_clip_rectangle: XB24 little-endian (0x34324258)
[07:31:37] [PASSED] single_pixel_clip_rectangle: XRA8 little-endian (0x38415258)
[07:31:37] [PASSED] single_pixel_clip_rectangle: YU24 little-endian (0x34325559)
[07:31:37] [PASSED] well_known_colors: XB24 little-endian (0x34324258)
[07:31:37] [PASSED] well_known_colors: XRA8 little-endian (0x38415258)
[07:31:37] [PASSED] well_known_colors: YU24 little-endian (0x34325559)
[07:31:37] [PASSED] destination_pitch: XB24 little-endian (0x34324258)
[07:31:37] [PASSED] destination_pitch: XRA8 little-endian (0x38415258)
[07:31:37] [PASSED] destination_pitch: YU24 little-endian (0x34325559)
[07:31:37] =============== [PASSED] drm_test_fb_memcpy ================
[07:31:37] ============= [PASSED] drm_format_helper_test ==============
[07:31:37] ================= drm_format (18 subtests) =================
[07:31:37] [PASSED] drm_test_format_block_width_invalid
[07:31:37] [PASSED] drm_test_format_block_width_one_plane
[07:31:37] [PASSED] drm_test_format_block_width_two_plane
[07:31:37] [PASSED] drm_test_format_block_width_three_plane
[07:31:37] [PASSED] drm_test_format_block_width_tiled
[07:31:37] [PASSED] drm_test_format_block_height_invalid
[07:31:37] [PASSED] drm_test_format_block_height_one_plane
[07:31:37] [PASSED] drm_test_format_block_height_two_plane
[07:31:37] [PASSED] drm_test_format_block_height_three_plane
[07:31:37] [PASSED] drm_test_format_block_height_tiled
[07:31:37] [PASSED] drm_test_format_min_pitch_invalid
[07:31:37] [PASSED] drm_test_format_min_pitch_one_plane_8bpp
[07:31:37] [PASSED] drm_test_format_min_pitch_one_plane_16bpp
[07:31:37] [PASSED] drm_test_format_min_pitch_one_plane_24bpp
[07:31:37] [PASSED] drm_test_format_min_pitch_one_plane_32bpp
[07:31:37] [PASSED] drm_test_format_min_pitch_two_plane
[07:31:37] [PASSED] drm_test_format_min_pitch_three_plane_8bpp
[07:31:37] [PASSED] drm_test_format_min_pitch_tiled
[07:31:37] =================== [PASSED] drm_format ====================
[07:31:37] ============== drm_framebuffer (10 subtests) ===============
[07:31:37] ========== drm_test_framebuffer_check_src_coords  ==========
[07:31:37] [PASSED] Success: source fits into fb
[07:31:37] [PASSED] Fail: overflowing fb with x-axis coordinate
[07:31:37] [PASSED] Fail: overflowing fb with y-axis coordinate
[07:31:37] [PASSED] Fail: overflowing fb with source width
[07:31:37] [PASSED] Fail: overflowing fb with source height
[07:31:37] ====== [PASSED] drm_test_framebuffer_check_src_coords ======
[07:31:37] [PASSED] drm_test_framebuffer_cleanup
[07:31:37] =============== drm_test_framebuffer_create  ===============
[07:31:37] [PASSED] ABGR8888 normal sizes
[07:31:37] [PASSED] ABGR8888 max sizes
[07:31:37] [PASSED] ABGR8888 pitch greater than min required
[07:31:37] [PASSED] ABGR8888 pitch less than min required
[07:31:37] [PASSED] ABGR8888 Invalid width
[07:31:37] [PASSED] ABGR8888 Invalid buffer handle
[07:31:37] [PASSED] No pixel format
[07:31:37] [PASSED] ABGR8888 Width 0
[07:31:37] [PASSED] ABGR8888 Height 0
[07:31:37] [PASSED] ABGR8888 Out of bound height * pitch combination
[07:31:37] [PASSED] ABGR8888 Large buffer offset
[07:31:37] [PASSED] ABGR8888 Buffer offset for inexistent plane
[07:31:37] [PASSED] ABGR8888 Invalid flag
[07:31:37] [PASSED] ABGR8888 Set DRM_MODE_FB_MODIFIERS without modifiers
[07:31:37] [PASSED] ABGR8888 Valid buffer modifier
[07:31:37] [PASSED] ABGR8888 Invalid buffer modifier(DRM_FORMAT_MOD_SAMSUNG_64_32_TILE)
[07:31:37] [PASSED] ABGR8888 Extra pitches without DRM_MODE_FB_MODIFIERS
[07:31:37] [PASSED] ABGR8888 Extra pitches with DRM_MODE_FB_MODIFIERS
[07:31:37] [PASSED] NV12 Normal sizes
[07:31:37] [PASSED] NV12 Max sizes
[07:31:37] [PASSED] NV12 Invalid pitch
[07:31:37] [PASSED] NV12 Invalid modifier/missing DRM_MODE_FB_MODIFIERS flag
[07:31:37] [PASSED] NV12 different  modifier per-plane
[07:31:37] [PASSED] NV12 with DRM_FORMAT_MOD_SAMSUNG_64_32_TILE
[07:31:37] [PASSED] NV12 Valid modifiers without DRM_MODE_FB_MODIFIERS
[07:31:37] [PASSED] NV12 Modifier for inexistent plane
[07:31:37] [PASSED] NV12 Handle for inexistent plane
[07:31:37] [PASSED] NV12 Handle for inexistent plane without DRM_MODE_FB_MODIFIERS
[07:31:37] [PASSED] YVU420 DRM_MODE_FB_MODIFIERS set without modifier
[07:31:37] [PASSED] YVU420 Normal sizes
[07:31:37] [PASSED] YVU420 Max sizes
[07:31:37] [PASSED] YVU420 Invalid pitch
[07:31:37] [PASSED] YVU420 Different pitches
[07:31:37] [PASSED] YVU420 Different buffer offsets/pitches
[07:31:37] [PASSED] YVU420 Modifier set just for plane 0, without DRM_MODE_FB_MODIFIERS
[07:31:37] [PASSED] YVU420 Modifier set just for planes 0, 1, without DRM_MODE_FB_MODIFIERS
[07:31:37] [PASSED] YVU420 Modifier set just for plane 0, 1, with DRM_MODE_FB_MODIFIERS
[07:31:37] [PASSED] YVU420 Valid modifier
[07:31:37] [PASSED] YVU420 Different modifiers per plane
[07:31:37] [PASSED] YVU420 Modifier for inexistent plane
[07:31:37] [PASSED] YUV420_10BIT Invalid modifier(DRM_FORMAT_MOD_LINEAR)
[07:31:37] [PASSED] X0L2 Normal sizes
[07:31:37] [PASSED] X0L2 Max sizes
[07:31:37] [PASSED] X0L2 Invalid pitch
[07:31:37] [PASSED] X0L2 Pitch greater than minimum required
[07:31:37] [PASSED] X0L2 Handle for inexistent plane
[07:31:37] [PASSED] X0L2 Offset for inexistent plane, without DRM_MODE_FB_MODIFIERS set
[07:31:37] [PASSED] X0L2 Modifier without DRM_MODE_FB_MODIFIERS set
[07:31:37] [PASSED] X0L2 Valid modifier
[07:31:37] [PASSED] X0L2 Modifier for inexistent plane
[07:31:37] =========== [PASSED] drm_test_framebuffer_create ===========
[07:31:37] [PASSED] drm_test_framebuffer_free
[07:31:37] [PASSED] drm_test_framebuffer_init
[07:31:37] [PASSED] drm_test_framebuffer_init_bad_format
[07:31:37] [PASSED] drm_test_framebuffer_init_dev_mismatch
[07:31:37] [PASSED] drm_test_framebuffer_lookup
[07:31:37] [PASSED] drm_test_framebuffer_lookup_inexistent
[07:31:37] [PASSED] drm_test_framebuffer_modifiers_not_supported
[07:31:37] ================= [PASSED] drm_framebuffer =================
[07:31:37] ================ drm_gem_shmem (8 subtests) ================
[07:31:37] [PASSED] drm_gem_shmem_test_obj_create
[07:31:37] [PASSED] drm_gem_shmem_test_obj_create_private
[07:31:37] [PASSED] drm_gem_shmem_test_pin_pages
[07:31:37] [PASSED] drm_gem_shmem_test_vmap
[07:31:37] [PASSED] drm_gem_shmem_test_get_pages_sgt
[07:31:37] [PASSED] drm_gem_shmem_test_get_sg_table
[07:31:37] [PASSED] drm_gem_shmem_test_madvise
[07:31:37] [PASSED] drm_gem_shmem_test_purge
[07:31:37] ================== [PASSED] drm_gem_shmem ==================
[07:31:37] === drm_atomic_helper_connector_hdmi_check (27 subtests) ===
[07:31:37] [PASSED] drm_test_check_broadcast_rgb_auto_cea_mode
[07:31:37] [PASSED] drm_test_check_broadcast_rgb_auto_cea_mode_vic_1
[07:31:37] [PASSED] drm_test_check_broadcast_rgb_full_cea_mode
[07:31:37] [PASSED] drm_test_check_broadcast_rgb_full_cea_mode_vic_1
[07:31:37] [PASSED] drm_test_check_broadcast_rgb_limited_cea_mode
[07:31:37] [PASSED] drm_test_check_broadcast_rgb_limited_cea_mode_vic_1
[07:31:37] ====== drm_test_check_broadcast_rgb_cea_mode_yuv420  =======
[07:31:37] [PASSED] Automatic
[07:31:37] [PASSED] Full
[07:31:37] [PASSED] Limited 16:235
[07:31:37] == [PASSED] drm_test_check_broadcast_rgb_cea_mode_yuv420 ===
[07:31:37] [PASSED] drm_test_check_broadcast_rgb_crtc_mode_changed
[07:31:37] [PASSED] drm_test_check_broadcast_rgb_crtc_mode_not_changed
[07:31:37] [PASSED] drm_test_check_disable_connector
[07:31:37] [PASSED] drm_test_check_hdmi_funcs_reject_rate
[07:31:37] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_rgb
[07:31:37] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_yuv420
[07:31:37] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_ignore_yuv422
[07:31:37] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_ignore_yuv420
[07:31:37] [PASSED] drm_test_check_driver_unsupported_fallback_yuv420
[07:31:37] [PASSED] drm_test_check_output_bpc_crtc_mode_changed
[07:31:37] [PASSED] drm_test_check_output_bpc_crtc_mode_not_changed
[07:31:37] [PASSED] drm_test_check_output_bpc_dvi
[07:31:37] [PASSED] drm_test_check_output_bpc_format_vic_1
[07:31:37] [PASSED] drm_test_check_output_bpc_format_display_8bpc_only
[07:31:37] [PASSED] drm_test_check_output_bpc_format_display_rgb_only
[07:31:37] [PASSED] drm_test_check_output_bpc_format_driver_8bpc_only
[07:31:37] [PASSED] drm_test_check_output_bpc_format_driver_rgb_only
[07:31:37] [PASSED] drm_test_check_tmds_char_rate_rgb_8bpc
[07:31:37] [PASSED] drm_test_check_tmds_char_rate_rgb_10bpc
[07:31:37] [PASSED] drm_test_check_tmds_char_rate_rgb_12bpc
[07:31:37] ===== [PASSED] drm_atomic_helper_connector_hdmi_check ======
[07:31:37] === drm_atomic_helper_connector_hdmi_reset (6 subtests) ====
[07:31:37] [PASSED] drm_test_check_broadcast_rgb_value
[07:31:37] [PASSED] drm_test_check_bpc_8_value
[07:31:37] [PASSED] drm_test_check_bpc_10_value
[07:31:37] [PASSED] drm_test_check_bpc_12_value
[07:31:37] [PASSED] drm_test_check_format_value
[07:31:37] [PASSED] drm_test_check_tmds_char_value
[07:31:37] ===== [PASSED] drm_atomic_helper_connector_hdmi_reset ======
[07:31:37] = drm_atomic_helper_connector_hdmi_mode_valid (4 subtests) =
[07:31:37] [PASSED] drm_test_check_mode_valid
[07:31:37] [PASSED] drm_test_check_mode_valid_reject
[07:31:37] [PASSED] drm_test_check_mode_valid_reject_rate
[07:31:37] [PASSED] drm_test_check_mode_valid_reject_max_clock
[07:31:37] === [PASSED] drm_atomic_helper_connector_hdmi_mode_valid ===
[07:31:37] ================= drm_managed (2 subtests) =================
[07:31:37] [PASSED] drm_test_managed_release_action
[07:31:37] [PASSED] drm_test_managed_run_action
[07:31:37] =================== [PASSED] drm_managed ===================
[07:31:37] =================== drm_mm (6 subtests) ====================
[07:31:37] [PASSED] drm_test_mm_init
[07:31:37] [PASSED] drm_test_mm_debug
[07:31:37] [PASSED] drm_test_mm_align32
[07:31:37] [PASSED] drm_test_mm_align64
[07:31:37] [PASSED] drm_test_mm_lowest
[07:31:37] [PASSED] drm_test_mm_highest
[07:31:37] ===================== [PASSED] drm_mm ======================
[07:31:37] ============= drm_modes_analog_tv (5 subtests) =============
[07:31:37] [PASSED] drm_test_modes_analog_tv_mono_576i
[07:31:37] [PASSED] drm_test_modes_analog_tv_ntsc_480i
[07:31:37] [PASSED] drm_test_modes_analog_tv_ntsc_480i_inlined
[07:31:37] [PASSED] drm_test_modes_analog_tv_pal_576i
[07:31:37] [PASSED] drm_test_modes_analog_tv_pal_576i_inlined
[07:31:37] =============== [PASSED] drm_modes_analog_tv ===============
[07:31:37] ============== drm_plane_helper (2 subtests) ===============
[07:31:37] =============== drm_test_check_plane_state  ================
[07:31:37] [PASSED] clipping_simple
[07:31:37] [PASSED] clipping_rotate_reflect
[07:31:37] [PASSED] positioning_simple
[07:31:37] [PASSED] upscaling
[07:31:37] [PASSED] downscaling
[07:31:37] [PASSED] rounding1
[07:31:37] [PASSED] rounding2
[07:31:37] [PASSED] rounding3
[07:31:37] [PASSED] rounding4
[07:31:37] =========== [PASSED] drm_test_check_plane_state ============
[07:31:37] =========== drm_test_check_invalid_plane_state  ============
[07:31:37] [PASSED] positioning_invalid
[07:31:37] [PASSED] upscaling_invalid
[07:31:37] [PASSED] downscaling_invalid
[07:31:37] ======= [PASSED] drm_test_check_invalid_plane_state ========
[07:31:37] ================ [PASSED] drm_plane_helper =================
[07:31:37] ====== drm_connector_helper_tv_get_modes (1 subtest) =======
[07:31:37] ====== drm_test_connector_helper_tv_get_modes_check  =======
[07:31:37] [PASSED] None
[07:31:37] [PASSED] PAL
[07:31:37] [PASSED] NTSC
[07:31:37] [PASSED] Both, NTSC Default
[07:31:37] [PASSED] Both, PAL Default
[07:31:37] [PASSED] Both, NTSC Default, with PAL on command-line
[07:31:37] [PASSED] Both, PAL Default, with NTSC on command-line
[07:31:37] == [PASSED] drm_test_connector_helper_tv_get_modes_check ===
[07:31:37] ======== [PASSED] drm_connector_helper_tv_get_modes ========
[07:31:37] ================== drm_rect (9 subtests) ===================
[07:31:37] [PASSED] drm_test_rect_clip_scaled_div_by_zero
[07:31:37] [PASSED] drm_test_rect_clip_scaled_not_clipped
[07:31:37] [PASSED] drm_test_rect_clip_scaled_clipped
[07:31:37] [PASSED] drm_test_rect_clip_scaled_signed_vs_unsigned
[07:31:37] ================= drm_test_rect_intersect  =================
[07:31:37] [PASSED] top-left x bottom-right: 2x2+1+1 x 2x2+0+0
[07:31:37] [PASSED] top-right x bottom-left: 2x2+0+0 x 2x2+1-1
[07:31:37] [PASSED] bottom-left x top-right: 2x2+1-1 x 2x2+0+0
[07:31:37] [PASSED] bottom-right x top-left: 2x2+0+0 x 2x2+1+1
[07:31:37] [PASSED] right x left: 2x1+0+0 x 3x1+1+0
[07:31:37] [PASSED] left x right: 3x1+1+0 x 2x1+0+0
[07:31:37] [PASSED] up x bottom: 1x2+0+0 x 1x3+0-1
[07:31:37] [PASSED] bottom x up: 1x3+0-1 x 1x2+0+0
[07:31:37] [PASSED] touching corner: 1x1+0+0 x 2x2+1+1
[07:31:37] [PASSED] touching side: 1x1+0+0 x 1x1+1+0
[07:31:37] [PASSED] equal rects: 2x2+0+0 x 2x2+0+0
[07:31:37] [PASSED] inside another: 2x2+0+0 x 1x1+1+1
[07:31:37] [PASSED] far away: 1x1+0+0 x 1x1+3+6
[07:31:37] [PASSED] points intersecting: 0x0+5+10 x 0x0+5+10
[07:31:37] [PASSED] points not intersecting: 0x0+0+0 x 0x0+5+10
[07:31:37] ============= [PASSED] drm_test_rect_intersect =============
[07:31:37] ================ drm_test_rect_calc_hscale  ================
[07:31:37] [PASSED] normal use
[07:31:37] [PASSED] out of max range
[07:31:37] [PASSED] out of min range
[07:31:37] [PASSED] zero dst
[07:31:37] [PASSED] negative src
[07:31:37] [PASSED] negative dst
[07:31:37] ============ [PASSED] drm_test_rect_calc_hscale ============
[07:31:37] ================ drm_test_rect_calc_vscale  ================
[07:31:37] [PASSED] normal use
[07:31:37] [PASSED] out of max range
[07:31:37] [PASSED] out of min range
[07:31:37] [PASSED] zero dst
[07:31:37] [PASSED] negative src
stty: 'standard input': Inappropriate ioctl for device
[07:31:37] [PASSED] negative dst
[07:31:37] ============ [PASSED] drm_test_rect_calc_vscale ============
[07:31:37] ================== drm_test_rect_rotate  ===================
[07:31:37] [PASSED] reflect-x
[07:31:37] [PASSED] reflect-y
[07:31:37] [PASSED] rotate-0
[07:31:37] [PASSED] rotate-90
[07:31:37] [PASSED] rotate-180
[07:31:37] [PASSED] rotate-270
[07:31:37] ============== [PASSED] drm_test_rect_rotate ===============
[07:31:37] ================ drm_test_rect_rotate_inv  =================
[07:31:37] [PASSED] reflect-x
[07:31:37] [PASSED] reflect-y
[07:31:37] [PASSED] rotate-0
[07:31:37] [PASSED] rotate-90
[07:31:37] [PASSED] rotate-180
[07:31:37] [PASSED] rotate-270
[07:31:37] ============ [PASSED] drm_test_rect_rotate_inv =============
[07:31:37] ==================== [PASSED] drm_rect =====================
[07:31:37] ============ drm_sysfb_modeset_test (1 subtest) ============
[07:31:37] ============ drm_test_sysfb_build_fourcc_list  =============
[07:31:37] [PASSED] no native formats
[07:31:37] [PASSED] XRGB8888 as native format
[07:31:37] [PASSED] remove duplicates
[07:31:37] [PASSED] convert alpha formats
[07:31:37] [PASSED] random formats
[07:31:37] ======== [PASSED] drm_test_sysfb_build_fourcc_list =========
[07:31:37] ============= [PASSED] drm_sysfb_modeset_test ==============
[07:31:37] ============================================================
[07:31:37] Testing complete. Ran 621 tests: passed: 621
[07:31:37] Elapsed time: 25.283s total, 1.729s configuring, 23.387s building, 0.155s running

+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/ttm/tests/.kunitconfig
[07:31:37] Configuring KUnit Kernel ...
Regenerating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[07:31:39] Building KUnit Kernel ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
Building with:
$ make all compile_commands.json scripts_gdb ARCH=um O=.kunit --jobs=48
[07:31:48] Starting KUnit Kernel (1/1)...
[07:31:48] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[07:31:48] ================= ttm_device (5 subtests) ==================
[07:31:48] [PASSED] ttm_device_init_basic
[07:31:48] [PASSED] ttm_device_init_multiple
[07:31:48] [PASSED] ttm_device_fini_basic
[07:31:48] [PASSED] ttm_device_init_no_vma_man
[07:31:48] ================== ttm_device_init_pools  ==================
[07:31:48] [PASSED] No DMA allocations, no DMA32 required
[07:31:48] [PASSED] DMA allocations, DMA32 required
[07:31:48] [PASSED] No DMA allocations, DMA32 required
[07:31:48] [PASSED] DMA allocations, no DMA32 required
[07:31:48] ============== [PASSED] ttm_device_init_pools ==============
[07:31:48] =================== [PASSED] ttm_device ====================
[07:31:48] ================== ttm_pool (8 subtests) ===================
[07:31:48] ================== ttm_pool_alloc_basic  ===================
[07:31:48] [PASSED] One page
[07:31:48] [PASSED] More than one page
[07:31:48] [PASSED] Above the allocation limit
[07:31:48] [PASSED] One page, with coherent DMA mappings enabled
[07:31:48] [PASSED] Above the allocation limit, with coherent DMA mappings enabled
[07:31:48] ============== [PASSED] ttm_pool_alloc_basic ===============
[07:31:48] ============== ttm_pool_alloc_basic_dma_addr  ==============
[07:31:48] [PASSED] One page
[07:31:48] [PASSED] More than one page
[07:31:48] [PASSED] Above the allocation limit
[07:31:48] [PASSED] One page, with coherent DMA mappings enabled
[07:31:48] [PASSED] Above the allocation limit, with coherent DMA mappings enabled
[07:31:48] ========== [PASSED] ttm_pool_alloc_basic_dma_addr ==========
[07:31:48] [PASSED] ttm_pool_alloc_order_caching_match
[07:31:48] [PASSED] ttm_pool_alloc_caching_mismatch
[07:31:48] [PASSED] ttm_pool_alloc_order_mismatch
[07:31:48] [PASSED] ttm_pool_free_dma_alloc
[07:31:48] [PASSED] ttm_pool_free_no_dma_alloc
[07:31:48] [PASSED] ttm_pool_fini_basic
[07:31:48] ==================== [PASSED] ttm_pool =====================
[07:31:48] ================ ttm_resource (8 subtests) =================
[07:31:48] ================= ttm_resource_init_basic  =================
[07:31:48] [PASSED] Init resource in TTM_PL_SYSTEM
[07:31:48] [PASSED] Init resource in TTM_PL_VRAM
[07:31:48] [PASSED] Init resource in a private placement
[07:31:48] [PASSED] Init resource in TTM_PL_SYSTEM, set placement flags
[07:31:48] ============= [PASSED] ttm_resource_init_basic =============
[07:31:48] [PASSED] ttm_resource_init_pinned
[07:31:48] [PASSED] ttm_resource_fini_basic
[07:31:48] [PASSED] ttm_resource_manager_init_basic
[07:31:48] [PASSED] ttm_resource_manager_usage_basic
[07:31:48] [PASSED] ttm_resource_manager_set_used_basic
[07:31:48] [PASSED] ttm_sys_man_alloc_basic
[07:31:48] [PASSED] ttm_sys_man_free_basic
[07:31:48] ================== [PASSED] ttm_resource ===================
[07:31:48] =================== ttm_tt (15 subtests) ===================
[07:31:48] ==================== ttm_tt_init_basic  ====================
[07:31:48] [PASSED] Page-aligned size
[07:31:48] [PASSED] Extra pages requested
[07:31:48] ================ [PASSED] ttm_tt_init_basic ================
[07:31:48] [PASSED] ttm_tt_init_misaligned
[07:31:48] [PASSED] ttm_tt_fini_basic
[07:31:48] [PASSED] ttm_tt_fini_sg
[07:31:48] [PASSED] ttm_tt_fini_shmem
[07:31:48] [PASSED] ttm_tt_create_basic
[07:31:48] [PASSED] ttm_tt_create_invalid_bo_type
[07:31:48] [PASSED] ttm_tt_create_ttm_exists
[07:31:48] [PASSED] ttm_tt_create_failed
[07:31:48] [PASSED] ttm_tt_destroy_basic
[07:31:48] [PASSED] ttm_tt_populate_null_ttm
[07:31:48] [PASSED] ttm_tt_populate_populated_ttm
[07:31:48] [PASSED] ttm_tt_unpopulate_basic
[07:31:48] [PASSED] ttm_tt_unpopulate_empty_ttm
[07:31:48] [PASSED] ttm_tt_swapin_basic
[07:31:48] ===================== [PASSED] ttm_tt ======================
[07:31:48] =================== ttm_bo (14 subtests) ===================
[07:31:48] =========== ttm_bo_reserve_optimistic_no_ticket  ===========
[07:31:48] [PASSED] Cannot be interrupted and sleeps
[07:31:48] [PASSED] Cannot be interrupted, locks straight away
[07:31:48] [PASSED] Can be interrupted, sleeps
[07:31:48] ======= [PASSED] ttm_bo_reserve_optimistic_no_ticket =======
[07:31:48] [PASSED] ttm_bo_reserve_locked_no_sleep
[07:31:48] [PASSED] ttm_bo_reserve_no_wait_ticket
[07:31:48] [PASSED] ttm_bo_reserve_double_resv
[07:31:48] [PASSED] ttm_bo_reserve_interrupted
[07:31:48] [PASSED] ttm_bo_reserve_deadlock
[07:31:48] [PASSED] ttm_bo_unreserve_basic
[07:31:48] [PASSED] ttm_bo_unreserve_pinned
[07:31:48] [PASSED] ttm_bo_unreserve_bulk
[07:31:48] [PASSED] ttm_bo_fini_basic
[07:31:48] [PASSED] ttm_bo_fini_shared_resv
[07:31:48] [PASSED] ttm_bo_pin_basic
[07:31:48] [PASSED] ttm_bo_pin_unpin_resource
[07:31:48] [PASSED] ttm_bo_multiple_pin_one_unpin
[07:31:48] ===================== [PASSED] ttm_bo ======================
[07:31:48] ============== ttm_bo_validate (21 subtests) ===============
[07:31:48] ============== ttm_bo_init_reserved_sys_man  ===============
[07:31:48] [PASSED] Buffer object for userspace
[07:31:48] [PASSED] Kernel buffer object
[07:31:48] [PASSED] Shared buffer object
[07:31:48] ========== [PASSED] ttm_bo_init_reserved_sys_man ===========
[07:31:48] ============== ttm_bo_init_reserved_mock_man  ==============
[07:31:48] [PASSED] Buffer object for userspace
[07:31:48] [PASSED] Kernel buffer object
[07:31:48] [PASSED] Shared buffer object
[07:31:48] ========== [PASSED] ttm_bo_init_reserved_mock_man ==========
[07:31:48] [PASSED] ttm_bo_init_reserved_resv
[07:31:48] ================== ttm_bo_validate_basic  ==================
[07:31:48] [PASSED] Buffer object for userspace
[07:31:48] [PASSED] Kernel buffer object
[07:31:48] [PASSED] Shared buffer object
[07:31:48] ============== [PASSED] ttm_bo_validate_basic ==============
[07:31:48] [PASSED] ttm_bo_validate_invalid_placement
[07:31:48] ============= ttm_bo_validate_same_placement  ==============
[07:31:48] [PASSED] System manager
[07:31:48] [PASSED] VRAM manager
[07:31:48] ========= [PASSED] ttm_bo_validate_same_placement ==========
[07:31:48] [PASSED] ttm_bo_validate_failed_alloc
[07:31:48] [PASSED] ttm_bo_validate_pinned
[07:31:48] [PASSED] ttm_bo_validate_busy_placement
[07:31:48] ================ ttm_bo_validate_multihop  =================
[07:31:48] [PASSED] Buffer object for userspace
[07:31:48] [PASSED] Kernel buffer object
[07:31:48] [PASSED] Shared buffer object
[07:31:48] ============ [PASSED] ttm_bo_validate_multihop =============
[07:31:48] ========== ttm_bo_validate_no_placement_signaled  ==========
[07:31:48] [PASSED] Buffer object in system domain, no page vector
[07:31:48] [PASSED] Buffer object in system domain with an existing page vector
[07:31:48] ====== [PASSED] ttm_bo_validate_no_placement_signaled ======
[07:31:48] ======== ttm_bo_validate_no_placement_not_signaled  ========
[07:31:48] [PASSED] Buffer object for userspace
[07:31:48] [PASSED] Kernel buffer object
[07:31:48] [PASSED] Shared buffer object
[07:31:48] ==== [PASSED] ttm_bo_validate_no_placement_not_signaled ====
[07:31:48] [PASSED] ttm_bo_validate_move_fence_signaled
[07:31:48] ========= ttm_bo_validate_move_fence_not_signaled  =========
[07:31:48] [PASSED] Waits for GPU
[07:31:48] [PASSED] Tries to lock straight away
[07:31:48] ===== [PASSED] ttm_bo_validate_move_fence_not_signaled =====
[07:31:48] [PASSED] ttm_bo_validate_happy_evict
[07:31:48] [PASSED] ttm_bo_validate_all_pinned_evict
[07:31:48] [PASSED] ttm_bo_validate_allowed_only_evict
[07:31:48] [PASSED] ttm_bo_validate_deleted_evict
[07:31:48] [PASSED] ttm_bo_validate_busy_domain_evict
[07:31:48] [PASSED] ttm_bo_validate_evict_gutting
[07:31:48] [PASSED] ttm_bo_validate_recrusive_evict
stty: 'standard input': Inappropriate ioctl for device
[07:31:48] ================= [PASSED] ttm_bo_validate =================
[07:31:48] ============================================================
[07:31:48] Testing complete. Ran 101 tests: passed: 101
[07:31:48] Elapsed time: 11.176s total, 1.767s configuring, 9.193s building, 0.185s running

+ cleanup
++ stat -c %u:%g /kernel
+ chown -R 1003:1003 /kernel



^ permalink raw reply	[flat|nested] 36+ messages in thread

* ✗ CI.checksparse: warning for Introduce drm sharpness property
  2025-10-01  6:34 [PATCH 00/10] Introduce drm sharpness property Nemesa Garg
                   ` (11 preceding siblings ...)
  2025-10-01  7:31 ` ✓ CI.KUnit: success " Patchwork
@ 2025-10-01  7:47 ` Patchwork
  2025-10-01  8:07 ` ✓ Xe.CI.BAT: success " Patchwork
                   ` (2 subsequent siblings)
  15 siblings, 0 replies; 36+ messages in thread
From: Patchwork @ 2025-10-01  7:47 UTC (permalink / raw)
  To: Nemesa Garg; +Cc: intel-xe

== Series Details ==

Series: Introduce drm sharpness property
URL   : https://patchwork.freedesktop.org/series/155272/
State : warning

== Summary ==

+ trap cleanup EXIT
+ KERNEL=/kernel
+ MT=/root/linux/maintainer-tools
+ git clone https://gitlab.freedesktop.org/drm/maintainer-tools /root/linux/maintainer-tools
Cloning into '/root/linux/maintainer-tools'...
warning: redirecting to https://gitlab.freedesktop.org/drm/maintainer-tools.git/
+ make -C /root/linux/maintainer-tools
make: Entering directory '/root/linux/maintainer-tools'
cc -O2 -g -Wextra -o remap-log remap-log.c
make: Leaving directory '/root/linux/maintainer-tools'
+ cd /kernel
+ git config --global --add safe.directory /kernel
+ /root/linux/maintainer-tools/dim sparse --fast bb42887c28cd6ede2c83547a9afc852a6aed3569
Sparse version: 0.6.4 (Ubuntu: 0.6.4-4ubuntu3)
Fast mode used, each commit won't be checked separately.
-
+drivers/gpu/drm/drm_drv.c:449:6: warning: context imbalance in 'drm_dev_enter' - different lock contexts for basic block
+drivers/gpu/drm/drm_drv.c: note: in included file (through include/linux/notifier.h, arch/x86/include/asm/uprobes.h, include/linux/uprobes.h, include/linux/mm_types.h, include/linux/mmzone.h, include/linux/gfp.h, ...):
+drivers/gpu/drm/drm_plane.c:213:24: warning: Using plain integer as NULL pointer
+drivers/gpu/drm/i915/display/intel_alpm.c: note: in included file:
+drivers/gpu/drm/i915/display/intel_casf.c:150:21: error: too long token expansion
+drivers/gpu/drm/i915/display/intel_cdclk.c: note: in included file:
+drivers/gpu/drm/i915/display/intel_ddi.c: note: in included file:
+drivers/gpu/drm/i915/display/intel_display_types.h:2041:24: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/display/intel_display_types.h:2041:24: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/display/intel_display_types.h:2041:24: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/display/intel_display_types.h:2041:24: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/display/intel_display_types.h:2041:24: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/display/intel_display_types.h:2041:24: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/display/intel_display_types.h:2041:24: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/display/intel_display_types.h:2041:24: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/display/intel_display_types.h:2041:24: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/display/intel_display_types.h:2041:24: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/display/intel_display_types.h:2041:24: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/display/intel_display_types.h:2041:24: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/display/intel_display_types.h:2041:24: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/display/intel_display_types.h:2041:24: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/display/intel_display_types.h:2041:24: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/display/intel_display_types.h:2041:24: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/display/intel_display_types.h:2054:24: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/display/intel_display_types.h:2054:24: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/display/intel_display_types.h:2054:24: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/display/intel_hdcp.c: note: in included file:
+drivers/gpu/drm/i915/display/intel_hotplug.c: note: in included file:
+drivers/gpu/drm/i915/display/intel_pps.c: note: in included file:
+drivers/gpu/drm/i915/display/intel_psr.c: note: in included file:
+drivers/gpu/drm/i915/intel_uncore.c:1928:1: warning: context imbalance in 'fwtable_read8' - unexpected unlock
+drivers/gpu/drm/i915/intel_uncore.c:1929:1: warning: context imbalance in 'fwtable_read16' - unexpected unlock
+drivers/gpu/drm/i915/intel_uncore.c:1930:1: warning: context imbalance in 'fwtable_read32' - unexpected unlock
+drivers/gpu/drm/i915/intel_uncore.c:1931:1: warning: context imbalance in 'fwtable_read64' - unexpected unlock
+drivers/gpu/drm/i915/intel_uncore.c:1996:1: warning: context imbalance in 'gen6_write8' - unexpected unlock
+drivers/gpu/drm/i915/intel_uncore.c:1997:1: warning: context imbalance in 'gen6_write16' - unexpected unlock
+drivers/gpu/drm/i915/intel_uncore.c:1998:1: warning: context imbalance in 'gen6_write32' - unexpected unlock
+drivers/gpu/drm/i915/intel_uncore.c:2018:1: warning: context imbalance in 'fwtable_write8' - unexpected unlock
+drivers/gpu/drm/i915/intel_uncore.c:2019:1: warning: context imbalance in 'fwtable_write16' - unexpected unlock
+drivers/gpu/drm/i915/intel_uncore.c:2020:1: warning: context imbalance in 'fwtable_write32' - unexpected unlock
+./include/linux/srcu.h:373:9: warning: context imbalance in 'drm_dev_exit' - unexpected unlock

+ cleanup
++ stat -c %u:%g /kernel
+ chown -R 1003:1003 /kernel



^ permalink raw reply	[flat|nested] 36+ messages in thread

* ✓ Xe.CI.BAT: success for Introduce drm sharpness property
  2025-10-01  6:34 [PATCH 00/10] Introduce drm sharpness property Nemesa Garg
                   ` (12 preceding siblings ...)
  2025-10-01  7:47 ` ✗ CI.checksparse: warning " Patchwork
@ 2025-10-01  8:07 ` Patchwork
  2025-10-01  9:21 ` ✗ Xe.CI.Full: failure " Patchwork
  2025-10-09 11:02 ` [PATCH 00/10] " Nautiyal, Ankit K
  15 siblings, 0 replies; 36+ messages in thread
From: Patchwork @ 2025-10-01  8:07 UTC (permalink / raw)
  To: Nemesa Garg; +Cc: intel-xe

[-- Attachment #1: Type: text/plain, Size: 993 bytes --]

== Series Details ==

Series: Introduce drm sharpness property
URL   : https://patchwork.freedesktop.org/series/155272/
State : success

== Summary ==

CI Bug Log - changes from xe-3850-23f8be57505c80e5b57dec249df8a3cc053eb947_BAT -> xe-pw-155272v1_BAT
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

  

Participating hosts (11 -> 11)
------------------------------

  No changes in participating hosts


Changes
-------

  No changes found


Build changes
-------------

  * IGT: IGT_8564 -> IGT_8565
  * Linux: xe-3850-23f8be57505c80e5b57dec249df8a3cc053eb947 -> xe-pw-155272v1

  IGT_8564: fd0f7b3639b26971567b7a9d64ba5174d5d3db5a @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
  IGT_8565: 8565
  xe-3850-23f8be57505c80e5b57dec249df8a3cc053eb947: 23f8be57505c80e5b57dec249df8a3cc053eb947
  xe-pw-155272v1: 155272v1

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/index.html

[-- Attachment #2: Type: text/html, Size: 1555 bytes --]

^ permalink raw reply	[flat|nested] 36+ messages in thread

* ✗ Xe.CI.Full: failure for Introduce drm sharpness property
  2025-10-01  6:34 [PATCH 00/10] Introduce drm sharpness property Nemesa Garg
                   ` (13 preceding siblings ...)
  2025-10-01  8:07 ` ✓ Xe.CI.BAT: success " Patchwork
@ 2025-10-01  9:21 ` Patchwork
  2025-10-09 11:02 ` [PATCH 00/10] " Nautiyal, Ankit K
  15 siblings, 0 replies; 36+ messages in thread
From: Patchwork @ 2025-10-01  9:21 UTC (permalink / raw)
  To: Nemesa Garg; +Cc: intel-xe

[-- Attachment #1: Type: text/plain, Size: 70410 bytes --]

== Series Details ==

Series: Introduce drm sharpness property
URL   : https://patchwork.freedesktop.org/series/155272/
State : failure

== Summary ==

CI Bug Log - changes from xe-3850-23f8be57505c80e5b57dec249df8a3cc053eb947_FULL -> xe-pw-155272v1_FULL
====================================================

Summary
-------

  **FAILURE**

  Serious unknown changes coming with xe-pw-155272v1_FULL absolutely need to be
  verified manually.
  
  If you think the reported changes have nothing to do with the changes
  introduced in xe-pw-155272v1_FULL, please notify your bug team (I915-ci-infra@lists.freedesktop.org) to allow them
  to document this new failure mode, which will reduce false positives in CI.

  

Participating hosts (4 -> 4)
------------------------------

  No changes in participating hosts

Possible new issues
-------------------

  Here are the unknown changes that may have been introduced in xe-pw-155272v1_FULL:

### IGT changes ###

#### Possible regressions ####

  * igt@xe_create@create-contexts:
    - shard-adlp:         [PASS][1] -> [FAIL][2]
   [1]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3850-23f8be57505c80e5b57dec249df8a3cc053eb947/shard-adlp-2/igt@xe_create@create-contexts.html
   [2]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-adlp-6/igt@xe_create@create-contexts.html

  * igt@xe_pm_residency@cpg-basic:
    - shard-dg2-set2:     [PASS][3] -> [TIMEOUT][4]
   [3]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3850-23f8be57505c80e5b57dec249df8a3cc053eb947/shard-dg2-466/igt@xe_pm_residency@cpg-basic.html
   [4]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-dg2-433/igt@xe_pm_residency@cpg-basic.html

  * igt@xe_sriov_flr@flr-twice:
    - shard-adlp:         [PASS][5] -> [SKIP][6]
   [5]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3850-23f8be57505c80e5b57dec249df8a3cc053eb947/shard-adlp-9/igt@xe_sriov_flr@flr-twice.html
   [6]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-adlp-6/igt@xe_sriov_flr@flr-twice.html

  
#### Suppressed ####

  The following results come from untrusted machines, tests, or statuses.
  They do not affect the overall result.

  * {igt@xe_exec_system_allocator@threads-many-execqueues-malloc-prefetch-madvise}:
    - shard-bmg:          [PASS][7] -> [INCOMPLETE][8]
   [7]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3850-23f8be57505c80e5b57dec249df8a3cc053eb947/shard-bmg-4/igt@xe_exec_system_allocator@threads-many-execqueues-malloc-prefetch-madvise.html
   [8]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-bmg-4/igt@xe_exec_system_allocator@threads-many-execqueues-malloc-prefetch-madvise.html

  
Known issues
------------

  Here are the changes found in xe-pw-155272v1_FULL that come from known issues:

### IGT changes ###

#### Issues hit ####

  * igt@kms_async_flips@async-flip-with-page-flip-events-linear-atomic@pipe-c-edp-1:
    - shard-lnl:          [PASS][9] -> [FAIL][10] ([Intel XE#6054]) +3 other tests fail
   [9]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3850-23f8be57505c80e5b57dec249df8a3cc053eb947/shard-lnl-3/igt@kms_async_flips@async-flip-with-page-flip-events-linear-atomic@pipe-c-edp-1.html
   [10]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-lnl-4/igt@kms_async_flips@async-flip-with-page-flip-events-linear-atomic@pipe-c-edp-1.html

  * igt@kms_async_flips@async-flip-with-page-flip-events-linear@pipe-c-edp-1:
    - shard-lnl:          [PASS][11] -> [FAIL][12] ([Intel XE#5993]) +3 other tests fail
   [11]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3850-23f8be57505c80e5b57dec249df8a3cc053eb947/shard-lnl-8/igt@kms_async_flips@async-flip-with-page-flip-events-linear@pipe-c-edp-1.html
   [12]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-lnl-4/igt@kms_async_flips@async-flip-with-page-flip-events-linear@pipe-c-edp-1.html

  * igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-180-hflip:
    - shard-lnl:          NOTRUN -> [SKIP][13] ([Intel XE#1407])
   [13]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-lnl-2/igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-180-hflip.html

  * igt@kms_big_fb@linear-16bpp-rotate-90:
    - shard-dg2-set2:     NOTRUN -> [SKIP][14] ([Intel XE#316])
   [14]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-dg2-432/igt@kms_big_fb@linear-16bpp-rotate-90.html

  * igt@kms_big_fb@y-tiled-16bpp-rotate-90:
    - shard-lnl:          NOTRUN -> [SKIP][15] ([Intel XE#1124]) +4 other tests skip
   [15]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-lnl-4/igt@kms_big_fb@y-tiled-16bpp-rotate-90.html
    - shard-adlp:         NOTRUN -> [SKIP][16] ([Intel XE#316])
   [16]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-adlp-6/igt@kms_big_fb@y-tiled-16bpp-rotate-90.html

  * igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-180-hflip:
    - shard-adlp:         NOTRUN -> [DMESG-FAIL][17] ([Intel XE#4543]) +1 other test dmesg-fail
   [17]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-adlp-8/igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-180-hflip.html
    - shard-bmg:          NOTRUN -> [SKIP][18] ([Intel XE#1124]) +2 other tests skip
   [18]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-bmg-8/igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-180-hflip.html

  * igt@kms_big_fb@yf-tiled-16bpp-rotate-0:
    - shard-dg2-set2:     NOTRUN -> [SKIP][19] ([Intel XE#1124]) +8 other tests skip
   [19]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-dg2-466/igt@kms_big_fb@yf-tiled-16bpp-rotate-0.html

  * igt@kms_big_fb@yf-tiled-8bpp-rotate-90:
    - shard-adlp:         NOTRUN -> [SKIP][20] ([Intel XE#1124])
   [20]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-adlp-9/igt@kms_big_fb@yf-tiled-8bpp-rotate-90.html

  * igt@kms_bw@connected-linear-tiling-4-displays-2160x1440p:
    - shard-lnl:          NOTRUN -> [SKIP][21] ([Intel XE#1512])
   [21]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-lnl-4/igt@kms_bw@connected-linear-tiling-4-displays-2160x1440p.html

  * igt@kms_bw@linear-tiling-2-displays-2160x1440p:
    - shard-dg2-set2:     NOTRUN -> [SKIP][22] ([Intel XE#367])
   [22]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-dg2-464/igt@kms_bw@linear-tiling-2-displays-2160x1440p.html

  * igt@kms_ccs@ccs-on-another-bo-4-tiled-mtl-rc-ccs-cc@pipe-d-dp-2:
    - shard-dg2-set2:     NOTRUN -> [SKIP][23] ([Intel XE#455] / [Intel XE#787]) +34 other tests skip
   [23]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-dg2-432/igt@kms_ccs@ccs-on-another-bo-4-tiled-mtl-rc-ccs-cc@pipe-d-dp-2.html

  * igt@kms_ccs@crc-primary-basic-4-tiled-dg2-rc-ccs-cc:
    - shard-bmg:          NOTRUN -> [SKIP][24] ([Intel XE#2887]) +1 other test skip
   [24]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-bmg-6/igt@kms_ccs@crc-primary-basic-4-tiled-dg2-rc-ccs-cc.html

  * igt@kms_ccs@crc-primary-basic-4-tiled-mtl-rc-ccs@pipe-b-hdmi-a-6:
    - shard-dg2-set2:     NOTRUN -> [SKIP][25] ([Intel XE#787]) +202 other tests skip
   [25]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-dg2-466/igt@kms_ccs@crc-primary-basic-4-tiled-mtl-rc-ccs@pipe-b-hdmi-a-6.html

  * igt@kms_ccs@crc-primary-suspend-4-tiled-mtl-rc-ccs:
    - shard-bmg:          NOTRUN -> [SKIP][26] ([Intel XE#3432])
   [26]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-bmg-6/igt@kms_ccs@crc-primary-suspend-4-tiled-mtl-rc-ccs.html
    - shard-lnl:          NOTRUN -> [SKIP][27] ([Intel XE#3432])
   [27]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-lnl-8/igt@kms_ccs@crc-primary-suspend-4-tiled-mtl-rc-ccs.html

  * igt@kms_ccs@crc-sprite-planes-basic-4-tiled-bmg-ccs:
    - shard-dg2-set2:     NOTRUN -> [SKIP][28] ([Intel XE#2907])
   [28]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-dg2-463/igt@kms_ccs@crc-sprite-planes-basic-4-tiled-bmg-ccs.html

  * igt@kms_ccs@crc-sprite-planes-basic-4-tiled-mtl-mc-ccs:
    - shard-lnl:          NOTRUN -> [SKIP][29] ([Intel XE#2887]) +2 other tests skip
   [29]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-lnl-1/igt@kms_ccs@crc-sprite-planes-basic-4-tiled-mtl-mc-ccs.html

  * igt@kms_ccs@random-ccs-data-4-tiled-dg2-mc-ccs@pipe-c-hdmi-a-6:
    - shard-dg2-set2:     [PASS][30] -> [INCOMPLETE][31] ([Intel XE#1727] / [Intel XE#3113])
   [30]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3850-23f8be57505c80e5b57dec249df8a3cc053eb947/shard-dg2-435/igt@kms_ccs@random-ccs-data-4-tiled-dg2-mc-ccs@pipe-c-hdmi-a-6.html
   [31]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-dg2-436/igt@kms_ccs@random-ccs-data-4-tiled-dg2-mc-ccs@pipe-c-hdmi-a-6.html

  * igt@kms_ccs@random-ccs-data-y-tiled-gen12-rc-ccs@pipe-c-hdmi-a-1:
    - shard-adlp:         NOTRUN -> [SKIP][32] ([Intel XE#787]) +5 other tests skip
   [32]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-adlp-2/igt@kms_ccs@random-ccs-data-y-tiled-gen12-rc-ccs@pipe-c-hdmi-a-1.html

  * igt@kms_ccs@random-ccs-data-y-tiled-gen12-rc-ccs@pipe-d-hdmi-a-1:
    - shard-adlp:         NOTRUN -> [SKIP][33] ([Intel XE#455] / [Intel XE#787]) +3 other tests skip
   [33]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-adlp-2/igt@kms_ccs@random-ccs-data-y-tiled-gen12-rc-ccs@pipe-d-hdmi-a-1.html

  * igt@kms_cdclk@mode-transition@pipe-a-dp-2:
    - shard-dg2-set2:     NOTRUN -> [SKIP][34] ([Intel XE#4417]) +3 other tests skip
   [34]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-dg2-432/igt@kms_cdclk@mode-transition@pipe-a-dp-2.html

  * igt@kms_chamelium_color@ctm-limited-range:
    - shard-dg2-set2:     NOTRUN -> [SKIP][35] ([Intel XE#306]) +2 other tests skip
   [35]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-dg2-466/igt@kms_chamelium_color@ctm-limited-range.html

  * igt@kms_chamelium_hpd@hdmi-hpd-for-each-pipe:
    - shard-dg2-set2:     NOTRUN -> [SKIP][36] ([Intel XE#373]) +4 other tests skip
   [36]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-dg2-432/igt@kms_chamelium_hpd@hdmi-hpd-for-each-pipe.html
    - shard-adlp:         NOTRUN -> [SKIP][37] ([Intel XE#373])
   [37]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-adlp-1/igt@kms_chamelium_hpd@hdmi-hpd-for-each-pipe.html
    - shard-bmg:          NOTRUN -> [SKIP][38] ([Intel XE#2252])
   [38]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-bmg-5/igt@kms_chamelium_hpd@hdmi-hpd-for-each-pipe.html

  * igt@kms_chamelium_hpd@hdmi-hpd-with-enabled-mode:
    - shard-lnl:          NOTRUN -> [SKIP][39] ([Intel XE#373]) +1 other test skip
   [39]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-lnl-5/igt@kms_chamelium_hpd@hdmi-hpd-with-enabled-mode.html

  * igt@kms_content_protection@dp-mst-type-1:
    - shard-bmg:          NOTRUN -> [SKIP][40] ([Intel XE#2390])
   [40]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-bmg-3/igt@kms_content_protection@dp-mst-type-1.html
    - shard-adlp:         NOTRUN -> [SKIP][41] ([Intel XE#307])
   [41]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-adlp-4/igt@kms_content_protection@dp-mst-type-1.html
    - shard-dg2-set2:     NOTRUN -> [SKIP][42] ([Intel XE#307])
   [42]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-dg2-463/igt@kms_content_protection@dp-mst-type-1.html
    - shard-lnl:          NOTRUN -> [SKIP][43] ([Intel XE#307])
   [43]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-lnl-4/igt@kms_content_protection@dp-mst-type-1.html

  * igt@kms_content_protection@legacy@pipe-a-dp-2:
    - shard-dg2-set2:     NOTRUN -> [FAIL][44] ([Intel XE#1178])
   [44]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-dg2-432/igt@kms_content_protection@legacy@pipe-a-dp-2.html

  * igt@kms_content_protection@uevent@pipe-a-dp-4:
    - shard-dg2-set2:     NOTRUN -> [FAIL][45] ([Intel XE#1188])
   [45]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-dg2-466/igt@kms_content_protection@uevent@pipe-a-dp-4.html

  * igt@kms_cursor_crc@cursor-onscreen-128x42:
    - shard-bmg:          NOTRUN -> [SKIP][46] ([Intel XE#2320])
   [46]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-bmg-4/igt@kms_cursor_crc@cursor-onscreen-128x42.html
    - shard-lnl:          NOTRUN -> [SKIP][47] ([Intel XE#1424])
   [47]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-lnl-8/igt@kms_cursor_crc@cursor-onscreen-128x42.html

  * igt@kms_cursor_crc@cursor-onscreen-512x512:
    - shard-lnl:          NOTRUN -> [SKIP][48] ([Intel XE#2321]) +2 other tests skip
   [48]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-lnl-4/igt@kms_cursor_crc@cursor-onscreen-512x512.html

  * igt@kms_cursor_crc@cursor-rapid-movement-512x512:
    - shard-dg2-set2:     NOTRUN -> [SKIP][49] ([Intel XE#308])
   [49]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-dg2-463/igt@kms_cursor_crc@cursor-rapid-movement-512x512.html
    - shard-adlp:         NOTRUN -> [SKIP][50] ([Intel XE#308])
   [50]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-adlp-9/igt@kms_cursor_crc@cursor-rapid-movement-512x512.html
    - shard-bmg:          NOTRUN -> [SKIP][51] ([Intel XE#2321])
   [51]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-bmg-5/igt@kms_cursor_crc@cursor-rapid-movement-512x512.html

  * igt@kms_cursor_legacy@basic-flip-after-cursor-atomic:
    - shard-adlp:         [PASS][52] -> [DMESG-WARN][53] ([Intel XE#2953] / [Intel XE#4173]) +3 other tests dmesg-warn
   [52]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3850-23f8be57505c80e5b57dec249df8a3cc053eb947/shard-adlp-1/igt@kms_cursor_legacy@basic-flip-after-cursor-atomic.html
   [53]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-adlp-8/igt@kms_cursor_legacy@basic-flip-after-cursor-atomic.html

  * igt@kms_cursor_legacy@cursora-vs-flipb-varying-size:
    - shard-bmg:          [PASS][54] -> [SKIP][55] ([Intel XE#2291]) +1 other test skip
   [54]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3850-23f8be57505c80e5b57dec249df8a3cc053eb947/shard-bmg-1/igt@kms_cursor_legacy@cursora-vs-flipb-varying-size.html
   [55]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-bmg-6/igt@kms_cursor_legacy@cursora-vs-flipb-varying-size.html

  * igt@kms_cursor_legacy@flip-vs-cursor-atomic:
    - shard-bmg:          [PASS][56] -> [FAIL][57] ([Intel XE#4633])
   [56]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3850-23f8be57505c80e5b57dec249df8a3cc053eb947/shard-bmg-8/igt@kms_cursor_legacy@flip-vs-cursor-atomic.html
   [57]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-bmg-8/igt@kms_cursor_legacy@flip-vs-cursor-atomic.html

  * igt@kms_dirtyfb@psr-dirtyfb-ioctl:
    - shard-bmg:          NOTRUN -> [SKIP][58] ([Intel XE#1508])
   [58]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-bmg-4/igt@kms_dirtyfb@psr-dirtyfb-ioctl.html

  * igt@kms_dither@fb-8bpc-vs-panel-6bpc@pipe-a-hdmi-a-6:
    - shard-dg2-set2:     NOTRUN -> [SKIP][59] ([Intel XE#4494] / [i915#3804])
   [59]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-dg2-435/igt@kms_dither@fb-8bpc-vs-panel-6bpc@pipe-a-hdmi-a-6.html

  * igt@kms_dp_link_training@uhbr-sst:
    - shard-dg2-set2:     NOTRUN -> [SKIP][60] ([Intel XE#4356])
   [60]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-dg2-435/igt@kms_dp_link_training@uhbr-sst.html

  * igt@kms_dsc@dsc-fractional-bpp-with-bpc:
    - shard-lnl:          NOTRUN -> [SKIP][61] ([Intel XE#2244])
   [61]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-lnl-8/igt@kms_dsc@dsc-fractional-bpp-with-bpc.html

  * igt@kms_fbcon_fbt@psr:
    - shard-dg2-set2:     NOTRUN -> [SKIP][62] ([Intel XE#776])
   [62]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-dg2-435/igt@kms_fbcon_fbt@psr.html

  * igt@kms_flip@2x-flip-vs-dpms:
    - shard-bmg:          [PASS][63] -> [SKIP][64] ([Intel XE#2316]) +2 other tests skip
   [63]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3850-23f8be57505c80e5b57dec249df8a3cc053eb947/shard-bmg-3/igt@kms_flip@2x-flip-vs-dpms.html
   [64]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-bmg-6/igt@kms_flip@2x-flip-vs-dpms.html

  * igt@kms_flip@2x-modeset-vs-vblank-race:
    - shard-adlp:         NOTRUN -> [SKIP][65] ([Intel XE#310])
   [65]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-adlp-8/igt@kms_flip@2x-modeset-vs-vblank-race.html
    - shard-lnl:          NOTRUN -> [SKIP][66] ([Intel XE#1421]) +2 other tests skip
   [66]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-lnl-7/igt@kms_flip@2x-modeset-vs-vblank-race.html

  * igt@kms_flip@flip-vs-expired-vblank-interruptible:
    - shard-lnl:          [PASS][67] -> [FAIL][68] ([Intel XE#301] / [Intel XE#3149])
   [67]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3850-23f8be57505c80e5b57dec249df8a3cc053eb947/shard-lnl-5/igt@kms_flip@flip-vs-expired-vblank-interruptible.html
   [68]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-lnl-5/igt@kms_flip@flip-vs-expired-vblank-interruptible.html

  * igt@kms_flip@flip-vs-expired-vblank-interruptible@c-edp1:
    - shard-lnl:          [PASS][69] -> [FAIL][70] ([Intel XE#301])
   [69]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3850-23f8be57505c80e5b57dec249df8a3cc053eb947/shard-lnl-5/igt@kms_flip@flip-vs-expired-vblank-interruptible@c-edp1.html
   [70]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-lnl-5/igt@kms_flip@flip-vs-expired-vblank-interruptible@c-edp1.html

  * igt@kms_flip@flip-vs-expired-vblank@b-hdmi-a1:
    - shard-adlp:         [PASS][71] -> [DMESG-WARN][72] ([Intel XE#4543]) +3 other tests dmesg-warn
   [71]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3850-23f8be57505c80e5b57dec249df8a3cc053eb947/shard-adlp-4/igt@kms_flip@flip-vs-expired-vblank@b-hdmi-a1.html
   [72]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-adlp-1/igt@kms_flip@flip-vs-expired-vblank@b-hdmi-a1.html

  * igt@kms_flip_scaled_crc@flip-64bpp-linear-to-32bpp-linear-downscaling:
    - shard-lnl:          NOTRUN -> [SKIP][73] ([Intel XE#1397] / [Intel XE#1745])
   [73]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-lnl-2/igt@kms_flip_scaled_crc@flip-64bpp-linear-to-32bpp-linear-downscaling.html

  * igt@kms_flip_scaled_crc@flip-64bpp-linear-to-32bpp-linear-downscaling@pipe-a-default-mode:
    - shard-lnl:          NOTRUN -> [SKIP][74] ([Intel XE#1397])
   [74]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-lnl-2/igt@kms_flip_scaled_crc@flip-64bpp-linear-to-32bpp-linear-downscaling@pipe-a-default-mode.html

  * igt@kms_flip_tiling@flip-change-tiling@pipe-b-hdmi-a-1-x-to-y:
    - shard-adlp:         [PASS][75] -> [DMESG-FAIL][76] ([Intel XE#4543])
   [75]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3850-23f8be57505c80e5b57dec249df8a3cc053eb947/shard-adlp-6/igt@kms_flip_tiling@flip-change-tiling@pipe-b-hdmi-a-1-x-to-y.html
   [76]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-adlp-1/igt@kms_flip_tiling@flip-change-tiling@pipe-b-hdmi-a-1-x-to-y.html

  * igt@kms_frontbuffer_tracking@drrs-1p-primscrn-pri-indfb-draw-mmap-wc:
    - shard-lnl:          NOTRUN -> [SKIP][77] ([Intel XE#651]) +2 other tests skip
   [77]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-lnl-8/igt@kms_frontbuffer_tracking@drrs-1p-primscrn-pri-indfb-draw-mmap-wc.html

  * igt@kms_frontbuffer_tracking@drrs-2p-scndscrn-cur-indfb-onoff:
    - shard-dg2-set2:     NOTRUN -> [SKIP][78] ([Intel XE#651]) +17 other tests skip
   [78]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-dg2-464/igt@kms_frontbuffer_tracking@drrs-2p-scndscrn-cur-indfb-onoff.html

  * igt@kms_frontbuffer_tracking@fbc-2p-primscrn-spr-indfb-draw-mmap-wc:
    - shard-lnl:          NOTRUN -> [SKIP][79] ([Intel XE#656]) +12 other tests skip
   [79]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-lnl-2/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-spr-indfb-draw-mmap-wc.html
    - shard-bmg:          NOTRUN -> [SKIP][80] ([Intel XE#5390]) +1 other test skip
   [80]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-bmg-7/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-spr-indfb-draw-mmap-wc.html

  * igt@kms_frontbuffer_tracking@fbcdrrs-modesetfrombusy:
    - shard-bmg:          NOTRUN -> [SKIP][81] ([Intel XE#2311]) +7 other tests skip
   [81]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-bmg-5/igt@kms_frontbuffer_tracking@fbcdrrs-modesetfrombusy.html
    - shard-adlp:         NOTRUN -> [SKIP][82] ([Intel XE#651]) +1 other test skip
   [82]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-adlp-9/igt@kms_frontbuffer_tracking@fbcdrrs-modesetfrombusy.html

  * igt@kms_frontbuffer_tracking@fbcdrrs-tiling-y:
    - shard-dg2-set2:     NOTRUN -> [SKIP][83] ([Intel XE#658])
   [83]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-dg2-464/igt@kms_frontbuffer_tracking@fbcdrrs-tiling-y.html

  * igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-cur-indfb-onoff:
    - shard-adlp:         NOTRUN -> [SKIP][84] ([Intel XE#653]) +2 other tests skip
   [84]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-adlp-8/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-cur-indfb-onoff.html
    - shard-bmg:          NOTRUN -> [SKIP][85] ([Intel XE#2313]) +6 other tests skip
   [85]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-bmg-4/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-cur-indfb-onoff.html

  * igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-indfb-pgflip-blt:
    - shard-adlp:         NOTRUN -> [SKIP][86] ([Intel XE#656]) +8 other tests skip
   [86]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-adlp-1/igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-indfb-pgflip-blt.html

  * igt@kms_frontbuffer_tracking@psr-2p-primscrn-shrfb-plflip-blt:
    - shard-dg2-set2:     NOTRUN -> [SKIP][87] ([Intel XE#653]) +21 other tests skip
   [87]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-dg2-466/igt@kms_frontbuffer_tracking@psr-2p-primscrn-shrfb-plflip-blt.html

  * igt@kms_pipe_stress@stress-xrgb8888-ytiled:
    - shard-dg2-set2:     NOTRUN -> [SKIP][88] ([Intel XE#4359])
   [88]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-dg2-434/igt@kms_pipe_stress@stress-xrgb8888-ytiled.html

  * igt@kms_plane_cursor@primary@pipe-a-hdmi-a-6-size-256:
    - shard-dg2-set2:     NOTRUN -> [FAIL][89] ([Intel XE#616]) +2 other tests fail
   [89]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-dg2-464/igt@kms_plane_cursor@primary@pipe-a-hdmi-a-6-size-256.html

  * igt@kms_plane_multiple@2x-tiling-x:
    - shard-bmg:          NOTRUN -> [SKIP][90] ([Intel XE#4596])
   [90]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-bmg-6/igt@kms_plane_multiple@2x-tiling-x.html

  * igt@kms_plane_scaling@plane-downscale-factor-0-5-with-modifiers:
    - shard-lnl:          NOTRUN -> [SKIP][91] ([Intel XE#2763]) +3 other tests skip
   [91]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-lnl-3/igt@kms_plane_scaling@plane-downscale-factor-0-5-with-modifiers.html

  * igt@kms_pm_backlight@brightness-with-dpms:
    - shard-dg2-set2:     NOTRUN -> [SKIP][92] ([Intel XE#2938])
   [92]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-dg2-435/igt@kms_pm_backlight@brightness-with-dpms.html

  * igt@kms_pm_backlight@fade-with-dpms:
    - shard-dg2-set2:     NOTRUN -> [SKIP][93] ([Intel XE#870])
   [93]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-dg2-432/igt@kms_pm_backlight@fade-with-dpms.html

  * igt@kms_pm_dc@dc3co-vpb-simulation:
    - shard-bmg:          NOTRUN -> [SKIP][94] ([Intel XE#2391])
   [94]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-bmg-8/igt@kms_pm_dc@dc3co-vpb-simulation.html
    - shard-adlp:         NOTRUN -> [SKIP][95] ([Intel XE#1122])
   [95]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-adlp-8/igt@kms_pm_dc@dc3co-vpb-simulation.html
    - shard-dg2-set2:     NOTRUN -> [SKIP][96] ([Intel XE#1122])
   [96]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-dg2-463/igt@kms_pm_dc@dc3co-vpb-simulation.html
    - shard-lnl:          NOTRUN -> [SKIP][97] ([Intel XE#736])
   [97]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-lnl-7/igt@kms_pm_dc@dc3co-vpb-simulation.html

  * igt@kms_pm_dc@dc6-psr:
    - shard-lnl:          [PASS][98] -> [FAIL][99] ([Intel XE#718]) +1 other test fail
   [98]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3850-23f8be57505c80e5b57dec249df8a3cc053eb947/shard-lnl-1/igt@kms_pm_dc@dc6-psr.html
   [99]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-lnl-5/igt@kms_pm_dc@dc6-psr.html

  * igt@kms_psr2_sf@fbc-psr2-overlay-plane-update-sf-dmg-area:
    - shard-adlp:         NOTRUN -> [SKIP][100] ([Intel XE#1406] / [Intel XE#1489])
   [100]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-adlp-4/igt@kms_psr2_sf@fbc-psr2-overlay-plane-update-sf-dmg-area.html
    - shard-bmg:          NOTRUN -> [SKIP][101] ([Intel XE#1406] / [Intel XE#1489])
   [101]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-bmg-2/igt@kms_psr2_sf@fbc-psr2-overlay-plane-update-sf-dmg-area.html
    - shard-lnl:          NOTRUN -> [SKIP][102] ([Intel XE#1406] / [Intel XE#2893] / [Intel XE#4608])
   [102]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-lnl-5/igt@kms_psr2_sf@fbc-psr2-overlay-plane-update-sf-dmg-area.html

  * igt@kms_psr2_sf@fbc-psr2-overlay-plane-update-sf-dmg-area@pipe-a-edp-1:
    - shard-lnl:          NOTRUN -> [SKIP][103] ([Intel XE#1406] / [Intel XE#4608]) +1 other test skip
   [103]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-lnl-5/igt@kms_psr2_sf@fbc-psr2-overlay-plane-update-sf-dmg-area@pipe-a-edp-1.html

  * igt@kms_psr2_sf@psr2-overlay-plane-move-continuous-exceed-fully-sf:
    - shard-dg2-set2:     NOTRUN -> [SKIP][104] ([Intel XE#1406] / [Intel XE#1489]) +4 other tests skip
   [104]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-dg2-435/igt@kms_psr2_sf@psr2-overlay-plane-move-continuous-exceed-fully-sf.html

  * igt@kms_psr2_su@page_flip-nv12:
    - shard-dg2-set2:     NOTRUN -> [SKIP][105] ([Intel XE#1122] / [Intel XE#1406])
   [105]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-dg2-466/igt@kms_psr2_su@page_flip-nv12.html

  * igt@kms_psr@fbc-psr2-sprite-render:
    - shard-adlp:         NOTRUN -> [SKIP][106] ([Intel XE#1406] / [Intel XE#2850] / [Intel XE#929]) +1 other test skip
   [106]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-adlp-4/igt@kms_psr@fbc-psr2-sprite-render.html
    - shard-bmg:          NOTRUN -> [SKIP][107] ([Intel XE#1406] / [Intel XE#2234] / [Intel XE#2850]) +1 other test skip
   [107]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-bmg-3/igt@kms_psr@fbc-psr2-sprite-render.html
    - shard-lnl:          NOTRUN -> [SKIP][108] ([Intel XE#1406])
   [108]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-lnl-4/igt@kms_psr@fbc-psr2-sprite-render.html

  * igt@kms_psr@fbc-psr2-sprite-render@edp-1:
    - shard-lnl:          NOTRUN -> [SKIP][109] ([Intel XE#1406] / [Intel XE#4609])
   [109]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-lnl-4/igt@kms_psr@fbc-psr2-sprite-render@edp-1.html

  * igt@kms_psr@psr2-sprite-plane-move:
    - shard-dg2-set2:     NOTRUN -> [SKIP][110] ([Intel XE#1406] / [Intel XE#2850] / [Intel XE#929]) +6 other tests skip
   [110]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-dg2-464/igt@kms_psr@psr2-sprite-plane-move.html

  * igt@kms_rotation_crc@primary-rotation-270:
    - shard-lnl:          NOTRUN -> [SKIP][111] ([Intel XE#3414] / [Intel XE#3904]) +1 other test skip
   [111]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-lnl-1/igt@kms_rotation_crc@primary-rotation-270.html

  * igt@kms_rotation_crc@primary-yf-tiled-reflect-x-90:
    - shard-dg2-set2:     NOTRUN -> [SKIP][112] ([Intel XE#3414])
   [112]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-dg2-466/igt@kms_rotation_crc@primary-yf-tiled-reflect-x-90.html

  * igt@kms_scaling_modes@scaling-mode-center:
    - shard-adlp:         NOTRUN -> [SKIP][113] ([Intel XE#455]) +1 other test skip
   [113]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-adlp-3/igt@kms_scaling_modes@scaling-mode-center.html
    - shard-bmg:          NOTRUN -> [SKIP][114] ([Intel XE#2413])
   [114]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-bmg-7/igt@kms_scaling_modes@scaling-mode-center.html

  * igt@kms_vrr@flipline:
    - shard-dg2-set2:     NOTRUN -> [SKIP][115] ([Intel XE#455]) +15 other tests skip
   [115]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-dg2-434/igt@kms_vrr@flipline.html

  * igt@kms_vrr@negative-basic:
    - shard-bmg:          [PASS][116] -> [SKIP][117] ([Intel XE#1499])
   [116]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3850-23f8be57505c80e5b57dec249df8a3cc053eb947/shard-bmg-2/igt@kms_vrr@negative-basic.html
   [117]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-bmg-6/igt@kms_vrr@negative-basic.html

  * igt@sriov_basic@enable-vfs-autoprobe-off:
    - shard-dg2-set2:     NOTRUN -> [SKIP][118] ([Intel XE#1091] / [Intel XE#2849])
   [118]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-dg2-464/igt@sriov_basic@enable-vfs-autoprobe-off.html
    - shard-lnl:          NOTRUN -> [SKIP][119] ([Intel XE#1091] / [Intel XE#2849])
   [119]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-lnl-1/igt@sriov_basic@enable-vfs-autoprobe-off.html

  * igt@xe_compute_preempt@compute-preempt:
    - shard-dg2-set2:     NOTRUN -> [SKIP][120] ([Intel XE#1280] / [Intel XE#455]) +1 other test skip
   [120]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-dg2-432/igt@xe_compute_preempt@compute-preempt.html

  * igt@xe_compute_preempt@compute-preempt-many:
    - shard-adlp:         NOTRUN -> [SKIP][121] ([Intel XE#455] / [Intel XE#5632])
   [121]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-adlp-4/igt@xe_compute_preempt@compute-preempt-many.html
    - shard-dg2-set2:     NOTRUN -> [FAIL][122] ([Intel XE#5890]) +1 other test fail
   [122]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-dg2-434/igt@xe_compute_preempt@compute-preempt-many.html

  * igt@xe_eu_stall@invalid-event-report-count:
    - shard-dg2-set2:     NOTRUN -> [SKIP][123] ([Intel XE#5626]) +1 other test skip
   [123]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-dg2-436/igt@xe_eu_stall@invalid-event-report-count.html

  * igt@xe_eu_stall@invalid-sampling-rate:
    - shard-adlp:         NOTRUN -> [SKIP][124] ([Intel XE#5626])
   [124]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-adlp-1/igt@xe_eu_stall@invalid-sampling-rate.html

  * igt@xe_eudebug@basic-vm-access:
    - shard-dg2-set2:     NOTRUN -> [SKIP][125] ([Intel XE#4837]) +4 other tests skip
   [125]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-dg2-432/igt@xe_eudebug@basic-vm-access.html

  * igt@xe_eudebug@basic-vm-bind-ufence-delay-ack:
    - shard-lnl:          NOTRUN -> [SKIP][126] ([Intel XE#4837]) +3 other tests skip
   [126]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-lnl-7/igt@xe_eudebug@basic-vm-bind-ufence-delay-ack.html

  * igt@xe_eudebug_online@interrupt-all:
    - shard-bmg:          NOTRUN -> [SKIP][127] ([Intel XE#4837]) +2 other tests skip
   [127]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-bmg-3/igt@xe_eudebug_online@interrupt-all.html
    - shard-adlp:         NOTRUN -> [SKIP][128] ([Intel XE#4837] / [Intel XE#5565]) +1 other test skip
   [128]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-adlp-4/igt@xe_eudebug_online@interrupt-all.html

  * igt@xe_eudebug_sriov@deny-eudebug:
    - shard-dg2-set2:     NOTRUN -> [SKIP][129] ([Intel XE#4518])
   [129]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-dg2-463/igt@xe_eudebug_sriov@deny-eudebug.html

  * igt@xe_evict@evict-beng-large-cm:
    - shard-lnl:          NOTRUN -> [SKIP][130] ([Intel XE#688])
   [130]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-lnl-5/igt@xe_evict@evict-beng-large-cm.html
    - shard-adlp:         NOTRUN -> [SKIP][131] ([Intel XE#261] / [Intel XE#5564])
   [131]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-adlp-4/igt@xe_evict@evict-beng-large-cm.html

  * igt@xe_exec_basic@multigpu-no-exec-basic-defer-mmap:
    - shard-dg2-set2:     NOTRUN -> [SKIP][132] ([Intel XE#1392])
   [132]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-dg2-432/igt@xe_exec_basic@multigpu-no-exec-basic-defer-mmap.html

  * igt@xe_exec_basic@multigpu-no-exec-userptr:
    - shard-lnl:          NOTRUN -> [SKIP][133] ([Intel XE#1392])
   [133]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-lnl-1/igt@xe_exec_basic@multigpu-no-exec-userptr.html
    - shard-adlp:         NOTRUN -> [SKIP][134] ([Intel XE#1392] / [Intel XE#5575])
   [134]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-adlp-2/igt@xe_exec_basic@multigpu-no-exec-userptr.html
    - shard-bmg:          NOTRUN -> [SKIP][135] ([Intel XE#2322])
   [135]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-bmg-5/igt@xe_exec_basic@multigpu-no-exec-userptr.html

  * igt@xe_exec_basic@multigpu-once-null:
    - shard-dg2-set2:     [PASS][136] -> [SKIP][137] ([Intel XE#1392]) +4 other tests skip
   [136]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3850-23f8be57505c80e5b57dec249df8a3cc053eb947/shard-dg2-464/igt@xe_exec_basic@multigpu-once-null.html
   [137]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-dg2-432/igt@xe_exec_basic@multigpu-once-null.html

  * igt@xe_exec_fault_mode@many-bindexecqueue-userptr-rebind-imm:
    - shard-dg2-set2:     NOTRUN -> [SKIP][138] ([Intel XE#288]) +20 other tests skip
   [138]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-dg2-435/igt@xe_exec_fault_mode@many-bindexecqueue-userptr-rebind-imm.html

  * igt@xe_exec_fault_mode@twice-bindexecqueue-userptr-prefetch:
    - shard-adlp:         NOTRUN -> [SKIP][139] ([Intel XE#288] / [Intel XE#5561]) +5 other tests skip
   [139]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-adlp-9/igt@xe_exec_fault_mode@twice-bindexecqueue-userptr-prefetch.html

  * igt@xe_exec_mix_modes@exec-simple-batch-store-lr:
    - shard-dg2-set2:     NOTRUN -> [SKIP][140] ([Intel XE#2360]) +1 other test skip
   [140]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-dg2-434/igt@xe_exec_mix_modes@exec-simple-batch-store-lr.html

  * igt@xe_exec_system_allocator@threads-many-stride-new-nomemset:
    - shard-dg2-set2:     NOTRUN -> [SKIP][141] ([Intel XE#4915]) +163 other tests skip
   [141]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-dg2-466/igt@xe_exec_system_allocator@threads-many-stride-new-nomemset.html

  * igt@xe_exec_system_allocator@threads-shared-vm-many-large-mmap-new-race-nomemset:
    - shard-adlp:         NOTRUN -> [SKIP][142] ([Intel XE#4915]) +35 other tests skip
   [142]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-adlp-3/igt@xe_exec_system_allocator@threads-shared-vm-many-large-mmap-new-race-nomemset.html

  * igt@xe_exec_system_allocator@threads-shared-vm-many-stride-mmap-new-huge:
    - shard-bmg:          NOTRUN -> [SKIP][143] ([Intel XE#4943])
   [143]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-bmg-8/igt@xe_exec_system_allocator@threads-shared-vm-many-stride-mmap-new-huge.html
    - shard-lnl:          NOTRUN -> [SKIP][144] ([Intel XE#4943])
   [144]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-lnl-1/igt@xe_exec_system_allocator@threads-shared-vm-many-stride-mmap-new-huge.html

  * igt@xe_exec_threads@threads-bal-mixed-fd-userptr-invalidate-race:
    - shard-bmg:          NOTRUN -> [DMESG-FAIL][145] ([Intel XE#3876])
   [145]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-bmg-4/igt@xe_exec_threads@threads-bal-mixed-fd-userptr-invalidate-race.html

  * igt@xe_exec_threads@threads-fd-userptr:
    - shard-bmg:          [PASS][146] -> [DMESG-FAIL][147] ([Intel XE#3876])
   [146]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3850-23f8be57505c80e5b57dec249df8a3cc053eb947/shard-bmg-5/igt@xe_exec_threads@threads-fd-userptr.html
   [147]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-bmg-4/igt@xe_exec_threads@threads-fd-userptr.html

  * igt@xe_fault_injection@probe-fail-guc-xe_guc_mmio_send_recv:
    - shard-dg2-set2:     [PASS][148] -> [DMESG-WARN][149] ([Intel XE#5893])
   [148]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3850-23f8be57505c80e5b57dec249df8a3cc053eb947/shard-dg2-464/igt@xe_fault_injection@probe-fail-guc-xe_guc_mmio_send_recv.html
   [149]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-dg2-433/igt@xe_fault_injection@probe-fail-guc-xe_guc_mmio_send_recv.html

  * igt@xe_huc_copy@huc_copy:
    - shard-dg2-set2:     NOTRUN -> [SKIP][150] ([Intel XE#255])
   [150]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-dg2-435/igt@xe_huc_copy@huc_copy.html

  * igt@xe_media_fill@media-fill:
    - shard-dg2-set2:     NOTRUN -> [SKIP][151] ([Intel XE#560])
   [151]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-dg2-463/igt@xe_media_fill@media-fill.html

  * igt@xe_oa@closed-fd-and-unmapped-access:
    - shard-dg2-set2:     NOTRUN -> [SKIP][152] ([Intel XE#3573]) +4 other tests skip
   [152]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-dg2-436/igt@xe_oa@closed-fd-and-unmapped-access.html

  * igt@xe_pm@d3cold-basic-exec:
    - shard-dg2-set2:     NOTRUN -> [SKIP][153] ([Intel XE#2284] / [Intel XE#366]) +2 other tests skip
   [153]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-dg2-464/igt@xe_pm@d3cold-basic-exec.html
    - shard-lnl:          NOTRUN -> [SKIP][154] ([Intel XE#2284] / [Intel XE#366])
   [154]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-lnl-7/igt@xe_pm@d3cold-basic-exec.html
    - shard-adlp:         NOTRUN -> [SKIP][155] ([Intel XE#2284] / [Intel XE#366])
   [155]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-adlp-2/igt@xe_pm@d3cold-basic-exec.html
    - shard-bmg:          NOTRUN -> [SKIP][156] ([Intel XE#2284])
   [156]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-bmg-8/igt@xe_pm@d3cold-basic-exec.html

  * igt@xe_pm@d3hot-i2c:
    - shard-dg2-set2:     NOTRUN -> [SKIP][157] ([Intel XE#5742])
   [157]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-dg2-466/igt@xe_pm@d3hot-i2c.html

  * igt@xe_pm@s3-vm-bind-userptr:
    - shard-bmg:          [PASS][158] -> [DMESG-FAIL][159] ([Intel XE#5545])
   [158]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3850-23f8be57505c80e5b57dec249df8a3cc053eb947/shard-bmg-1/igt@xe_pm@s3-vm-bind-userptr.html
   [159]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-bmg-4/igt@xe_pm@s3-vm-bind-userptr.html

  * igt@xe_pxp@pxp-stale-bo-bind-post-rpm:
    - shard-dg2-set2:     NOTRUN -> [SKIP][160] ([Intel XE#4733]) +1 other test skip
   [160]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-dg2-463/igt@xe_pxp@pxp-stale-bo-bind-post-rpm.html

  * igt@xe_query@multigpu-query-config:
    - shard-dg2-set2:     NOTRUN -> [SKIP][161] ([Intel XE#944]) +1 other test skip
   [161]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-dg2-432/igt@xe_query@multigpu-query-config.html

  * igt@xe_query@multigpu-query-gt-list:
    - shard-bmg:          NOTRUN -> [SKIP][162] ([Intel XE#944])
   [162]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-bmg-5/igt@xe_query@multigpu-query-gt-list.html

  * igt@xe_render_copy@render-stress-4-copies:
    - shard-dg2-set2:     NOTRUN -> [SKIP][163] ([Intel XE#4814])
   [163]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-dg2-432/igt@xe_render_copy@render-stress-4-copies.html

  * igt@xe_spin_batch@spin-mem-copy:
    - shard-dg2-set2:     NOTRUN -> [SKIP][164] ([Intel XE#4821])
   [164]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-dg2-463/igt@xe_spin_batch@spin-mem-copy.html
    - shard-adlp:         NOTRUN -> [SKIP][165] ([Intel XE#4821])
   [165]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-adlp-8/igt@xe_spin_batch@spin-mem-copy.html

  * igt@xe_sriov_auto_provisioning@resources-released-on-vfs-disabling:
    - shard-dg2-set2:     NOTRUN -> [SKIP][166] ([Intel XE#4130])
   [166]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-dg2-434/igt@xe_sriov_auto_provisioning@resources-released-on-vfs-disabling.html

  * igt@xe_sriov_flr@flr-each-isolation:
    - shard-dg2-set2:     NOTRUN -> [SKIP][167] ([Intel XE#3342])
   [167]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-dg2-466/igt@xe_sriov_flr@flr-each-isolation.html
    - shard-lnl:          NOTRUN -> [SKIP][168] ([Intel XE#3342])
   [168]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-lnl-2/igt@xe_sriov_flr@flr-each-isolation.html

  * igt@xe_sriov_scheduling@equal-throughput:
    - shard-dg2-set2:     NOTRUN -> [SKIP][169] ([Intel XE#4351])
   [169]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-dg2-463/igt@xe_sriov_scheduling@equal-throughput.html

  * igt@xe_sriov_scheduling@nonpreempt-engine-resets@numvfs-random:
    - shard-adlp:         [PASS][170] -> [ABORT][171] ([Intel XE#4917]) +1 other test abort
   [170]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3850-23f8be57505c80e5b57dec249df8a3cc053eb947/shard-adlp-6/igt@xe_sriov_scheduling@nonpreempt-engine-resets@numvfs-random.html
   [171]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-adlp-8/igt@xe_sriov_scheduling@nonpreempt-engine-resets@numvfs-random.html

  
#### Possible fixes ####

  * igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs:
    - shard-dg2-set2:     [INCOMPLETE][172] ([Intel XE#1727] / [Intel XE#3113] / [Intel XE#4212] / [Intel XE#4345] / [Intel XE#4522]) -> [PASS][173]
   [172]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3850-23f8be57505c80e5b57dec249df8a3cc053eb947/shard-dg2-466/igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs.html
   [173]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-dg2-435/igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs.html

  * igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs-cc:
    - shard-dg2-set2:     [INCOMPLETE][174] ([Intel XE#1727] / [Intel XE#2705] / [Intel XE#3113] / [Intel XE#4212] / [Intel XE#4345] / [Intel XE#4522]) -> [PASS][175]
   [174]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3850-23f8be57505c80e5b57dec249df8a3cc053eb947/shard-dg2-433/igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs-cc.html
   [175]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-dg2-463/igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs-cc.html

  * igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs-cc@pipe-c-dp-4:
    - shard-dg2-set2:     [INCOMPLETE][176] ([Intel XE#1727] / [Intel XE#2705] / [Intel XE#3113] / [Intel XE#4212] / [Intel XE#4522] / [Intel XE#6014]) -> [PASS][177]
   [176]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3850-23f8be57505c80e5b57dec249df8a3cc053eb947/shard-dg2-433/igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs-cc@pipe-c-dp-4.html
   [177]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-dg2-463/igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs-cc@pipe-c-dp-4.html

  * igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs@pipe-b-dp-4:
    - shard-dg2-set2:     [INCOMPLETE][178] ([Intel XE#1727] / [Intel XE#3113] / [Intel XE#4212] / [Intel XE#4522]) -> [PASS][179]
   [178]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3850-23f8be57505c80e5b57dec249df8a3cc053eb947/shard-dg2-466/igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs@pipe-b-dp-4.html
   [179]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-dg2-435/igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs@pipe-b-dp-4.html

  * igt@kms_cursor_legacy@cursorb-vs-flipa-atomic-transitions-varying-size:
    - shard-bmg:          [SKIP][180] ([Intel XE#2291]) -> [PASS][181] +2 other tests pass
   [180]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3850-23f8be57505c80e5b57dec249df8a3cc053eb947/shard-bmg-6/igt@kms_cursor_legacy@cursorb-vs-flipa-atomic-transitions-varying-size.html
   [181]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-bmg-3/igt@kms_cursor_legacy@cursorb-vs-flipa-atomic-transitions-varying-size.html

  * igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions:
    - shard-bmg:          [FAIL][182] ([Intel XE#1475]) -> [PASS][183]
   [182]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3850-23f8be57505c80e5b57dec249df8a3cc053eb947/shard-bmg-1/igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions.html
   [183]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-bmg-2/igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions.html

  * igt@kms_cursor_legacy@flip-vs-cursor-legacy:
    - shard-bmg:          [FAIL][184] ([Intel XE#4633]) -> [PASS][185]
   [184]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3850-23f8be57505c80e5b57dec249df8a3cc053eb947/shard-bmg-8/igt@kms_cursor_legacy@flip-vs-cursor-legacy.html
   [185]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-bmg-4/igt@kms_cursor_legacy@flip-vs-cursor-legacy.html

  * igt@kms_dp_aux_dev:
    - shard-bmg:          [SKIP][186] ([Intel XE#3009]) -> [PASS][187]
   [186]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3850-23f8be57505c80e5b57dec249df8a3cc053eb947/shard-bmg-6/igt@kms_dp_aux_dev.html
   [187]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-bmg-8/igt@kms_dp_aux_dev.html

  * igt@kms_flip@2x-plain-flip:
    - shard-bmg:          [SKIP][188] ([Intel XE#2316]) -> [PASS][189] +3 other tests pass
   [188]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3850-23f8be57505c80e5b57dec249df8a3cc053eb947/shard-bmg-6/igt@kms_flip@2x-plain-flip.html
   [189]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-bmg-5/igt@kms_flip@2x-plain-flip.html

  * igt@kms_flip@dpms-off-confusion@b-hdmi-a1:
    - shard-adlp:         [DMESG-WARN][190] ([Intel XE#4543]) -> [PASS][191] +3 other tests pass
   [190]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3850-23f8be57505c80e5b57dec249df8a3cc053eb947/shard-adlp-8/igt@kms_flip@dpms-off-confusion@b-hdmi-a1.html
   [191]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-adlp-3/igt@kms_flip@dpms-off-confusion@b-hdmi-a1.html

  * igt@kms_flip@flip-vs-expired-vblank@b-edp1:
    - shard-lnl:          [FAIL][192] ([Intel XE#301]) -> [PASS][193] +1 other test pass
   [192]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3850-23f8be57505c80e5b57dec249df8a3cc053eb947/shard-lnl-8/igt@kms_flip@flip-vs-expired-vblank@b-edp1.html
   [193]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-lnl-3/igt@kms_flip@flip-vs-expired-vblank@b-edp1.html

  * igt@kms_flip@flip-vs-suspend:
    - shard-adlp:         [DMESG-WARN][194] ([Intel XE#2953] / [Intel XE#4173]) -> [PASS][195] +2 other tests pass
   [194]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3850-23f8be57505c80e5b57dec249df8a3cc053eb947/shard-adlp-9/igt@kms_flip@flip-vs-suspend.html
   [195]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-adlp-1/igt@kms_flip@flip-vs-suspend.html

  * igt@kms_flip_tiling@flip-change-tiling@pipe-c-hdmi-a-1-y-to-y:
    - shard-adlp:         [DMESG-FAIL][196] ([Intel XE#4543]) -> [PASS][197]
   [196]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3850-23f8be57505c80e5b57dec249df8a3cc053eb947/shard-adlp-6/igt@kms_flip_tiling@flip-change-tiling@pipe-c-hdmi-a-1-y-to-y.html
   [197]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-adlp-1/igt@kms_flip_tiling@flip-change-tiling@pipe-c-hdmi-a-1-y-to-y.html

  * igt@kms_flip_tiling@flip-change-tiling@pipe-d-hdmi-a-1-y-to-y:
    - shard-adlp:         [FAIL][198] ([Intel XE#1874]) -> [PASS][199]
   [198]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3850-23f8be57505c80e5b57dec249df8a3cc053eb947/shard-adlp-6/igt@kms_flip_tiling@flip-change-tiling@pipe-d-hdmi-a-1-y-to-y.html
   [199]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-adlp-1/igt@kms_flip_tiling@flip-change-tiling@pipe-d-hdmi-a-1-y-to-y.html

  * igt@kms_hdr@static-toggle-suspend:
    - shard-bmg:          [SKIP][200] ([Intel XE#1503]) -> [PASS][201]
   [200]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3850-23f8be57505c80e5b57dec249df8a3cc053eb947/shard-bmg-6/igt@kms_hdr@static-toggle-suspend.html
   [201]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-bmg-5/igt@kms_hdr@static-toggle-suspend.html

  * igt@kms_plane_cursor@viewport:
    - shard-dg2-set2:     [FAIL][202] ([Intel XE#616]) -> [PASS][203] +1 other test pass
   [202]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3850-23f8be57505c80e5b57dec249df8a3cc053eb947/shard-dg2-436/igt@kms_plane_cursor@viewport.html
   [203]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-dg2-463/igt@kms_plane_cursor@viewport.html

  * igt@xe_exec_basic@multigpu-no-exec-null-defer-bind:
    - shard-dg2-set2:     [SKIP][204] ([Intel XE#1392]) -> [PASS][205] +7 other tests pass
   [204]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3850-23f8be57505c80e5b57dec249df8a3cc053eb947/shard-dg2-432/igt@xe_exec_basic@multigpu-no-exec-null-defer-bind.html
   [205]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-dg2-466/igt@xe_exec_basic@multigpu-no-exec-null-defer-bind.html

  * igt@xe_exec_reset@parallel-gt-reset:
    - shard-dg2-set2:     [DMESG-WARN][206] ([Intel XE#3876]) -> [PASS][207]
   [206]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3850-23f8be57505c80e5b57dec249df8a3cc053eb947/shard-dg2-435/igt@xe_exec_reset@parallel-gt-reset.html
   [207]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-dg2-466/igt@xe_exec_reset@parallel-gt-reset.html

  * {igt@xe_exec_system_allocator@many-64k-malloc-prefetch}:
    - shard-lnl:          [CRASH][208] ([Intel XE#6192]) -> [PASS][209] +5 other tests pass
   [208]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3850-23f8be57505c80e5b57dec249df8a3cc053eb947/shard-lnl-2/igt@xe_exec_system_allocator@many-64k-malloc-prefetch.html
   [209]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-lnl-7/igt@xe_exec_system_allocator@many-64k-malloc-prefetch.html

  * {igt@xe_exec_system_allocator@many-large-new-prefetch}:
    - shard-bmg:          [CRASH][210] ([Intel XE#6192]) -> [PASS][211] +7 other tests pass
   [210]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3850-23f8be57505c80e5b57dec249df8a3cc053eb947/shard-bmg-4/igt@xe_exec_system_allocator@many-large-new-prefetch.html
   [211]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-bmg-6/igt@xe_exec_system_allocator@many-large-new-prefetch.html

  * {igt@xe_exec_system_allocator@pat-index-madvise-pat-idx-uc-single-vma}:
    - shard-lnl:          [FAIL][212] ([Intel XE#5625]) -> [PASS][213]
   [212]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3850-23f8be57505c80e5b57dec249df8a3cc053eb947/shard-lnl-4/igt@xe_exec_system_allocator@pat-index-madvise-pat-idx-uc-single-vma.html
   [213]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-lnl-7/igt@xe_exec_system_allocator@pat-index-madvise-pat-idx-uc-single-vma.html

  * igt@xe_exec_threads@threads-rebind:
    - shard-bmg:          [DMESG-FAIL][214] ([Intel XE#3876]) -> [PASS][215]
   [214]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3850-23f8be57505c80e5b57dec249df8a3cc053eb947/shard-bmg-3/igt@xe_exec_threads@threads-rebind.html
   [215]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-bmg-7/igt@xe_exec_threads@threads-rebind.html

  
#### Warnings ####

  * igt@kms_big_fb@x-tiled-max-hw-stride-64bpp-rotate-0-hflip-async-flip:
    - shard-adlp:         [DMESG-FAIL][216] ([Intel XE#2953] / [Intel XE#4173] / [Intel XE#4543]) -> [DMESG-FAIL][217] ([Intel XE#4543])
   [216]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3850-23f8be57505c80e5b57dec249df8a3cc053eb947/shard-adlp-9/igt@kms_big_fb@x-tiled-max-hw-stride-64bpp-rotate-0-hflip-async-flip.html
   [217]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-adlp-9/igt@kms_big_fb@x-tiled-max-hw-stride-64bpp-rotate-0-hflip-async-flip.html

  * igt@kms_content_protection@atomic:
    - shard-bmg:          [FAIL][218] ([Intel XE#1178]) -> [SKIP][219] ([Intel XE#2341])
   [218]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3850-23f8be57505c80e5b57dec249df8a3cc053eb947/shard-bmg-1/igt@kms_content_protection@atomic.html
   [219]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-bmg-6/igt@kms_content_protection@atomic.html

  * igt@kms_flip@flip-vs-panning-vs-hang@d-hdmi-a1:
    - shard-adlp:         [TIMEOUT][220] ([Intel XE#4543]) -> [DMESG-WARN][221] ([Intel XE#4543]) +1 other test dmesg-warn
   [220]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3850-23f8be57505c80e5b57dec249df8a3cc053eb947/shard-adlp-1/igt@kms_flip@flip-vs-panning-vs-hang@d-hdmi-a1.html
   [221]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-adlp-4/igt@kms_flip@flip-vs-panning-vs-hang@d-hdmi-a1.html

  * igt@kms_flip@flip-vs-suspend-interruptible:
    - shard-adlp:         [DMESG-WARN][222] ([Intel XE#4543]) -> [DMESG-WARN][223] ([Intel XE#2953] / [Intel XE#4173]) +1 other test dmesg-warn
   [222]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3850-23f8be57505c80e5b57dec249df8a3cc053eb947/shard-adlp-8/igt@kms_flip@flip-vs-suspend-interruptible.html
   [223]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-adlp-6/igt@kms_flip@flip-vs-suspend-interruptible.html

  * igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-downscaling:
    - shard-adlp:         [DMESG-FAIL][224] ([Intel XE#4543] / [Intel XE#4921]) -> [DMESG-FAIL][225] ([Intel XE#4921]) +1 other test dmesg-fail
   [224]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3850-23f8be57505c80e5b57dec249df8a3cc053eb947/shard-adlp-6/igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-downscaling.html
   [225]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-adlp-8/igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-downscaling.html

  * igt@kms_frontbuffer_tracking@drrs-2p-pri-indfb-multidraw:
    - shard-bmg:          [SKIP][226] ([Intel XE#2312]) -> [SKIP][227] ([Intel XE#2311]) +9 other tests skip
   [226]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3850-23f8be57505c80e5b57dec249df8a3cc053eb947/shard-bmg-6/igt@kms_frontbuffer_tracking@drrs-2p-pri-indfb-multidraw.html
   [227]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-bmg-1/igt@kms_frontbuffer_tracking@drrs-2p-pri-indfb-multidraw.html

  * igt@kms_frontbuffer_tracking@drrs-2p-primscrn-pri-shrfb-draw-blt:
    - shard-bmg:          [SKIP][228] ([Intel XE#2311]) -> [SKIP][229] ([Intel XE#2312]) +5 other tests skip
   [228]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3850-23f8be57505c80e5b57dec249df8a3cc053eb947/shard-bmg-4/igt@kms_frontbuffer_tracking@drrs-2p-primscrn-pri-shrfb-draw-blt.html
   [229]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-bmg-6/igt@kms_frontbuffer_tracking@drrs-2p-primscrn-pri-shrfb-draw-blt.html

  * igt@kms_frontbuffer_tracking@fbc-2p-primscrn-cur-indfb-draw-blt:
    - shard-bmg:          [SKIP][230] ([Intel XE#5390]) -> [SKIP][231] ([Intel XE#2312]) +2 other tests skip
   [230]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3850-23f8be57505c80e5b57dec249df8a3cc053eb947/shard-bmg-4/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-cur-indfb-draw-blt.html
   [231]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-bmg-6/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-cur-indfb-draw-blt.html

  * igt@kms_frontbuffer_tracking@fbc-2p-primscrn-indfb-msflip-blt:
    - shard-bmg:          [SKIP][232] ([Intel XE#2312]) -> [SKIP][233] ([Intel XE#5390])
   [232]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3850-23f8be57505c80e5b57dec249df8a3cc053eb947/shard-bmg-6/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-indfb-msflip-blt.html
   [233]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-bmg-3/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-indfb-msflip-blt.html

  * igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-indfb-msflip-blt:
    - shard-bmg:          [SKIP][234] ([Intel XE#2312]) -> [SKIP][235] ([Intel XE#2313]) +4 other tests skip
   [234]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3850-23f8be57505c80e5b57dec249df8a3cc053eb947/shard-bmg-6/igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-indfb-msflip-blt.html
   [235]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-bmg-4/igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-indfb-msflip-blt.html

  * igt@kms_frontbuffer_tracking@psr-2p-primscrn-cur-indfb-onoff:
    - shard-bmg:          [SKIP][236] ([Intel XE#2313]) -> [SKIP][237] ([Intel XE#2312]) +4 other tests skip
   [236]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3850-23f8be57505c80e5b57dec249df8a3cc053eb947/shard-bmg-7/igt@kms_frontbuffer_tracking@psr-2p-primscrn-cur-indfb-onoff.html
   [237]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-bmg-6/igt@kms_frontbuffer_tracking@psr-2p-primscrn-cur-indfb-onoff.html

  * igt@kms_pm_dc@dc9-dpms:
    - shard-adlp:         [FAIL][238] ([Intel XE#3325]) -> [SKIP][239] ([Intel XE#734])
   [238]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3850-23f8be57505c80e5b57dec249df8a3cc053eb947/shard-adlp-8/igt@kms_pm_dc@dc9-dpms.html
   [239]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-adlp-3/igt@kms_pm_dc@dc9-dpms.html

  * igt@kms_tiled_display@basic-test-pattern:
    - shard-bmg:          [SKIP][240] ([Intel XE#2426]) -> [FAIL][241] ([Intel XE#1729])
   [240]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3850-23f8be57505c80e5b57dec249df8a3cc053eb947/shard-bmg-8/igt@kms_tiled_display@basic-test-pattern.html
   [241]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-bmg-1/igt@kms_tiled_display@basic-test-pattern.html
    - shard-dg2-set2:     [SKIP][242] ([Intel XE#362]) -> [FAIL][243] ([Intel XE#1729])
   [242]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3850-23f8be57505c80e5b57dec249df8a3cc053eb947/shard-dg2-463/igt@kms_tiled_display@basic-test-pattern.html
   [243]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-dg2-466/igt@kms_tiled_display@basic-test-pattern.html

  * igt@xe_fault_injection@probe-fail-guc-xe_guc_ct_send_recv:
    - shard-bmg:          [ABORT][244] ([Intel XE#4917] / [Intel XE#5466] / [Intel XE#5530]) -> [ABORT][245] ([Intel XE#5466] / [Intel XE#5530])
   [244]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3850-23f8be57505c80e5b57dec249df8a3cc053eb947/shard-bmg-7/igt@xe_fault_injection@probe-fail-guc-xe_guc_ct_send_recv.html
   [245]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-bmg-6/igt@xe_fault_injection@probe-fail-guc-xe_guc_ct_send_recv.html

  * igt@xe_peer2peer@write:
    - shard-dg2-set2:     [FAIL][246] ([Intel XE#1173]) -> [SKIP][247] ([Intel XE#1061])
   [246]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3850-23f8be57505c80e5b57dec249df8a3cc053eb947/shard-dg2-463/igt@xe_peer2peer@write.html
   [247]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/shard-dg2-432/igt@xe_peer2peer@write.html

  
  {name}: This element is suppressed. This means it is ignored when computing
          the status of the difference (SUCCESS, WARNING, or FAILURE).

  [Intel XE#1061]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1061
  [Intel XE#1091]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1091
  [Intel XE#1122]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1122
  [Intel XE#1124]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1124
  [Intel XE#1173]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1173
  [Intel XE#1178]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1178
  [Intel XE#1188]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1188
  [Intel XE#1280]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1280
  [Intel XE#1392]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1392
  [Intel XE#1397]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1397
  [Intel XE#1406]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1406
  [Intel XE#1407]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1407
  [Intel XE#1421]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1421
  [Intel XE#1424]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1424
  [Intel XE#1475]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1475
  [Intel XE#1489]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1489
  [Intel XE#1499]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1499
  [Intel XE#1503]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1503
  [Intel XE#1508]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1508
  [Intel XE#1512]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1512
  [Intel XE#1727]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1727
  [Intel XE#1729]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1729
  [Intel XE#1745]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1745
  [Intel XE#1874]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1874
  [Intel XE#2234]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2234
  [Intel XE#2244]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2244
  [Intel XE#2252]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2252
  [Intel XE#2284]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2284
  [Intel XE#2291]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2291
  [Intel XE#2311]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2311
  [Intel XE#2312]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2312
  [Intel XE#2313]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2313
  [Intel XE#2316]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2316
  [Intel XE#2320]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2320
  [Intel XE#2321]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2321
  [Intel XE#2322]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2322
  [Intel XE#2341]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2341
  [Intel XE#2360]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2360
  [Intel XE#2390]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2390
  [Intel XE#2391]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2391
  [Intel XE#2413]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2413
  [Intel XE#2426]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2426
  [Intel XE#255]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/255
  [Intel XE#261]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/261
  [Intel XE#2705]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2705
  [Intel XE#2763]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2763
  [Intel XE#2849]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2849
  [Intel XE#2850]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2850
  [Intel XE#288]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/288
  [Intel XE#2887]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2887
  [Intel XE#2893]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2893
  [Intel XE#2907]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2907
  [Intel XE#2938]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2938
  [Intel XE#2953]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2953
  [Intel XE#3009]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3009
  [Intel XE#301]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/301
  [Intel XE#306]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/306
  [Intel XE#307]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/307
  [Intel XE#308]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/308
  [Intel XE#310]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/310
  [Intel XE#3113]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3113
  [Intel XE#3149]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3149
  [Intel XE#316]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/316
  [Intel XE#3325]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3325
  [Intel XE#3342]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3342
  [Intel XE#3414]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3414
  [Intel XE#3432]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3432
  [Intel XE#3573]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3573
  [Intel XE#362]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/362
  [Intel XE#366]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/366
  [Intel XE#367]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/367
  [Intel XE#373]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/373
  [Intel XE#3876]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3876
  [Intel XE#3904]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3904
  [Intel XE#4130]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4130
  [Intel XE#4173]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4173
  [Intel XE#4212]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4212
  [Intel XE#4345]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4345
  [Intel XE#4351]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4351
  [Intel XE#4356]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4356
  [Intel XE#4359]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4359
  [Intel XE#4417]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4417
  [Intel XE#4494]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4494
  [Intel XE#4518]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4518
  [Intel XE#4522]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4522
  [Intel XE#4543]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4543
  [Intel XE#455]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/455
  [Intel XE#4596]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4596
  [Intel XE#4608]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4608
  [Intel XE#4609]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4609
  [Intel XE#4633]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4633
  [Intel XE#4733]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4733
  [Intel XE#4814]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4814
  [Intel XE#4821]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4821
  [Intel XE#4837]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4837
  [Intel XE#4915]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4915
  [Intel XE#4917]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4917
  [Intel XE#4921]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4921
  [Intel XE#4943]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4943
  [Intel XE#5007]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5007
  [Intel XE#5390]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5390
  [Intel XE#5466]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5466
  [Intel XE#5530]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5530
  [Intel XE#5545]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5545
  [Intel XE#5561]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5561
  [Intel XE#5564]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5564
  [Intel XE#5565]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5565
  [Intel XE#5575]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5575
  [Intel XE#560]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/560
  [Intel XE#5625]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5625
  [Intel XE#5626]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5626
  [Intel XE#5632]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5632
  [Intel XE#5742]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5742
  [Intel XE#5786]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5786
  [Intel XE#5890]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5890
  [Intel XE#5893]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5893
  [Intel XE#5993]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5993
  [Intel XE#6014]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6014
  [Intel XE#6054]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6054
  [Intel XE#616]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/616
  [Intel XE#6192]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6192
  [Intel XE#651]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/651
  [Intel XE#653]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/653
  [Intel XE#656]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/656
  [Intel XE#658]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/658
  [Intel XE#688]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/688
  [Intel XE#718]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/718
  [Intel XE#734]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/734
  [Intel XE#736]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/736
  [Intel XE#776]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/776
  [Intel XE#787]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/787
  [Intel XE#870]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/870
  [Intel XE#929]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/929
  [Intel XE#944]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/944
  [i915#3804]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3804


Build changes
-------------

  * IGT: IGT_8564 -> IGT_8565
  * Linux: xe-3850-23f8be57505c80e5b57dec249df8a3cc053eb947 -> xe-pw-155272v1

  IGT_8564: fd0f7b3639b26971567b7a9d64ba5174d5d3db5a @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
  IGT_8565: 8565
  xe-3850-23f8be57505c80e5b57dec249df8a3cc053eb947: 23f8be57505c80e5b57dec249df8a3cc053eb947
  xe-pw-155272v1: 155272v1

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155272v1/index.html

[-- Attachment #2: Type: text/html, Size: 82721 bytes --]

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: [PATCH 01/10] drm/drm_crtc: Introduce sharpness strength property
  2025-10-01  6:34 ` [PATCH 01/10] drm/drm_crtc: Introduce sharpness strength property Nemesa Garg
@ 2025-10-04 10:08   ` Dmitry Baryshkov
  2025-10-08  7:22     ` Garg, Nemesa
  0 siblings, 1 reply; 36+ messages in thread
From: Dmitry Baryshkov @ 2025-10-04 10:08 UTC (permalink / raw)
  To: Nemesa Garg
  Cc: intel-gfx, intel-xe, dri-devel, Ankit Nautiyal, Adarsh G M,
	Simona Vetter

On Wed, Oct 01, 2025 at 12:04:51PM +0530, Nemesa Garg wrote:
> Introduce a new crtc property "SHARPNESS_STRENGTH" that allows
> the user to set the intensity so as to get the sharpness effect.
> The value of this property can be set from 0-255.
> It is useful in scenario when the output is blurry and user
> want to sharpen the pixels. User can increase/decrease the
> sharpness level depending on the content displayed.
> 
> v2: Rename crtc property variable [Arun]
>     Add modeset detail in uapi doc[Uma]
> v3: Fix build issue
> v4: Modify the subject line[Ankit]
> 
> Signed-off-by: Nemesa Garg <nemesa.garg@intel.com>
> Reviewed-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
> Tested-by: Adarsh G M <Adarsh.g.m@intel.com>
> Acked-by: Simona Vetter <simona.vetter@ffwll.ch>
> ---
>  drivers/gpu/drm/drm_atomic_uapi.c |  4 ++++
>  drivers/gpu/drm/drm_crtc.c        | 35 +++++++++++++++++++++++++++++++
>  include/drm/drm_crtc.h            | 18 ++++++++++++++++
>  3 files changed, 57 insertions(+)
> 
> diff --git a/drivers/gpu/drm/drm_atomic_uapi.c b/drivers/gpu/drm/drm_atomic_uapi.c
> index 85dbdaa4a2e2..b2cb5ae5a139 100644
> --- a/drivers/gpu/drm/drm_atomic_uapi.c
> +++ b/drivers/gpu/drm/drm_atomic_uapi.c
> @@ -419,6 +419,8 @@ static int drm_atomic_crtc_set_property(struct drm_crtc *crtc,
>  		set_out_fence_for_crtc(state->state, crtc, fence_ptr);
>  	} else if (property == crtc->scaling_filter_property) {
>  		state->scaling_filter = val;
> +	} else if (property == crtc->sharpness_strength_property) {
> +		state->sharpness_strength = val;
>  	} else if (crtc->funcs->atomic_set_property) {
>  		return crtc->funcs->atomic_set_property(crtc, state, property, val);
>  	} else {
> @@ -456,6 +458,8 @@ drm_atomic_crtc_get_property(struct drm_crtc *crtc,
>  		*val = 0;
>  	else if (property == crtc->scaling_filter_property)
>  		*val = state->scaling_filter;
> +	else if (property == crtc->sharpness_strength_property)
> +		*val = state->sharpness_strength;
>  	else if (crtc->funcs->atomic_get_property)
>  		return crtc->funcs->atomic_get_property(crtc, state, property, val);
>  	else {
> diff --git a/drivers/gpu/drm/drm_crtc.c b/drivers/gpu/drm/drm_crtc.c
> index 46655339003d..a7797d260f1e 100644
> --- a/drivers/gpu/drm/drm_crtc.c
> +++ b/drivers/gpu/drm/drm_crtc.c
> @@ -229,6 +229,25 @@ struct dma_fence *drm_crtc_create_fence(struct drm_crtc *crtc)
>   * 		Driver's default scaling filter
>   * 	Nearest Neighbor:
>   * 		Nearest Neighbor scaling filter
> + * SHARPNESS_STRENGTH:
> + *	Atomic property for setting the sharpness strength/intensity by userspace.
> + *
> + *	The value of this property is set as an integer value ranging
> + *	from 0 - 255 where:
> + *
> + *	0: Sharpness feature is disabled(default value).
> + *
> + *	1: Minimum sharpness.
> + *
> + *	255: Maximum sharpness.
> + *
> + *	User can gradually increase or decrease the sharpness level and can
> + *	set the optimum value depending on content.
> + *	This value will be passed to kernel through the UAPI.
> + *	The setting of this property does not require modeset.
> + *	The sharpness effect takes place post blending on the final composed output.
> + *	If the feature is disabled, the content remains same without any sharpening effect
> + *	and when this feature is applied, it enhances the clarity of the content.

I can repeat my question from XDC: should we extend this to negative
values, allowing softening (unsharpening) the image?

>   */
>  
>  __printf(6, 0)

-- 
With best wishes
Dmitry

^ permalink raw reply	[flat|nested] 36+ messages in thread

* RE: [PATCH 01/10] drm/drm_crtc: Introduce sharpness strength property
  2025-10-04 10:08   ` Dmitry Baryshkov
@ 2025-10-08  7:22     ` Garg, Nemesa
  2025-10-08 20:05       ` Dmitry Baryshkov
  0 siblings, 1 reply; 36+ messages in thread
From: Garg, Nemesa @ 2025-10-08  7:22 UTC (permalink / raw)
  To: Dmitry Baryshkov
  Cc: intel-gfx@lists.freedesktop.org, intel-xe@lists.freedesktop.org,
	dri-devel@lists.freedesktop.org, Nautiyal, Ankit K, G M, Adarsh,
	Simona Vetter



> -----Original Message-----
> From: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
> Sent: Saturday, October 4, 2025 3:38 PM
> To: Garg, Nemesa <nemesa.garg@intel.com>
> Cc: intel-gfx@lists.freedesktop.org; intel-xe@lists.freedesktop.org; dri-
> devel@lists.freedesktop.org; Nautiyal, Ankit K <ankit.k.nautiyal@intel.com>;
> G M, Adarsh <adarsh.g.m@intel.com>; Simona Vetter
> <simona.vetter@ffwll.ch>
> Subject: Re: [PATCH 01/10] drm/drm_crtc: Introduce sharpness strength
> property
> 
> On Wed, Oct 01, 2025 at 12:04:51PM +0530, Nemesa Garg wrote:
> > Introduce a new crtc property "SHARPNESS_STRENGTH" that allows the
> > user to set the intensity so as to get the sharpness effect.
> > The value of this property can be set from 0-255.
> > It is useful in scenario when the output is blurry and user want to
> > sharpen the pixels. User can increase/decrease the sharpness level
> > depending on the content displayed.
> >
> > v2: Rename crtc property variable [Arun]
> >     Add modeset detail in uapi doc[Uma]
> > v3: Fix build issue
> > v4: Modify the subject line[Ankit]
> >
> > Signed-off-by: Nemesa Garg <nemesa.garg@intel.com>
> > Reviewed-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
> > Tested-by: Adarsh G M <Adarsh.g.m@intel.com>
> > Acked-by: Simona Vetter <simona.vetter@ffwll.ch>
> > ---
> >  drivers/gpu/drm/drm_atomic_uapi.c |  4 ++++
> >  drivers/gpu/drm/drm_crtc.c        | 35 +++++++++++++++++++++++++++++++
> >  include/drm/drm_crtc.h            | 18 ++++++++++++++++
> >  3 files changed, 57 insertions(+)
> >
> > diff --git a/drivers/gpu/drm/drm_atomic_uapi.c
> > b/drivers/gpu/drm/drm_atomic_uapi.c
> > index 85dbdaa4a2e2..b2cb5ae5a139 100644
> > --- a/drivers/gpu/drm/drm_atomic_uapi.c
> > +++ b/drivers/gpu/drm/drm_atomic_uapi.c
> > @@ -419,6 +419,8 @@ static int drm_atomic_crtc_set_property(struct
> drm_crtc *crtc,
> >  		set_out_fence_for_crtc(state->state, crtc, fence_ptr);
> >  	} else if (property == crtc->scaling_filter_property) {
> >  		state->scaling_filter = val;
> > +	} else if (property == crtc->sharpness_strength_property) {
> > +		state->sharpness_strength = val;
> >  	} else if (crtc->funcs->atomic_set_property) {
> >  		return crtc->funcs->atomic_set_property(crtc, state, property,
> val);
> >  	} else {
> > @@ -456,6 +458,8 @@ drm_atomic_crtc_get_property(struct drm_crtc
> *crtc,
> >  		*val = 0;
> >  	else if (property == crtc->scaling_filter_property)
> >  		*val = state->scaling_filter;
> > +	else if (property == crtc->sharpness_strength_property)
> > +		*val = state->sharpness_strength;
> >  	else if (crtc->funcs->atomic_get_property)
> >  		return crtc->funcs->atomic_get_property(crtc, state, property,
> val);
> >  	else {
> > diff --git a/drivers/gpu/drm/drm_crtc.c b/drivers/gpu/drm/drm_crtc.c
> > index 46655339003d..a7797d260f1e 100644
> > --- a/drivers/gpu/drm/drm_crtc.c
> > +++ b/drivers/gpu/drm/drm_crtc.c
> > @@ -229,6 +229,25 @@ struct dma_fence *drm_crtc_create_fence(struct
> drm_crtc *crtc)
> >   * 		Driver's default scaling filter
> >   * 	Nearest Neighbor:
> >   * 		Nearest Neighbor scaling filter
> > + * SHARPNESS_STRENGTH:
> > + *	Atomic property for setting the sharpness strength/intensity by
> userspace.
> > + *
> > + *	The value of this property is set as an integer value ranging
> > + *	from 0 - 255 where:
> > + *
> > + *	0: Sharpness feature is disabled(default value).
> > + *
> > + *	1: Minimum sharpness.
> > + *
> > + *	255: Maximum sharpness.
> > + *
> > + *	User can gradually increase or decrease the sharpness level and can
> > + *	set the optimum value depending on content.
> > + *	This value will be passed to kernel through the UAPI.
> > + *	The setting of this property does not require modeset.
> > + *	The sharpness effect takes place post blending on the final composed
> output.
> > + *	If the feature is disabled, the content remains same without any
> sharpening effect
> > + *	and when this feature is applied, it enhances the clarity of the
> content.
> 
> I can repeat my question from XDC: should we extend this to negative values,
> allowing softening (unsharpening) the image?
> 
Hi Dmitry,
The un-sharpening or blurring is a very valid usecase in pre-blending where certain layers (data
From clients) can be un-sharpened while some other layers can be enhanced with sharpening.
This helps give  focus to the particular content and suppress the background.

However, this current property is targeted for post blending so will be
applied to the entire frame on screen, here sharpening only is the intended objective.

We can pursue a pre-blending solution to target the un-sharpening case as well as a separate interface.
Hope this is fine.
> >   */
> >
> >  __printf(6, 0)
> 
> --
> With best wishes
> Dmitry

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: [PATCH 01/10] drm/drm_crtc: Introduce sharpness strength property
  2025-10-08  7:22     ` Garg, Nemesa
@ 2025-10-08 20:05       ` Dmitry Baryshkov
  2025-10-09 11:00         ` Nautiyal, Ankit K
  0 siblings, 1 reply; 36+ messages in thread
From: Dmitry Baryshkov @ 2025-10-08 20:05 UTC (permalink / raw)
  To: Garg, Nemesa
  Cc: intel-gfx@lists.freedesktop.org, intel-xe@lists.freedesktop.org,
	dri-devel@lists.freedesktop.org, Nautiyal, Ankit K, G M, Adarsh,
	Simona Vetter

On Wed, Oct 08, 2025 at 07:22:00AM +0000, Garg, Nemesa wrote:
> 
> 
> > -----Original Message-----
> > From: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
> > Sent: Saturday, October 4, 2025 3:38 PM
> > To: Garg, Nemesa <nemesa.garg@intel.com>
> > Cc: intel-gfx@lists.freedesktop.org; intel-xe@lists.freedesktop.org; dri-
> > devel@lists.freedesktop.org; Nautiyal, Ankit K <ankit.k.nautiyal@intel.com>;
> > G M, Adarsh <adarsh.g.m@intel.com>; Simona Vetter
> > <simona.vetter@ffwll.ch>
> > Subject: Re: [PATCH 01/10] drm/drm_crtc: Introduce sharpness strength
> > property
> > 
> > On Wed, Oct 01, 2025 at 12:04:51PM +0530, Nemesa Garg wrote:
> > > Introduce a new crtc property "SHARPNESS_STRENGTH" that allows the
> > > user to set the intensity so as to get the sharpness effect.
> > > The value of this property can be set from 0-255.
> > > It is useful in scenario when the output is blurry and user want to
> > > sharpen the pixels. User can increase/decrease the sharpness level
> > > depending on the content displayed.
> > >
> > > v2: Rename crtc property variable [Arun]
> > >     Add modeset detail in uapi doc[Uma]
> > > v3: Fix build issue
> > > v4: Modify the subject line[Ankit]
> > >
> > > Signed-off-by: Nemesa Garg <nemesa.garg@intel.com>
> > > Reviewed-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
> > > Tested-by: Adarsh G M <Adarsh.g.m@intel.com>
> > > Acked-by: Simona Vetter <simona.vetter@ffwll.ch>
> > > ---
> > >  drivers/gpu/drm/drm_atomic_uapi.c |  4 ++++
> > >  drivers/gpu/drm/drm_crtc.c        | 35 +++++++++++++++++++++++++++++++
> > >  include/drm/drm_crtc.h            | 18 ++++++++++++++++
> > >  3 files changed, 57 insertions(+)
> > >
> > > diff --git a/drivers/gpu/drm/drm_atomic_uapi.c
> > > b/drivers/gpu/drm/drm_atomic_uapi.c
> > > index 85dbdaa4a2e2..b2cb5ae5a139 100644
> > > --- a/drivers/gpu/drm/drm_atomic_uapi.c
> > > +++ b/drivers/gpu/drm/drm_atomic_uapi.c
> > > @@ -419,6 +419,8 @@ static int drm_atomic_crtc_set_property(struct
> > drm_crtc *crtc,
> > >  		set_out_fence_for_crtc(state->state, crtc, fence_ptr);
> > >  	} else if (property == crtc->scaling_filter_property) {
> > >  		state->scaling_filter = val;
> > > +	} else if (property == crtc->sharpness_strength_property) {
> > > +		state->sharpness_strength = val;
> > >  	} else if (crtc->funcs->atomic_set_property) {
> > >  		return crtc->funcs->atomic_set_property(crtc, state, property,
> > val);
> > >  	} else {
> > > @@ -456,6 +458,8 @@ drm_atomic_crtc_get_property(struct drm_crtc
> > *crtc,
> > >  		*val = 0;
> > >  	else if (property == crtc->scaling_filter_property)
> > >  		*val = state->scaling_filter;
> > > +	else if (property == crtc->sharpness_strength_property)
> > > +		*val = state->sharpness_strength;
> > >  	else if (crtc->funcs->atomic_get_property)
> > >  		return crtc->funcs->atomic_get_property(crtc, state, property,
> > val);
> > >  	else {
> > > diff --git a/drivers/gpu/drm/drm_crtc.c b/drivers/gpu/drm/drm_crtc.c
> > > index 46655339003d..a7797d260f1e 100644
> > > --- a/drivers/gpu/drm/drm_crtc.c
> > > +++ b/drivers/gpu/drm/drm_crtc.c
> > > @@ -229,6 +229,25 @@ struct dma_fence *drm_crtc_create_fence(struct
> > drm_crtc *crtc)
> > >   * 		Driver's default scaling filter
> > >   * 	Nearest Neighbor:
> > >   * 		Nearest Neighbor scaling filter
> > > + * SHARPNESS_STRENGTH:
> > > + *	Atomic property for setting the sharpness strength/intensity by
> > userspace.
> > > + *
> > > + *	The value of this property is set as an integer value ranging
> > > + *	from 0 - 255 where:
> > > + *
> > > + *	0: Sharpness feature is disabled(default value).
> > > + *
> > > + *	1: Minimum sharpness.
> > > + *
> > > + *	255: Maximum sharpness.
> > > + *
> > > + *	User can gradually increase or decrease the sharpness level and can
> > > + *	set the optimum value depending on content.
> > > + *	This value will be passed to kernel through the UAPI.
> > > + *	The setting of this property does not require modeset.
> > > + *	The sharpness effect takes place post blending on the final composed
> > output.
> > > + *	If the feature is disabled, the content remains same without any
> > sharpening effect
> > > + *	and when this feature is applied, it enhances the clarity of the
> > content.
> > 
> > I can repeat my question from XDC: should we extend this to negative values,
> > allowing softening (unsharpening) the image?
> > 
> Hi Dmitry,
> The un-sharpening or blurring is a very valid usecase in pre-blending where certain layers (data
> From clients) can be un-sharpened while some other layers can be enhanced with sharpening.
> This helps give  focus to the particular content and suppress the background.
> 
> However, this current property is targeted for post blending so will be
> applied to the entire frame on screen, here sharpening only is the intended objective.
> 
> We can pursue a pre-blending solution to target the un-sharpening case as well as a separate interface.

Indeed, I'm more interested in a per-plane sharpen / unsharpen property.

> Hope this is fine.

-- 
With best wishes
Dmitry

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: [PATCH 03/10] drm/i915/display: Add CASF strength and winsize
  2025-10-01  6:34 ` [PATCH 03/10] drm/i915/display: Add CASF strength and winsize Nemesa Garg
@ 2025-10-09 10:51   ` Nautiyal, Ankit K
  0 siblings, 0 replies; 36+ messages in thread
From: Nautiyal, Ankit K @ 2025-10-09 10:51 UTC (permalink / raw)
  To: Nemesa Garg, intel-gfx, intel-xe, dri-devel


On 10/1/2025 12:04 PM, Nemesa Garg wrote:
> Add register definitions for sharpness strength and
> filter window size used by CASF. Provide functions to
> read and write these fields.
>
> The sharpness strength value is determined by user input,
> while the winsize is based on the resolution. The casf_enable
> flag should be set if the platform supports sharpness adjustments
> and the user API strength is not zero. Once sharpness is
> enabled, update the strength bit of the register whenever
> the user changes the strength value, as the enable bit and
> winsize bit remain constant.
>
> Introduce helper to enable, disable and update strength.
> Add relavant strength and winsize in both enable and disable.
>
> v2: Introduce get_config for casf[Ankit]
> v3: Replace 0 with FILTER_STRENGTH_MASK[Ankit]
> v4: After updating strength add win_sz register
> v5: Replace u16 with u32 for total_pixel
> v6: Add casf logging
> v7: Add helper for enable and disable casf
>
> Signed-off-by: Nemesa Garg <nemesa.garg@intel.com>

Reviewed-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>


> ---
>   drivers/gpu/drm/i915/Makefile                 |   1 +
>   drivers/gpu/drm/i915/display/intel_casf.c     | 131 ++++++++++++++++++
>   drivers/gpu/drm/i915/display/intel_casf.h     |  19 +++
>   .../gpu/drm/i915/display/intel_casf_regs.h    |  22 +++
>   .../drm/i915/display/intel_crtc_state_dump.c  |   5 +
>   .../drm/i915/display/intel_display_types.h    |   7 +
>   drivers/gpu/drm/i915/display/skl_scaler.c     |   1 +
>   drivers/gpu/drm/xe/Makefile                   |   1 +
>   8 files changed, 187 insertions(+)
>   create mode 100644 drivers/gpu/drm/i915/display/intel_casf.c
>   create mode 100644 drivers/gpu/drm/i915/display/intel_casf.h
>   create mode 100644 drivers/gpu/drm/i915/display/intel_casf_regs.h
>
> diff --git a/drivers/gpu/drm/i915/Makefile b/drivers/gpu/drm/i915/Makefile
> index 78a45a6681df..2aeb1da455d7 100644
> --- a/drivers/gpu/drm/i915/Makefile
> +++ b/drivers/gpu/drm/i915/Makefile
> @@ -228,6 +228,7 @@ i915-y += \
>   	display/intel_bios.o \
>   	display/intel_bo.o \
>   	display/intel_bw.o \
> +	display/intel_casf.o \
>   	display/intel_cdclk.o \
>   	display/intel_cmtg.o \
>   	display/intel_color.o \
> diff --git a/drivers/gpu/drm/i915/display/intel_casf.c b/drivers/gpu/drm/i915/display/intel_casf.c
> new file mode 100644
> index 000000000000..ad2faed5c1b3
> --- /dev/null
> +++ b/drivers/gpu/drm/i915/display/intel_casf.c
> @@ -0,0 +1,131 @@
> +// SPDX-License-Identifier: MIT
> +/*
> + * Copyright © 2025 Intel Corporation
> + *
> + */
> +
> +#include <drm/drm_print.h>
> +
> +#include "i915_reg.h"
> +#include "intel_casf.h"
> +#include "intel_casf_regs.h"
> +#include "intel_de.h"
> +#include "intel_display_regs.h"
> +#include "intel_display_types.h"
> +
> +#define MAX_PIXELS_FOR_3_TAP_FILTER (1920 * 1080)
> +#define MAX_PIXELS_FOR_5_TAP_FILTER (3840 * 2160)
> +
> +/**
> + * DOC: Content Adaptive Sharpness Filter (CASF)
> + *
> + * Starting from LNL the display engine supports an
> + * adaptive sharpening filter, enhancing the image
> + * quality. The display hardware utilizes the second
> + * pipe scaler for implementing CASF.
> + * If sharpness is being enabled then pipe scaling
> + * cannot be used.
> + * This filter operates on a region of pixels based
> + * on the tap size. Coefficients are used to generate
> + * an alpha value which blends the sharpened image to
> + * original image.
> + */
> +
> +void intel_casf_update_strength(struct intel_crtc_state *crtc_state)
> +{
> +	struct intel_display *display = to_intel_display(crtc_state);
> +	struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
> +	int win_size;
> +
> +	intel_de_rmw(display, SHARPNESS_CTL(crtc->pipe), FILTER_STRENGTH_MASK,
> +		     FILTER_STRENGTH(crtc_state->hw.casf_params.strength));
> +
> +	win_size = intel_de_read(display, SKL_PS_WIN_SZ(crtc->pipe, 1));
> +
> +	intel_de_write_fw(display, SKL_PS_WIN_SZ(crtc->pipe, 1), win_size);
> +}
> +
> +static void intel_casf_compute_win_size(struct intel_crtc_state *crtc_state)
> +{
> +	const struct drm_display_mode *mode = &crtc_state->hw.adjusted_mode;
> +	u32 total_pixels = mode->hdisplay * mode->vdisplay;
> +
> +	if (total_pixels <= MAX_PIXELS_FOR_3_TAP_FILTER)
> +		crtc_state->hw.casf_params.win_size = SHARPNESS_FILTER_SIZE_3X3;
> +	else if (total_pixels <= MAX_PIXELS_FOR_5_TAP_FILTER)
> +		crtc_state->hw.casf_params.win_size = SHARPNESS_FILTER_SIZE_5X5;
> +	else
> +		crtc_state->hw.casf_params.win_size = SHARPNESS_FILTER_SIZE_7X7;
> +}
> +
> +int intel_casf_compute_config(struct intel_crtc_state *crtc_state)
> +{
> +	struct intel_display *display = to_intel_display(crtc_state);
> +
> +	if (!HAS_CASF(display))
> +		return 0;
> +
> +	if (crtc_state->uapi.sharpness_strength == 0) {
> +		crtc_state->hw.casf_params.casf_enable = false;
> +		crtc_state->hw.casf_params.strength = 0;
> +		return 0;
> +	}
> +
> +	crtc_state->hw.casf_params.casf_enable = true;
> +
> +	/*
> +	 * HW takes a value in form (1.0 + strength) in 4.4 fixed format.
> +	 * Strength is from 0.0-14.9375 ie from 0-239.
> +	 * User can give value from 0-255 but is clamped to 239.
> +	 * Ex. User gives 85 which is 5.3125 and adding 1.0 gives 6.3125.
> +	 * 6.3125 in 4.4 format is b01100101 which is equal to 101.
> +	 * Also 85 + 16 = 101.
> +	 */
> +	crtc_state->hw.casf_params.strength =
> +		min(crtc_state->uapi.sharpness_strength, 0xEF) + 0x10;
> +
> +	intel_casf_compute_win_size(crtc_state);
> +
> +	return 0;
> +}
> +
> +void intel_casf_sharpness_get_config(struct intel_crtc_state *crtc_state)
> +{
> +	struct intel_display *display = to_intel_display(crtc_state);
> +	struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
> +	u32 sharp;
> +
> +	sharp = intel_de_read(display, SHARPNESS_CTL(crtc->pipe));
> +	if (sharp & FILTER_EN) {
> +		if (drm_WARN_ON(display->drm,
> +				REG_FIELD_GET(FILTER_STRENGTH_MASK, sharp) < 16))
> +			crtc_state->hw.casf_params.strength = 0;
> +		else
> +			crtc_state->hw.casf_params.strength =
> +				REG_FIELD_GET(FILTER_STRENGTH_MASK, sharp);
> +		crtc_state->hw.casf_params.casf_enable = true;
> +		crtc_state->hw.casf_params.win_size =
> +			REG_FIELD_GET(FILTER_SIZE_MASK, sharp);
> +	}
> +}
> +
> +void intel_casf_enable(struct intel_crtc_state *crtc_state)
> +{
> +	struct intel_display *display = to_intel_display(crtc_state);
> +	struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
> +	u32 sharpness_ctl;
> +
> +	sharpness_ctl = FILTER_EN | FILTER_STRENGTH(crtc_state->hw.casf_params.strength);
> +
> +	sharpness_ctl |= crtc_state->hw.casf_params.win_size;
> +
> +	intel_de_write(display, SHARPNESS_CTL(crtc->pipe), sharpness_ctl);
> +}
> +
> +void intel_casf_disable(const struct intel_crtc_state *crtc_state)
> +{
> +	struct intel_display *display = to_intel_display(crtc_state);
> +	struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
> +
> +	intel_de_write(display, SHARPNESS_CTL(crtc->pipe), 0);
> +}
> diff --git a/drivers/gpu/drm/i915/display/intel_casf.h b/drivers/gpu/drm/i915/display/intel_casf.h
> new file mode 100644
> index 000000000000..753871880279
> --- /dev/null
> +++ b/drivers/gpu/drm/i915/display/intel_casf.h
> @@ -0,0 +1,19 @@
> +/* SPDX-License-Identifier: MIT */
> +/*
> + * Copyright © 2025 Intel Corporation
> + */
> +
> +#ifndef __INTEL_CASF_H__
> +#define __INTEL_CASF_H__
> +
> +#include <linux/types.h>
> +
> +struct intel_crtc_state;
> +
> +int intel_casf_compute_config(struct intel_crtc_state *crtc_state);
> +void intel_casf_update_strength(struct intel_crtc_state *new_crtc_state);
> +void intel_casf_sharpness_get_config(struct intel_crtc_state *crtc_state);
> +void intel_casf_enable(struct intel_crtc_state *crtc_state);
> +void intel_casf_disable(const struct intel_crtc_state *crtc_state);
> +
> +#endif /* __INTEL_CASF_H__ */
> diff --git a/drivers/gpu/drm/i915/display/intel_casf_regs.h b/drivers/gpu/drm/i915/display/intel_casf_regs.h
> new file mode 100644
> index 000000000000..bd763efe5c1b
> --- /dev/null
> +++ b/drivers/gpu/drm/i915/display/intel_casf_regs.h
> @@ -0,0 +1,22 @@
> +/* SPDX-License-Identifier: MIT */
> +/*
> + * Copyright © 2025 Intel Corporation
> + */
> +
> +#ifndef __INTEL_CASF_REGS_H__
> +#define __INTEL_CASF_REGS_H__
> +
> +#include "intel_display_reg_defs.h"
> +
> +#define _SHARPNESS_CTL_A		0x682B0
> +#define _SHARPNESS_CTL_B		0x68AB0
> +#define SHARPNESS_CTL(pipe)		_MMIO_PIPE(pipe, _SHARPNESS_CTL_A, _SHARPNESS_CTL_B)
> +#define   FILTER_EN			REG_BIT(31)
> +#define   FILTER_STRENGTH_MASK		REG_GENMASK(15, 8)
> +#define   FILTER_STRENGTH(x)		REG_FIELD_PREP(FILTER_STRENGTH_MASK, (x))
> +#define   FILTER_SIZE_MASK		REG_GENMASK(1, 0)
> +#define   SHARPNESS_FILTER_SIZE_3X3	REG_FIELD_PREP(FILTER_SIZE_MASK, 0)
> +#define   SHARPNESS_FILTER_SIZE_5X5	REG_FIELD_PREP(FILTER_SIZE_MASK, 1)
> +#define   SHARPNESS_FILTER_SIZE_7X7	REG_FIELD_PREP(FILTER_SIZE_MASK, 2)
> +
> +#endif /* __INTEL_CASF_REGS__ */
> diff --git a/drivers/gpu/drm/i915/display/intel_crtc_state_dump.c b/drivers/gpu/drm/i915/display/intel_crtc_state_dump.c
> index a14bcda4446c..1e309e7e7947 100644
> --- a/drivers/gpu/drm/i915/display/intel_crtc_state_dump.c
> +++ b/drivers/gpu/drm/i915/display/intel_crtc_state_dump.c
> @@ -374,6 +374,11 @@ void intel_crtc_state_dump(const struct intel_crtc_state *pipe_config,
>   
>   	intel_vdsc_state_dump(&p, 0, pipe_config);
>   
> +	drm_printf(&p, "sharpness strength: %d, sharpness tap size: %d, sharpness enable: %d\n",
> +		   pipe_config->hw.casf_params.strength,
> +		   pipe_config->hw.casf_params.win_size,
> +		   pipe_config->hw.casf_params.casf_enable);
> +
>   dump_planes:
>   	if (!state)
>   		return;
> diff --git a/drivers/gpu/drm/i915/display/intel_display_types.h b/drivers/gpu/drm/i915/display/intel_display_types.h
> index 029c47743f8b..771026f788d8 100644
> --- a/drivers/gpu/drm/i915/display/intel_display_types.h
> +++ b/drivers/gpu/drm/i915/display/intel_display_types.h
> @@ -946,6 +946,12 @@ struct intel_csc_matrix {
>   	u16 postoff[3];
>   };
>   
> +struct intel_casf {
> +	u8 strength;
> +	u8 win_size;
> +	bool casf_enable;
> +};
> +
>   struct intel_crtc_state {
>   	/*
>   	 * uapi (drm) state. This is the software state shown to userspace.
> @@ -982,6 +988,7 @@ struct intel_crtc_state {
>   		struct drm_property_blob *degamma_lut, *gamma_lut, *ctm;
>   		struct drm_display_mode mode, pipe_mode, adjusted_mode;
>   		enum drm_scaling_filter scaling_filter;
> +		struct intel_casf casf_params;
>   	} hw;
>   
>   	/* actual state of LUTs */
> diff --git a/drivers/gpu/drm/i915/display/skl_scaler.c b/drivers/gpu/drm/i915/display/skl_scaler.c
> index c6cccf170ff1..19aeb8d5b79c 100644
> --- a/drivers/gpu/drm/i915/display/skl_scaler.c
> +++ b/drivers/gpu/drm/i915/display/skl_scaler.c
> @@ -6,6 +6,7 @@
>   #include <drm/drm_print.h>
>   
>   #include "i915_utils.h"
> +#include "intel_casf_regs.h"
>   #include "intel_de.h"
>   #include "intel_display_regs.h"
>   #include "intel_display_trace.h"
> diff --git a/drivers/gpu/drm/xe/Makefile b/drivers/gpu/drm/xe/Makefile
> index 3c5d2388997d..457aff1cf095 100644
> --- a/drivers/gpu/drm/xe/Makefile
> +++ b/drivers/gpu/drm/xe/Makefile
> @@ -233,6 +233,7 @@ xe-$(CONFIG_DRM_XE_DISPLAY) += \
>   	i915-display/intel_backlight.o \
>   	i915-display/intel_bios.o \
>   	i915-display/intel_bw.o \
> +	i915-display/intel_casf.o \
>   	i915-display/intel_cdclk.o \
>   	i915-display/intel_cmtg.o \
>   	i915-display/intel_color.o \

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: [PATCH 04/10] drm/i915/display: Add filter lut values
  2025-10-01  6:34 ` [PATCH 04/10] drm/i915/display: Add filter lut values Nemesa Garg
@ 2025-10-09 10:51   ` Nautiyal, Ankit K
  0 siblings, 0 replies; 36+ messages in thread
From: Nautiyal, Ankit K @ 2025-10-09 10:51 UTC (permalink / raw)
  To: Nemesa Garg, intel-gfx, intel-xe, dri-devel


On 10/1/2025 12:04 PM, Nemesa Garg wrote:
> Add the register bits related to filter lut values
> and helper to load the casf filter lut.
>
> These values are golden values and these value has
> to be loaded one time while enabling the casf.
>
> v2: update commit message[Ankit]
> v3: Add intel_casf prefix to filter_load fn[Jani]
> v4: Define the filter macros here
>
> Signed-off-by: Nemesa Garg <nemesa.garg@intel.com>

Reviewed-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>


> ---
>   drivers/gpu/drm/i915/display/intel_casf.c     | 49 +++++++++++++++++++
>   drivers/gpu/drm/i915/display/intel_casf.h     |  1 +
>   .../gpu/drm/i915/display/intel_casf_regs.h    | 11 +++++
>   3 files changed, 61 insertions(+)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_casf.c b/drivers/gpu/drm/i915/display/intel_casf.c
> index ad2faed5c1b3..313ed6b10317 100644
> --- a/drivers/gpu/drm/i915/display/intel_casf.c
> +++ b/drivers/gpu/drm/i915/display/intel_casf.c
> @@ -16,6 +16,13 @@
>   #define MAX_PIXELS_FOR_3_TAP_FILTER (1920 * 1080)
>   #define MAX_PIXELS_FOR_5_TAP_FILTER (3840 * 2160)
>   
> +#define FILTER_COEFF_0_125 125
> +#define FILTER_COEFF_0_25 250
> +#define FILTER_COEFF_0_5 500
> +#define FILTER_COEFF_1_0 1000
> +#define FILTER_COEFF_0_0 0
> +#define SET_POSITIVE_SIGN(x) ((x) & (~SIGN))
> +
>   /**
>    * DOC: Content Adaptive Sharpness Filter (CASF)
>    *
> @@ -31,6 +38,46 @@
>    * original image.
>    */
>   
> +/* Default LUT values to be loaded one time. */
> +static const u16 sharpness_lut[] = {
> +	4095, 2047, 1364, 1022, 816, 678, 579,
> +	504, 444, 397, 357, 323, 293, 268, 244, 224,
> +	204, 187, 170, 154, 139, 125, 111, 98, 85,
> +	73, 60, 48, 36, 24, 12, 0
> +};
> +
> +const u16 filtercoeff_1[] = {
> +	FILTER_COEFF_0_0, FILTER_COEFF_0_0, FILTER_COEFF_0_5,
> +	FILTER_COEFF_1_0, FILTER_COEFF_0_5, FILTER_COEFF_0_0,
> +	FILTER_COEFF_0_0,
> +};
> +
> +const u16 filtercoeff_2[] = {
> +	FILTER_COEFF_0_0, FILTER_COEFF_0_25, FILTER_COEFF_0_5,
> +	FILTER_COEFF_1_0, FILTER_COEFF_0_5, FILTER_COEFF_0_25,
> +	FILTER_COEFF_0_0,
> +};
> +
> +const u16 filtercoeff_3[] = {
> +	FILTER_COEFF_0_125, FILTER_COEFF_0_25, FILTER_COEFF_0_5,
> +	FILTER_COEFF_1_0, FILTER_COEFF_0_5, FILTER_COEFF_0_25,
> +	FILTER_COEFF_0_125,
> +};
> +
> +static void intel_casf_filter_lut_load(struct intel_crtc *crtc,
> +				       const struct intel_crtc_state *crtc_state)
> +{
> +	struct intel_display *display = to_intel_display(crtc_state);
> +	int i;
> +
> +	intel_de_write(display, SHRPLUT_INDEX(crtc->pipe),
> +		       INDEX_AUTO_INCR | INDEX_VALUE(0));
> +
> +	for (i = 0; i < ARRAY_SIZE(sharpness_lut); i++)
> +		intel_de_write(display, SHRPLUT_DATA(crtc->pipe),
> +			       sharpness_lut[i]);
> +}
> +
>   void intel_casf_update_strength(struct intel_crtc_state *crtc_state)
>   {
>   	struct intel_display *display = to_intel_display(crtc_state);
> @@ -115,6 +162,8 @@ void intel_casf_enable(struct intel_crtc_state *crtc_state)
>   	struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
>   	u32 sharpness_ctl;
>   
> +	intel_casf_filter_lut_load(crtc, crtc_state);
> +
>   	sharpness_ctl = FILTER_EN | FILTER_STRENGTH(crtc_state->hw.casf_params.strength);
>   
>   	sharpness_ctl |= crtc_state->hw.casf_params.win_size;
> diff --git a/drivers/gpu/drm/i915/display/intel_casf.h b/drivers/gpu/drm/i915/display/intel_casf.h
> index 753871880279..e8432b4bc52b 100644
> --- a/drivers/gpu/drm/i915/display/intel_casf.h
> +++ b/drivers/gpu/drm/i915/display/intel_casf.h
> @@ -9,6 +9,7 @@
>   #include <linux/types.h>
>   
>   struct intel_crtc_state;
> +struct intel_crtc;
>   
>   int intel_casf_compute_config(struct intel_crtc_state *crtc_state);
>   void intel_casf_update_strength(struct intel_crtc_state *new_crtc_state);
> diff --git a/drivers/gpu/drm/i915/display/intel_casf_regs.h b/drivers/gpu/drm/i915/display/intel_casf_regs.h
> index bd763efe5c1b..87803cca510f 100644
> --- a/drivers/gpu/drm/i915/display/intel_casf_regs.h
> +++ b/drivers/gpu/drm/i915/display/intel_casf_regs.h
> @@ -19,4 +19,15 @@
>   #define   SHARPNESS_FILTER_SIZE_5X5	REG_FIELD_PREP(FILTER_SIZE_MASK, 1)
>   #define   SHARPNESS_FILTER_SIZE_7X7	REG_FIELD_PREP(FILTER_SIZE_MASK, 2)
>   
> +#define _SHRPLUT_DATA_A			0x682B8
> +#define _SHRPLUT_DATA_B			0x68AB8
> +#define SHRPLUT_DATA(pipe)		_MMIO_PIPE(pipe, _SHRPLUT_DATA_A, _SHRPLUT_DATA_B)
> +
> +#define _SHRPLUT_INDEX_A		0x682B4
> +#define _SHRPLUT_INDEX_B		0x68AB4
> +#define SHRPLUT_INDEX(pipe)		_MMIO_PIPE(pipe, _SHRPLUT_INDEX_A, _SHRPLUT_INDEX_B)
> +#define   INDEX_AUTO_INCR		REG_BIT(10)
> +#define   INDEX_VALUE_MASK		REG_GENMASK(4, 0)
> +#define   INDEX_VALUE(x)		REG_FIELD_PREP(INDEX_VALUE_MASK, (x))
> +
>   #endif /* __INTEL_CASF_REGS__ */

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: [PATCH 05/10] drm/i915/display: Compute the scaler coefficients
  2025-10-01  6:34 ` [PATCH 05/10] drm/i915/display: Compute the scaler coefficients Nemesa Garg
@ 2025-10-09 10:52   ` Nautiyal, Ankit K
  0 siblings, 0 replies; 36+ messages in thread
From: Nautiyal, Ankit K @ 2025-10-09 10:52 UTC (permalink / raw)
  To: Nemesa Garg, intel-gfx, intel-xe, dri-devel


On 10/1/2025 12:04 PM, Nemesa Garg wrote:
> The sharpness property requires the use of one of the scaler
> so need to set the sharpness scaler coefficient values.
> These values are based on experiments and vary for different
> tap value/win size. These values are normalized by taking the
> sum of all values and then dividing each value with a sum.
>
> Add helper to compute and set the scaler coefficients.
>
> v2: Fix ifndef header naming issue reported by kernel test robot
> v3: Rename file name[Arun]
>      Replace array size number with macro[Arun]
> v4: Correct the register format[Jani]
>      Add brief comment and expalin about file[Jani]
>      Remove coefficient value from crtc_state[Jani]
> v5: Fix build issue
> v6: Add new function for writing coefficients[Ankit]
> v7: Add cooments and add a scaler id check [Ankit]
> v8: Remove casf_enable from here[Ankit]
> v9: Removed REG and use shift operator[Jani]
> v10: Remove filter macros
> v11: Add casf_write_coeff funtion to casf_enable
>
> Signed-off-by: Nemesa Garg <nemesa.garg@intel.com>

Reviewed-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>


> ---
>   drivers/gpu/drm/i915/display/intel_casf.c     | 99 +++++++++++++++++++
>   drivers/gpu/drm/i915/display/intel_casf.h     |  1 +
>   .../drm/i915/display/intel_display_types.h    |  8 ++
>   3 files changed, 108 insertions(+)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_casf.c b/drivers/gpu/drm/i915/display/intel_casf.c
> index 313ed6b10317..91f2362405b9 100644
> --- a/drivers/gpu/drm/i915/display/intel_casf.c
> +++ b/drivers/gpu/drm/i915/display/intel_casf.c
> @@ -133,6 +133,8 @@ int intel_casf_compute_config(struct intel_crtc_state *crtc_state)
>   
>   	intel_casf_compute_win_size(crtc_state);
>   
> +	intel_casf_scaler_compute_config(crtc_state);
> +
>   	return 0;
>   }
>   
> @@ -156,6 +158,101 @@ void intel_casf_sharpness_get_config(struct intel_crtc_state *crtc_state)
>   	}
>   }
>   
> +static int casf_coeff_tap(int i)
> +{
> +	return i % SCALER_FILTER_NUM_TAPS;
> +}
> +
> +static u32 casf_coeff(struct intel_crtc_state *crtc_state, int t)
> +{
> +	struct scaler_filter_coeff value;
> +	u32 coeff;
> +
> +	value = crtc_state->hw.casf_params.coeff[t];
> +	value.sign = 0;
> +
> +	coeff = value.sign << 15 | value.exp << 12 | value.mantissa << 3;
> +	return coeff;
> +}
> +
> +/*
> + * 17 phase of 7 taps requires 119 coefficients in 60 dwords per set.
> + * To enable casf:  program scaler coefficients with the coeffients
> + * that are calculated and stored in hw.casf_params.coeff as per
> + * SCALER_COEFFICIENT_FORMAT
> + */
> +static void intel_casf_write_coeff(struct intel_crtc_state *crtc_state)
> +{
> +	struct intel_display *display = to_intel_display(crtc_state);
> +	struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
> +	int id = crtc_state->scaler_state.scaler_id;
> +	int i;
> +
> +	if (id != 1) {
> +		drm_WARN(display->drm, 0, "Second scaler not enabled\n");
> +		return;
> +	}
> +
> +	intel_de_write_fw(display, GLK_PS_COEF_INDEX_SET(crtc->pipe, id, 0),
> +			  PS_COEF_INDEX_AUTO_INC);
> +
> +	for (i = 0; i < 17 * SCALER_FILTER_NUM_TAPS; i += 2) {
> +		u32 tmp;
> +		int t;
> +
> +		t = casf_coeff_tap(i);
> +		tmp = casf_coeff(crtc_state, t);
> +
> +		t = casf_coeff_tap(i + 1);
> +		tmp |= casf_coeff(crtc_state, t) << 16;
> +
> +		intel_de_write_fw(display, GLK_PS_COEF_DATA_SET(crtc->pipe, id, 0),
> +				  tmp);
> +	}
> +}
> +
> +static void convert_sharpness_coef_binary(struct scaler_filter_coeff *coeff,
> +					  u16 coefficient)
> +{
> +	if (coefficient < 25) {
> +		coeff->mantissa = (coefficient * 2048) / 100;
> +		coeff->exp = 3;
> +	} else if (coefficient < 50) {
> +		coeff->mantissa = (coefficient * 1024) / 100;
> +		coeff->exp = 2;
> +	} else if (coefficient < 100) {
> +		coeff->mantissa = (coefficient * 512) / 100;
> +		coeff->exp = 1;
> +	} else {
> +		coeff->mantissa = (coefficient * 256) / 100;
> +		coeff->exp = 0;
> +	}
> +}
> +
> +void intel_casf_scaler_compute_config(struct intel_crtc_state *crtc_state)
> +{
> +	const u16 *filtercoeff;
> +	u16 filter_coeff[SCALER_FILTER_NUM_TAPS];
> +	u16 sumcoeff = 0;
> +	int i;
> +
> +	if (crtc_state->hw.casf_params.win_size == 0)
> +		filtercoeff = filtercoeff_1;
> +	else if (crtc_state->hw.casf_params.win_size == 1)
> +		filtercoeff = filtercoeff_2;
> +	else
> +		filtercoeff = filtercoeff_3;
> +
> +	for (i = 0; i < SCALER_FILTER_NUM_TAPS; i++)
> +		sumcoeff += *(filtercoeff + i);
> +
> +	for (i = 0; i < SCALER_FILTER_NUM_TAPS; i++) {
> +		filter_coeff[i] = (*(filtercoeff + i) * 100 / sumcoeff);
> +		convert_sharpness_coef_binary(&crtc_state->hw.casf_params.coeff[i],
> +					      filter_coeff[i]);
> +	}
> +}
> +
>   void intel_casf_enable(struct intel_crtc_state *crtc_state)
>   {
>   	struct intel_display *display = to_intel_display(crtc_state);
> @@ -164,6 +261,8 @@ void intel_casf_enable(struct intel_crtc_state *crtc_state)
>   
>   	intel_casf_filter_lut_load(crtc, crtc_state);
>   
> +	intel_casf_write_coeff(crtc_state);
> +
>   	sharpness_ctl = FILTER_EN | FILTER_STRENGTH(crtc_state->hw.casf_params.strength);
>   
>   	sharpness_ctl |= crtc_state->hw.casf_params.win_size;
> diff --git a/drivers/gpu/drm/i915/display/intel_casf.h b/drivers/gpu/drm/i915/display/intel_casf.h
> index e8432b4bc52b..13e5003a23fc 100644
> --- a/drivers/gpu/drm/i915/display/intel_casf.h
> +++ b/drivers/gpu/drm/i915/display/intel_casf.h
> @@ -16,5 +16,6 @@ void intel_casf_update_strength(struct intel_crtc_state *new_crtc_state);
>   void intel_casf_sharpness_get_config(struct intel_crtc_state *crtc_state);
>   void intel_casf_enable(struct intel_crtc_state *crtc_state);
>   void intel_casf_disable(const struct intel_crtc_state *crtc_state);
> +void intel_casf_scaler_compute_config(struct intel_crtc_state *crtc_state);
>   
>   #endif /* __INTEL_CASF_H__ */
> diff --git a/drivers/gpu/drm/i915/display/intel_display_types.h b/drivers/gpu/drm/i915/display/intel_display_types.h
> index 771026f788d8..0eae95add055 100644
> --- a/drivers/gpu/drm/i915/display/intel_display_types.h
> +++ b/drivers/gpu/drm/i915/display/intel_display_types.h
> @@ -946,7 +946,15 @@ struct intel_csc_matrix {
>   	u16 postoff[3];
>   };
>   
> +struct scaler_filter_coeff {
> +	u16 sign;
> +	u16 exp;
> +	u16 mantissa;
> +};
> +
>   struct intel_casf {
> +#define SCALER_FILTER_NUM_TAPS 7
> +	struct scaler_filter_coeff coeff[SCALER_FILTER_NUM_TAPS];
>   	u8 strength;
>   	u8 win_size;
>   	bool casf_enable;

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: [PATCH 01/10] drm/drm_crtc: Introduce sharpness strength property
  2025-10-08 20:05       ` Dmitry Baryshkov
@ 2025-10-09 11:00         ` Nautiyal, Ankit K
  0 siblings, 0 replies; 36+ messages in thread
From: Nautiyal, Ankit K @ 2025-10-09 11:00 UTC (permalink / raw)
  To: Dmitry Baryshkov, Garg, Nemesa
  Cc: intel-gfx@lists.freedesktop.org, intel-xe@lists.freedesktop.org,
	dri-devel@lists.freedesktop.org, G M, Adarsh, Simona Vetter


On 10/9/2025 1:35 AM, Dmitry Baryshkov wrote:
> On Wed, Oct 08, 2025 at 07:22:00AM +0000, Garg, Nemesa wrote:
>>
>>> -----Original Message-----
>>> From: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
>>> Sent: Saturday, October 4, 2025 3:38 PM
>>> To: Garg, Nemesa <nemesa.garg@intel.com>
>>> Cc: intel-gfx@lists.freedesktop.org; intel-xe@lists.freedesktop.org; dri-
>>> devel@lists.freedesktop.org; Nautiyal, Ankit K <ankit.k.nautiyal@intel.com>;
>>> G M, Adarsh <adarsh.g.m@intel.com>; Simona Vetter
>>> <simona.vetter@ffwll.ch>
>>> Subject: Re: [PATCH 01/10] drm/drm_crtc: Introduce sharpness strength
>>> property
>>>
>>> On Wed, Oct 01, 2025 at 12:04:51PM +0530, Nemesa Garg wrote:
>>>> Introduce a new crtc property "SHARPNESS_STRENGTH" that allows the
>>>> user to set the intensity so as to get the sharpness effect.
>>>> The value of this property can be set from 0-255.
>>>> It is useful in scenario when the output is blurry and user want to
>>>> sharpen the pixels. User can increase/decrease the sharpness level
>>>> depending on the content displayed.
>>>>
>>>> v2: Rename crtc property variable [Arun]
>>>>      Add modeset detail in uapi doc[Uma]
>>>> v3: Fix build issue
>>>> v4: Modify the subject line[Ankit]
>>>>
>>>> Signed-off-by: Nemesa Garg <nemesa.garg@intel.com>
>>>> Reviewed-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
>>>> Tested-by: Adarsh G M <Adarsh.g.m@intel.com>
>>>> Acked-by: Simona Vetter <simona.vetter@ffwll.ch>
>>>> ---
>>>>   drivers/gpu/drm/drm_atomic_uapi.c |  4 ++++
>>>>   drivers/gpu/drm/drm_crtc.c        | 35 +++++++++++++++++++++++++++++++
>>>>   include/drm/drm_crtc.h            | 18 ++++++++++++++++
>>>>   3 files changed, 57 insertions(+)
>>>>
>>>> diff --git a/drivers/gpu/drm/drm_atomic_uapi.c
>>>> b/drivers/gpu/drm/drm_atomic_uapi.c
>>>> index 85dbdaa4a2e2..b2cb5ae5a139 100644
>>>> --- a/drivers/gpu/drm/drm_atomic_uapi.c
>>>> +++ b/drivers/gpu/drm/drm_atomic_uapi.c
>>>> @@ -419,6 +419,8 @@ static int drm_atomic_crtc_set_property(struct
>>> drm_crtc *crtc,
>>>>   		set_out_fence_for_crtc(state->state, crtc, fence_ptr);
>>>>   	} else if (property == crtc->scaling_filter_property) {
>>>>   		state->scaling_filter = val;
>>>> +	} else if (property == crtc->sharpness_strength_property) {
>>>> +		state->sharpness_strength = val;
>>>>   	} else if (crtc->funcs->atomic_set_property) {
>>>>   		return crtc->funcs->atomic_set_property(crtc, state, property,
>>> val);
>>>>   	} else {
>>>> @@ -456,6 +458,8 @@ drm_atomic_crtc_get_property(struct drm_crtc
>>> *crtc,
>>>>   		*val = 0;
>>>>   	else if (property == crtc->scaling_filter_property)
>>>>   		*val = state->scaling_filter;
>>>> +	else if (property == crtc->sharpness_strength_property)
>>>> +		*val = state->sharpness_strength;
>>>>   	else if (crtc->funcs->atomic_get_property)
>>>>   		return crtc->funcs->atomic_get_property(crtc, state, property,
>>> val);
>>>>   	else {
>>>> diff --git a/drivers/gpu/drm/drm_crtc.c b/drivers/gpu/drm/drm_crtc.c
>>>> index 46655339003d..a7797d260f1e 100644
>>>> --- a/drivers/gpu/drm/drm_crtc.c
>>>> +++ b/drivers/gpu/drm/drm_crtc.c
>>>> @@ -229,6 +229,25 @@ struct dma_fence *drm_crtc_create_fence(struct
>>> drm_crtc *crtc)
>>>>    * 		Driver's default scaling filter
>>>>    * 	Nearest Neighbor:
>>>>    * 		Nearest Neighbor scaling filter
>>>> + * SHARPNESS_STRENGTH:
>>>> + *	Atomic property for setting the sharpness strength/intensity by
>>> userspace.
>>>> + *
>>>> + *	The value of this property is set as an integer value ranging
>>>> + *	from 0 - 255 where:
>>>> + *
>>>> + *	0: Sharpness feature is disabled(default value).
>>>> + *
>>>> + *	1: Minimum sharpness.
>>>> + *
>>>> + *	255: Maximum sharpness.
>>>> + *
>>>> + *	User can gradually increase or decrease the sharpness level and can
>>>> + *	set the optimum value depending on content.
>>>> + *	This value will be passed to kernel through the UAPI.
>>>> + *	The setting of this property does not require modeset.
>>>> + *	The sharpness effect takes place post blending on the final composed
>>> output.
>>>> + *	If the feature is disabled, the content remains same without any
>>> sharpening effect
>>>> + *	and when this feature is applied, it enhances the clarity of the
>>> content.
>>>
>>> I can repeat my question from XDC: should we extend this to negative values,
>>> allowing softening (unsharpening) the image?
>>>
>> Hi Dmitry,
>> The un-sharpening or blurring is a very valid usecase in pre-blending where certain layers (data
>>  From clients) can be un-sharpened while some other layers can be enhanced with sharpening.
>> This helps give  focus to the particular content and suppress the background.
>>
>> However, this current property is targeted for post blending so will be
>> applied to the entire frame on screen, here sharpening only is the intended objective.
>>
>> We can pursue a pre-blending solution to target the un-sharpening case as well as a separate interface.
> Indeed, I'm more interested in a per-plane sharpen / unsharpen property.

Makes sense to have a separate interface for the per-plane sharp/unsharp 
property, that can be used for hardware that support per plane / pre 
blending sharpness.

Currently Intel display hardware does not have pre-blending sharpness 
support, but surely would be a good feature to have.

Regards,

Ankit


>
>> Hope this is fine.

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: [PATCH 00/10] Introduce drm sharpness property
  2025-10-01  6:34 [PATCH 00/10] Introduce drm sharpness property Nemesa Garg
                   ` (14 preceding siblings ...)
  2025-10-01  9:21 ` ✗ Xe.CI.Full: failure " Patchwork
@ 2025-10-09 11:02 ` Nautiyal, Ankit K
  15 siblings, 0 replies; 36+ messages in thread
From: Nautiyal, Ankit K @ 2025-10-09 11:02 UTC (permalink / raw)
  To: Nemesa Garg, intel-gfx, intel-xe, dri-devel


On 10/1/2025 12:04 PM, Nemesa Garg wrote:
>   Many a times images are blurred or upscaled content is also not as
> crisp as original rendered image. Traditional sharpening techniques often
> apply a uniform level of enhancement across entire image, which sometimes
> result in over-sharpening of some areas and potential loss of natural details.
>
> Intel has come up with Display Engine based adaptive sharpening filter
> with minimal power and performance impact. From LNL onwards, the Display
> hardware can use one of the pipe scaler for adaptive sharpness filter.
> This can be used for both gaming and non-gaming use cases like photos,
> image viewing. It works on a region of pixels depending on the tap size.
>
> This is an attempt to introduce an adaptive sharpness solution which
> helps in improving the image quality. For this new CRTC property is added.
> The user can set this property with desired sharpness strength value with
> 0-255. A value of 1 representing minimum sharpening strength and 255
> representing maximum sharpness strength. A strength value of 0 means no
> sharpening or sharpening feature disabled.
> It works on a region of pixels depending on the tap size. The coefficients
> are used to generate an alpha value which is used to blend the sharpened
> image to original image.
>
> Middleware MR link: https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3665
> IGT patchwork link: https://patchwork.freedesktop.org/series/130218/
>
> Continuing discussions from:  https://patchwork.freedesktop.org/series/129888/
>
> https://invent.kde.org/plasma/kwin/-/merge_requests/7689
> Got ack from kwin maintainer on the UAPI patch.
>
> Minor changes in patch 3, 4 and 5 hence require rb.
>
> Nemesa Garg (10):
>    drm/drm_crtc: Introduce sharpness strength property
>    drm/i915/display: Introduce HAS_CASF for sharpness support
>    drm/i915/display: Add CASF strength and winsize
>    drm/i915/display: Add filter lut values
>    drm/i915/display: Compute the scaler coefficients
>    drm/i915/display: Add and compute scaler parameter
>    drm/i915/display: Configure the second scaler
>    drm/i915/display: Set and get the casf config
>    drm/i915/display: Enable/disable casf
>    drm/i915/display: Expose sharpness strength property

Overall series LGTM.

Reviewed-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>


>
>   drivers/gpu/drm/drm_atomic_uapi.c             |   4 +
>   drivers/gpu/drm/drm_crtc.c                    |  35 +++
>   drivers/gpu/drm/i915/Makefile                 |   1 +
>   drivers/gpu/drm/i915/display/intel_casf.c     | 293 ++++++++++++++++++
>   drivers/gpu/drm/i915/display/intel_casf.h     |  22 ++
>   .../gpu/drm/i915/display/intel_casf_regs.h    |  33 ++
>   drivers/gpu/drm/i915/display/intel_crtc.c     |   3 +
>   .../drm/i915/display/intel_crtc_state_dump.c  |   5 +
>   drivers/gpu/drm/i915/display/intel_display.c  |  37 ++-
>   .../drm/i915/display/intel_display_device.h   |   1 +
>   .../drm/i915/display/intel_display_types.h    |  15 +
>   drivers/gpu/drm/i915/display/skl_scaler.c     |  91 +++++-
>   drivers/gpu/drm/i915/display/skl_scaler.h     |   2 +
>   drivers/gpu/drm/xe/Makefile                   |   1 +
>   include/drm/drm_crtc.h                        |  18 ++
>   15 files changed, 548 insertions(+), 13 deletions(-)
>   create mode 100644 drivers/gpu/drm/i915/display/intel_casf.c
>   create mode 100644 drivers/gpu/drm/i915/display/intel_casf.h
>   create mode 100644 drivers/gpu/drm/i915/display/intel_casf_regs.h
>

^ permalink raw reply	[flat|nested] 36+ messages in thread

* [PATCH 04/10] drm/i915/display: Add filter lut values
  2025-10-26 17:26 Nemesa Garg
@ 2025-10-26 17:26 ` Nemesa Garg
  0 siblings, 0 replies; 36+ messages in thread
From: Nemesa Garg @ 2025-10-26 17:26 UTC (permalink / raw)
  To: intel-gfx, dri-devel, intel-xe; +Cc: Nemesa Garg, Ankit Nautiyal

Add the register bits related to filter lut values
and helper to load the casf filter lut.

These values are golden values and these value has
to be loaded one time while enabling the casf.

v2: update commit message[Ankit]
v3: Add intel_casf prefix to filter_load fn[Jani]
v4: Define the filter macros here

Signed-off-by: Nemesa Garg <nemesa.garg@intel.com>
Reviewed-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
---
 drivers/gpu/drm/i915/display/intel_casf.c     | 49 +++++++++++++++++++
 drivers/gpu/drm/i915/display/intel_casf.h     |  1 +
 .../gpu/drm/i915/display/intel_casf_regs.h    | 11 +++++
 3 files changed, 61 insertions(+)

diff --git a/drivers/gpu/drm/i915/display/intel_casf.c b/drivers/gpu/drm/i915/display/intel_casf.c
index ad2faed5c1b3..313ed6b10317 100644
--- a/drivers/gpu/drm/i915/display/intel_casf.c
+++ b/drivers/gpu/drm/i915/display/intel_casf.c
@@ -16,6 +16,13 @@
 #define MAX_PIXELS_FOR_3_TAP_FILTER (1920 * 1080)
 #define MAX_PIXELS_FOR_5_TAP_FILTER (3840 * 2160)
 
+#define FILTER_COEFF_0_125 125
+#define FILTER_COEFF_0_25 250
+#define FILTER_COEFF_0_5 500
+#define FILTER_COEFF_1_0 1000
+#define FILTER_COEFF_0_0 0
+#define SET_POSITIVE_SIGN(x) ((x) & (~SIGN))
+
 /**
  * DOC: Content Adaptive Sharpness Filter (CASF)
  *
@@ -31,6 +38,46 @@
  * original image.
  */
 
+/* Default LUT values to be loaded one time. */
+static const u16 sharpness_lut[] = {
+	4095, 2047, 1364, 1022, 816, 678, 579,
+	504, 444, 397, 357, 323, 293, 268, 244, 224,
+	204, 187, 170, 154, 139, 125, 111, 98, 85,
+	73, 60, 48, 36, 24, 12, 0
+};
+
+const u16 filtercoeff_1[] = {
+	FILTER_COEFF_0_0, FILTER_COEFF_0_0, FILTER_COEFF_0_5,
+	FILTER_COEFF_1_0, FILTER_COEFF_0_5, FILTER_COEFF_0_0,
+	FILTER_COEFF_0_0,
+};
+
+const u16 filtercoeff_2[] = {
+	FILTER_COEFF_0_0, FILTER_COEFF_0_25, FILTER_COEFF_0_5,
+	FILTER_COEFF_1_0, FILTER_COEFF_0_5, FILTER_COEFF_0_25,
+	FILTER_COEFF_0_0,
+};
+
+const u16 filtercoeff_3[] = {
+	FILTER_COEFF_0_125, FILTER_COEFF_0_25, FILTER_COEFF_0_5,
+	FILTER_COEFF_1_0, FILTER_COEFF_0_5, FILTER_COEFF_0_25,
+	FILTER_COEFF_0_125,
+};
+
+static void intel_casf_filter_lut_load(struct intel_crtc *crtc,
+				       const struct intel_crtc_state *crtc_state)
+{
+	struct intel_display *display = to_intel_display(crtc_state);
+	int i;
+
+	intel_de_write(display, SHRPLUT_INDEX(crtc->pipe),
+		       INDEX_AUTO_INCR | INDEX_VALUE(0));
+
+	for (i = 0; i < ARRAY_SIZE(sharpness_lut); i++)
+		intel_de_write(display, SHRPLUT_DATA(crtc->pipe),
+			       sharpness_lut[i]);
+}
+
 void intel_casf_update_strength(struct intel_crtc_state *crtc_state)
 {
 	struct intel_display *display = to_intel_display(crtc_state);
@@ -115,6 +162,8 @@ void intel_casf_enable(struct intel_crtc_state *crtc_state)
 	struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
 	u32 sharpness_ctl;
 
+	intel_casf_filter_lut_load(crtc, crtc_state);
+
 	sharpness_ctl = FILTER_EN | FILTER_STRENGTH(crtc_state->hw.casf_params.strength);
 
 	sharpness_ctl |= crtc_state->hw.casf_params.win_size;
diff --git a/drivers/gpu/drm/i915/display/intel_casf.h b/drivers/gpu/drm/i915/display/intel_casf.h
index 753871880279..e8432b4bc52b 100644
--- a/drivers/gpu/drm/i915/display/intel_casf.h
+++ b/drivers/gpu/drm/i915/display/intel_casf.h
@@ -9,6 +9,7 @@
 #include <linux/types.h>
 
 struct intel_crtc_state;
+struct intel_crtc;
 
 int intel_casf_compute_config(struct intel_crtc_state *crtc_state);
 void intel_casf_update_strength(struct intel_crtc_state *new_crtc_state);
diff --git a/drivers/gpu/drm/i915/display/intel_casf_regs.h b/drivers/gpu/drm/i915/display/intel_casf_regs.h
index bd763efe5c1b..87803cca510f 100644
--- a/drivers/gpu/drm/i915/display/intel_casf_regs.h
+++ b/drivers/gpu/drm/i915/display/intel_casf_regs.h
@@ -19,4 +19,15 @@
 #define   SHARPNESS_FILTER_SIZE_5X5	REG_FIELD_PREP(FILTER_SIZE_MASK, 1)
 #define   SHARPNESS_FILTER_SIZE_7X7	REG_FIELD_PREP(FILTER_SIZE_MASK, 2)
 
+#define _SHRPLUT_DATA_A			0x682B8
+#define _SHRPLUT_DATA_B			0x68AB8
+#define SHRPLUT_DATA(pipe)		_MMIO_PIPE(pipe, _SHRPLUT_DATA_A, _SHRPLUT_DATA_B)
+
+#define _SHRPLUT_INDEX_A		0x682B4
+#define _SHRPLUT_INDEX_B		0x68AB4
+#define SHRPLUT_INDEX(pipe)		_MMIO_PIPE(pipe, _SHRPLUT_INDEX_A, _SHRPLUT_INDEX_B)
+#define   INDEX_AUTO_INCR		REG_BIT(10)
+#define   INDEX_VALUE_MASK		REG_GENMASK(4, 0)
+#define   INDEX_VALUE(x)		REG_FIELD_PREP(INDEX_VALUE_MASK, (x))
+
 #endif /* __INTEL_CASF_REGS__ */
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 36+ messages in thread

end of thread, other threads:[~2025-10-26 17:31 UTC | newest]

Thread overview: 36+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-10-01  6:34 [PATCH 00/10] Introduce drm sharpness property Nemesa Garg
2025-10-01  6:34 ` [PATCH 01/10] drm/drm_crtc: Introduce sharpness strength property Nemesa Garg
2025-10-04 10:08   ` Dmitry Baryshkov
2025-10-08  7:22     ` Garg, Nemesa
2025-10-08 20:05       ` Dmitry Baryshkov
2025-10-09 11:00         ` Nautiyal, Ankit K
2025-10-01  6:34 ` [PATCH 02/10] drm/i915/display: Introduce HAS_CASF for sharpness support Nemesa Garg
2025-10-01  6:34 ` [PATCH 03/10] drm/i915/display: Add CASF strength and winsize Nemesa Garg
2025-10-09 10:51   ` Nautiyal, Ankit K
2025-10-01  6:34 ` [PATCH 04/10] drm/i915/display: Add filter lut values Nemesa Garg
2025-10-09 10:51   ` Nautiyal, Ankit K
2025-10-01  6:34 ` [PATCH 05/10] drm/i915/display: Compute the scaler coefficients Nemesa Garg
2025-10-09 10:52   ` Nautiyal, Ankit K
2025-10-01  6:34 ` [PATCH 06/10] drm/i915/display: Add and compute scaler parameter Nemesa Garg
2025-10-01  6:34 ` [PATCH 07/10] drm/i915/display: Configure the second scaler Nemesa Garg
2025-10-01  6:34 ` [PATCH 08/10] drm/i915/display: Set and get the casf config Nemesa Garg
2025-10-01  6:34 ` [PATCH 09/10] drm/i915/display: Enable/disable casf Nemesa Garg
2025-10-01  6:35 ` [PATCH 10/10] drm/i915/display: Expose sharpness strength property Nemesa Garg
2025-10-01  7:30 ` ✗ CI.checkpatch: warning for Introduce drm sharpness property Patchwork
2025-10-01  7:31 ` ✓ CI.KUnit: success " Patchwork
2025-10-01  7:47 ` ✗ CI.checksparse: warning " Patchwork
2025-10-01  8:07 ` ✓ Xe.CI.BAT: success " Patchwork
2025-10-01  9:21 ` ✗ Xe.CI.Full: failure " Patchwork
2025-10-09 11:02 ` [PATCH 00/10] " Nautiyal, Ankit K
  -- strict thread matches above, loose matches on Subject: below --
2025-10-26 17:26 Nemesa Garg
2025-10-26 17:26 ` [PATCH 04/10] drm/i915/display: Add filter lut values Nemesa Garg
2025-09-26 11:37 [PATCH 00/10] Introduce drm sharpness property Nemesa Garg
2025-09-26 11:37 ` [PATCH 04/10] drm/i915/display: Add filter lut values Nemesa Garg
2025-10-01  5:31   ` Nautiyal, Ankit K
2025-08-07  9:28 [PATCH 00/10] Introduce drm sharpness property Nemesa Garg
2025-08-07  9:28 ` [PATCH 04/10] drm/i915/display: Add filter lut values Nemesa Garg
2025-07-24 13:45 [PATCH 00/10] Introduce drm sharpness property Nemesa Garg
2025-07-24 13:45 ` [PATCH 04/10] drm/i915/display: Add filter lut values Nemesa Garg
2025-05-19 12:26 [PATCH 00/10] Introduce drm sharpness property Nemesa Garg
2025-05-19 12:26 ` [PATCH 04/10] drm/i915/display: Add filter lut values Nemesa Garg
2025-05-19 12:45   ` Jani Nikula
2025-05-27  3:26     ` Garg, Nemesa
2025-04-08 10:24 [PATCH 00/10] Introduce drm sharpness property Nemesa Garg
2025-04-08 10:25 ` [PATCH 04/10] drm/i915/display: Add filter lut values Nemesa Garg
2025-04-02 12:56 [PATCH 00/10] Introduce drm sharpness property Nemesa Garg
2025-04-02 12:56 ` [PATCH 04/10] drm/i915/display: Add filter lut values Nemesa Garg
2025-03-04 10:28 [PATCH 00/10] Introduce drm sharpness property Nemesa Garg
2025-03-04 10:28 ` [PATCH 04/10] drm/i915/display: Add filter lut values Nemesa Garg
2025-03-11 12:00   ` Nautiyal, Ankit K

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox