* [v7 00/15] Plane Color Pipeline support for Intel platforms
@ 2025-12-01 6:46 Uma Shankar
2025-12-01 6:46 ` [v7 01/15] drm/i915/display: Add identifiers for driver specific blocks Uma Shankar
` (19 more replies)
0 siblings, 20 replies; 44+ messages in thread
From: Uma Shankar @ 2025-12-01 6:46 UTC (permalink / raw)
To: intel-gfx, intel-xe, dri-devel
Cc: chaitanya.kumar.borah, ville.syrjala, pekka.paalanen, contact,
harry.wentland, mwen, jadahl, sebastian.wick, swati2.sharma,
alex.hung, jani.nikula, suraj.kandpal, Uma Shankar, Joshua Ashton,
Michel Dänzer, Xaver Hugl, Victoria Brekenfeld, Sima,
Liviu Dudau
This series intends to add support for Plane Color Management for
Intel platforms. This is based on the design which has been agreed
upon by the community. Series implementing the design for generic
DRM core has been sent out by Alex Hung and Harry Wentland and is
merged to upstream tree:
https://patchwork.freedesktop.org/series/152970/
IGT Changes to validate the same have been implemented and can be found
below:
https://patchwork.freedesktop.org/series/150455/
Follow On work:
Changes for Multi Segmented/PWL LUT's will be taken up in a separate
series to align with implementation of basic color pipeline first in
upstream. This is as per agreement and alignment in Hackfest discussion.
Changes in v7:
- Review comments addressed (Jani, Suraj)
- Rebased on AMD series for core API's
- Some fixes
Changes in v6:
- Remove Multi Segmented LUT implementations. This will be taken up
as a separate series.
- Code Refactoring and review comments addressed (Jani, Suraj, Simon)
- Propogate Plane Color changes to crtc state
- Fix DSB programming for Luts
- Add 3D Lut support
- Plane color callbacks updated to TGL+
- Rebase on AMD's Color series v12 version
Changes in v5:
- Exposing CTM as 3x4 instead of 3x3 using post offsets.
- Exposing single segmented 1D LUT color op along with multi
segmented lut in 2 different color pipelines
- Add helper to extract LUT data from 32 bit samples
- Enable uapi to hardware state copy in driver
- Add DSB support to program color Luts
- Fix some miscellaneous issues
Changes in v4:
- Rebase
Changes in v3:
- Rebase on latest plane color pipeline series (v7) from AMD
- Update documentation for 3x3 CTM colorop (Dmitry)
- Fix documentation for multi segmented 1D lut (Dmitry)
- Squash changes for 1d LUT helpers (Dmitry)
Changes in v2:
- Add documentation for hardware capability detection for segmented luts
- Add documentation for lut computation in userspace based on
hardware caps
- Update drm_color_lut_range data structure and handling
- Enhance the structure to avoid ambiguity and cater to varying
hardware implementations of 1D Lut blocks
- Replace drm_color_lut_ext with drm_color_lut32
- Change namespace for drm_color_lut_range flags (Sebastien)
- Program super fine post csc gamma lut segment for Intel hardware
Cc: Ville Syrjala <ville.syrjala@linux.intel.com>
Cc: Pekka Paalanen <pekka.paalanen@collabora.com>
Cc: Simon Ser <contact@emersion.fr>
Cc: Harry Wentland <harry.wentland@amd.com>
Cc: Melissa Wen <mwen@igalia.com>
Cc: Jonas Ådahl <jadahl@redhat.com>
Cc: Sebastian Wick <sebastian.wick@redhat.com>
Cc: Joshua Ashton <joshua@froggi.es>
Cc: Michel Dänzer <mdaenzer@redhat.com>
Cc: Xaver Hugl <xaver.hugl@gmail.com>
Cc: Victoria Brekenfeld <victoria@system76.com>
Cc: Sima <daniel@ffwll.ch>
Cc: Liviu Dudau <Liviu.Dudau@arm.com>
Cc: Chaitanya Kumar Borah <chaitanya.kumar.borah@intel.com>
Cc: Swati Sharma <swati2.sharma@intel.com>
Cc: Jani Nikula <jani.nikula@intel.com>
Cc: Suraj Kandpal <suraj.kandpal@intel.com>
Chaitanya Kumar Borah (8):
drm/i915/display: Add identifiers for driver specific blocks
drm/i915: Add intel_color_op
drm/i915/color: Add helper to create intel colorop
drm/i915/color: Create a transfer function color pipeline
drm/i915/color: Add framework to program CSC
drm/i915/color: Preserve sign bit when int_bits is Zero
drm/i915/display: Add registers for 3D LUT
drm/i915/color: Add 3D LUT to color pipeline
Uma Shankar (7):
drm/i915/color: Add plane CTM callback for D12 and beyond
drm/i915: Add register definitions for Plane Degamma
drm/i915: Add register definitions for Plane Post CSC
drm/i915/color: Add framework to program PRE/POST CSC LUT
drm/i915/color: Program Pre-CSC registers
drm/i915/xelpd: Program Plane Post CSC Registers
drm/i915/color: Enable Plane Color Pipelines
drivers/gpu/drm/i915/Makefile | 2 +
drivers/gpu/drm/i915/display/intel_color.c | 336 ++++++++++++++++++
drivers/gpu/drm/i915/display/intel_color.h | 8 +-
.../drm/i915/display/intel_color_pipeline.c | 116 ++++++
.../drm/i915/display/intel_color_pipeline.h | 14 +
.../gpu/drm/i915/display/intel_color_regs.h | 29 ++
drivers/gpu/drm/i915/display/intel_colorop.c | 35 ++
drivers/gpu/drm/i915/display/intel_colorop.h | 15 +
drivers/gpu/drm/i915/display/intel_display.c | 5 +-
.../drm/i915/display/intel_display_limits.h | 9 +
.../drm/i915/display/intel_display_types.h | 9 +
drivers/gpu/drm/i915/display/intel_plane.c | 55 +++
.../drm/i915/display/skl_universal_plane.c | 21 ++
.../i915/display/skl_universal_plane_regs.h | 115 ++++++
drivers/gpu/drm/xe/Makefile | 2 +
15 files changed, 769 insertions(+), 2 deletions(-)
create mode 100644 drivers/gpu/drm/i915/display/intel_color_pipeline.c
create mode 100644 drivers/gpu/drm/i915/display/intel_color_pipeline.h
create mode 100644 drivers/gpu/drm/i915/display/intel_colorop.c
create mode 100644 drivers/gpu/drm/i915/display/intel_colorop.h
--
2.50.1
^ permalink raw reply [flat|nested] 44+ messages in thread
* [v7 01/15] drm/i915/display: Add identifiers for driver specific blocks
2025-12-01 6:46 [v7 00/15] Plane Color Pipeline support for Intel platforms Uma Shankar
@ 2025-12-01 6:46 ` Uma Shankar
2025-12-02 7:42 ` [v7, " Murthy, Arun R
2025-12-01 6:46 ` [v7 02/15] drm/i915: Add intel_color_op Uma Shankar
` (18 subsequent siblings)
19 siblings, 1 reply; 44+ messages in thread
From: Uma Shankar @ 2025-12-01 6:46 UTC (permalink / raw)
To: intel-gfx, intel-xe, dri-devel
Cc: chaitanya.kumar.borah, ville.syrjala, pekka.paalanen, contact,
harry.wentland, mwen, jadahl, sebastian.wick, swati2.sharma,
alex.hung, jani.nikula, suraj.kandpal, Uma Shankar
From: Chaitanya Kumar Borah <chaitanya.kumar.borah@intel.com>
Add macros to identify intel specific color blocks. It will help
in mapping drm_color_ops to intel color HW blocks
v2:- Prefix enums with INTEL_* (Jani, Suraj)
- Remove unnecessary comments (Jani)
- Commit message improvements (Suraj)
Reviewed-by: Suraj Kandpal <suraj.kandpal@intel.com>
Signed-off-by: Chaitanya Kumar Borah <chaitanya.kumar.borah@intel.com>
Signed-off-by: Uma Shankar <uma.shankar@intel.com>
---
drivers/gpu/drm/i915/display/intel_display_limits.h | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/drivers/gpu/drm/i915/display/intel_display_limits.h b/drivers/gpu/drm/i915/display/intel_display_limits.h
index f0fa27e365ab..55fd574ba313 100644
--- a/drivers/gpu/drm/i915/display/intel_display_limits.h
+++ b/drivers/gpu/drm/i915/display/intel_display_limits.h
@@ -138,4 +138,12 @@ enum hpd_pin {
HPD_NUM_PINS
};
+enum intel_color_block {
+ INTEL_PLANE_CB_PRE_CSC_LUT,
+ INTEL_PLANE_CB_CSC,
+ INTEL_PLANE_CB_POST_CSC_LUT,
+
+ INTEL_CB_MAX
+};
+
#endif /* __INTEL_DISPLAY_LIMITS_H__ */
--
2.50.1
^ permalink raw reply related [flat|nested] 44+ messages in thread
* [v7 02/15] drm/i915: Add intel_color_op
2025-12-01 6:46 [v7 00/15] Plane Color Pipeline support for Intel platforms Uma Shankar
2025-12-01 6:46 ` [v7 01/15] drm/i915/display: Add identifiers for driver specific blocks Uma Shankar
@ 2025-12-01 6:46 ` Uma Shankar
2025-12-01 14:21 ` kernel test robot
2025-12-01 6:46 ` [v7 03/15] drm/i915/color: Add helper to create intel colorop Uma Shankar
` (17 subsequent siblings)
19 siblings, 1 reply; 44+ messages in thread
From: Uma Shankar @ 2025-12-01 6:46 UTC (permalink / raw)
To: intel-gfx, intel-xe, dri-devel
Cc: chaitanya.kumar.borah, ville.syrjala, pekka.paalanen, contact,
harry.wentland, mwen, jadahl, sebastian.wick, swati2.sharma,
alex.hung, jani.nikula, suraj.kandpal, Uma Shankar
From: Chaitanya Kumar Borah <chaitanya.kumar.borah@intel.com>
Add data structure to store intel specific details of colorop
v2:
- Remove dead code
- Convert macro to function (Jani)
- Remove colorop state as it is not being used
- Refactor to separate file
Reviewed-by: Suraj Kandpal <suraj.kandpal@intel.com>
Signed-off-by: Chaitanya Kumar Borah <chaitanya.kumar.borah@intel.com>
Signed-off-by: Uma Shankar <uma.shankar@intel.com>
---
drivers/gpu/drm/i915/Makefile | 1 +
drivers/gpu/drm/i915/display/intel_colorop.c | 10 ++++++++++
drivers/gpu/drm/i915/display/intel_colorop.h | 13 +++++++++++++
drivers/gpu/drm/i915/display/intel_display_types.h | 5 +++++
drivers/gpu/drm/xe/Makefile | 1 +
5 files changed, 30 insertions(+)
create mode 100644 drivers/gpu/drm/i915/display/intel_colorop.c
create mode 100644 drivers/gpu/drm/i915/display/intel_colorop.h
diff --git a/drivers/gpu/drm/i915/Makefile b/drivers/gpu/drm/i915/Makefile
index b2250432ae98..7c19d5345d88 100644
--- a/drivers/gpu/drm/i915/Makefile
+++ b/drivers/gpu/drm/i915/Makefile
@@ -240,6 +240,7 @@ i915-y += \
display/intel_cdclk.o \
display/intel_cmtg.o \
display/intel_color.o \
+ display/intel_colorop.o \
display/intel_combo_phy.o \
display/intel_connector.o \
display/intel_crtc.o \
diff --git a/drivers/gpu/drm/i915/display/intel_colorop.c b/drivers/gpu/drm/i915/display/intel_colorop.c
new file mode 100644
index 000000000000..eaab50d2d126
--- /dev/null
+++ b/drivers/gpu/drm/i915/display/intel_colorop.c
@@ -0,0 +1,10 @@
+// SPDX-License-Identifier: MIT
+/*
+ * Copyright © 2025 Intel Corporation
+ */
+#include "intel_colorop.h"
+
+struct intel_colorop *to_intel_colorop(struct drm_colorop *colorop)
+{
+ return container_of(colorop, struct intel_colorop, base);
+}
diff --git a/drivers/gpu/drm/i915/display/intel_colorop.h b/drivers/gpu/drm/i915/display/intel_colorop.h
new file mode 100644
index 000000000000..23a29a565949
--- /dev/null
+++ b/drivers/gpu/drm/i915/display/intel_colorop.h
@@ -0,0 +1,13 @@
+/* SPDX-License-Identifier: MIT */
+/*
+ * Copyright © 2025 Intel Corporation
+ */
+
+#ifndef __INTEL_COLOROP_H__
+#define __INTEL_COLOROP_H__
+
+#include "intel_display_types.h"
+
+struct intel_colorop *to_intel_colorop(struct drm_colorop *colorop);
+
+#endif /* __INTEL_COLOROP_H__ */
diff --git a/drivers/gpu/drm/i915/display/intel_display_types.h b/drivers/gpu/drm/i915/display/intel_display_types.h
index 38702a9e0f50..bb8b8466235a 100644
--- a/drivers/gpu/drm/i915/display/intel_display_types.h
+++ b/drivers/gpu/drm/i915/display/intel_display_types.h
@@ -1985,6 +1985,11 @@ struct intel_dp_mst_encoder {
struct intel_connector *connector;
};
+struct intel_colorop {
+ struct drm_colorop base;
+ enum intel_color_block id;
+};
+
static inline struct intel_encoder *
intel_attached_encoder(struct intel_connector *connector)
{
diff --git a/drivers/gpu/drm/xe/Makefile b/drivers/gpu/drm/xe/Makefile
index a7e13a676f7d..3420725c4ba8 100644
--- a/drivers/gpu/drm/xe/Makefile
+++ b/drivers/gpu/drm/xe/Makefile
@@ -234,6 +234,7 @@ xe-$(CONFIG_DRM_XE_DISPLAY) += \
i915-display/intel_cdclk.o \
i915-display/intel_cmtg.o \
i915-display/intel_color.o \
+ i915-display/intel_colorop.o \
i915-display/intel_combo_phy.o \
i915-display/intel_connector.o \
i915-display/intel_crtc.o \
--
2.50.1
^ permalink raw reply related [flat|nested] 44+ messages in thread
* [v7 03/15] drm/i915/color: Add helper to create intel colorop
2025-12-01 6:46 [v7 00/15] Plane Color Pipeline support for Intel platforms Uma Shankar
2025-12-01 6:46 ` [v7 01/15] drm/i915/display: Add identifiers for driver specific blocks Uma Shankar
2025-12-01 6:46 ` [v7 02/15] drm/i915: Add intel_color_op Uma Shankar
@ 2025-12-01 6:46 ` Uma Shankar
2025-12-01 6:46 ` [v7 04/15] drm/i915/color: Create a transfer function color pipeline Uma Shankar
` (16 subsequent siblings)
19 siblings, 0 replies; 44+ messages in thread
From: Uma Shankar @ 2025-12-01 6:46 UTC (permalink / raw)
To: intel-gfx, intel-xe, dri-devel
Cc: chaitanya.kumar.borah, ville.syrjala, pekka.paalanen, contact,
harry.wentland, mwen, jadahl, sebastian.wick, swati2.sharma,
alex.hung, jani.nikula, suraj.kandpal, Uma Shankar
From: Chaitanya Kumar Borah <chaitanya.kumar.borah@intel.com>
Add intel colorop create helper
v2:
- Make function names consistent (Jani)
- Remove redundant code related to colorop state
- Refactor code to separate files
Reviewed-by: Suraj Kandpal <suraj.kandpal@intel.com>
Signed-off-by: Chaitanya Kumar Borah <chaitanya.kumar.borah@intel.com>
Signed-off-by: Uma Shankar <uma.shankar@intel.com>
---
drivers/gpu/drm/i915/display/intel_colorop.c | 25 ++++++++++++++++++++
drivers/gpu/drm/i915/display/intel_colorop.h | 2 ++
2 files changed, 27 insertions(+)
diff --git a/drivers/gpu/drm/i915/display/intel_colorop.c b/drivers/gpu/drm/i915/display/intel_colorop.c
index eaab50d2d126..f2fc0d8780ce 100644
--- a/drivers/gpu/drm/i915/display/intel_colorop.c
+++ b/drivers/gpu/drm/i915/display/intel_colorop.c
@@ -8,3 +8,28 @@ struct intel_colorop *to_intel_colorop(struct drm_colorop *colorop)
{
return container_of(colorop, struct intel_colorop, base);
}
+
+struct intel_colorop *intel_colorop_alloc(void)
+{
+ struct intel_colorop *colorop;
+
+ colorop = kzalloc(sizeof(*colorop), GFP_KERNEL);
+ if (!colorop)
+ return ERR_PTR(-ENOMEM);
+
+ return colorop;
+}
+
+struct intel_colorop *intel_colorop_create(enum intel_color_block id)
+{
+ struct intel_colorop *colorop;
+
+ colorop = intel_colorop_alloc();
+
+ if (IS_ERR(colorop))
+ return colorop;
+
+ colorop->id = id;
+
+ return colorop;
+}
diff --git a/drivers/gpu/drm/i915/display/intel_colorop.h b/drivers/gpu/drm/i915/display/intel_colorop.h
index 23a29a565949..21d58eb9f3d0 100644
--- a/drivers/gpu/drm/i915/display/intel_colorop.h
+++ b/drivers/gpu/drm/i915/display/intel_colorop.h
@@ -9,5 +9,7 @@
#include "intel_display_types.h"
struct intel_colorop *to_intel_colorop(struct drm_colorop *colorop);
+struct intel_colorop *intel_colorop_alloc(void);
+struct intel_colorop *intel_colorop_create(enum intel_color_block id);
#endif /* __INTEL_COLOROP_H__ */
--
2.50.1
^ permalink raw reply related [flat|nested] 44+ messages in thread
* [v7 04/15] drm/i915/color: Create a transfer function color pipeline
2025-12-01 6:46 [v7 00/15] Plane Color Pipeline support for Intel platforms Uma Shankar
` (2 preceding siblings ...)
2025-12-01 6:46 ` [v7 03/15] drm/i915/color: Add helper to create intel colorop Uma Shankar
@ 2025-12-01 6:46 ` Uma Shankar
2025-12-01 9:02 ` Kandpal, Suraj
` (2 more replies)
2025-12-01 6:46 ` [v7 05/15] drm/i915/color: Add framework to program CSC Uma Shankar
` (15 subsequent siblings)
19 siblings, 3 replies; 44+ messages in thread
From: Uma Shankar @ 2025-12-01 6:46 UTC (permalink / raw)
To: intel-gfx, intel-xe, dri-devel
Cc: chaitanya.kumar.borah, ville.syrjala, pekka.paalanen, contact,
harry.wentland, mwen, jadahl, sebastian.wick, swati2.sharma,
alex.hung, jani.nikula, suraj.kandpal, Uma Shankar
From: Chaitanya Kumar Borah <chaitanya.kumar.borah@intel.com>
Add a color pipeline with three colorops in the sequence
1D LUT - 3x4 CTM - 1D LUT
This pipeline can be used to do any color space conversion or HDR
tone mapping
v2: Change namespace to drm_plane_colorop*
v3: Use simpler/pre-existing colorops for first iteration
v4:
- s/*_tf_*/*_color_* (Jani)
- Refactor to separate files (Jani)
- Add missing space in comment (Suraj)
- Consolidate patch that adds/attaches pipeline property
v5:
- Limit MAX_COLOR_PIPELINES to 2.(Suraj)
Increase it as and when we add more pipelines.
- Remove redundant initialization code (Suraj)
Signed-off-by: Uma Shankar <uma.shankar@intel.com>
Signed-off-by: Chaitanya Kumar Borah <chaitanya.kumar.borah@intel.com>
---
drivers/gpu/drm/i915/Makefile | 1 +
.../drm/i915/display/intel_color_pipeline.c | 97 +++++++++++++++++++
.../drm/i915/display/intel_color_pipeline.h | 13 +++
drivers/gpu/drm/xe/Makefile | 1 +
4 files changed, 112 insertions(+)
create mode 100644 drivers/gpu/drm/i915/display/intel_color_pipeline.c
create mode 100644 drivers/gpu/drm/i915/display/intel_color_pipeline.h
diff --git a/drivers/gpu/drm/i915/Makefile b/drivers/gpu/drm/i915/Makefile
index 7c19d5345d88..ca5c69d1cb08 100644
--- a/drivers/gpu/drm/i915/Makefile
+++ b/drivers/gpu/drm/i915/Makefile
@@ -241,6 +241,7 @@ i915-y += \
display/intel_cmtg.o \
display/intel_color.o \
display/intel_colorop.o \
+ display/intel_color_pipeline.o \
display/intel_combo_phy.o \
display/intel_connector.o \
display/intel_crtc.o \
diff --git a/drivers/gpu/drm/i915/display/intel_color_pipeline.c b/drivers/gpu/drm/i915/display/intel_color_pipeline.c
new file mode 100644
index 000000000000..1415f94dd3e3
--- /dev/null
+++ b/drivers/gpu/drm/i915/display/intel_color_pipeline.c
@@ -0,0 +1,97 @@
+// SPDX-License-Identifier: MIT
+/*
+ * Copyright © 2025 Intel Corporation
+ */
+#include "intel_colorop.h"
+#include "intel_color_pipeline.h"
+#include "intel_de.h"
+#include "intel_display_types.h"
+#include "skl_universal_plane.h"
+
+#define MAX_COLOR_PIPELINES 2
+#define PLANE_DEGAMMA_SIZE 128
+#define PLANE_GAMMA_SIZE 32
+
+static
+int _intel_color_pipeline_plane_init(struct drm_plane *plane, struct drm_prop_enum_list *list)
+{
+ struct intel_colorop *colorop;
+ struct drm_device *dev = plane->dev;
+ int ret;
+ struct drm_colorop *prev_op;
+
+ colorop = intel_colorop_create(INTEL_PLANE_CB_PRE_CSC_LUT);
+
+ ret = drm_plane_colorop_curve_1d_lut_init(dev, &colorop->base, plane,
+ PLANE_DEGAMMA_SIZE,
+ DRM_COLOROP_LUT1D_INTERPOLATION_LINEAR,
+ DRM_COLOROP_FLAG_ALLOW_BYPASS);
+
+ if (ret)
+ return ret;
+
+ list->type = colorop->base.base.id;
+ list->name = kasprintf(GFP_KERNEL, "Color Pipeline %d", colorop->base.base.id);
+
+ /* TODO: handle failures and clean up */
+ prev_op = &colorop->base;
+
+ colorop = intel_colorop_create(INTEL_PLANE_CB_CSC);
+ ret = drm_plane_colorop_ctm_3x4_init(dev, &colorop->base, plane,
+ DRM_COLOROP_FLAG_ALLOW_BYPASS);
+ if (ret)
+ return ret;
+
+ drm_colorop_set_next_property(prev_op, &colorop->base);
+ prev_op = &colorop->base;
+
+ colorop = intel_colorop_create(INTEL_PLANE_CB_POST_CSC_LUT);
+ ret = drm_plane_colorop_curve_1d_lut_init(dev, &colorop->base, plane,
+ PLANE_GAMMA_SIZE,
+ DRM_COLOROP_LUT1D_INTERPOLATION_LINEAR,
+ DRM_COLOROP_FLAG_ALLOW_BYPASS);
+ if (ret)
+ return ret;
+
+ drm_colorop_set_next_property(prev_op, &colorop->base);
+
+ return 0;
+}
+
+int intel_color_pipeline_plane_init(struct drm_plane *plane)
+{
+ struct drm_device *dev = plane->dev;
+ struct intel_display *display = to_intel_display(dev);
+ struct drm_property *prop;
+ struct drm_prop_enum_list pipelines[MAX_COLOR_PIPELINES];
+ int len = 0;
+ int ret;
+
+ /* Currently expose pipeline only for HDR planes */
+ if (!icl_is_hdr_plane(display, to_intel_plane(plane)->id))
+ return 0;
+
+ /* Add "Bypass" (i.e. NULL) pipeline */
+ pipelines[len].type = 0;
+ pipelines[len].name = "Bypass";
+ len++;
+
+ /* Add pipeline consisting of transfer functions */
+ ret = _intel_color_pipeline_plane_init(plane, &pipelines[len]);
+ if (ret)
+ return ret;
+ len++;
+
+ /* Create COLOR_PIPELINE property and attach */
+ prop = drm_property_create_enum(dev, DRM_MODE_PROP_ATOMIC,
+ "COLOR_PIPELINE",
+ pipelines, len);
+ if (!prop)
+ return -ENOMEM;
+
+ plane->color_pipeline_property = prop;
+
+ drm_object_attach_property(&plane->base, prop, 0);
+
+ return 0;
+}
diff --git a/drivers/gpu/drm/i915/display/intel_color_pipeline.h b/drivers/gpu/drm/i915/display/intel_color_pipeline.h
new file mode 100644
index 000000000000..7f1d32bc9202
--- /dev/null
+++ b/drivers/gpu/drm/i915/display/intel_color_pipeline.h
@@ -0,0 +1,13 @@
+/* SPDX-License-Identifier: MIT */
+/*
+ * Copyright © 2025 Intel Corporation
+ */
+
+#ifndef __INTEL_COLOR_PIPELINE_H__
+#define __INTEL_COLOR_PIPELINE_H__
+
+struct drm_plane;
+
+int intel_color_pipeline_plane_init(struct drm_plane *plane);
+
+#endif /* __INTEL_COLOR_PIPELINE_H__ */
diff --git a/drivers/gpu/drm/xe/Makefile b/drivers/gpu/drm/xe/Makefile
index 3420725c4ba8..89f922d745ba 100644
--- a/drivers/gpu/drm/xe/Makefile
+++ b/drivers/gpu/drm/xe/Makefile
@@ -235,6 +235,7 @@ xe-$(CONFIG_DRM_XE_DISPLAY) += \
i915-display/intel_cmtg.o \
i915-display/intel_color.o \
i915-display/intel_colorop.o \
+ i915-display/intel_color_pipeline.o \
i915-display/intel_combo_phy.o \
i915-display/intel_connector.o \
i915-display/intel_crtc.o \
--
2.50.1
^ permalink raw reply related [flat|nested] 44+ messages in thread
* [v7 05/15] drm/i915/color: Add framework to program CSC
2025-12-01 6:46 [v7 00/15] Plane Color Pipeline support for Intel platforms Uma Shankar
` (3 preceding siblings ...)
2025-12-01 6:46 ` [v7 04/15] drm/i915/color: Create a transfer function color pipeline Uma Shankar
@ 2025-12-01 6:46 ` Uma Shankar
2025-12-01 9:05 ` Kandpal, Suraj
2025-12-01 15:45 ` kernel test robot
2025-12-01 6:46 ` [v7 06/15] drm/i915/color: Preserve sign bit when int_bits is Zero Uma Shankar
` (14 subsequent siblings)
19 siblings, 2 replies; 44+ messages in thread
From: Uma Shankar @ 2025-12-01 6:46 UTC (permalink / raw)
To: intel-gfx, intel-xe, dri-devel
Cc: chaitanya.kumar.borah, ville.syrjala, pekka.paalanen, contact,
harry.wentland, mwen, jadahl, sebastian.wick, swati2.sharma,
alex.hung, jani.nikula, suraj.kandpal, Uma Shankar
From: Chaitanya Kumar Borah <chaitanya.kumar.borah@intel.com>
Add framework to program CSC. It enables copying of matrix from UAPI
to intel plane state. Also add helper functions which will eventually
program values to hardware.
Add a crtc state variable to track plane color change.
v2:
- Add crtc_state->plane_color_changed
- Improve comments (Suraj)
- s/intel_plane_*_color/intel_plane_color_* (Suraj)
v3:
- align parameters with open braces (Suraj)
- Improve commit message (Suraj)
Signed-off-by: Chaitanya Kumar Borah <chaitanya.kumar.borah@intel.com>
Signed-off-by: Uma Shankar <uma.shankar@intel.com>
---
drivers/gpu/drm/i915/display/intel_color.c | 21 ++++++++
drivers/gpu/drm/i915/display/intel_color.h | 4 +-
.../drm/i915/display/intel_display_types.h | 4 ++
drivers/gpu/drm/i915/display/intel_plane.c | 49 +++++++++++++++++++
4 files changed, 77 insertions(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/i915/display/intel_color.c b/drivers/gpu/drm/i915/display/intel_color.c
index a217a67ceb43..33fe5c9b4663 100644
--- a/drivers/gpu/drm/i915/display/intel_color.c
+++ b/drivers/gpu/drm/i915/display/intel_color.c
@@ -87,6 +87,10 @@ struct intel_color_funcs {
* Read config other than LUTs and CSCs, before them. Optional.
*/
void (*get_config)(struct intel_crtc_state *crtc_state);
+
+ /* Plane CSC*/
+ void (*load_plane_csc_matrix)(struct intel_dsb *dsb,
+ const struct intel_plane_state *plane_state);
};
#define CTM_COEFF_SIGN (1ULL << 63)
@@ -3963,6 +3967,23 @@ static const struct intel_color_funcs ilk_color_funcs = {
.get_config = ilk_get_config,
};
+static void
+intel_color_load_plane_csc_matrix(struct intel_dsb *dsb,
+ const struct intel_plane_state *plane_state)
+{
+ struct intel_display *display = to_intel_display(plane_state);
+
+ if (display->funcs.color->load_plane_csc_matrix)
+ display->funcs.color->load_plane_csc_matrix(dsb, plane_state);
+}
+
+void intel_color_plane_program_pipeline(struct intel_dsb *dsb,
+ const struct intel_plane_state *plane_state)
+{
+ if (plane_state->hw.ctm)
+ intel_color_load_plane_csc_matrix(dsb, plane_state);
+}
+
void intel_color_crtc_init(struct intel_crtc *crtc)
{
struct intel_display *display = to_intel_display(crtc);
diff --git a/drivers/gpu/drm/i915/display/intel_color.h b/drivers/gpu/drm/i915/display/intel_color.h
index bf7a12ce9df0..8051c827a1d8 100644
--- a/drivers/gpu/drm/i915/display/intel_color.h
+++ b/drivers/gpu/drm/i915/display/intel_color.h
@@ -13,6 +13,7 @@ struct intel_crtc_state;
struct intel_crtc;
struct intel_display;
struct intel_dsb;
+struct intel_plane_state;
struct drm_property_blob;
void intel_color_init_hooks(struct intel_display *display);
@@ -40,5 +41,6 @@ bool intel_color_lut_equal(const struct intel_crtc_state *crtc_state,
const struct drm_property_blob *blob2,
bool is_pre_csc_lut);
void intel_color_assert_luts(const struct intel_crtc_state *crtc_state);
-
+void intel_color_plane_program_pipeline(struct intel_dsb *dsb,
+ const struct intel_plane_state *plane_state);
#endif /* __INTEL_COLOR_H__ */
diff --git a/drivers/gpu/drm/i915/display/intel_display_types.h b/drivers/gpu/drm/i915/display/intel_display_types.h
index bb8b8466235a..6d8217497583 100644
--- a/drivers/gpu/drm/i915/display/intel_display_types.h
+++ b/drivers/gpu/drm/i915/display/intel_display_types.h
@@ -646,6 +646,7 @@ struct intel_plane_state {
enum drm_color_encoding color_encoding;
enum drm_color_range color_range;
enum drm_scaling_filter scaling_filter;
+ struct drm_property_blob *ctm;
} hw;
struct i915_vma *ggtt_vma;
@@ -1391,6 +1392,9 @@ struct intel_crtc_state {
u8 silence_period_sym_clocks;
u8 lfps_half_cycle_num_of_syms;
} alpm_state;
+
+ /* to track changes in plane color blocks */
+ bool plane_color_changed;
};
enum intel_pipe_crc_source {
diff --git a/drivers/gpu/drm/i915/display/intel_plane.c b/drivers/gpu/drm/i915/display/intel_plane.c
index 7b7619d59251..328b12af4d27 100644
--- a/drivers/gpu/drm/i915/display/intel_plane.c
+++ b/drivers/gpu/drm/i915/display/intel_plane.c
@@ -48,6 +48,7 @@
#include "i9xx_plane_regs.h"
#include "intel_cdclk.h"
#include "intel_cursor.h"
+#include "intel_colorop.h"
#include "intel_display_rps.h"
#include "intel_display_trace.h"
#include "intel_display_types.h"
@@ -340,6 +341,52 @@ intel_plane_copy_uapi_plane_damage(struct intel_plane_state *new_plane_state,
*damage = drm_plane_state_src(&new_uapi_plane_state->uapi);
}
+static bool
+intel_plane_colorop_replace_blob(struct intel_plane_state *plane_state,
+ struct intel_colorop *intel_colorop,
+ struct drm_property_blob *blob)
+{
+ if (intel_colorop->id == INTEL_PLANE_CB_CSC)
+ return drm_property_replace_blob(&plane_state->hw.ctm, blob);
+
+ return false;
+}
+
+static void
+intel_plane_color_copy_uapi_to_hw_state(struct intel_plane_state *plane_state,
+ const struct intel_plane_state *from_plane_state,
+ struct intel_crtc *crtc)
+{
+ struct drm_colorop *iter_colorop, *colorop;
+ struct drm_colorop_state *new_colorop_state;
+ struct drm_atomic_state *state = plane_state->uapi.state;
+ struct intel_colorop *intel_colorop;
+ struct drm_property_blob *blob;
+ int i = 0;
+ struct intel_atomic_state *intel_atomic_state = to_intel_atomic_state(state);
+ struct intel_crtc_state *new_crtc_state = intel_atomic_state ?
+ intel_atomic_get_new_crtc_state(intel_atomic_state, crtc) : NULL;
+ bool changed = false;
+
+ iter_colorop = plane_state->uapi.color_pipeline;
+
+ while (iter_colorop) {
+ for_each_new_colorop_in_state(state, colorop, new_colorop_state, i) {
+ if (new_colorop_state->colorop == iter_colorop) {
+ blob = new_colorop_state->bypass ? NULL : new_colorop_state->data;
+ intel_colorop = to_intel_colorop(colorop);
+ changed |= intel_plane_colorop_replace_blob(plane_state,
+ intel_colorop,
+ blob);
+ }
+ }
+ iter_colorop = iter_colorop->next;
+ }
+
+ if (new_crtc_state && changed)
+ new_crtc_state->plane_color_changed = true;
+}
+
void intel_plane_copy_uapi_to_hw_state(struct intel_plane_state *plane_state,
const struct intel_plane_state *from_plane_state,
struct intel_crtc *crtc)
@@ -368,6 +415,8 @@ void intel_plane_copy_uapi_to_hw_state(struct intel_plane_state *plane_state,
plane_state->uapi.src = drm_plane_state_src(&from_plane_state->uapi);
plane_state->uapi.dst = drm_plane_state_dest(&from_plane_state->uapi);
+
+ intel_plane_color_copy_uapi_to_hw_state(plane_state, from_plane_state, crtc);
}
void intel_plane_copy_hw_state(struct intel_plane_state *plane_state,
--
2.50.1
^ permalink raw reply related [flat|nested] 44+ messages in thread
* [v7 06/15] drm/i915/color: Preserve sign bit when int_bits is Zero
2025-12-01 6:46 [v7 00/15] Plane Color Pipeline support for Intel platforms Uma Shankar
` (4 preceding siblings ...)
2025-12-01 6:46 ` [v7 05/15] drm/i915/color: Add framework to program CSC Uma Shankar
@ 2025-12-01 6:46 ` Uma Shankar
2025-12-01 6:46 ` [v7 07/15] drm/i915/color: Add plane CTM callback for D12 and beyond Uma Shankar
` (13 subsequent siblings)
19 siblings, 0 replies; 44+ messages in thread
From: Uma Shankar @ 2025-12-01 6:46 UTC (permalink / raw)
To: intel-gfx, intel-xe, dri-devel
Cc: chaitanya.kumar.borah, ville.syrjala, pekka.paalanen, contact,
harry.wentland, mwen, jadahl, sebastian.wick, swati2.sharma,
alex.hung, jani.nikula, suraj.kandpal, Uma Shankar
From: Chaitanya Kumar Borah <chaitanya.kumar.borah@intel.com>
When int_bits == 0, we lose the sign bit when we do the range check
and apply the mask.
Fix this by ensuring a minimum of one integer bit, which guarantees space
for the sign bit in fully fractional representations (e.g. S0.12)
Reviewed-by: Suraj Kandpal <suraj.kandpal@intel.com>
Signed-off-by: Chaitanya Kumar Borah <chaitanya.kumar.borah@intel.com>
Signed-off-by: Uma Shankar <uma.shankar@intel.com>
---
drivers/gpu/drm/i915/display/intel_color.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/drivers/gpu/drm/i915/display/intel_color.c b/drivers/gpu/drm/i915/display/intel_color.c
index 33fe5c9b4663..81b87fed8878 100644
--- a/drivers/gpu/drm/i915/display/intel_color.c
+++ b/drivers/gpu/drm/i915/display/intel_color.c
@@ -613,6 +613,8 @@ static u16 ctm_to_twos_complement(u64 coeff, int int_bits, int frac_bits)
if (CTM_COEFF_NEGATIVE(coeff))
c = -c;
+ int_bits = max(int_bits, 1);
+
c = clamp(c, -(s64)BIT(int_bits + frac_bits - 1),
(s64)(BIT(int_bits + frac_bits - 1) - 1));
--
2.50.1
^ permalink raw reply related [flat|nested] 44+ messages in thread
* [v7 07/15] drm/i915/color: Add plane CTM callback for D12 and beyond
2025-12-01 6:46 [v7 00/15] Plane Color Pipeline support for Intel platforms Uma Shankar
` (5 preceding siblings ...)
2025-12-01 6:46 ` [v7 06/15] drm/i915/color: Preserve sign bit when int_bits is Zero Uma Shankar
@ 2025-12-01 6:46 ` Uma Shankar
2025-12-01 9:16 ` Kandpal, Suraj
2025-12-01 18:13 ` kernel test robot
2025-12-01 6:46 ` [v7 08/15] drm/i915: Add register definitions for Plane Degamma Uma Shankar
` (12 subsequent siblings)
19 siblings, 2 replies; 44+ messages in thread
From: Uma Shankar @ 2025-12-01 6:46 UTC (permalink / raw)
To: intel-gfx, intel-xe, dri-devel
Cc: chaitanya.kumar.borah, ville.syrjala, pekka.paalanen, contact,
harry.wentland, mwen, jadahl, sebastian.wick, swati2.sharma,
alex.hung, jani.nikula, suraj.kandpal, Uma Shankar
Add callback for setting CTM block in platforms D12 and beyond
v2:
- Add dsb support
- Pass plane_state as we are now doing a uapi to hw state copy
- Add support for 3x4 matrix
v3:
- Add relevant header file
- Fix typo (Suraj)
- Add callback to TGL+ (Suraj)
Signed-off-by: Chaitanya Kumar Borah <chaitanya.kumar.borah@intel.com>
Signed-off-by: Uma Shankar <uma.shankar@intel.com>
---
drivers/gpu/drm/i915/display/intel_color.c | 98 ++++++++++++++++++++++
1 file changed, 98 insertions(+)
diff --git a/drivers/gpu/drm/i915/display/intel_color.c b/drivers/gpu/drm/i915/display/intel_color.c
index 81b87fed8878..2f8e985d51e5 100644
--- a/drivers/gpu/drm/i915/display/intel_color.c
+++ b/drivers/gpu/drm/i915/display/intel_color.c
@@ -32,6 +32,8 @@
#include "intel_display_utils.h"
#include "intel_dsb.h"
#include "intel_vrr.h"
+#include "skl_universal_plane.h"
+#include "skl_universal_plane_regs.h"
struct intel_color_funcs {
int (*color_check)(struct intel_atomic_state *state,
@@ -3842,6 +3844,101 @@ static void icl_read_luts(struct intel_crtc_state *crtc_state)
}
}
+static void
+xelpd_load_plane_csc_matrix(struct intel_dsb *dsb,
+ const struct intel_plane_state *plane_state)
+{
+ struct intel_display *display = to_intel_display(plane_state);
+ const struct drm_plane_state *state = &plane_state->uapi;
+ enum pipe pipe = to_intel_plane(state->plane)->pipe;
+ enum plane_id plane = to_intel_plane(state->plane)->id;
+ const struct drm_property_blob *blob = plane_state->hw.ctm;
+ struct drm_color_ctm_3x4 *ctm;
+ const u64 *input;
+ u16 coeffs[9] = {};
+ int i, j;
+
+ if (!icl_is_hdr_plane(display, plane) || !blob)
+ return;
+
+ ctm = blob->data;
+ input = ctm->matrix;
+
+ /*
+ * Convert fixed point S31.32 input to format supported by the
+ * hardware.
+ */
+ for (i = 0, j = 0; i < ARRAY_SIZE(coeffs); i++) {
+ u64 abs_coeff = ((1ULL << 63) - 1) & input[j];
+
+ /*
+ * Clamp input value to min/max supported by
+ * hardware.
+ */
+ abs_coeff = clamp_val(abs_coeff, 0, CTM_COEFF_4_0 - 1);
+
+ /* sign bit */
+ if (CTM_COEFF_NEGATIVE(input[j]))
+ coeffs[i] |= 1 << 15;
+
+ if (abs_coeff < CTM_COEFF_0_125)
+ coeffs[i] |= (3 << 12) |
+ ILK_CSC_COEFF_FP(abs_coeff, 12);
+ else if (abs_coeff < CTM_COEFF_0_25)
+ coeffs[i] |= (2 << 12) |
+ ILK_CSC_COEFF_FP(abs_coeff, 11);
+ else if (abs_coeff < CTM_COEFF_0_5)
+ coeffs[i] |= (1 << 12) |
+ ILK_CSC_COEFF_FP(abs_coeff, 10);
+ else if (abs_coeff < CTM_COEFF_1_0)
+ coeffs[i] |= ILK_CSC_COEFF_FP(abs_coeff, 9);
+ else if (abs_coeff < CTM_COEFF_2_0)
+ coeffs[i] |= (7 << 12) |
+ ILK_CSC_COEFF_FP(abs_coeff, 8);
+ else
+ coeffs[i] |= (6 << 12) |
+ ILK_CSC_COEFF_FP(abs_coeff, 7);
+
+ /* Skip postoffs */
+ if (!((j + 2) % 4))
+ j += 2;
+ else
+ j++;
+ }
+
+ intel_de_write_dsb(display, dsb, PLANE_CSC_COEFF(pipe, plane, 0),
+ coeffs[0] << 16 | coeffs[1]);
+ intel_de_write_dsb(display, dsb, PLANE_CSC_COEFF(pipe, plane, 1),
+ coeffs[2] << 16);
+
+ intel_de_write_dsb(display, dsb, PLANE_CSC_COEFF(pipe, plane, 2),
+ coeffs[3] << 16 | coeffs[4]);
+ intel_de_write_dsb(display, dsb, PLANE_CSC_COEFF(pipe, plane, 3),
+ coeffs[5] << 16);
+
+ intel_de_write_dsb(display, dsb, PLANE_CSC_COEFF(pipe, plane, 4),
+ coeffs[6] << 16 | coeffs[7]);
+ intel_de_write_dsb(display, dsb, PLANE_CSC_COEFF(pipe, plane, 5),
+ coeffs[8] << 16);
+
+ intel_de_write_dsb(display, dsb, PLANE_CSC_PREOFF(pipe, plane, 0), 0);
+ intel_de_write_dsb(display, dsb, PLANE_CSC_PREOFF(pipe, plane, 1), 0);
+ intel_de_write_dsb(display, dsb, PLANE_CSC_PREOFF(pipe, plane, 2), 0);
+
+ /*
+ * Conversion from S31.32 to S0.12. BIT[12] is the signed bit
+ */
+ intel_de_write_dsb(display, dsb,
+ PLANE_CSC_POSTOFF(pipe, plane, 0),
+ ctm_to_twos_complement(input[3], 0, 12));
+ intel_de_write_dsb(display, dsb,
+ PLANE_CSC_POSTOFF(pipe, plane, 1),
+ ctm_to_twos_complement(input[7], 0, 12));
+ intel_de_write_dsb(display, dsb,
+ PLANE_CSC_POSTOFF(pipe, plane, 2),
+ ctm_to_twos_complement(input[11], 0, 12));
+}
+
static const struct intel_color_funcs chv_color_funcs = {
.color_check = chv_color_check,
.color_commit_arm = i9xx_color_commit_arm,
@@ -3889,6 +3986,7 @@ static const struct intel_color_funcs tgl_color_funcs = {
.lut_equal = icl_lut_equal,
.read_csc = icl_read_csc,
.get_config = skl_get_config,
+ .load_plane_csc_matrix = xelpd_load_plane_csc_matrix,
};
static const struct intel_color_funcs icl_color_funcs = {
--
2.50.1
^ permalink raw reply related [flat|nested] 44+ messages in thread
* [v7 08/15] drm/i915: Add register definitions for Plane Degamma
2025-12-01 6:46 [v7 00/15] Plane Color Pipeline support for Intel platforms Uma Shankar
` (6 preceding siblings ...)
2025-12-01 6:46 ` [v7 07/15] drm/i915/color: Add plane CTM callback for D12 and beyond Uma Shankar
@ 2025-12-01 6:46 ` Uma Shankar
2025-12-01 9:18 ` Kandpal, Suraj
2025-12-01 6:46 ` [v7 09/15] drm/i915: Add register definitions for Plane Post CSC Uma Shankar
` (11 subsequent siblings)
19 siblings, 1 reply; 44+ messages in thread
From: Uma Shankar @ 2025-12-01 6:46 UTC (permalink / raw)
To: intel-gfx, intel-xe, dri-devel
Cc: chaitanya.kumar.borah, ville.syrjala, pekka.paalanen, contact,
harry.wentland, mwen, jadahl, sebastian.wick, swati2.sharma,
alex.hung, jani.nikula, suraj.kandpal, Uma Shankar
Add macros to define Plane Degamma registers
v2:
- Add BSpec links (Suraj)
v3:
- Add Bspec links in trailer (Suraj)
- Fix checkpatch issues (Suraj)
BSpec: 50411, 50412, 50413, 50414
Signed-off-by: Uma Shankar <uma.shankar@intel.com>
Signed-off-by: Chaitanya Kumar Borah <chaitanya.kumar.borah@intel.com>
---
.../i915/display/skl_universal_plane_regs.h | 48 +++++++++++++++++++
1 file changed, 48 insertions(+)
diff --git a/drivers/gpu/drm/i915/display/skl_universal_plane_regs.h b/drivers/gpu/drm/i915/display/skl_universal_plane_regs.h
index 6f815b231340..1e5d7ef37f1c 100644
--- a/drivers/gpu/drm/i915/display/skl_universal_plane_regs.h
+++ b/drivers/gpu/drm/i915/display/skl_universal_plane_regs.h
@@ -254,6 +254,7 @@
#define PLANE_COLOR_PIPE_CSC_ENABLE REG_BIT(23) /* Pre-ICL */
#define PLANE_COLOR_PLANE_CSC_ENABLE REG_BIT(21) /* ICL+ */
#define PLANE_COLOR_INPUT_CSC_ENABLE REG_BIT(20) /* ICL+ */
+#define PLANE_COLOR_PRE_CSC_GAMMA_ENABLE REG_BIT(14)
#define PLANE_COLOR_CSC_MODE_MASK REG_GENMASK(19, 17)
#define PLANE_COLOR_CSC_MODE_BYPASS REG_FIELD_PREP(PLANE_COLOR_CSC_MODE_MASK, 0)
#define PLANE_COLOR_CSC_MODE_YUV601_TO_RGB601 REG_FIELD_PREP(PLANE_COLOR_CSC_MODE_MASK, 1)
@@ -290,6 +291,53 @@
_PLANE_INPUT_CSC_POSTOFF_HI_1_A, _PLANE_INPUT_CSC_POSTOFF_HI_1_B, \
_PLANE_INPUT_CSC_POSTOFF_HI_2_A, _PLANE_INPUT_CSC_POSTOFF_HI_2_B)
+#define _MMIO_PLANE_GAMC(plane, i, a, b) _MMIO(_PIPE(plane, a, b) + (i) * 4)
+
+#define _PLANE_PRE_CSC_GAMC_INDEX_ENH_1_A 0x701d0
+#define _PLANE_PRE_CSC_GAMC_INDEX_ENH_1_B 0x711d0
+#define _PLANE_PRE_CSC_GAMC_INDEX_ENH_2_A 0x702d0
+#define _PLANE_PRE_CSC_GAMC_INDEX_ENH_2_B 0x712d0
+#define _PLANE_PRE_CSC_GAMC_INDEX_ENH_1(pipe) _PIPE(pipe, _PLANE_PRE_CSC_GAMC_INDEX_ENH_1_A, \
+ _PLANE_PRE_CSC_GAMC_INDEX_ENH_1_B)
+#define _PLANE_PRE_CSC_GAMC_INDEX_ENH_2(pipe) _PIPE(pipe, _PLANE_PRE_CSC_GAMC_INDEX_ENH_2_A, \
+ _PLANE_PRE_CSC_GAMC_INDEX_ENH_2_B)
+#define PLANE_PRE_CSC_GAMC_INDEX_ENH(pipe, plane, i) _MMIO_PLANE_GAMC(plane, i, _PLANE_PRE_CSC_GAMC_INDEX_ENH_1(pipe), \
+ _PLANE_PRE_CSC_GAMC_INDEX_ENH_2(pipe))
+#define PLANE_PAL_PREC_AUTO_INCREMENT REG_BIT(10)
+
+#define _PLANE_PRE_CSC_GAMC_DATA_ENH_1_A 0x701d4
+#define _PLANE_PRE_CSC_GAMC_DATA_ENH_1_B 0x711d4
+#define _PLANE_PRE_CSC_GAMC_DATA_ENH_2_A 0x702d4
+#define _PLANE_PRE_CSC_GAMC_DATA_ENH_2_B 0x712d4
+#define _PLANE_PRE_CSC_GAMC_DATA_ENH_1(pipe) _PIPE(pipe, _PLANE_PRE_CSC_GAMC_DATA_ENH_1_A, \
+ _PLANE_PRE_CSC_GAMC_DATA_ENH_1_B)
+#define _PLANE_PRE_CSC_GAMC_DATA_ENH_2(pipe) _PIPE(pipe, _PLANE_PRE_CSC_GAMC_DATA_ENH_2_A, \
+ _PLANE_PRE_CSC_GAMC_DATA_ENH_2_B)
+#define PLANE_PRE_CSC_GAMC_DATA_ENH(pipe, plane, i) _MMIO_PLANE_GAMC(plane, i, _PLANE_PRE_CSC_GAMC_DATA_ENH_1(pipe), \
+ _PLANE_PRE_CSC_GAMC_DATA_ENH_2(pipe))
+
+#define _PLANE_PRE_CSC_GAMC_INDEX_1_A 0x704d0
+#define _PLANE_PRE_CSC_GAMC_INDEX_1_B 0x714d0
+#define _PLANE_PRE_CSC_GAMC_INDEX_2_A 0x705d0
+#define _PLANE_PRE_CSC_GAMC_INDEX_2_B 0x715d0
+#define _PLANE_PRE_CSC_GAMC_INDEX_1(pipe) _PIPE(pipe, _PLANE_PRE_CSC_GAMC_INDEX_1_A, \
+ _PLANE_PRE_CSC_GAMC_INDEX_1_B)
+#define _PLANE_PRE_CSC_GAMC_INDEX_2(pipe) _PIPE(pipe, _PLANE_PRE_CSC_GAMC_INDEX_2_A, \
+ _PLANE_PRE_CSC_GAMC_INDEX_2_B)
+#define PLANE_PRE_CSC_GAMC_INDEX(pipe, plane, i) _MMIO_PLANE_GAMC(plane, i, _PLANE_PRE_CSC_GAMC_INDEX_1(pipe), \
+ _PLANE_PRE_CSC_GAMC_INDEX_2(pipe))
+
+#define _PLANE_PRE_CSC_GAMC_DATA_1_A 0x704d4
+#define _PLANE_PRE_CSC_GAMC_DATA_1_B 0x714d4
+#define _PLANE_PRE_CSC_GAMC_DATA_2_A 0x705d4
+#define _PLANE_PRE_CSC_GAMC_DATA_2_B 0x715d4
+#define _PLANE_PRE_CSC_GAMC_DATA_1(pipe) _PIPE(pipe, _PLANE_PRE_CSC_GAMC_DATA_1_A, \
+ _PLANE_PRE_CSC_GAMC_DATA_1_B)
+#define _PLANE_PRE_CSC_GAMC_DATA_2(pipe) _PIPE(pipe, _PLANE_PRE_CSC_GAMC_DATA_2_A, \
+ _PLANE_PRE_CSC_GAMC_DATA_2_B)
+#define PLANE_PRE_CSC_GAMC_DATA(pipe, plane, i) _MMIO_PLANE_GAMC(plane, i, _PLANE_PRE_CSC_GAMC_DATA_1(pipe), \
+ _PLANE_PRE_CSC_GAMC_DATA_2(pipe))
+
#define _PLANE_CSC_RY_GY_1_A 0x70210
#define _PLANE_CSC_RY_GY_2_A 0x70310
#define _PLANE_CSC_RY_GY_1_B 0x71210
--
2.50.1
^ permalink raw reply related [flat|nested] 44+ messages in thread
* [v7 09/15] drm/i915: Add register definitions for Plane Post CSC
2025-12-01 6:46 [v7 00/15] Plane Color Pipeline support for Intel platforms Uma Shankar
` (7 preceding siblings ...)
2025-12-01 6:46 ` [v7 08/15] drm/i915: Add register definitions for Plane Degamma Uma Shankar
@ 2025-12-01 6:46 ` Uma Shankar
2025-12-01 9:21 ` Kandpal, Suraj
2025-12-01 6:46 ` [v7 10/15] drm/i915/color: Add framework to program PRE/POST CSC LUT Uma Shankar
` (10 subsequent siblings)
19 siblings, 1 reply; 44+ messages in thread
From: Uma Shankar @ 2025-12-01 6:46 UTC (permalink / raw)
To: intel-gfx, intel-xe, dri-devel
Cc: chaitanya.kumar.borah, ville.syrjala, pekka.paalanen, contact,
harry.wentland, mwen, jadahl, sebastian.wick, swati2.sharma,
alex.hung, jani.nikula, suraj.kandpal, Uma Shankar
Add macros to define Plane Post CSC registers
BSpec: 50403, 50404, 50405, 50406, 50409, 50410,
v2:
- Add Plane Post CSC Gamma Multi Segment Enable bit
- Add BSpec entries (Suraj)
v3:
- Fix checkpatch issues (Suraj)
Signed-off-by: Uma Shankar <uma.shankar@intel.com>
Signed-off-by: Chaitanya Kumar Borah <chaitanya.kumar.borah@intel.com>
---
.../i915/display/skl_universal_plane_regs.h | 67 +++++++++++++++++++
1 file changed, 67 insertions(+)
diff --git a/drivers/gpu/drm/i915/display/skl_universal_plane_regs.h b/drivers/gpu/drm/i915/display/skl_universal_plane_regs.h
index 1e5d7ef37f1c..6fd4da9f63cf 100644
--- a/drivers/gpu/drm/i915/display/skl_universal_plane_regs.h
+++ b/drivers/gpu/drm/i915/display/skl_universal_plane_regs.h
@@ -254,6 +254,7 @@
#define PLANE_COLOR_PIPE_CSC_ENABLE REG_BIT(23) /* Pre-ICL */
#define PLANE_COLOR_PLANE_CSC_ENABLE REG_BIT(21) /* ICL+ */
#define PLANE_COLOR_INPUT_CSC_ENABLE REG_BIT(20) /* ICL+ */
+#define PLANE_COLOR_POST_CSC_GAMMA_MULTSEG_ENABLE REG_BIT(15) /* TGL+ */
#define PLANE_COLOR_PRE_CSC_GAMMA_ENABLE REG_BIT(14)
#define PLANE_COLOR_CSC_MODE_MASK REG_GENMASK(19, 17)
#define PLANE_COLOR_CSC_MODE_BYPASS REG_FIELD_PREP(PLANE_COLOR_CSC_MODE_MASK, 0)
@@ -293,6 +294,72 @@
#define _MMIO_PLANE_GAMC(plane, i, a, b) _MMIO(_PIPE(plane, a, b) + (i) * 4)
+#define _PLANE_POST_CSC_GAMC_SEG0_INDEX_ENH_1_A 0x70160
+#define _PLANE_POST_CSC_GAMC_SEG0_INDEX_ENH_1_B 0x71160
+#define _PLANE_POST_CSC_GAMC_SEG0_INDEX_ENH_2_A 0x70260
+#define _PLANE_POST_CSC_GAMC_SEG0_INDEX_ENH_2_B 0x71260
+#define _PLANE_POST_CSC_GAMC_SEG0_INDEX_ENH_1(pipe) _PIPE(pipe, _PLANE_POST_CSC_GAMC_SEG0_INDEX_ENH_1_A, \
+ _PLANE_POST_CSC_GAMC_SEG0_INDEX_ENH_1_B)
+#define _PLANE_POST_CSC_GAMC_SEG0_INDEX_ENH_2(pipe) _PIPE(pipe, _PLANE_POST_CSC_GAMC_SEG0_INDEX_ENH_2_A, \
+ _PLANE_POST_CSC_GAMC_SEG0_INDEX_ENH_2_B)
+#define PLANE_POST_CSC_GAMC_SEG0_INDEX_ENH(pipe, plane, i) _MMIO_PLANE_GAMC(plane, i, _PLANE_POST_CSC_GAMC_SEG0_INDEX_ENH_1(pipe), \
+ _PLANE_POST_CSC_GAMC_SEG0_INDEX_ENH_2(pipe))
+
+#define _PLANE_POST_CSC_GAMC_SEG0_DATA_ENH_1_A 0x70164
+#define _PLANE_POST_CSC_GAMC_SEG0_DATA_ENH_1_B 0x71164
+#define _PLANE_POST_CSC_GAMC_SEG0_DATA_ENH_2_A 0x70264
+#define _PLANE_POST_CSC_GAMC_SEG0_DATA_ENH_2_B 0x71264
+#define _PLANE_POST_CSC_GAMC_SEG0_DATA_ENH_1(pipe) _PIPE(pipe, _PLANE_POST_CSC_GAMC_SEG0_DATA_ENH_1_A, \
+ _PLANE_POST_CSC_GAMC_SEG0_DATA_ENH_1_B)
+#define _PLANE_POST_CSC_GAMC_SEG0_DATA_ENH_2(pipe) _PIPE(pipe, _PLANE_POST_CSC_GAMC_SEG0_DATA_ENH_2_A, \
+ _PLANE_POST_CSC_GAMC_SEG0_DATA_ENH_2_B)
+#define PLANE_POST_CSC_GAMC_SEG0_DATA_ENH(pipe, plane, i) _MMIO_PLANE_GAMC(plane, i, _PLANE_POST_CSC_GAMC_SEG0_DATA_ENH_1(pipe), \
+ _PLANE_POST_CSC_GAMC_SEG0_DATA_ENH_2(pipe))
+
+#define _PLANE_POST_CSC_GAMC_INDEX_ENH_1_A 0x701d8
+#define _PLANE_POST_CSC_GAMC_INDEX_ENH_1_B 0x711d8
+#define _PLANE_POST_CSC_GAMC_INDEX_ENH_2_A 0x702d8
+#define _PLANE_POST_CSC_GAMC_INDEX_ENH_2_B 0x712d8
+#define _PLANE_POST_CSC_GAMC_INDEX_ENH_1(pipe) _PIPE(pipe, _PLANE_POST_CSC_GAMC_INDEX_ENH_1_A, \
+ _PLANE_POST_CSC_GAMC_INDEX_ENH_1_B)
+#define _PLANE_POST_CSC_GAMC_INDEX_ENH_2(pipe) _PIPE(pipe, _PLANE_POST_CSC_GAMC_INDEX_ENH_2_A, \
+ _PLANE_POST_CSC_GAMC_INDEX_ENH_2_B)
+#define PLANE_POST_CSC_GAMC_INDEX_ENH(pipe, plane, i) _MMIO_PLANE_GAMC(plane, i, _PLANE_POST_CSC_GAMC_INDEX_ENH_1(pipe), \
+ _PLANE_POST_CSC_GAMC_INDEX_ENH_2(pipe))
+
+#define _PLANE_POST_CSC_GAMC_DATA_ENH_1_A 0x701dc
+#define _PLANE_POST_CSC_GAMC_DATA_ENH_1_B 0x711dc
+#define _PLANE_POST_CSC_GAMC_DATA_ENH_2_A 0x702dc
+#define _PLANE_POST_CSC_GAMC_DATA_ENH_2_B 0x712dc
+#define _PLANE_POST_CSC_GAMC_DATA_ENH_1(pipe) _PIPE(pipe, _PLANE_POST_CSC_GAMC_DATA_ENH_1_A, \
+ _PLANE_POST_CSC_GAMC_DATA_ENH_1_B)
+#define _PLANE_POST_CSC_GAMC_DATA_ENH_2(pipe) _PIPE(pipe, _PLANE_POST_CSC_GAMC_DATA_ENH_2_A, \
+ _PLANE_POST_CSC_GAMC_DATA_ENH_2_B)
+#define PLANE_POST_CSC_GAMC_DATA_ENH(pipe, plane, i) _MMIO_PLANE_GAMC(plane, i, _PLANE_POST_CSC_GAMC_DATA_ENH_1(pipe), \
+ _PLANE_POST_CSC_GAMC_DATA_ENH_2(pipe))
+
+#define _PLANE_POST_CSC_GAMC_INDEX_1_A 0x704d8
+#define _PLANE_POST_CSC_GAMC_INDEX_1_B 0x714d8
+#define _PLANE_POST_CSC_GAMC_INDEX_2_A 0x705d8
+#define _PLANE_POST_CSC_GAMC_INDEX_2_B 0x715d8
+#define _PLANE_POST_CSC_GAMC_INDEX_1(pipe) _PIPE(pipe, _PLANE_POST_CSC_GAMC_INDEX_1_A, \
+ _PLANE_POST_CSC_GAMC_INDEX_1_B)
+#define _PLANE_POST_CSC_GAMC_INDEX_2(pipe) _PIPE(pipe, _PLANE_POST_CSC_GAMC_INDEX_2_A, \
+ _PLANE_POST_CSC_GAMC_INDEX_2_B)
+#define PLANE_POST_CSC_GAMC_INDEX(pipe, plane, i) _MMIO_PLANE_GAMC(plane, i, _PLANE_POST_CSC_GAMC_INDEX_1(pipe), \
+ _PLANE_POST_CSC_GAMC_INDEX_2(pipe))
+
+#define _PLANE_POST_CSC_GAMC_DATA_1_A 0x704dc
+#define _PLANE_POST_CSC_GAMC_DATA_1_B 0x714dc
+#define _PLANE_POST_CSC_GAMC_DATA_2_A 0x705dc
+#define _PLANE_POST_CSC_GAMC_DATA_2_B 0x715dc
+#define _PLANE_POST_CSC_GAMC_DATA_1(pipe) _PIPE(pipe, _PLANE_POST_CSC_GAMC_DATA_1_A, \
+ _PLANE_POST_CSC_GAMC_DATA_1_B)
+#define _PLANE_POST_CSC_GAMC_DATA_2(pipe) _PIPE(pipe, _PLANE_POST_CSC_GAMC_DATA_2_A, \
+ _PLANE_POST_CSC_GAMC_DATA_2_B)
+#define PLANE_POST_CSC_GAMC_DATA(pipe, plane, i) _MMIO_PLANE_GAMC(plane, i, _PLANE_POST_CSC_GAMC_DATA_1(pipe), \
+ _PLANE_POST_CSC_GAMC_DATA_2(pipe))
+
#define _PLANE_PRE_CSC_GAMC_INDEX_ENH_1_A 0x701d0
#define _PLANE_PRE_CSC_GAMC_INDEX_ENH_1_B 0x711d0
#define _PLANE_PRE_CSC_GAMC_INDEX_ENH_2_A 0x702d0
--
2.50.1
^ permalink raw reply related [flat|nested] 44+ messages in thread
* [v7 10/15] drm/i915/color: Add framework to program PRE/POST CSC LUT
2025-12-01 6:46 [v7 00/15] Plane Color Pipeline support for Intel platforms Uma Shankar
` (8 preceding siblings ...)
2025-12-01 6:46 ` [v7 09/15] drm/i915: Add register definitions for Plane Post CSC Uma Shankar
@ 2025-12-01 6:46 ` Uma Shankar
2025-12-01 9:23 ` Kandpal, Suraj
2025-12-01 6:46 ` [v7 11/15] drm/i915/color: Program Pre-CSC registers Uma Shankar
` (9 subsequent siblings)
19 siblings, 1 reply; 44+ messages in thread
From: Uma Shankar @ 2025-12-01 6:46 UTC (permalink / raw)
To: intel-gfx, intel-xe, dri-devel
Cc: chaitanya.kumar.borah, ville.syrjala, pekka.paalanen, contact,
harry.wentland, mwen, jadahl, sebastian.wick, swati2.sharma,
alex.hung, jani.nikula, suraj.kandpal, Uma Shankar
Add framework that will help in loading LUT to Pre/Post CSC color
blocks.
v2: Add dsb support
v3: Align enum names
v4: Propagate change in lut data to crtc_state
Signed-off-by: Uma Shankar <uma.shankar@intel.com>
Signed-off-by: Chaitanya Kumar Borah <chaitanya.kumar.borah@intel.com>
---
drivers/gpu/drm/i915/display/intel_color.c | 16 ++++++++++++++++
.../gpu/drm/i915/display/intel_display_types.h | 2 +-
drivers/gpu/drm/i915/display/intel_plane.c | 4 ++++
3 files changed, 21 insertions(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/i915/display/intel_color.c b/drivers/gpu/drm/i915/display/intel_color.c
index 2f8e985d51e5..4ca359d68730 100644
--- a/drivers/gpu/drm/i915/display/intel_color.c
+++ b/drivers/gpu/drm/i915/display/intel_color.c
@@ -93,6 +93,10 @@ struct intel_color_funcs {
/* Plane CSC*/
void (*load_plane_csc_matrix)(struct intel_dsb *dsb,
const struct intel_plane_state *plane_state);
+
+ /* Plane Pre/Post CSC */
+ void (*load_plane_luts)(struct intel_dsb *dsb,
+ const struct intel_plane_state *plane_state);
};
#define CTM_COEFF_SIGN (1ULL << 63)
@@ -4077,11 +4081,23 @@ intel_color_load_plane_csc_matrix(struct intel_dsb *dsb,
display->funcs.color->load_plane_csc_matrix(dsb, plane_state);
}
+static void
+intel_color_load_plane_luts(struct intel_dsb *dsb,
+ const struct intel_plane_state *plane_state)
+{
+ struct intel_display *display = to_intel_display(plane_state);
+
+ if (display->funcs.color->load_plane_luts)
+ display->funcs.color->load_plane_luts(dsb, plane_state);
+}
+
void intel_color_plane_program_pipeline(struct intel_dsb *dsb,
const struct intel_plane_state *plane_state)
{
if (plane_state->hw.ctm)
intel_color_load_plane_csc_matrix(dsb, plane_state);
+ if (plane_state->hw.degamma_lut || plane_state->hw.gamma_lut)
+ intel_color_load_plane_luts(dsb, plane_state);
}
void intel_color_crtc_init(struct intel_crtc *crtc)
diff --git a/drivers/gpu/drm/i915/display/intel_display_types.h b/drivers/gpu/drm/i915/display/intel_display_types.h
index 6d8217497583..c419a814cb34 100644
--- a/drivers/gpu/drm/i915/display/intel_display_types.h
+++ b/drivers/gpu/drm/i915/display/intel_display_types.h
@@ -646,7 +646,7 @@ struct intel_plane_state {
enum drm_color_encoding color_encoding;
enum drm_color_range color_range;
enum drm_scaling_filter scaling_filter;
- struct drm_property_blob *ctm;
+ struct drm_property_blob *ctm, *degamma_lut, *gamma_lut;
} hw;
struct i915_vma *ggtt_vma;
diff --git a/drivers/gpu/drm/i915/display/intel_plane.c b/drivers/gpu/drm/i915/display/intel_plane.c
index 328b12af4d27..4e6ddb36b872 100644
--- a/drivers/gpu/drm/i915/display/intel_plane.c
+++ b/drivers/gpu/drm/i915/display/intel_plane.c
@@ -348,6 +348,10 @@ intel_plane_colorop_replace_blob(struct intel_plane_state *plane_state,
{
if (intel_colorop->id == INTEL_PLANE_CB_CSC)
return drm_property_replace_blob(&plane_state->hw.ctm, blob);
+ else if (intel_colorop->id == INTEL_PLANE_CB_PRE_CSC_LUT)
+ return drm_property_replace_blob(&plane_state->hw.degamma_lut, blob);
+ else if (intel_colorop->id == INTEL_PLANE_CB_POST_CSC_LUT)
+ return drm_property_replace_blob(&plane_state->hw.gamma_lut, blob);
return false;
}
--
2.50.1
^ permalink raw reply related [flat|nested] 44+ messages in thread
* [v7 11/15] drm/i915/color: Program Pre-CSC registers
2025-12-01 6:46 [v7 00/15] Plane Color Pipeline support for Intel platforms Uma Shankar
` (9 preceding siblings ...)
2025-12-01 6:46 ` [v7 10/15] drm/i915/color: Add framework to program PRE/POST CSC LUT Uma Shankar
@ 2025-12-01 6:46 ` Uma Shankar
2025-12-01 9:24 ` Kandpal, Suraj
2025-12-01 19:28 ` kernel test robot
2025-12-01 6:46 ` [v7 12/15] drm/i915/xelpd: Program Plane Post CSC Registers Uma Shankar
` (8 subsequent siblings)
19 siblings, 2 replies; 44+ messages in thread
From: Uma Shankar @ 2025-12-01 6:46 UTC (permalink / raw)
To: intel-gfx, intel-xe, dri-devel
Cc: chaitanya.kumar.borah, ville.syrjala, pekka.paalanen, contact,
harry.wentland, mwen, jadahl, sebastian.wick, swati2.sharma,
alex.hung, jani.nikula, suraj.kandpal, Uma Shankar
Add callback to program Pre-CSC LUT for TGL and beyond
v2: Add DSB support
v3: Add support for single segment 1D LUT color op
v4:
- s/drm_color_lut_32/drm_color_lut32/ (Simon)
- Change commit message (Suraj)
- Improve comments (Suraj)
- Remove multisegmented programming, to be added later
- Remove dead code for SDR planes, add when needed
BSpec: 50411, 50412, 50413, 50414
Signed-off-by: Uma Shankar <uma.shankar@intel.com>
Signed-off-by: Chaitanya Kumar Borah <chaitanya.kumar.borah@intel.com>
---
drivers/gpu/drm/i915/display/intel_color.c | 61 ++++++++++++++++++++++
1 file changed, 61 insertions(+)
diff --git a/drivers/gpu/drm/i915/display/intel_color.c b/drivers/gpu/drm/i915/display/intel_color.c
index 4ca359d68730..2a114d2964fa 100644
--- a/drivers/gpu/drm/i915/display/intel_color.c
+++ b/drivers/gpu/drm/i915/display/intel_color.c
@@ -3943,6 +3943,66 @@ xelpd_load_plane_csc_matrix(struct intel_dsb *dsb,
ctm_to_twos_complement(input[11], 0, 12));
}
+static void
+xelpd_program_plane_pre_csc_lut(struct intel_dsb *dsb,
+ const struct intel_plane_state *plane_state)
+{
+ struct intel_display *display = to_intel_display(plane_state);
+ const struct drm_plane_state *state = &plane_state->uapi;
+ enum pipe pipe = to_intel_plane(state->plane)->pipe;
+ enum plane_id plane = to_intel_plane(state->plane)->id;
+ const struct drm_color_lut32 *pre_csc_lut = plane_state->hw.degamma_lut->data;
+ u32 i, lut_size;
+
+ if (icl_is_hdr_plane(display, plane)) {
+ lut_size = 128;
+
+ intel_de_write_dsb(display, dsb,
+ PLANE_PRE_CSC_GAMC_INDEX_ENH(pipe, plane, 0),
+ PLANE_PAL_PREC_AUTO_INCREMENT);
+
+ if (pre_csc_lut) {
+ for (i = 0; i < lut_size; i++) {
+ u32 lut_val = drm_color_lut32_extract(pre_csc_lut[i].green, 24);
+
+ intel_de_write_dsb(display, dsb,
+ PLANE_PRE_CSC_GAMC_DATA_ENH(pipe, plane, 0),
+ lut_val);
+ }
+
+ /* Program the max register to clamp values > 1.0. */
+ /* TODO: Restrict to 0x7ffffff */
+ do {
+ intel_de_write_dsb(display, dsb,
+ PLANE_PRE_CSC_GAMC_DATA_ENH(pipe, plane, 0),
+ (1 << 24));
+ } while (i++ > 130);
+ } else {
+ for (i = 0; i < lut_size; i++) {
+ u32 v = (i * ((1 << 24) - 1)) / (lut_size - 1);
+
+ intel_de_write_dsb(display, dsb,
+ PLANE_PRE_CSC_GAMC_DATA_ENH(pipe, plane, 0), v);
+ }
+
+ do {
+ intel_de_write_dsb(display, dsb,
+ PLANE_PRE_CSC_GAMC_DATA_ENH(pipe, plane, 0),
+ 1 << 24);
+ } while (i++ < 130);
+ }
+
+ intel_de_write_dsb(display, dsb, PLANE_PRE_CSC_GAMC_INDEX_ENH(pipe, plane, 0), 0);
+ }
+}
+
+static void
+xelpd_plane_load_luts(struct intel_dsb *dsb, const struct intel_plane_state *plane_state)
+{
+ if (plane_state->hw.degamma_lut)
+ xelpd_program_plane_pre_csc_lut(dsb, plane_state);
+}
+
static const struct intel_color_funcs chv_color_funcs = {
.color_check = chv_color_check,
.color_commit_arm = i9xx_color_commit_arm,
@@ -3991,6 +4051,7 @@ static const struct intel_color_funcs tgl_color_funcs = {
.read_csc = icl_read_csc,
.get_config = skl_get_config,
.load_plane_csc_matrix = xelpd_load_plane_csc_matrix,
+ .load_plane_luts = xelpd_plane_load_luts,
};
static const struct intel_color_funcs icl_color_funcs = {
--
2.50.1
^ permalink raw reply related [flat|nested] 44+ messages in thread
* [v7 12/15] drm/i915/xelpd: Program Plane Post CSC Registers
2025-12-01 6:46 [v7 00/15] Plane Color Pipeline support for Intel platforms Uma Shankar
` (10 preceding siblings ...)
2025-12-01 6:46 ` [v7 11/15] drm/i915/color: Program Pre-CSC registers Uma Shankar
@ 2025-12-01 6:46 ` Uma Shankar
2025-12-02 15:32 ` Kandpal, Suraj
2025-12-01 6:46 ` [v7 13/15] drm/i915/display: Add registers for 3D LUT Uma Shankar
` (7 subsequent siblings)
19 siblings, 1 reply; 44+ messages in thread
From: Uma Shankar @ 2025-12-01 6:46 UTC (permalink / raw)
To: intel-gfx, intel-xe, dri-devel
Cc: chaitanya.kumar.borah, ville.syrjala, pekka.paalanen, contact,
harry.wentland, mwen, jadahl, sebastian.wick, swati2.sharma,
alex.hung, jani.nikula, suraj.kandpal, Uma Shankar
Extract the LUT and program plane post csc registers.
v2: Add DSB support
v3: Add support for single segment 1D LUT
v4:
- s/drm_color_lut_32/drm_color_lut32 (Simon)
- Move declaration to beginning of the function (Suraj)
- Remove multisegmented code, add it later
- Remove dead code for SDR planes, add it later
v5:
- Fix iterator issues
Signed-off-by: Uma Shankar <uma.shankar@intel.com>
Signed-off-by: Chaitanya Kumar Borah <chaitanya.kumar.borah@intel.com>
---
drivers/gpu/drm/i915/display/intel_color.c | 59 ++++++++++++++++++++++
1 file changed, 59 insertions(+)
diff --git a/drivers/gpu/drm/i915/display/intel_color.c b/drivers/gpu/drm/i915/display/intel_color.c
index 2a114d2964fa..86d1fbc906bf 100644
--- a/drivers/gpu/drm/i915/display/intel_color.c
+++ b/drivers/gpu/drm/i915/display/intel_color.c
@@ -3996,11 +3996,70 @@ xelpd_program_plane_pre_csc_lut(struct intel_dsb *dsb,
}
}
+static void
+xelpd_program_plane_post_csc_lut(struct intel_dsb *dsb,
+ const struct intel_plane_state *plane_state)
+{
+ struct intel_display *display = to_intel_display(plane_state);
+ const struct drm_plane_state *state = &plane_state->uapi;
+ enum pipe pipe = to_intel_plane(state->plane)->pipe;
+ enum plane_id plane = to_intel_plane(state->plane)->id;
+ const struct drm_color_lut32 *post_csc_lut = plane_state->hw.gamma_lut->data;
+ u32 i, j, lut_size, lut_val;
+
+ if (icl_is_hdr_plane(display, plane)) {
+ intel_de_write_dsb(display, dsb, PLANE_POST_CSC_GAMC_INDEX_ENH(pipe, plane, 0),
+ PLANE_PAL_PREC_AUTO_INCREMENT);
+ /* TODO: Add macro */
+ intel_de_write_dsb(display, dsb, PLANE_POST_CSC_GAMC_SEG0_INDEX_ENH(pipe, plane, 0),
+ PLANE_PAL_PREC_AUTO_INCREMENT);
+ if (post_csc_lut) {
+ lut_size = 32;
+ for (i = 0; i < lut_size; i++) {
+ lut_val = drm_color_lut32_extract(post_csc_lut[j++].green, 24);
+
+ intel_de_write_dsb(display, dsb,
+ PLANE_POST_CSC_GAMC_DATA_ENH(pipe, plane, 0),
+ lut_val);
+ }
+
+ /* Segment 2 */
+ do {
+ intel_de_write_dsb(display, dsb,
+ PLANE_POST_CSC_GAMC_DATA_ENH(pipe, plane, 0),
+ (1 << 24));
+ } while (++j < 34);
+ } else {
+ /*TODO: Add for segment 0 */
+ lut_size = 32;
+ for (i = 0; i < lut_size; i++) {
+ u32 v = (i * ((1 << 24) - 1)) / (lut_size - 1);
+
+ intel_de_write_dsb(display, dsb,
+ PLANE_POST_CSC_GAMC_DATA_ENH(pipe, plane, 0), v);
+ }
+
+ do {
+ intel_de_write_dsb(display, dsb,
+ PLANE_POST_CSC_GAMC_DATA_ENH(pipe, plane, 0),
+ 1 << 24);
+ } while (i++ < 34);
+ }
+
+ intel_de_write_dsb(display, dsb, PLANE_POST_CSC_GAMC_INDEX_ENH(pipe, plane, 0), 0);
+ intel_de_write_dsb(display, dsb,
+ PLANE_POST_CSC_GAMC_SEG0_INDEX_ENH(pipe, plane, 0), 0);
+ }
+}
+
static void
xelpd_plane_load_luts(struct intel_dsb *dsb, const struct intel_plane_state *plane_state)
{
if (plane_state->hw.degamma_lut)
xelpd_program_plane_pre_csc_lut(dsb, plane_state);
+
+ if (plane_state->hw.gamma_lut)
+ xelpd_program_plane_post_csc_lut(dsb, plane_state);
}
static const struct intel_color_funcs chv_color_funcs = {
--
2.50.1
^ permalink raw reply related [flat|nested] 44+ messages in thread
* [v7 13/15] drm/i915/display: Add registers for 3D LUT
2025-12-01 6:46 [v7 00/15] Plane Color Pipeline support for Intel platforms Uma Shankar
` (11 preceding siblings ...)
2025-12-01 6:46 ` [v7 12/15] drm/i915/xelpd: Program Plane Post CSC Registers Uma Shankar
@ 2025-12-01 6:46 ` Uma Shankar
2025-12-01 9:26 ` Kandpal, Suraj
2025-12-01 6:46 ` [v7 14/15] drm/i915/color: Add 3D LUT to color pipeline Uma Shankar
` (6 subsequent siblings)
19 siblings, 1 reply; 44+ messages in thread
From: Uma Shankar @ 2025-12-01 6:46 UTC (permalink / raw)
To: intel-gfx, intel-xe, dri-devel
Cc: chaitanya.kumar.borah, ville.syrjala, pekka.paalanen, contact,
harry.wentland, mwen, jadahl, sebastian.wick, swati2.sharma,
alex.hung, jani.nikula, suraj.kandpal, Uma Shankar
From: Chaitanya Kumar Borah <chaitanya.kumar.borah@intel.com>
Add registers needed to program 3D LUT
v2:
- Follow convention documented in i915_reg.h (Jani)
- Removing space in trailer (Suraj)
- Move registers to intel_color_regs.h
BSpec: 69378, 69379, 69380
Signed-off-by: Chaitanya Kumar Borah <chaitanya.kumar.borah@intel.com>
Signed-off-by: Uma Shankar <uma.shankar@intel.com>
---
.../gpu/drm/i915/display/intel_color_regs.h | 29 +++++++++++++++++++
1 file changed, 29 insertions(+)
diff --git a/drivers/gpu/drm/i915/display/intel_color_regs.h b/drivers/gpu/drm/i915/display/intel_color_regs.h
index 8eb643cfead7..c370b6029369 100644
--- a/drivers/gpu/drm/i915/display/intel_color_regs.h
+++ b/drivers/gpu/drm/i915/display/intel_color_regs.h
@@ -316,4 +316,33 @@
#define SKL_BOTTOM_COLOR_CSC_ENABLE REG_BIT(30)
#define SKL_BOTTOM_COLOR(pipe) _MMIO_PIPE(pipe, _SKL_BOTTOM_COLOR_A, _SKL_BOTTOM_COLOR_B)
+/* 3D LUT */
+#define _LUT_3D_CTL_A 0x490A4
+#define _LUT_3D_CTL_B 0x491A4
+#define LUT_3D_CTL(pipe) _MMIO_PIPE(pipe, _LUT_3D_CTL_A, _LUT_3D_CTL_B)
+#define LUT_3D_ENABLE REG_BIT(31)
+#define LUT_3D_READY REG_BIT(30)
+#define LUT_3D_BINDING_MASK REG_GENMASK(23, 22)
+#define LUT_3D_BIND_PIPE REG_FIELD_PREP(LUT_3D_BINDING_MASK, 0)
+#define LUT_3D_BIND_PLANE_1 REG_FIELD_PREP(LUT_3D_BINDING_MASK, 1)
+#define LUT_3D_BIND_PLANE_2 REG_FIELD_PREP(LUT_3D_BINDING_MASK, 2)
+#define LUT_3D_BIND_PLANE_3 REG_FIELD_PREP(LUT_3D_BINDING_MASK, 3)
+
+#define _LUT_3D_INDEX_A 0x490A8
+#define _LUT_3D_INDEX_B 0x491A8
+#define LUT_3D_INDEX(pipe) _MMIO_PIPE(pipe, _LUT_3D_INDEX_A, _LUT_3D_INDEX_B)
+#define LUT_3D_AUTO_INCREMENT REG_BIT(13)
+#define LUT_3D_INDEX_VALUE_MASK REG_GENMASK(12, 0)
+#define LUT_3D_INDEX_VALUE(x) REG_FIELD_PREP(LUT_3D_INDEX_VALUE_MASK, (x))
+
+#define _LUT_3D_DATA_A 0x490AC
+#define _LUT_3D_DATA_B 0x491AC
+#define LUT_3D_DATA(pipe) _MMIO_PIPE(pipe, _LUT_3D_DATA_A, _LUT_3D_DATA_B)
+#define LUT_3D_DATA_RED_MASK REG_GENMASK(29, 20)
+#define LUT_3D_DATA_GREEN_MASK REG_GENMASK(19, 10)
+#define LUT_3D_DATA_BLUE_MASK REG_GENMASK(9, 0)
+#define LUT_3D_DATA_RED(x) REG_FIELD_PREP(LUT_3D_DATA_RED_MASK, (x))
+#define LUT_3D_DATA_GREEN(x) REG_FIELD_PREP(LUT_3D_DATA_GREEN_MASK, (x))
+#define LUT_3D_DATA_BLUE(x) REG_FIELD_PREP(LUT_3D_DATA_BLUE_MASK, (x))
+
#endif /* __INTEL_COLOR_REGS_H__ */
--
2.50.1
^ permalink raw reply related [flat|nested] 44+ messages in thread
* [v7 14/15] drm/i915/color: Add 3D LUT to color pipeline
2025-12-01 6:46 [v7 00/15] Plane Color Pipeline support for Intel platforms Uma Shankar
` (12 preceding siblings ...)
2025-12-01 6:46 ` [v7 13/15] drm/i915/display: Add registers for 3D LUT Uma Shankar
@ 2025-12-01 6:46 ` Uma Shankar
2025-12-02 15:42 ` Kandpal, Suraj
2025-12-01 6:46 ` [v7 15/15] drm/i915/color: Enable Plane Color Pipelines Uma Shankar
` (5 subsequent siblings)
19 siblings, 1 reply; 44+ messages in thread
From: Uma Shankar @ 2025-12-01 6:46 UTC (permalink / raw)
To: intel-gfx, intel-xe, dri-devel
Cc: chaitanya.kumar.borah, ville.syrjala, pekka.paalanen, contact,
harry.wentland, mwen, jadahl, sebastian.wick, swati2.sharma,
alex.hung, jani.nikula, suraj.kandpal, Uma Shankar
From: Chaitanya Kumar Borah <chaitanya.kumar.borah@intel.com>
Add helpers to program the 3D LUT registers and arm them.
LUT_3D_READY in LUT_3D_CLT is cleared off by the HW once
the LUT buffer is loaded into it's internal working RAM.
So by the time we try to load/commit new values, we expect
it to be cleared off. If not, log an error and return
without writing new values. Do it only when while writing
with MMIO. There is no way to read register within DSB
execution.
v2:
- Add information regarding LUT_3D_READY to commit message (Jani)
- Log error instead of a drm_warn and return without committing changes
if 3DLUT HW is not ready to accept new values.
- Refactor intel_color_crtc_has_3dlut()
Also remove Gen10 check (Suraj)
Signed-off-by: Chaitanya Kumar Borah <chaitanya.kumar.borah@intel.com>
Signed-off-by: Uma Shankar <uma.shankar@intel.com>
---
drivers/gpu/drm/i915/display/intel_color.c | 79 +++++++++++++++++++
drivers/gpu/drm/i915/display/intel_color.h | 4 +
.../drm/i915/display/intel_color_pipeline.c | 25 +++++-
.../drm/i915/display/intel_color_pipeline.h | 3 +-
.../drm/i915/display/intel_display_limits.h | 1 +
.../drm/i915/display/intel_display_types.h | 2 +-
drivers/gpu/drm/i915/display/intel_plane.c | 2 +
7 files changed, 111 insertions(+), 5 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/intel_color.c b/drivers/gpu/drm/i915/display/intel_color.c
index 86d1fbc906bf..70e6effba9b3 100644
--- a/drivers/gpu/drm/i915/display/intel_color.c
+++ b/drivers/gpu/drm/i915/display/intel_color.c
@@ -4062,6 +4062,53 @@ xelpd_plane_load_luts(struct intel_dsb *dsb, const struct intel_plane_state *pla
xelpd_program_plane_post_csc_lut(dsb, plane_state);
}
+static u32 glk_3dlut_10(const struct drm_color_lut32 *color)
+{
+ return REG_FIELD_PREP(LUT_3D_DATA_RED_MASK, drm_color_lut32_extract(color->red, 10)) |
+ REG_FIELD_PREP(LUT_3D_DATA_GREEN_MASK, drm_color_lut32_extract(color->green, 10)) |
+ REG_FIELD_PREP(LUT_3D_DATA_BLUE_MASK, drm_color_lut32_extract(color->blue, 10));
+}
+
+static void glk_load_lut_3d(struct intel_dsb *dsb,
+ struct intel_crtc *crtc,
+ const struct drm_property_blob *blob)
+{
+ struct intel_display *display = to_intel_display(crtc->base.dev);
+ const struct drm_color_lut32 *lut = blob->data;
+ int i, lut_size = drm_color_lut32_size(blob);
+ enum pipe pipe = crtc->pipe;
+
+ if (!dsb && intel_de_read(display, LUT_3D_CTL(pipe)) & LUT_3D_READY) {
+ drm_err(display->drm, "[CRTC:%d:%s] 3D LUT not ready, not loading LUTs\n",
+ crtc->base.base.id, crtc->base.name);
+ return;
+ }
+
+ intel_de_write_dsb(display, dsb, LUT_3D_INDEX(pipe), LUT_3D_AUTO_INCREMENT);
+ for (i = 0; i < lut_size; i++)
+ intel_de_write_dsb(display, dsb, LUT_3D_DATA(pipe), glk_3dlut_10(&lut[i]));
+ intel_de_write_dsb(display, dsb, LUT_3D_INDEX(pipe), 0);
+}
+
+static void glk_lut_3d_commit(struct intel_dsb *dsb, struct intel_crtc *crtc, bool enable)
+{
+ struct intel_display *display = to_intel_display(crtc);
+ enum pipe pipe = crtc->pipe;
+ u32 val;
+
+ if (!dsb && intel_de_read(display, LUT_3D_CTL(pipe)) & LUT_3D_READY) {
+ drm_err(display->drm, "[CRTC:%d:%s] 3D LUT not ready, not committing change\n",
+ crtc->base.base.id, crtc->base.name);
+ return;
+ }
+
+ if (enable)
+ val = LUT_3D_ENABLE | LUT_3D_READY | LUT_3D_BIND_PLANE_1;
+ else
+ val = 0;
+ intel_de_write_dsb(display, dsb, LUT_3D_CTL(pipe), val);
+}
+
static const struct intel_color_funcs chv_color_funcs = {
.color_check = chv_color_check,
.color_commit_arm = i9xx_color_commit_arm,
@@ -4191,6 +4238,16 @@ static const struct intel_color_funcs ilk_color_funcs = {
.get_config = ilk_get_config,
};
+void intel_color_plane_commit_arm(struct intel_dsb *dsb,
+ const struct intel_plane_state *plane_state)
+{
+ struct intel_display *display = to_intel_display(plane_state);
+ struct intel_crtc *crtc = to_intel_crtc(plane_state->uapi.crtc);
+
+ if (crtc && intel_color_crtc_has_3dlut(display, crtc->pipe))
+ glk_lut_3d_commit(dsb, crtc, !!plane_state->hw.lut_3d);
+}
+
static void
intel_color_load_plane_csc_matrix(struct intel_dsb *dsb,
const struct intel_plane_state *plane_state)
@@ -4211,6 +4268,26 @@ intel_color_load_plane_luts(struct intel_dsb *dsb,
display->funcs.color->load_plane_luts(dsb, plane_state);
}
+bool
+intel_color_crtc_has_3dlut(struct intel_display *display, enum pipe pipe)
+{
+ if (DISPLAY_VER(display) >= 12)
+ return pipe == PIPE_A || pipe == PIPE_B;
+ else
+ return false;
+}
+
+static void
+intel_color_load_3dlut(struct intel_dsb *dsb,
+ const struct intel_plane_state *plane_state)
+{
+ struct intel_display *display = to_intel_display(plane_state);
+ struct intel_crtc *crtc = to_intel_crtc(plane_state->uapi.crtc);
+
+ if (crtc && intel_color_crtc_has_3dlut(display, crtc->pipe))
+ glk_load_lut_3d(dsb, crtc, plane_state->hw.lut_3d);
+}
+
void intel_color_plane_program_pipeline(struct intel_dsb *dsb,
const struct intel_plane_state *plane_state)
{
@@ -4218,6 +4295,8 @@ void intel_color_plane_program_pipeline(struct intel_dsb *dsb,
intel_color_load_plane_csc_matrix(dsb, plane_state);
if (plane_state->hw.degamma_lut || plane_state->hw.gamma_lut)
intel_color_load_plane_luts(dsb, plane_state);
+ if (plane_state->hw.lut_3d)
+ intel_color_load_3dlut(dsb, plane_state);
}
void intel_color_crtc_init(struct intel_crtc *crtc)
diff --git a/drivers/gpu/drm/i915/display/intel_color.h b/drivers/gpu/drm/i915/display/intel_color.h
index 8051c827a1d8..c21b9bdf7bb8 100644
--- a/drivers/gpu/drm/i915/display/intel_color.h
+++ b/drivers/gpu/drm/i915/display/intel_color.h
@@ -15,6 +15,7 @@ struct intel_display;
struct intel_dsb;
struct intel_plane_state;
struct drm_property_blob;
+enum pipe;
void intel_color_init_hooks(struct intel_display *display);
int intel_color_init(struct intel_display *display);
@@ -43,4 +44,7 @@ bool intel_color_lut_equal(const struct intel_crtc_state *crtc_state,
void intel_color_assert_luts(const struct intel_crtc_state *crtc_state);
void intel_color_plane_program_pipeline(struct intel_dsb *dsb,
const struct intel_plane_state *plane_state);
+void intel_color_plane_commit_arm(struct intel_dsb *dsb,
+ const struct intel_plane_state *plane_state);
+bool intel_color_crtc_has_3dlut(struct intel_display *display, enum pipe pipe);
#endif /* __INTEL_COLOR_H__ */
diff --git a/drivers/gpu/drm/i915/display/intel_color_pipeline.c b/drivers/gpu/drm/i915/display/intel_color_pipeline.c
index 1415f94dd3e3..8214a00e34cf 100644
--- a/drivers/gpu/drm/i915/display/intel_color_pipeline.c
+++ b/drivers/gpu/drm/i915/display/intel_color_pipeline.c
@@ -2,6 +2,7 @@
/*
* Copyright © 2025 Intel Corporation
*/
+#include "intel_color.h"
#include "intel_colorop.h"
#include "intel_color_pipeline.h"
#include "intel_de.h"
@@ -13,10 +14,12 @@
#define PLANE_GAMMA_SIZE 32
static
-int _intel_color_pipeline_plane_init(struct drm_plane *plane, struct drm_prop_enum_list *list)
+int _intel_color_pipeline_plane_init(struct drm_plane *plane, struct drm_prop_enum_list *list,
+ enum pipe pipe)
{
struct intel_colorop *colorop;
struct drm_device *dev = plane->dev;
+ struct intel_display *display = to_intel_display(dev);
int ret;
struct drm_colorop *prev_op;
@@ -36,6 +39,22 @@ int _intel_color_pipeline_plane_init(struct drm_plane *plane, struct drm_prop_en
/* TODO: handle failures and clean up */
prev_op = &colorop->base;
+ if (DISPLAY_VER(display) >= 35 &&
+ intel_color_crtc_has_3dlut(display, pipe) &&
+ plane->type == DRM_PLANE_TYPE_PRIMARY) {
+ colorop = intel_colorop_create(INTEL_PLANE_CB_3DLUT);
+
+ ret = drm_plane_colorop_3dlut_init(dev, &colorop->base, plane, 17,
+ DRM_COLOROP_LUT3D_INTERPOLATION_TETRAHEDRAL,
+ true);
+ if (ret)
+ return ret;
+
+ drm_colorop_set_next_property(prev_op, &colorop->base);
+
+ prev_op = &colorop->base;
+ }
+
colorop = intel_colorop_create(INTEL_PLANE_CB_CSC);
ret = drm_plane_colorop_ctm_3x4_init(dev, &colorop->base, plane,
DRM_COLOROP_FLAG_ALLOW_BYPASS);
@@ -58,7 +77,7 @@ int _intel_color_pipeline_plane_init(struct drm_plane *plane, struct drm_prop_en
return 0;
}
-int intel_color_pipeline_plane_init(struct drm_plane *plane)
+int intel_color_pipeline_plane_init(struct drm_plane *plane, enum pipe pipe)
{
struct drm_device *dev = plane->dev;
struct intel_display *display = to_intel_display(dev);
@@ -77,7 +96,7 @@ int intel_color_pipeline_plane_init(struct drm_plane *plane)
len++;
/* Add pipeline consisting of transfer functions */
- ret = _intel_color_pipeline_plane_init(plane, &pipelines[len]);
+ ret = _intel_color_pipeline_plane_init(plane, &pipelines[len], pipe);
if (ret)
return ret;
len++;
diff --git a/drivers/gpu/drm/i915/display/intel_color_pipeline.h b/drivers/gpu/drm/i915/display/intel_color_pipeline.h
index 7f1d32bc9202..a457d306da7f 100644
--- a/drivers/gpu/drm/i915/display/intel_color_pipeline.h
+++ b/drivers/gpu/drm/i915/display/intel_color_pipeline.h
@@ -7,7 +7,8 @@
#define __INTEL_COLOR_PIPELINE_H__
struct drm_plane;
+enum pipe;
-int intel_color_pipeline_plane_init(struct drm_plane *plane);
+int intel_color_pipeline_plane_init(struct drm_plane *plane, enum pipe pipe);
#endif /* __INTEL_COLOR_PIPELINE_H__ */
diff --git a/drivers/gpu/drm/i915/display/intel_display_limits.h b/drivers/gpu/drm/i915/display/intel_display_limits.h
index 55fd574ba313..cb3c9c665c44 100644
--- a/drivers/gpu/drm/i915/display/intel_display_limits.h
+++ b/drivers/gpu/drm/i915/display/intel_display_limits.h
@@ -142,6 +142,7 @@ enum intel_color_block {
INTEL_PLANE_CB_PRE_CSC_LUT,
INTEL_PLANE_CB_CSC,
INTEL_PLANE_CB_POST_CSC_LUT,
+ INTEL_PLANE_CB_3DLUT,
INTEL_CB_MAX
};
diff --git a/drivers/gpu/drm/i915/display/intel_display_types.h b/drivers/gpu/drm/i915/display/intel_display_types.h
index c419a814cb34..06bf8f7c0989 100644
--- a/drivers/gpu/drm/i915/display/intel_display_types.h
+++ b/drivers/gpu/drm/i915/display/intel_display_types.h
@@ -646,7 +646,7 @@ struct intel_plane_state {
enum drm_color_encoding color_encoding;
enum drm_color_range color_range;
enum drm_scaling_filter scaling_filter;
- struct drm_property_blob *ctm, *degamma_lut, *gamma_lut;
+ struct drm_property_blob *ctm, *degamma_lut, *gamma_lut, *lut_3d;
} hw;
struct i915_vma *ggtt_vma;
diff --git a/drivers/gpu/drm/i915/display/intel_plane.c b/drivers/gpu/drm/i915/display/intel_plane.c
index 4e6ddb36b872..d9db3742b8c4 100644
--- a/drivers/gpu/drm/i915/display/intel_plane.c
+++ b/drivers/gpu/drm/i915/display/intel_plane.c
@@ -352,6 +352,8 @@ intel_plane_colorop_replace_blob(struct intel_plane_state *plane_state,
return drm_property_replace_blob(&plane_state->hw.degamma_lut, blob);
else if (intel_colorop->id == INTEL_PLANE_CB_POST_CSC_LUT)
return drm_property_replace_blob(&plane_state->hw.gamma_lut, blob);
+ else if (intel_colorop->id == INTEL_PLANE_CB_3DLUT)
+ return drm_property_replace_blob(&plane_state->hw.lut_3d, blob);
return false;
}
--
2.50.1
^ permalink raw reply related [flat|nested] 44+ messages in thread
* [v7 15/15] drm/i915/color: Enable Plane Color Pipelines
2025-12-01 6:46 [v7 00/15] Plane Color Pipeline support for Intel platforms Uma Shankar
` (13 preceding siblings ...)
2025-12-01 6:46 ` [v7 14/15] drm/i915/color: Add 3D LUT to color pipeline Uma Shankar
@ 2025-12-01 6:46 ` Uma Shankar
2025-12-01 21:14 ` kernel test robot
2025-12-01 6:47 ` ✗ CI.checkpatch: warning for Plane Color Pipeline support for Intel platforms (rev6) Patchwork
` (4 subsequent siblings)
19 siblings, 1 reply; 44+ messages in thread
From: Uma Shankar @ 2025-12-01 6:46 UTC (permalink / raw)
To: intel-gfx, intel-xe, dri-devel
Cc: chaitanya.kumar.borah, ville.syrjala, pekka.paalanen, contact,
harry.wentland, mwen, jadahl, sebastian.wick, swati2.sharma,
alex.hung, jani.nikula, suraj.kandpal, Uma Shankar
Expose color pipeline and add ability to program it.
v2: Set bit to enable multisegmented lut
v3: s/drm_color_lut_32/drm_color_lut32 (Simon)
v4: - Fix dsb programming
- Remove multi-segment LUT, they will be added in later patches
- Add pipeline only to TGL+
- Code Refactor
Reviewed-by: Suraj Kandpal <suraj.kandpal@intel.com>
Signed-off-by: Chaitanya Kumar Borah <chaitanya.kumar.borah@intel.com>
Signed-off-by: Uma Shankar <uma.shankar@intel.com>
---
drivers/gpu/drm/i915/display/intel_display.c | 5 ++++-
.../drm/i915/display/skl_universal_plane.c | 21 +++++++++++++++++++
2 files changed, 25 insertions(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
index e5ce47efc809..9c77b4416324 100644
--- a/drivers/gpu/drm/i915/display/intel_display.c
+++ b/drivers/gpu/drm/i915/display/intel_display.c
@@ -7289,6 +7289,7 @@ static void intel_atomic_dsb_finish(struct intel_atomic_state *state,
struct intel_display *display = to_intel_display(state);
struct intel_crtc_state *new_crtc_state =
intel_atomic_get_new_crtc_state(state, crtc);
+ unsigned int size = new_crtc_state->plane_color_changed ? 8192 : 1024;
if (!new_crtc_state->use_flipq &&
!new_crtc_state->use_dsb &&
@@ -7299,10 +7300,12 @@ static void intel_atomic_dsb_finish(struct intel_atomic_state *state,
* Rough estimate:
* ~64 registers per each plane * 8 planes = 512
* Double that for pipe stuff and other overhead.
+ * ~4913 registers for 3DLUT
+ * ~200 color registers * 3 HDR planes
*/
new_crtc_state->dsb_commit = intel_dsb_prepare(state, crtc, INTEL_DSB_0,
new_crtc_state->use_dsb ||
- new_crtc_state->use_flipq ? 1024 : 16);
+ new_crtc_state->use_flipq ? size : 16);
if (!new_crtc_state->dsb_commit) {
new_crtc_state->use_flipq = false;
new_crtc_state->use_dsb = false;
diff --git a/drivers/gpu/drm/i915/display/skl_universal_plane.c b/drivers/gpu/drm/i915/display/skl_universal_plane.c
index 921b2f73d27a..495176aee4bb 100644
--- a/drivers/gpu/drm/i915/display/skl_universal_plane.c
+++ b/drivers/gpu/drm/i915/display/skl_universal_plane.c
@@ -11,6 +11,8 @@
#include "pxp/intel_pxp.h"
#include "intel_bo.h"
+#include "intel_color.h"
+#include "intel_color_pipeline.h"
#include "intel_de.h"
#include "intel_display_irq.h"
#include "intel_display_regs.h"
@@ -1275,6 +1277,18 @@ static u32 glk_plane_color_ctl(const struct intel_plane_state *plane_state)
if (plane_state->force_black)
plane_color_ctl |= PLANE_COLOR_PLANE_CSC_ENABLE;
+ if (plane_state->hw.degamma_lut)
+ plane_color_ctl |= PLANE_COLOR_PRE_CSC_GAMMA_ENABLE;
+
+ if (plane_state->hw.ctm)
+ plane_color_ctl |= PLANE_COLOR_PLANE_CSC_ENABLE;
+
+ if (plane_state->hw.gamma_lut) {
+ plane_color_ctl &= ~PLANE_COLOR_PLANE_GAMMA_DISABLE;
+ if (drm_color_lut32_size(plane_state->hw.gamma_lut) != 32)
+ plane_color_ctl |= PLANE_COLOR_POST_CSC_GAMMA_MULTSEG_ENABLE;
+ }
+
return plane_color_ctl;
}
@@ -1556,6 +1570,8 @@ icl_plane_update_noarm(struct intel_dsb *dsb,
plane_color_ctl = plane_state->color_ctl |
glk_plane_color_ctl_crtc(crtc_state);
+ intel_color_plane_program_pipeline(dsb, plane_state);
+
/* The scaler will handle the output position */
if (plane_state->scaler_id >= 0) {
crtc_x = 0;
@@ -1657,6 +1673,8 @@ icl_plane_update_arm(struct intel_dsb *dsb,
icl_plane_update_sel_fetch_arm(dsb, plane, crtc_state, plane_state);
+ intel_color_plane_commit_arm(dsb, plane_state);
+
/*
* In order to have FBC for fp16 formats pixel normalizer block must be
* active. Check if pixel normalizer block need to be enabled for FBC.
@@ -3001,6 +3019,9 @@ skl_universal_plane_create(struct intel_display *display,
DRM_COLOR_YCBCR_BT709,
DRM_COLOR_YCBCR_LIMITED_RANGE);
+ if (DISPLAY_VER(display) >= 12)
+ intel_color_pipeline_plane_init(&plane->base, pipe);
+
drm_plane_create_alpha_property(&plane->base);
drm_plane_create_blend_mode_property(&plane->base,
BIT(DRM_MODE_BLEND_PIXEL_NONE) |
--
2.50.1
^ permalink raw reply related [flat|nested] 44+ messages in thread
* ✗ CI.checkpatch: warning for Plane Color Pipeline support for Intel platforms (rev6)
2025-12-01 6:46 [v7 00/15] Plane Color Pipeline support for Intel platforms Uma Shankar
` (14 preceding siblings ...)
2025-12-01 6:46 ` [v7 15/15] drm/i915/color: Enable Plane Color Pipelines Uma Shankar
@ 2025-12-01 6:47 ` Patchwork
2025-12-01 6:48 ` ✓ CI.KUnit: success " Patchwork
` (3 subsequent siblings)
19 siblings, 0 replies; 44+ messages in thread
From: Patchwork @ 2025-12-01 6:47 UTC (permalink / raw)
To: Uma Shankar; +Cc: intel-xe
== Series Details ==
Series: Plane Color Pipeline support for Intel platforms (rev6)
URL : https://patchwork.freedesktop.org/series/141788/
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
2de9a3901bc28757c7906b454717b64e2a214021
+ cd /kernel
+ git config --global --add safe.directory /kernel
+ git log -n1
commit d8f5267dc37e79d7f45b81ec2495dcfb6e8d7f14
Author: Uma Shankar <uma.shankar@intel.com>
Date: Mon Dec 1 12:16:55 2025 +0530
drm/i915/color: Enable Plane Color Pipelines
Expose color pipeline and add ability to program it.
v2: Set bit to enable multisegmented lut
v3: s/drm_color_lut_32/drm_color_lut32 (Simon)
v4: - Fix dsb programming
- Remove multi-segment LUT, they will be added in later patches
- Add pipeline only to TGL+
- Code Refactor
Reviewed-by: Suraj Kandpal <suraj.kandpal@intel.com>
Signed-off-by: Chaitanya Kumar Borah <chaitanya.kumar.borah@intel.com>
Signed-off-by: Uma Shankar <uma.shankar@intel.com>
+ /mt/dim checkpatch 9fcf9189976d387cb9199155c35dd6c826268c52 drm-intel
dbb6832c746b drm/i915/display: Add identifiers for driver specific blocks
c70350e10b61 drm/i915: Add intel_color_op
-:31: WARNING:FILE_PATH_CHANGES: added, moved or deleted file(s), does MAINTAINERS need updating?
#31:
new file mode 100644
total: 0 errors, 1 warnings, 0 checks, 48 lines checked
2cedffcb569b drm/i915/color: Add helper to create intel colorop
f93d30ada8a3 drm/i915/color: Create a transfer function color pipeline
-:41: WARNING:FILE_PATH_CHANGES: added, moved or deleted file(s), does MAINTAINERS need updating?
#41:
new file mode 100644
total: 0 errors, 1 warnings, 0 checks, 124 lines checked
f70a9facffd9 drm/i915/color: Add framework to program CSC
b43480bd87b5 drm/i915/color: Preserve sign bit when int_bits is Zero
753d3e1473a5 drm/i915/color: Add plane CTM callback for D12 and beyond
0bc27935d927 drm/i915: Add register definitions for Plane Degamma
-:40: WARNING:LONG_LINE: line length of 104 exceeds 100 columns
#40: FILE: drivers/gpu/drm/i915/display/skl_universal_plane_regs.h:300:
+#define _PLANE_PRE_CSC_GAMC_INDEX_ENH_1(pipe) _PIPE(pipe, _PLANE_PRE_CSC_GAMC_INDEX_ENH_1_A, \
-:42: WARNING:LONG_LINE: line length of 104 exceeds 100 columns
#42: FILE: drivers/gpu/drm/i915/display/skl_universal_plane_regs.h:302:
+#define _PLANE_PRE_CSC_GAMC_INDEX_ENH_2(pipe) _PIPE(pipe, _PLANE_PRE_CSC_GAMC_INDEX_ENH_2_A, \
-:44: WARNING:LONG_LINE: line length of 123 exceeds 100 columns
#44: FILE: drivers/gpu/drm/i915/display/skl_universal_plane_regs.h:304:
+#define PLANE_PRE_CSC_GAMC_INDEX_ENH(pipe, plane, i) _MMIO_PLANE_GAMC(plane, i, _PLANE_PRE_CSC_GAMC_INDEX_ENH_1(pipe), \
-:44: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'pipe' - possible side-effects?
#44: FILE: drivers/gpu/drm/i915/display/skl_universal_plane_regs.h:304:
+#define PLANE_PRE_CSC_GAMC_INDEX_ENH(pipe, plane, i) _MMIO_PLANE_GAMC(plane, i, _PLANE_PRE_CSC_GAMC_INDEX_ENH_1(pipe), \
+ _PLANE_PRE_CSC_GAMC_INDEX_ENH_2(pipe))
-:45: WARNING:LONG_LINE: line length of 111 exceeds 100 columns
#45: FILE: drivers/gpu/drm/i915/display/skl_universal_plane_regs.h:305:
+ _PLANE_PRE_CSC_GAMC_INDEX_ENH_2(pipe))
-:52: WARNING:LONG_LINE: line length of 103 exceeds 100 columns
#52: FILE: drivers/gpu/drm/i915/display/skl_universal_plane_regs.h:312:
+#define _PLANE_PRE_CSC_GAMC_DATA_ENH_1(pipe) _PIPE(pipe, _PLANE_PRE_CSC_GAMC_DATA_ENH_1_A, \
-:54: WARNING:LONG_LINE: line length of 103 exceeds 100 columns
#54: FILE: drivers/gpu/drm/i915/display/skl_universal_plane_regs.h:314:
+#define _PLANE_PRE_CSC_GAMC_DATA_ENH_2(pipe) _PIPE(pipe, _PLANE_PRE_CSC_GAMC_DATA_ENH_2_A, \
-:56: WARNING:LONG_LINE: line length of 122 exceeds 100 columns
#56: FILE: drivers/gpu/drm/i915/display/skl_universal_plane_regs.h:316:
+#define PLANE_PRE_CSC_GAMC_DATA_ENH(pipe, plane, i) _MMIO_PLANE_GAMC(plane, i, _PLANE_PRE_CSC_GAMC_DATA_ENH_1(pipe), \
-:56: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'pipe' - possible side-effects?
#56: FILE: drivers/gpu/drm/i915/display/skl_universal_plane_regs.h:316:
+#define PLANE_PRE_CSC_GAMC_DATA_ENH(pipe, plane, i) _MMIO_PLANE_GAMC(plane, i, _PLANE_PRE_CSC_GAMC_DATA_ENH_1(pipe), \
+ _PLANE_PRE_CSC_GAMC_DATA_ENH_2(pipe))
-:57: WARNING:LONG_LINE: line length of 110 exceeds 100 columns
#57: FILE: drivers/gpu/drm/i915/display/skl_universal_plane_regs.h:317:
+ _PLANE_PRE_CSC_GAMC_DATA_ENH_2(pipe))
-:67: WARNING:LONG_LINE: line length of 119 exceeds 100 columns
#67: FILE: drivers/gpu/drm/i915/display/skl_universal_plane_regs.h:327:
+#define PLANE_PRE_CSC_GAMC_INDEX(pipe, plane, i) _MMIO_PLANE_GAMC(plane, i, _PLANE_PRE_CSC_GAMC_INDEX_1(pipe), \
-:67: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'pipe' - possible side-effects?
#67: FILE: drivers/gpu/drm/i915/display/skl_universal_plane_regs.h:327:
+#define PLANE_PRE_CSC_GAMC_INDEX(pipe, plane, i) _MMIO_PLANE_GAMC(plane, i, _PLANE_PRE_CSC_GAMC_INDEX_1(pipe), \
+ _PLANE_PRE_CSC_GAMC_INDEX_2(pipe))
-:68: WARNING:LONG_LINE: line length of 107 exceeds 100 columns
#68: FILE: drivers/gpu/drm/i915/display/skl_universal_plane_regs.h:328:
+ _PLANE_PRE_CSC_GAMC_INDEX_2(pipe))
-:78: WARNING:LONG_LINE: line length of 118 exceeds 100 columns
#78: FILE: drivers/gpu/drm/i915/display/skl_universal_plane_regs.h:338:
+#define PLANE_PRE_CSC_GAMC_DATA(pipe, plane, i) _MMIO_PLANE_GAMC(plane, i, _PLANE_PRE_CSC_GAMC_DATA_1(pipe), \
-:78: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'pipe' - possible side-effects?
#78: FILE: drivers/gpu/drm/i915/display/skl_universal_plane_regs.h:338:
+#define PLANE_PRE_CSC_GAMC_DATA(pipe, plane, i) _MMIO_PLANE_GAMC(plane, i, _PLANE_PRE_CSC_GAMC_DATA_1(pipe), \
+ _PLANE_PRE_CSC_GAMC_DATA_2(pipe))
-:79: WARNING:LONG_LINE: line length of 106 exceeds 100 columns
#79: FILE: drivers/gpu/drm/i915/display/skl_universal_plane_regs.h:339:
+ _PLANE_PRE_CSC_GAMC_DATA_2(pipe))
total: 0 errors, 12 warnings, 4 checks, 60 lines checked
688047b90591 drm/i915: Add register definitions for Plane Post CSC
-:39: WARNING:LONG_LINE: line length of 118 exceeds 100 columns
#39: FILE: drivers/gpu/drm/i915/display/skl_universal_plane_regs.h:301:
+#define _PLANE_POST_CSC_GAMC_SEG0_INDEX_ENH_1(pipe) _PIPE(pipe, _PLANE_POST_CSC_GAMC_SEG0_INDEX_ENH_1_A, \
-:40: WARNING:LONG_LINE: line length of 110 exceeds 100 columns
#40: FILE: drivers/gpu/drm/i915/display/skl_universal_plane_regs.h:302:
+ _PLANE_POST_CSC_GAMC_SEG0_INDEX_ENH_1_B)
-:41: WARNING:LONG_LINE: line length of 118 exceeds 100 columns
#41: FILE: drivers/gpu/drm/i915/display/skl_universal_plane_regs.h:303:
+#define _PLANE_POST_CSC_GAMC_SEG0_INDEX_ENH_2(pipe) _PIPE(pipe, _PLANE_POST_CSC_GAMC_SEG0_INDEX_ENH_2_A, \
-:42: WARNING:LONG_LINE: line length of 110 exceeds 100 columns
#42: FILE: drivers/gpu/drm/i915/display/skl_universal_plane_regs.h:304:
+ _PLANE_POST_CSC_GAMC_SEG0_INDEX_ENH_2_B)
-:43: WARNING:LONG_LINE: line length of 137 exceeds 100 columns
#43: FILE: drivers/gpu/drm/i915/display/skl_universal_plane_regs.h:305:
+#define PLANE_POST_CSC_GAMC_SEG0_INDEX_ENH(pipe, plane, i) _MMIO_PLANE_GAMC(plane, i, _PLANE_POST_CSC_GAMC_SEG0_INDEX_ENH_1(pipe), \
-:43: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'pipe' - possible side-effects?
#43: FILE: drivers/gpu/drm/i915/display/skl_universal_plane_regs.h:305:
+#define PLANE_POST_CSC_GAMC_SEG0_INDEX_ENH(pipe, plane, i) _MMIO_PLANE_GAMC(plane, i, _PLANE_POST_CSC_GAMC_SEG0_INDEX_ENH_1(pipe), \
+ _PLANE_POST_CSC_GAMC_SEG0_INDEX_ENH_2(pipe))
-:44: WARNING:LONG_LINE: line length of 125 exceeds 100 columns
#44: FILE: drivers/gpu/drm/i915/display/skl_universal_plane_regs.h:306:
+ _PLANE_POST_CSC_GAMC_SEG0_INDEX_ENH_2(pipe))
-:50: WARNING:LONG_LINE: line length of 109 exceeds 100 columns
#50: FILE: drivers/gpu/drm/i915/display/skl_universal_plane_regs.h:312:
+#define _PLANE_POST_CSC_GAMC_SEG0_DATA_ENH_1(pipe) _PIPE(pipe, _PLANE_POST_CSC_GAMC_SEG0_DATA_ENH_1_A, \
-:51: WARNING:LONG_LINE: line length of 101 exceeds 100 columns
#51: FILE: drivers/gpu/drm/i915/display/skl_universal_plane_regs.h:313:
+ _PLANE_POST_CSC_GAMC_SEG0_DATA_ENH_1_B)
-:52: WARNING:LONG_LINE: line length of 109 exceeds 100 columns
#52: FILE: drivers/gpu/drm/i915/display/skl_universal_plane_regs.h:314:
+#define _PLANE_POST_CSC_GAMC_SEG0_DATA_ENH_2(pipe) _PIPE(pipe, _PLANE_POST_CSC_GAMC_SEG0_DATA_ENH_2_A, \
-:53: WARNING:LONG_LINE: line length of 101 exceeds 100 columns
#53: FILE: drivers/gpu/drm/i915/display/skl_universal_plane_regs.h:315:
+ _PLANE_POST_CSC_GAMC_SEG0_DATA_ENH_2_B)
-:54: WARNING:LONG_LINE: line length of 136 exceeds 100 columns
#54: FILE: drivers/gpu/drm/i915/display/skl_universal_plane_regs.h:316:
+#define PLANE_POST_CSC_GAMC_SEG0_DATA_ENH(pipe, plane, i) _MMIO_PLANE_GAMC(plane, i, _PLANE_POST_CSC_GAMC_SEG0_DATA_ENH_1(pipe), \
-:54: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'pipe' - possible side-effects?
#54: FILE: drivers/gpu/drm/i915/display/skl_universal_plane_regs.h:316:
+#define PLANE_POST_CSC_GAMC_SEG0_DATA_ENH(pipe, plane, i) _MMIO_PLANE_GAMC(plane, i, _PLANE_POST_CSC_GAMC_SEG0_DATA_ENH_1(pipe), \
+ _PLANE_POST_CSC_GAMC_SEG0_DATA_ENH_2(pipe))
-:55: WARNING:LONG_LINE: line length of 124 exceeds 100 columns
#55: FILE: drivers/gpu/drm/i915/display/skl_universal_plane_regs.h:317:
+ _PLANE_POST_CSC_GAMC_SEG0_DATA_ENH_2(pipe))
-:61: WARNING:LONG_LINE: line length of 105 exceeds 100 columns
#61: FILE: drivers/gpu/drm/i915/display/skl_universal_plane_regs.h:323:
+#define _PLANE_POST_CSC_GAMC_INDEX_ENH_1(pipe) _PIPE(pipe, _PLANE_POST_CSC_GAMC_INDEX_ENH_1_A, \
-:63: WARNING:LONG_LINE: line length of 105 exceeds 100 columns
#63: FILE: drivers/gpu/drm/i915/display/skl_universal_plane_regs.h:325:
+#define _PLANE_POST_CSC_GAMC_INDEX_ENH_2(pipe) _PIPE(pipe, _PLANE_POST_CSC_GAMC_INDEX_ENH_2_A, \
-:65: WARNING:LONG_LINE: line length of 124 exceeds 100 columns
#65: FILE: drivers/gpu/drm/i915/display/skl_universal_plane_regs.h:327:
+#define PLANE_POST_CSC_GAMC_INDEX_ENH(pipe, plane, i) _MMIO_PLANE_GAMC(plane, i, _PLANE_POST_CSC_GAMC_INDEX_ENH_1(pipe), \
-:65: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'pipe' - possible side-effects?
#65: FILE: drivers/gpu/drm/i915/display/skl_universal_plane_regs.h:327:
+#define PLANE_POST_CSC_GAMC_INDEX_ENH(pipe, plane, i) _MMIO_PLANE_GAMC(plane, i, _PLANE_POST_CSC_GAMC_INDEX_ENH_1(pipe), \
+ _PLANE_POST_CSC_GAMC_INDEX_ENH_2(pipe))
-:66: WARNING:LONG_LINE: line length of 112 exceeds 100 columns
#66: FILE: drivers/gpu/drm/i915/display/skl_universal_plane_regs.h:328:
+ _PLANE_POST_CSC_GAMC_INDEX_ENH_2(pipe))
-:72: WARNING:LONG_LINE: line length of 104 exceeds 100 columns
#72: FILE: drivers/gpu/drm/i915/display/skl_universal_plane_regs.h:334:
+#define _PLANE_POST_CSC_GAMC_DATA_ENH_1(pipe) _PIPE(pipe, _PLANE_POST_CSC_GAMC_DATA_ENH_1_A, \
-:74: WARNING:LONG_LINE: line length of 104 exceeds 100 columns
#74: FILE: drivers/gpu/drm/i915/display/skl_universal_plane_regs.h:336:
+#define _PLANE_POST_CSC_GAMC_DATA_ENH_2(pipe) _PIPE(pipe, _PLANE_POST_CSC_GAMC_DATA_ENH_2_A, \
-:76: WARNING:LONG_LINE: line length of 123 exceeds 100 columns
#76: FILE: drivers/gpu/drm/i915/display/skl_universal_plane_regs.h:338:
+#define PLANE_POST_CSC_GAMC_DATA_ENH(pipe, plane, i) _MMIO_PLANE_GAMC(plane, i, _PLANE_POST_CSC_GAMC_DATA_ENH_1(pipe), \
-:76: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'pipe' - possible side-effects?
#76: FILE: drivers/gpu/drm/i915/display/skl_universal_plane_regs.h:338:
+#define PLANE_POST_CSC_GAMC_DATA_ENH(pipe, plane, i) _MMIO_PLANE_GAMC(plane, i, _PLANE_POST_CSC_GAMC_DATA_ENH_1(pipe), \
+ _PLANE_POST_CSC_GAMC_DATA_ENH_2(pipe))
-:77: WARNING:LONG_LINE: line length of 111 exceeds 100 columns
#77: FILE: drivers/gpu/drm/i915/display/skl_universal_plane_regs.h:339:
+ _PLANE_POST_CSC_GAMC_DATA_ENH_2(pipe))
-:83: WARNING:LONG_LINE: line length of 101 exceeds 100 columns
#83: FILE: drivers/gpu/drm/i915/display/skl_universal_plane_regs.h:345:
+#define _PLANE_POST_CSC_GAMC_INDEX_1(pipe) _PIPE(pipe, _PLANE_POST_CSC_GAMC_INDEX_1_A, \
-:85: WARNING:LONG_LINE: line length of 101 exceeds 100 columns
#85: FILE: drivers/gpu/drm/i915/display/skl_universal_plane_regs.h:347:
+#define _PLANE_POST_CSC_GAMC_INDEX_2(pipe) _PIPE(pipe, _PLANE_POST_CSC_GAMC_INDEX_2_A, \
-:87: WARNING:LONG_LINE: line length of 120 exceeds 100 columns
#87: FILE: drivers/gpu/drm/i915/display/skl_universal_plane_regs.h:349:
+#define PLANE_POST_CSC_GAMC_INDEX(pipe, plane, i) _MMIO_PLANE_GAMC(plane, i, _PLANE_POST_CSC_GAMC_INDEX_1(pipe), \
-:87: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'pipe' - possible side-effects?
#87: FILE: drivers/gpu/drm/i915/display/skl_universal_plane_regs.h:349:
+#define PLANE_POST_CSC_GAMC_INDEX(pipe, plane, i) _MMIO_PLANE_GAMC(plane, i, _PLANE_POST_CSC_GAMC_INDEX_1(pipe), \
+ _PLANE_POST_CSC_GAMC_INDEX_2(pipe))
-:88: WARNING:LONG_LINE: line length of 108 exceeds 100 columns
#88: FILE: drivers/gpu/drm/i915/display/skl_universal_plane_regs.h:350:
+ _PLANE_POST_CSC_GAMC_INDEX_2(pipe))
-:98: WARNING:LONG_LINE: line length of 119 exceeds 100 columns
#98: FILE: drivers/gpu/drm/i915/display/skl_universal_plane_regs.h:360:
+#define PLANE_POST_CSC_GAMC_DATA(pipe, plane, i) _MMIO_PLANE_GAMC(plane, i, _PLANE_POST_CSC_GAMC_DATA_1(pipe), \
-:98: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'pipe' - possible side-effects?
#98: FILE: drivers/gpu/drm/i915/display/skl_universal_plane_regs.h:360:
+#define PLANE_POST_CSC_GAMC_DATA(pipe, plane, i) _MMIO_PLANE_GAMC(plane, i, _PLANE_POST_CSC_GAMC_DATA_1(pipe), \
+ _PLANE_POST_CSC_GAMC_DATA_2(pipe))
-:99: WARNING:LONG_LINE: line length of 107 exceeds 100 columns
#99: FILE: drivers/gpu/drm/i915/display/skl_universal_plane_regs.h:361:
+ _PLANE_POST_CSC_GAMC_DATA_2(pipe))
total: 0 errors, 26 warnings, 6 checks, 79 lines checked
b4120f4d09db drm/i915/color: Add framework to program PRE/POST CSC LUT
1639b52e7a7c drm/i915/color: Program Pre-CSC registers
59c545469b16 drm/i915/xelpd: Program Plane Post CSC Registers
2f5cdc667ac3 drm/i915/display: Add registers for 3D LUT
7fcdd42d1f14 drm/i915/color: Add 3D LUT to color pipeline
d8f5267dc37e drm/i915/color: Enable Plane Color Pipelines
^ permalink raw reply [flat|nested] 44+ messages in thread
* ✓ CI.KUnit: success for Plane Color Pipeline support for Intel platforms (rev6)
2025-12-01 6:46 [v7 00/15] Plane Color Pipeline support for Intel platforms Uma Shankar
` (15 preceding siblings ...)
2025-12-01 6:47 ` ✗ CI.checkpatch: warning for Plane Color Pipeline support for Intel platforms (rev6) Patchwork
@ 2025-12-01 6:48 ` Patchwork
2025-12-01 7:03 ` ✗ CI.checksparse: warning " Patchwork
` (2 subsequent siblings)
19 siblings, 0 replies; 44+ messages in thread
From: Patchwork @ 2025-12-01 6:48 UTC (permalink / raw)
To: Uma Shankar; +Cc: intel-xe
== Series Details ==
Series: Plane Color Pipeline support for Intel platforms (rev6)
URL : https://patchwork.freedesktop.org/series/141788/
State : success
== Summary ==
+ trap cleanup EXIT
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/xe/.kunitconfig
[06:47:20] Configuring KUnit Kernel ...
Generating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[06:47:24] 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
[06:47:55] Starting KUnit Kernel (1/1)...
[06:47:55] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[06:47:55] ================== guc_buf (11 subtests) ===================
[06:47:55] [PASSED] test_smallest
[06:47:55] [PASSED] test_largest
[06:47:55] [PASSED] test_granular
[06:47:55] [PASSED] test_unique
[06:47:55] [PASSED] test_overlap
[06:47:55] [PASSED] test_reusable
[06:47:55] [PASSED] test_too_big
[06:47:55] [PASSED] test_flush
[06:47:55] [PASSED] test_lookup
[06:47:55] [PASSED] test_data
[06:47:55] [PASSED] test_class
[06:47:55] ===================== [PASSED] guc_buf =====================
[06:47:55] =================== guc_dbm (7 subtests) ===================
[06:47:55] [PASSED] test_empty
[06:47:55] [PASSED] test_default
[06:47:55] ======================== test_size ========================
[06:47:55] [PASSED] 4
[06:47:55] [PASSED] 8
[06:47:55] [PASSED] 32
[06:47:55] [PASSED] 256
[06:47:55] ==================== [PASSED] test_size ====================
[06:47:55] ======================= test_reuse ========================
[06:47:55] [PASSED] 4
[06:47:55] [PASSED] 8
[06:47:55] [PASSED] 32
[06:47:55] [PASSED] 256
[06:47:55] =================== [PASSED] test_reuse ====================
[06:47:55] =================== test_range_overlap ====================
[06:47:55] [PASSED] 4
[06:47:55] [PASSED] 8
[06:47:55] [PASSED] 32
[06:47:55] [PASSED] 256
[06:47:55] =============== [PASSED] test_range_overlap ================
[06:47:55] =================== test_range_compact ====================
[06:47:55] [PASSED] 4
[06:47:55] [PASSED] 8
[06:47:55] [PASSED] 32
[06:47:55] [PASSED] 256
[06:47:55] =============== [PASSED] test_range_compact ================
[06:47:55] ==================== test_range_spare =====================
[06:47:55] [PASSED] 4
[06:47:55] [PASSED] 8
[06:47:55] [PASSED] 32
[06:47:55] [PASSED] 256
[06:47:55] ================ [PASSED] test_range_spare =================
[06:47:55] ===================== [PASSED] guc_dbm =====================
[06:47:55] =================== guc_idm (6 subtests) ===================
[06:47:55] [PASSED] bad_init
[06:47:55] [PASSED] no_init
[06:47:55] [PASSED] init_fini
[06:47:55] [PASSED] check_used
[06:47:55] [PASSED] check_quota
[06:47:55] [PASSED] check_all
[06:47:55] ===================== [PASSED] guc_idm =====================
[06:47:55] ================== no_relay (3 subtests) ===================
[06:47:55] [PASSED] xe_drops_guc2pf_if_not_ready
[06:47:55] [PASSED] xe_drops_guc2vf_if_not_ready
[06:47:55] [PASSED] xe_rejects_send_if_not_ready
[06:47:55] ==================== [PASSED] no_relay =====================
[06:47:55] ================== pf_relay (14 subtests) ==================
[06:47:55] [PASSED] pf_rejects_guc2pf_too_short
[06:47:55] [PASSED] pf_rejects_guc2pf_too_long
[06:47:55] [PASSED] pf_rejects_guc2pf_no_payload
[06:47:55] [PASSED] pf_fails_no_payload
[06:47:55] [PASSED] pf_fails_bad_origin
[06:47:55] [PASSED] pf_fails_bad_type
[06:47:55] [PASSED] pf_txn_reports_error
[06:47:55] [PASSED] pf_txn_sends_pf2guc
[06:47:55] [PASSED] pf_sends_pf2guc
[06:47:55] [SKIPPED] pf_loopback_nop
[06:47:55] [SKIPPED] pf_loopback_echo
[06:47:55] [SKIPPED] pf_loopback_fail
[06:47:55] [SKIPPED] pf_loopback_busy
[06:47:55] [SKIPPED] pf_loopback_retry
[06:47:55] ==================== [PASSED] pf_relay =====================
[06:47:55] ================== vf_relay (3 subtests) ===================
[06:47:55] [PASSED] vf_rejects_guc2vf_too_short
[06:47:55] [PASSED] vf_rejects_guc2vf_too_long
[06:47:55] [PASSED] vf_rejects_guc2vf_no_payload
[06:47:55] ==================== [PASSED] vf_relay =====================
[06:47:55] ================ pf_gt_config (6 subtests) =================
[06:47:55] [PASSED] fair_contexts_1vf
[06:47:55] [PASSED] fair_doorbells_1vf
[06:47:55] [PASSED] fair_ggtt_1vf
[06:47:55] ====================== fair_contexts ======================
[06:47:55] [PASSED] 1 VF
[06:47:55] [PASSED] 2 VFs
[06:47:55] [PASSED] 3 VFs
[06:47:55] [PASSED] 4 VFs
[06:47:55] [PASSED] 5 VFs
[06:47:55] [PASSED] 6 VFs
[06:47:55] [PASSED] 7 VFs
[06:47:55] [PASSED] 8 VFs
[06:47:55] [PASSED] 9 VFs
[06:47:55] [PASSED] 10 VFs
[06:47:55] [PASSED] 11 VFs
[06:47:55] [PASSED] 12 VFs
[06:47:55] [PASSED] 13 VFs
[06:47:55] [PASSED] 14 VFs
[06:47:55] [PASSED] 15 VFs
[06:47:55] [PASSED] 16 VFs
[06:47:55] [PASSED] 17 VFs
[06:47:55] [PASSED] 18 VFs
[06:47:55] [PASSED] 19 VFs
[06:47:55] [PASSED] 20 VFs
[06:47:55] [PASSED] 21 VFs
[06:47:55] [PASSED] 22 VFs
[06:47:55] [PASSED] 23 VFs
[06:47:55] [PASSED] 24 VFs
[06:47:55] [PASSED] 25 VFs
[06:47:55] [PASSED] 26 VFs
[06:47:55] [PASSED] 27 VFs
[06:47:55] [PASSED] 28 VFs
[06:47:55] [PASSED] 29 VFs
[06:47:55] [PASSED] 30 VFs
[06:47:55] [PASSED] 31 VFs
[06:47:55] [PASSED] 32 VFs
[06:47:55] [PASSED] 33 VFs
[06:47:55] [PASSED] 34 VFs
[06:47:55] [PASSED] 35 VFs
[06:47:55] [PASSED] 36 VFs
[06:47:55] [PASSED] 37 VFs
[06:47:55] [PASSED] 38 VFs
[06:47:55] [PASSED] 39 VFs
[06:47:55] [PASSED] 40 VFs
[06:47:55] [PASSED] 41 VFs
[06:47:55] [PASSED] 42 VFs
[06:47:55] [PASSED] 43 VFs
[06:47:55] [PASSED] 44 VFs
[06:47:55] [PASSED] 45 VFs
[06:47:55] [PASSED] 46 VFs
[06:47:55] [PASSED] 47 VFs
[06:47:55] [PASSED] 48 VFs
[06:47:55] [PASSED] 49 VFs
[06:47:55] [PASSED] 50 VFs
[06:47:55] [PASSED] 51 VFs
[06:47:55] [PASSED] 52 VFs
[06:47:55] [PASSED] 53 VFs
[06:47:55] [PASSED] 54 VFs
[06:47:55] [PASSED] 55 VFs
[06:47:55] [PASSED] 56 VFs
[06:47:55] [PASSED] 57 VFs
[06:47:55] [PASSED] 58 VFs
[06:47:55] [PASSED] 59 VFs
[06:47:55] [PASSED] 60 VFs
[06:47:55] [PASSED] 61 VFs
[06:47:55] [PASSED] 62 VFs
[06:47:55] [PASSED] 63 VFs
[06:47:55] ================== [PASSED] fair_contexts ==================
[06:47:55] ===================== fair_doorbells ======================
[06:47:55] [PASSED] 1 VF
[06:47:55] [PASSED] 2 VFs
[06:47:55] [PASSED] 3 VFs
[06:47:55] [PASSED] 4 VFs
[06:47:55] [PASSED] 5 VFs
[06:47:55] [PASSED] 6 VFs
[06:47:55] [PASSED] 7 VFs
[06:47:55] [PASSED] 8 VFs
[06:47:55] [PASSED] 9 VFs
[06:47:55] [PASSED] 10 VFs
[06:47:55] [PASSED] 11 VFs
[06:47:55] [PASSED] 12 VFs
[06:47:55] [PASSED] 13 VFs
[06:47:55] [PASSED] 14 VFs
[06:47:55] [PASSED] 15 VFs
[06:47:55] [PASSED] 16 VFs
[06:47:55] [PASSED] 17 VFs
[06:47:55] [PASSED] 18 VFs
[06:47:55] [PASSED] 19 VFs
[06:47:55] [PASSED] 20 VFs
[06:47:55] [PASSED] 21 VFs
[06:47:55] [PASSED] 22 VFs
[06:47:55] [PASSED] 23 VFs
[06:47:55] [PASSED] 24 VFs
[06:47:55] [PASSED] 25 VFs
[06:47:55] [PASSED] 26 VFs
[06:47:55] [PASSED] 27 VFs
[06:47:55] [PASSED] 28 VFs
[06:47:55] [PASSED] 29 VFs
[06:47:55] [PASSED] 30 VFs
[06:47:55] [PASSED] 31 VFs
[06:47:55] [PASSED] 32 VFs
[06:47:55] [PASSED] 33 VFs
[06:47:55] [PASSED] 34 VFs
[06:47:55] [PASSED] 35 VFs
[06:47:55] [PASSED] 36 VFs
[06:47:55] [PASSED] 37 VFs
[06:47:55] [PASSED] 38 VFs
[06:47:55] [PASSED] 39 VFs
[06:47:55] [PASSED] 40 VFs
[06:47:55] [PASSED] 41 VFs
[06:47:56] [PASSED] 42 VFs
[06:47:56] [PASSED] 43 VFs
[06:47:56] [PASSED] 44 VFs
[06:47:56] [PASSED] 45 VFs
[06:47:56] [PASSED] 46 VFs
[06:47:56] [PASSED] 47 VFs
[06:47:56] [PASSED] 48 VFs
[06:47:56] [PASSED] 49 VFs
[06:47:56] [PASSED] 50 VFs
[06:47:56] [PASSED] 51 VFs
[06:47:56] [PASSED] 52 VFs
[06:47:56] [PASSED] 53 VFs
[06:47:56] [PASSED] 54 VFs
[06:47:56] [PASSED] 55 VFs
[06:47:56] [PASSED] 56 VFs
[06:47:56] [PASSED] 57 VFs
[06:47:56] [PASSED] 58 VFs
[06:47:56] [PASSED] 59 VFs
[06:47:56] [PASSED] 60 VFs
[06:47:56] [PASSED] 61 VFs
[06:47:56] [PASSED] 62 VFs
[06:47:56] [PASSED] 63 VFs
[06:47:56] ================= [PASSED] fair_doorbells ==================
[06:47:56] ======================== fair_ggtt ========================
[06:47:56] [PASSED] 1 VF
[06:47:56] [PASSED] 2 VFs
[06:47:56] [PASSED] 3 VFs
[06:47:56] [PASSED] 4 VFs
[06:47:56] [PASSED] 5 VFs
[06:47:56] [PASSED] 6 VFs
[06:47:56] [PASSED] 7 VFs
[06:47:56] [PASSED] 8 VFs
[06:47:56] [PASSED] 9 VFs
[06:47:56] [PASSED] 10 VFs
[06:47:56] [PASSED] 11 VFs
[06:47:56] [PASSED] 12 VFs
[06:47:56] [PASSED] 13 VFs
[06:47:56] [PASSED] 14 VFs
[06:47:56] [PASSED] 15 VFs
[06:47:56] [PASSED] 16 VFs
[06:47:56] [PASSED] 17 VFs
[06:47:56] [PASSED] 18 VFs
[06:47:56] [PASSED] 19 VFs
[06:47:56] [PASSED] 20 VFs
[06:47:56] [PASSED] 21 VFs
[06:47:56] [PASSED] 22 VFs
[06:47:56] [PASSED] 23 VFs
[06:47:56] [PASSED] 24 VFs
[06:47:56] [PASSED] 25 VFs
[06:47:56] [PASSED] 26 VFs
[06:47:56] [PASSED] 27 VFs
[06:47:56] [PASSED] 28 VFs
[06:47:56] [PASSED] 29 VFs
[06:47:56] [PASSED] 30 VFs
[06:47:56] [PASSED] 31 VFs
[06:47:56] [PASSED] 32 VFs
[06:47:56] [PASSED] 33 VFs
[06:47:56] [PASSED] 34 VFs
[06:47:56] [PASSED] 35 VFs
[06:47:56] [PASSED] 36 VFs
[06:47:56] [PASSED] 37 VFs
[06:47:56] [PASSED] 38 VFs
[06:47:56] [PASSED] 39 VFs
[06:47:56] [PASSED] 40 VFs
[06:47:56] [PASSED] 41 VFs
[06:47:56] [PASSED] 42 VFs
[06:47:56] [PASSED] 43 VFs
[06:47:56] [PASSED] 44 VFs
[06:47:56] [PASSED] 45 VFs
[06:47:56] [PASSED] 46 VFs
[06:47:56] [PASSED] 47 VFs
[06:47:56] [PASSED] 48 VFs
[06:47:56] [PASSED] 49 VFs
[06:47:56] [PASSED] 50 VFs
[06:47:56] [PASSED] 51 VFs
[06:47:56] [PASSED] 52 VFs
[06:47:56] [PASSED] 53 VFs
[06:47:56] [PASSED] 54 VFs
[06:47:56] [PASSED] 55 VFs
[06:47:56] [PASSED] 56 VFs
[06:47:56] [PASSED] 57 VFs
[06:47:56] [PASSED] 58 VFs
[06:47:56] [PASSED] 59 VFs
[06:47:56] [PASSED] 60 VFs
[06:47:56] [PASSED] 61 VFs
[06:47:56] [PASSED] 62 VFs
[06:47:56] [PASSED] 63 VFs
[06:47:56] ==================== [PASSED] fair_ggtt ====================
[06:47:56] ================== [PASSED] pf_gt_config ===================
[06:47:56] ===================== lmtt (1 subtest) =====================
[06:47:56] ======================== test_ops =========================
[06:47:56] [PASSED] 2-level
[06:47:56] [PASSED] multi-level
[06:47:56] ==================== [PASSED] test_ops =====================
[06:47:56] ====================== [PASSED] lmtt =======================
[06:47:56] ================= pf_service (11 subtests) =================
[06:47:56] [PASSED] pf_negotiate_any
[06:47:56] [PASSED] pf_negotiate_base_match
[06:47:56] [PASSED] pf_negotiate_base_newer
[06:47:56] [PASSED] pf_negotiate_base_next
[06:47:56] [SKIPPED] pf_negotiate_base_older
[06:47:56] [PASSED] pf_negotiate_base_prev
[06:47:56] [PASSED] pf_negotiate_latest_match
[06:47:56] [PASSED] pf_negotiate_latest_newer
[06:47:56] [PASSED] pf_negotiate_latest_next
[06:47:56] [SKIPPED] pf_negotiate_latest_older
[06:47:56] [SKIPPED] pf_negotiate_latest_prev
[06:47:56] =================== [PASSED] pf_service ====================
[06:47:56] ================= xe_guc_g2g (2 subtests) ==================
[06:47:56] ============== xe_live_guc_g2g_kunit_default ==============
[06:47:56] ========= [SKIPPED] xe_live_guc_g2g_kunit_default ==========
[06:47:56] ============== xe_live_guc_g2g_kunit_allmem ===============
[06:47:56] ========== [SKIPPED] xe_live_guc_g2g_kunit_allmem ==========
[06:47:56] =================== [SKIPPED] xe_guc_g2g ===================
[06:47:56] =================== xe_mocs (2 subtests) ===================
[06:47:56] ================ xe_live_mocs_kernel_kunit ================
[06:47:56] =========== [SKIPPED] xe_live_mocs_kernel_kunit ============
[06:47:56] ================ xe_live_mocs_reset_kunit =================
[06:47:56] ============ [SKIPPED] xe_live_mocs_reset_kunit ============
[06:47:56] ==================== [SKIPPED] xe_mocs =====================
[06:47:56] ================= xe_migrate (2 subtests) ==================
[06:47:56] ================= xe_migrate_sanity_kunit =================
[06:47:56] ============ [SKIPPED] xe_migrate_sanity_kunit =============
[06:47:56] ================== xe_validate_ccs_kunit ==================
[06:47:56] ============= [SKIPPED] xe_validate_ccs_kunit ==============
[06:47:56] =================== [SKIPPED] xe_migrate ===================
[06:47:56] ================== xe_dma_buf (1 subtest) ==================
[06:47:56] ==================== xe_dma_buf_kunit =====================
[06:47:56] ================ [SKIPPED] xe_dma_buf_kunit ================
[06:47:56] =================== [SKIPPED] xe_dma_buf ===================
[06:47:56] ================= xe_bo_shrink (1 subtest) =================
[06:47:56] =================== xe_bo_shrink_kunit ====================
[06:47:56] =============== [SKIPPED] xe_bo_shrink_kunit ===============
[06:47:56] ================== [SKIPPED] xe_bo_shrink ==================
[06:47:56] ==================== xe_bo (2 subtests) ====================
[06:47:56] ================== xe_ccs_migrate_kunit ===================
[06:47:56] ============== [SKIPPED] xe_ccs_migrate_kunit ==============
[06:47:56] ==================== xe_bo_evict_kunit ====================
[06:47:56] =============== [SKIPPED] xe_bo_evict_kunit ================
[06:47:56] ===================== [SKIPPED] xe_bo ======================
[06:47:56] ==================== args (11 subtests) ====================
[06:47:56] [PASSED] count_args_test
[06:47:56] [PASSED] call_args_example
[06:47:56] [PASSED] call_args_test
[06:47:56] [PASSED] drop_first_arg_example
[06:47:56] [PASSED] drop_first_arg_test
[06:47:56] [PASSED] first_arg_example
[06:47:56] [PASSED] first_arg_test
[06:47:56] [PASSED] last_arg_example
[06:47:56] [PASSED] last_arg_test
[06:47:56] [PASSED] pick_arg_example
[06:47:56] [PASSED] sep_comma_example
[06:47:56] ====================== [PASSED] args =======================
[06:47:56] =================== xe_pci (3 subtests) ====================
[06:47:56] ==================== check_graphics_ip ====================
[06:47:56] [PASSED] 12.00 Xe_LP
[06:47:56] [PASSED] 12.10 Xe_LP+
[06:47:56] [PASSED] 12.55 Xe_HPG
[06:47:56] [PASSED] 12.60 Xe_HPC
[06:47:56] [PASSED] 12.70 Xe_LPG
[06:47:56] [PASSED] 12.71 Xe_LPG
[06:47:56] [PASSED] 12.74 Xe_LPG+
[06:47:56] [PASSED] 20.01 Xe2_HPG
[06:47:56] [PASSED] 20.02 Xe2_HPG
[06:47:56] [PASSED] 20.04 Xe2_LPG
[06:47:56] [PASSED] 30.00 Xe3_LPG
[06:47:56] [PASSED] 30.01 Xe3_LPG
[06:47:56] [PASSED] 30.03 Xe3_LPG
[06:47:56] [PASSED] 30.04 Xe3_LPG
[06:47:56] [PASSED] 30.05 Xe3_LPG
[06:47:56] [PASSED] 35.11 Xe3p_XPC
[06:47:56] ================ [PASSED] check_graphics_ip ================
[06:47:56] ===================== check_media_ip ======================
[06:47:56] [PASSED] 12.00 Xe_M
[06:47:56] [PASSED] 12.55 Xe_HPM
[06:47:56] [PASSED] 13.00 Xe_LPM+
[06:47:56] [PASSED] 13.01 Xe2_HPM
[06:47:56] [PASSED] 20.00 Xe2_LPM
[06:47:56] [PASSED] 30.00 Xe3_LPM
[06:47:56] [PASSED] 30.02 Xe3_LPM
[06:47:56] [PASSED] 35.00 Xe3p_LPM
[06:47:56] [PASSED] 35.03 Xe3p_HPM
[06:47:56] ================= [PASSED] check_media_ip ==================
[06:47:56] =================== check_platform_desc ===================
[06:47:56] [PASSED] 0x9A60 (TIGERLAKE)
[06:47:56] [PASSED] 0x9A68 (TIGERLAKE)
[06:47:56] [PASSED] 0x9A70 (TIGERLAKE)
[06:47:56] [PASSED] 0x9A40 (TIGERLAKE)
[06:47:56] [PASSED] 0x9A49 (TIGERLAKE)
[06:47:56] [PASSED] 0x9A59 (TIGERLAKE)
[06:47:56] [PASSED] 0x9A78 (TIGERLAKE)
[06:47:56] [PASSED] 0x9AC0 (TIGERLAKE)
[06:47:56] [PASSED] 0x9AC9 (TIGERLAKE)
[06:47:56] [PASSED] 0x9AD9 (TIGERLAKE)
[06:47:56] [PASSED] 0x9AF8 (TIGERLAKE)
[06:47:56] [PASSED] 0x4C80 (ROCKETLAKE)
[06:47:56] [PASSED] 0x4C8A (ROCKETLAKE)
[06:47:56] [PASSED] 0x4C8B (ROCKETLAKE)
[06:47:56] [PASSED] 0x4C8C (ROCKETLAKE)
[06:47:56] [PASSED] 0x4C90 (ROCKETLAKE)
[06:47:56] [PASSED] 0x4C9A (ROCKETLAKE)
[06:47:56] [PASSED] 0x4680 (ALDERLAKE_S)
[06:47:56] [PASSED] 0x4682 (ALDERLAKE_S)
[06:47:56] [PASSED] 0x4688 (ALDERLAKE_S)
[06:47:56] [PASSED] 0x468A (ALDERLAKE_S)
[06:47:56] [PASSED] 0x468B (ALDERLAKE_S)
[06:47:56] [PASSED] 0x4690 (ALDERLAKE_S)
[06:47:56] [PASSED] 0x4692 (ALDERLAKE_S)
[06:47:56] [PASSED] 0x4693 (ALDERLAKE_S)
[06:47:56] [PASSED] 0x46A0 (ALDERLAKE_P)
[06:47:56] [PASSED] 0x46A1 (ALDERLAKE_P)
[06:47:56] [PASSED] 0x46A2 (ALDERLAKE_P)
[06:47:56] [PASSED] 0x46A3 (ALDERLAKE_P)
[06:47:56] [PASSED] 0x46A6 (ALDERLAKE_P)
[06:47:56] [PASSED] 0x46A8 (ALDERLAKE_P)
[06:47:56] [PASSED] 0x46AA (ALDERLAKE_P)
[06:47:56] [PASSED] 0x462A (ALDERLAKE_P)
[06:47:56] [PASSED] 0x4626 (ALDERLAKE_P)
[06:47:56] [PASSED] 0x4628 (ALDERLAKE_P)
[06:47:56] [PASSED] 0x46B0 (ALDERLAKE_P)
stty: 'standard input': Inappropriate ioctl for device
[06:47:56] [PASSED] 0x46B1 (ALDERLAKE_P)
[06:47:56] [PASSED] 0x46B2 (ALDERLAKE_P)
[06:47:56] [PASSED] 0x46B3 (ALDERLAKE_P)
[06:47:56] [PASSED] 0x46C0 (ALDERLAKE_P)
[06:47:56] [PASSED] 0x46C1 (ALDERLAKE_P)
[06:47:56] [PASSED] 0x46C2 (ALDERLAKE_P)
[06:47:56] [PASSED] 0x46C3 (ALDERLAKE_P)
[06:47:56] [PASSED] 0x46D0 (ALDERLAKE_N)
[06:47:56] [PASSED] 0x46D1 (ALDERLAKE_N)
[06:47:56] [PASSED] 0x46D2 (ALDERLAKE_N)
[06:47:56] [PASSED] 0x46D3 (ALDERLAKE_N)
[06:47:56] [PASSED] 0x46D4 (ALDERLAKE_N)
[06:47:56] [PASSED] 0xA721 (ALDERLAKE_P)
[06:47:56] [PASSED] 0xA7A1 (ALDERLAKE_P)
[06:47:56] [PASSED] 0xA7A9 (ALDERLAKE_P)
[06:47:56] [PASSED] 0xA7AC (ALDERLAKE_P)
[06:47:56] [PASSED] 0xA7AD (ALDERLAKE_P)
[06:47:56] [PASSED] 0xA720 (ALDERLAKE_P)
[06:47:56] [PASSED] 0xA7A0 (ALDERLAKE_P)
[06:47:56] [PASSED] 0xA7A8 (ALDERLAKE_P)
[06:47:56] [PASSED] 0xA7AA (ALDERLAKE_P)
[06:47:56] [PASSED] 0xA7AB (ALDERLAKE_P)
[06:47:56] [PASSED] 0xA780 (ALDERLAKE_S)
[06:47:56] [PASSED] 0xA781 (ALDERLAKE_S)
[06:47:56] [PASSED] 0xA782 (ALDERLAKE_S)
[06:47:56] [PASSED] 0xA783 (ALDERLAKE_S)
[06:47:56] [PASSED] 0xA788 (ALDERLAKE_S)
[06:47:56] [PASSED] 0xA789 (ALDERLAKE_S)
[06:47:56] [PASSED] 0xA78A (ALDERLAKE_S)
[06:47:56] [PASSED] 0xA78B (ALDERLAKE_S)
[06:47:56] [PASSED] 0x4905 (DG1)
[06:47:56] [PASSED] 0x4906 (DG1)
[06:47:56] [PASSED] 0x4907 (DG1)
[06:47:56] [PASSED] 0x4908 (DG1)
[06:47:56] [PASSED] 0x4909 (DG1)
[06:47:56] [PASSED] 0x56C0 (DG2)
[06:47:56] [PASSED] 0x56C2 (DG2)
[06:47:56] [PASSED] 0x56C1 (DG2)
[06:47:56] [PASSED] 0x7D51 (METEORLAKE)
[06:47:56] [PASSED] 0x7DD1 (METEORLAKE)
[06:47:56] [PASSED] 0x7D41 (METEORLAKE)
[06:47:56] [PASSED] 0x7D67 (METEORLAKE)
[06:47:56] [PASSED] 0xB640 (METEORLAKE)
[06:47:56] [PASSED] 0x56A0 (DG2)
[06:47:56] [PASSED] 0x56A1 (DG2)
[06:47:56] [PASSED] 0x56A2 (DG2)
[06:47:56] [PASSED] 0x56BE (DG2)
[06:47:56] [PASSED] 0x56BF (DG2)
[06:47:56] [PASSED] 0x5690 (DG2)
[06:47:56] [PASSED] 0x5691 (DG2)
[06:47:56] [PASSED] 0x5692 (DG2)
[06:47:56] [PASSED] 0x56A5 (DG2)
[06:47:56] [PASSED] 0x56A6 (DG2)
[06:47:56] [PASSED] 0x56B0 (DG2)
[06:47:56] [PASSED] 0x56B1 (DG2)
[06:47:56] [PASSED] 0x56BA (DG2)
[06:47:56] [PASSED] 0x56BB (DG2)
[06:47:56] [PASSED] 0x56BC (DG2)
[06:47:56] [PASSED] 0x56BD (DG2)
[06:47:56] [PASSED] 0x5693 (DG2)
[06:47:56] [PASSED] 0x5694 (DG2)
[06:47:56] [PASSED] 0x5695 (DG2)
[06:47:56] [PASSED] 0x56A3 (DG2)
[06:47:56] [PASSED] 0x56A4 (DG2)
[06:47:56] [PASSED] 0x56B2 (DG2)
[06:47:56] [PASSED] 0x56B3 (DG2)
[06:47:56] [PASSED] 0x5696 (DG2)
[06:47:56] [PASSED] 0x5697 (DG2)
[06:47:56] [PASSED] 0xB69 (PVC)
[06:47:56] [PASSED] 0xB6E (PVC)
[06:47:56] [PASSED] 0xBD4 (PVC)
[06:47:56] [PASSED] 0xBD5 (PVC)
[06:47:56] [PASSED] 0xBD6 (PVC)
[06:47:56] [PASSED] 0xBD7 (PVC)
[06:47:56] [PASSED] 0xBD8 (PVC)
[06:47:56] [PASSED] 0xBD9 (PVC)
[06:47:56] [PASSED] 0xBDA (PVC)
[06:47:56] [PASSED] 0xBDB (PVC)
[06:47:56] [PASSED] 0xBE0 (PVC)
[06:47:56] [PASSED] 0xBE1 (PVC)
[06:47:56] [PASSED] 0xBE5 (PVC)
[06:47:56] [PASSED] 0x7D40 (METEORLAKE)
[06:47:56] [PASSED] 0x7D45 (METEORLAKE)
[06:47:56] [PASSED] 0x7D55 (METEORLAKE)
[06:47:56] [PASSED] 0x7D60 (METEORLAKE)
[06:47:56] [PASSED] 0x7DD5 (METEORLAKE)
[06:47:56] [PASSED] 0x6420 (LUNARLAKE)
[06:47:56] [PASSED] 0x64A0 (LUNARLAKE)
[06:47:56] [PASSED] 0x64B0 (LUNARLAKE)
[06:47:56] [PASSED] 0xE202 (BATTLEMAGE)
[06:47:56] [PASSED] 0xE209 (BATTLEMAGE)
[06:47:56] [PASSED] 0xE20B (BATTLEMAGE)
[06:47:56] [PASSED] 0xE20C (BATTLEMAGE)
[06:47:56] [PASSED] 0xE20D (BATTLEMAGE)
[06:47:56] [PASSED] 0xE210 (BATTLEMAGE)
[06:47:56] [PASSED] 0xE211 (BATTLEMAGE)
[06:47:56] [PASSED] 0xE212 (BATTLEMAGE)
[06:47:56] [PASSED] 0xE216 (BATTLEMAGE)
[06:47:56] [PASSED] 0xE220 (BATTLEMAGE)
[06:47:56] [PASSED] 0xE221 (BATTLEMAGE)
[06:47:56] [PASSED] 0xE222 (BATTLEMAGE)
[06:47:56] [PASSED] 0xE223 (BATTLEMAGE)
[06:47:56] [PASSED] 0xB080 (PANTHERLAKE)
[06:47:56] [PASSED] 0xB081 (PANTHERLAKE)
[06:47:56] [PASSED] 0xB082 (PANTHERLAKE)
[06:47:56] [PASSED] 0xB083 (PANTHERLAKE)
[06:47:56] [PASSED] 0xB084 (PANTHERLAKE)
[06:47:56] [PASSED] 0xB085 (PANTHERLAKE)
[06:47:56] [PASSED] 0xB086 (PANTHERLAKE)
[06:47:56] [PASSED] 0xB087 (PANTHERLAKE)
[06:47:56] [PASSED] 0xB08F (PANTHERLAKE)
[06:47:56] [PASSED] 0xB090 (PANTHERLAKE)
[06:47:56] [PASSED] 0xB0A0 (PANTHERLAKE)
[06:47:56] [PASSED] 0xB0B0 (PANTHERLAKE)
[06:47:56] [PASSED] 0xD740 (NOVALAKE_S)
[06:47:56] [PASSED] 0xD741 (NOVALAKE_S)
[06:47:56] [PASSED] 0xD742 (NOVALAKE_S)
[06:47:56] [PASSED] 0xD743 (NOVALAKE_S)
[06:47:56] [PASSED] 0xD744 (NOVALAKE_S)
[06:47:56] [PASSED] 0xD745 (NOVALAKE_S)
[06:47:56] [PASSED] 0x674C (CRESCENTISLAND)
[06:47:56] [PASSED] 0xFD80 (PANTHERLAKE)
[06:47:56] [PASSED] 0xFD81 (PANTHERLAKE)
[06:47:56] =============== [PASSED] check_platform_desc ===============
[06:47:56] ===================== [PASSED] xe_pci ======================
[06:47:56] =================== xe_rtp (2 subtests) ====================
[06:47:56] =============== xe_rtp_process_to_sr_tests ================
[06:47:56] [PASSED] coalesce-same-reg
[06:47:56] [PASSED] no-match-no-add
[06:47:56] [PASSED] match-or
[06:47:56] [PASSED] match-or-xfail
[06:47:56] [PASSED] no-match-no-add-multiple-rules
[06:47:56] [PASSED] two-regs-two-entries
[06:47:56] [PASSED] clr-one-set-other
[06:47:56] [PASSED] set-field
[06:47:56] [PASSED] conflict-duplicate
[06:47:56] [PASSED] conflict-not-disjoint
[06:47:56] [PASSED] conflict-reg-type
[06:47:56] =========== [PASSED] xe_rtp_process_to_sr_tests ============
[06:47:56] ================== xe_rtp_process_tests ===================
[06:47:56] [PASSED] active1
[06:47:56] [PASSED] active2
[06:47:56] [PASSED] active-inactive
[06:47:56] [PASSED] inactive-active
[06:47:56] [PASSED] inactive-1st_or_active-inactive
[06:47:56] [PASSED] inactive-2nd_or_active-inactive
[06:47:56] [PASSED] inactive-last_or_active-inactive
[06:47:56] [PASSED] inactive-no_or_active-inactive
[06:47:56] ============== [PASSED] xe_rtp_process_tests ===============
[06:47:56] ===================== [PASSED] xe_rtp ======================
[06:47:56] ==================== xe_wa (1 subtest) =====================
[06:47:56] ======================== xe_wa_gt =========================
[06:47:56] [PASSED] TIGERLAKE B0
[06:47:56] [PASSED] DG1 A0
[06:47:56] [PASSED] DG1 B0
[06:47:56] [PASSED] ALDERLAKE_S A0
[06:47:56] [PASSED] ALDERLAKE_S B0
[06:47:56] [PASSED] ALDERLAKE_S C0
[06:47:56] [PASSED] ALDERLAKE_S D0
[06:47:56] [PASSED] ALDERLAKE_P A0
[06:47:56] [PASSED] ALDERLAKE_P B0
[06:47:56] [PASSED] ALDERLAKE_P C0
[06:47:56] [PASSED] ALDERLAKE_S RPLS D0
[06:47:56] [PASSED] ALDERLAKE_P RPLU E0
[06:47:56] [PASSED] DG2 G10 C0
[06:47:56] [PASSED] DG2 G11 B1
[06:47:56] [PASSED] DG2 G12 A1
[06:47:56] [PASSED] METEORLAKE 12.70(Xe_LPG) A0 13.00(Xe_LPM+) A0
[06:47:56] [PASSED] METEORLAKE 12.71(Xe_LPG) A0 13.00(Xe_LPM+) A0
[06:47:56] [PASSED] METEORLAKE 12.74(Xe_LPG+) A0 13.00(Xe_LPM+) A0
[06:47:56] [PASSED] LUNARLAKE 20.04(Xe2_LPG) A0 20.00(Xe2_LPM) A0
[06:47:56] [PASSED] LUNARLAKE 20.04(Xe2_LPG) B0 20.00(Xe2_LPM) A0
[06:47:56] [PASSED] BATTLEMAGE 20.01(Xe2_HPG) A0 13.01(Xe2_HPM) A1
[06:47:56] [PASSED] PANTHERLAKE 30.00(Xe3_LPG) A0 30.00(Xe3_LPM) A0
[06:47:56] ==================== [PASSED] xe_wa_gt =====================
[06:47:56] ====================== [PASSED] xe_wa ======================
[06:47:56] ============================================================
[06:47:56] Testing complete. Ran 510 tests: passed: 492, skipped: 18
[06:47:56] Elapsed time: 35.603s total, 4.157s configuring, 30.928s building, 0.463s running
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/tests/.kunitconfig
[06:47:56] Configuring KUnit Kernel ...
Regenerating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[06:47:57] 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
[06:48:23] Starting KUnit Kernel (1/1)...
[06:48:23] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[06:48:23] ============ drm_test_pick_cmdline (2 subtests) ============
[06:48:23] [PASSED] drm_test_pick_cmdline_res_1920_1080_60
[06:48:23] =============== drm_test_pick_cmdline_named ===============
[06:48:23] [PASSED] NTSC
[06:48:23] [PASSED] NTSC-J
[06:48:23] [PASSED] PAL
[06:48:23] [PASSED] PAL-M
[06:48:23] =========== [PASSED] drm_test_pick_cmdline_named ===========
[06:48:23] ============== [PASSED] drm_test_pick_cmdline ==============
[06:48:23] == drm_test_atomic_get_connector_for_encoder (1 subtest) ===
[06:48:23] [PASSED] drm_test_drm_atomic_get_connector_for_encoder
[06:48:23] ==== [PASSED] drm_test_atomic_get_connector_for_encoder ====
[06:48:23] =========== drm_validate_clone_mode (2 subtests) ===========
[06:48:23] ============== drm_test_check_in_clone_mode ===============
[06:48:23] [PASSED] in_clone_mode
[06:48:23] [PASSED] not_in_clone_mode
[06:48:23] ========== [PASSED] drm_test_check_in_clone_mode ===========
[06:48:23] =============== drm_test_check_valid_clones ===============
[06:48:23] [PASSED] not_in_clone_mode
[06:48:23] [PASSED] valid_clone
[06:48:23] [PASSED] invalid_clone
[06:48:23] =========== [PASSED] drm_test_check_valid_clones ===========
[06:48:23] ============= [PASSED] drm_validate_clone_mode =============
[06:48:23] ============= drm_validate_modeset (1 subtest) =============
[06:48:23] [PASSED] drm_test_check_connector_changed_modeset
[06:48:23] ============== [PASSED] drm_validate_modeset ===============
[06:48:23] ====== drm_test_bridge_get_current_state (2 subtests) ======
[06:48:23] [PASSED] drm_test_drm_bridge_get_current_state_atomic
[06:48:23] [PASSED] drm_test_drm_bridge_get_current_state_legacy
[06:48:23] ======== [PASSED] drm_test_bridge_get_current_state ========
[06:48:23] ====== drm_test_bridge_helper_reset_crtc (3 subtests) ======
[06:48:23] [PASSED] drm_test_drm_bridge_helper_reset_crtc_atomic
[06:48:23] [PASSED] drm_test_drm_bridge_helper_reset_crtc_atomic_disabled
[06:48:23] [PASSED] drm_test_drm_bridge_helper_reset_crtc_legacy
[06:48:23] ======== [PASSED] drm_test_bridge_helper_reset_crtc ========
[06:48:23] ============== drm_bridge_alloc (2 subtests) ===============
[06:48:23] [PASSED] drm_test_drm_bridge_alloc_basic
[06:48:23] [PASSED] drm_test_drm_bridge_alloc_get_put
[06:48:23] ================ [PASSED] drm_bridge_alloc =================
[06:48:23] ================== drm_buddy (8 subtests) ==================
[06:48:23] [PASSED] drm_test_buddy_alloc_limit
[06:48:23] [PASSED] drm_test_buddy_alloc_optimistic
[06:48:23] [PASSED] drm_test_buddy_alloc_pessimistic
[06:48:23] [PASSED] drm_test_buddy_alloc_pathological
[06:48:23] [PASSED] drm_test_buddy_alloc_contiguous
[06:48:23] [PASSED] drm_test_buddy_alloc_clear
[06:48:23] [PASSED] drm_test_buddy_alloc_range_bias
[06:48:23] [PASSED] drm_test_buddy_fragmentation_performance
[06:48:23] ==================== [PASSED] drm_buddy ====================
[06:48:23] ============= drm_cmdline_parser (40 subtests) =============
[06:48:23] [PASSED] drm_test_cmdline_force_d_only
[06:48:23] [PASSED] drm_test_cmdline_force_D_only_dvi
[06:48:23] [PASSED] drm_test_cmdline_force_D_only_hdmi
[06:48:23] [PASSED] drm_test_cmdline_force_D_only_not_digital
[06:48:23] [PASSED] drm_test_cmdline_force_e_only
[06:48:23] [PASSED] drm_test_cmdline_res
[06:48:23] [PASSED] drm_test_cmdline_res_vesa
[06:48:23] [PASSED] drm_test_cmdline_res_vesa_rblank
[06:48:23] [PASSED] drm_test_cmdline_res_rblank
[06:48:23] [PASSED] drm_test_cmdline_res_bpp
[06:48:23] [PASSED] drm_test_cmdline_res_refresh
[06:48:23] [PASSED] drm_test_cmdline_res_bpp_refresh
[06:48:23] [PASSED] drm_test_cmdline_res_bpp_refresh_interlaced
[06:48:23] [PASSED] drm_test_cmdline_res_bpp_refresh_margins
[06:48:23] [PASSED] drm_test_cmdline_res_bpp_refresh_force_off
[06:48:23] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on
[06:48:23] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on_analog
[06:48:23] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on_digital
[06:48:23] [PASSED] drm_test_cmdline_res_bpp_refresh_interlaced_margins_force_on
[06:48:23] [PASSED] drm_test_cmdline_res_margins_force_on
[06:48:23] [PASSED] drm_test_cmdline_res_vesa_margins
[06:48:23] [PASSED] drm_test_cmdline_name
[06:48:23] [PASSED] drm_test_cmdline_name_bpp
[06:48:23] [PASSED] drm_test_cmdline_name_option
[06:48:23] [PASSED] drm_test_cmdline_name_bpp_option
[06:48:23] [PASSED] drm_test_cmdline_rotate_0
[06:48:23] [PASSED] drm_test_cmdline_rotate_90
[06:48:23] [PASSED] drm_test_cmdline_rotate_180
[06:48:23] [PASSED] drm_test_cmdline_rotate_270
[06:48:23] [PASSED] drm_test_cmdline_hmirror
[06:48:23] [PASSED] drm_test_cmdline_vmirror
[06:48:23] [PASSED] drm_test_cmdline_margin_options
[06:48:23] [PASSED] drm_test_cmdline_multiple_options
[06:48:23] [PASSED] drm_test_cmdline_bpp_extra_and_option
[06:48:23] [PASSED] drm_test_cmdline_extra_and_option
[06:48:23] [PASSED] drm_test_cmdline_freestanding_options
[06:48:23] [PASSED] drm_test_cmdline_freestanding_force_e_and_options
[06:48:23] [PASSED] drm_test_cmdline_panel_orientation
[06:48:23] ================ drm_test_cmdline_invalid =================
[06:48:23] [PASSED] margin_only
[06:48:23] [PASSED] interlace_only
[06:48:23] [PASSED] res_missing_x
[06:48:23] [PASSED] res_missing_y
[06:48:23] [PASSED] res_bad_y
[06:48:23] [PASSED] res_missing_y_bpp
[06:48:23] [PASSED] res_bad_bpp
[06:48:23] [PASSED] res_bad_refresh
[06:48:23] [PASSED] res_bpp_refresh_force_on_off
[06:48:23] [PASSED] res_invalid_mode
[06:48:23] [PASSED] res_bpp_wrong_place_mode
[06:48:23] [PASSED] name_bpp_refresh
[06:48:23] [PASSED] name_refresh
[06:48:23] [PASSED] name_refresh_wrong_mode
[06:48:23] [PASSED] name_refresh_invalid_mode
[06:48:23] [PASSED] rotate_multiple
[06:48:23] [PASSED] rotate_invalid_val
[06:48:23] [PASSED] rotate_truncated
[06:48:23] [PASSED] invalid_option
[06:48:23] [PASSED] invalid_tv_option
[06:48:23] [PASSED] truncated_tv_option
[06:48:23] ============ [PASSED] drm_test_cmdline_invalid =============
[06:48:23] =============== drm_test_cmdline_tv_options ===============
[06:48:23] [PASSED] NTSC
[06:48:23] [PASSED] NTSC_443
[06:48:23] [PASSED] NTSC_J
[06:48:23] [PASSED] PAL
[06:48:23] [PASSED] PAL_M
[06:48:23] [PASSED] PAL_N
[06:48:23] [PASSED] SECAM
[06:48:23] [PASSED] MONO_525
[06:48:23] [PASSED] MONO_625
[06:48:23] =========== [PASSED] drm_test_cmdline_tv_options ===========
[06:48:23] =============== [PASSED] drm_cmdline_parser ================
[06:48:23] ========== drmm_connector_hdmi_init (20 subtests) ==========
[06:48:23] [PASSED] drm_test_connector_hdmi_init_valid
[06:48:23] [PASSED] drm_test_connector_hdmi_init_bpc_8
[06:48:23] [PASSED] drm_test_connector_hdmi_init_bpc_10
[06:48:23] [PASSED] drm_test_connector_hdmi_init_bpc_12
[06:48:23] [PASSED] drm_test_connector_hdmi_init_bpc_invalid
[06:48:23] [PASSED] drm_test_connector_hdmi_init_bpc_null
[06:48:23] [PASSED] drm_test_connector_hdmi_init_formats_empty
[06:48:23] [PASSED] drm_test_connector_hdmi_init_formats_no_rgb
[06:48:23] === drm_test_connector_hdmi_init_formats_yuv420_allowed ===
[06:48:23] [PASSED] supported_formats=0x9 yuv420_allowed=1
[06:48:23] [PASSED] supported_formats=0x9 yuv420_allowed=0
[06:48:23] [PASSED] supported_formats=0x3 yuv420_allowed=1
[06:48:23] [PASSED] supported_formats=0x3 yuv420_allowed=0
[06:48:23] === [PASSED] drm_test_connector_hdmi_init_formats_yuv420_allowed ===
[06:48:23] [PASSED] drm_test_connector_hdmi_init_null_ddc
[06:48:23] [PASSED] drm_test_connector_hdmi_init_null_product
[06:48:23] [PASSED] drm_test_connector_hdmi_init_null_vendor
[06:48:23] [PASSED] drm_test_connector_hdmi_init_product_length_exact
[06:48:23] [PASSED] drm_test_connector_hdmi_init_product_length_too_long
[06:48:23] [PASSED] drm_test_connector_hdmi_init_product_valid
[06:48:23] [PASSED] drm_test_connector_hdmi_init_vendor_length_exact
[06:48:23] [PASSED] drm_test_connector_hdmi_init_vendor_length_too_long
[06:48:23] [PASSED] drm_test_connector_hdmi_init_vendor_valid
[06:48:23] ========= drm_test_connector_hdmi_init_type_valid =========
[06:48:23] [PASSED] HDMI-A
[06:48:23] [PASSED] HDMI-B
[06:48:23] ===== [PASSED] drm_test_connector_hdmi_init_type_valid =====
[06:48:23] ======== drm_test_connector_hdmi_init_type_invalid ========
[06:48:23] [PASSED] Unknown
[06:48:23] [PASSED] VGA
[06:48:23] [PASSED] DVI-I
[06:48:23] [PASSED] DVI-D
[06:48:23] [PASSED] DVI-A
[06:48:23] [PASSED] Composite
[06:48:23] [PASSED] SVIDEO
[06:48:23] [PASSED] LVDS
[06:48:23] [PASSED] Component
[06:48:23] [PASSED] DIN
[06:48:23] [PASSED] DP
[06:48:23] [PASSED] TV
[06:48:23] [PASSED] eDP
[06:48:23] [PASSED] Virtual
[06:48:23] [PASSED] DSI
[06:48:23] [PASSED] DPI
[06:48:23] [PASSED] Writeback
[06:48:23] [PASSED] SPI
[06:48:23] [PASSED] USB
[06:48:23] ==== [PASSED] drm_test_connector_hdmi_init_type_invalid ====
[06:48:23] ============ [PASSED] drmm_connector_hdmi_init =============
[06:48:23] ============= drmm_connector_init (3 subtests) =============
[06:48:23] [PASSED] drm_test_drmm_connector_init
[06:48:23] [PASSED] drm_test_drmm_connector_init_null_ddc
[06:48:23] ========= drm_test_drmm_connector_init_type_valid =========
[06:48:23] [PASSED] Unknown
[06:48:23] [PASSED] VGA
[06:48:23] [PASSED] DVI-I
[06:48:23] [PASSED] DVI-D
[06:48:23] [PASSED] DVI-A
[06:48:23] [PASSED] Composite
[06:48:23] [PASSED] SVIDEO
[06:48:23] [PASSED] LVDS
[06:48:23] [PASSED] Component
[06:48:23] [PASSED] DIN
[06:48:23] [PASSED] DP
[06:48:23] [PASSED] HDMI-A
[06:48:23] [PASSED] HDMI-B
[06:48:23] [PASSED] TV
[06:48:23] [PASSED] eDP
[06:48:23] [PASSED] Virtual
[06:48:23] [PASSED] DSI
[06:48:23] [PASSED] DPI
[06:48:23] [PASSED] Writeback
[06:48:23] [PASSED] SPI
[06:48:23] [PASSED] USB
[06:48:23] ===== [PASSED] drm_test_drmm_connector_init_type_valid =====
[06:48:23] =============== [PASSED] drmm_connector_init ===============
[06:48:23] ========= drm_connector_dynamic_init (6 subtests) ==========
[06:48:23] [PASSED] drm_test_drm_connector_dynamic_init
[06:48:23] [PASSED] drm_test_drm_connector_dynamic_init_null_ddc
[06:48:23] [PASSED] drm_test_drm_connector_dynamic_init_not_added
[06:48:23] [PASSED] drm_test_drm_connector_dynamic_init_properties
[06:48:23] ===== drm_test_drm_connector_dynamic_init_type_valid ======
[06:48:23] [PASSED] Unknown
[06:48:23] [PASSED] VGA
[06:48:23] [PASSED] DVI-I
[06:48:23] [PASSED] DVI-D
[06:48:23] [PASSED] DVI-A
[06:48:23] [PASSED] Composite
[06:48:23] [PASSED] SVIDEO
[06:48:23] [PASSED] LVDS
[06:48:23] [PASSED] Component
[06:48:23] [PASSED] DIN
[06:48:23] [PASSED] DP
[06:48:23] [PASSED] HDMI-A
[06:48:23] [PASSED] HDMI-B
[06:48:23] [PASSED] TV
[06:48:23] [PASSED] eDP
[06:48:23] [PASSED] Virtual
[06:48:23] [PASSED] DSI
[06:48:23] [PASSED] DPI
[06:48:23] [PASSED] Writeback
[06:48:23] [PASSED] SPI
[06:48:23] [PASSED] USB
[06:48:23] = [PASSED] drm_test_drm_connector_dynamic_init_type_valid ==
[06:48:23] ======== drm_test_drm_connector_dynamic_init_name =========
[06:48:23] [PASSED] Unknown
[06:48:23] [PASSED] VGA
[06:48:23] [PASSED] DVI-I
[06:48:23] [PASSED] DVI-D
[06:48:23] [PASSED] DVI-A
[06:48:23] [PASSED] Composite
[06:48:23] [PASSED] SVIDEO
[06:48:23] [PASSED] LVDS
[06:48:23] [PASSED] Component
[06:48:23] [PASSED] DIN
[06:48:23] [PASSED] DP
[06:48:23] [PASSED] HDMI-A
[06:48:23] [PASSED] HDMI-B
[06:48:23] [PASSED] TV
[06:48:23] [PASSED] eDP
[06:48:23] [PASSED] Virtual
[06:48:23] [PASSED] DSI
[06:48:23] [PASSED] DPI
[06:48:23] [PASSED] Writeback
[06:48:23] [PASSED] SPI
[06:48:23] [PASSED] USB
[06:48:23] ==== [PASSED] drm_test_drm_connector_dynamic_init_name =====
[06:48:23] =========== [PASSED] drm_connector_dynamic_init ============
[06:48:23] ==== drm_connector_dynamic_register_early (4 subtests) =====
[06:48:23] [PASSED] drm_test_drm_connector_dynamic_register_early_on_list
[06:48:23] [PASSED] drm_test_drm_connector_dynamic_register_early_defer
[06:48:23] [PASSED] drm_test_drm_connector_dynamic_register_early_no_init
[06:48:23] [PASSED] drm_test_drm_connector_dynamic_register_early_no_mode_object
[06:48:23] ====== [PASSED] drm_connector_dynamic_register_early =======
[06:48:23] ======= drm_connector_dynamic_register (7 subtests) ========
[06:48:23] [PASSED] drm_test_drm_connector_dynamic_register_on_list
[06:48:23] [PASSED] drm_test_drm_connector_dynamic_register_no_defer
[06:48:23] [PASSED] drm_test_drm_connector_dynamic_register_no_init
[06:48:23] [PASSED] drm_test_drm_connector_dynamic_register_mode_object
[06:48:23] [PASSED] drm_test_drm_connector_dynamic_register_sysfs
[06:48:23] [PASSED] drm_test_drm_connector_dynamic_register_sysfs_name
[06:48:23] [PASSED] drm_test_drm_connector_dynamic_register_debugfs
[06:48:23] ========= [PASSED] drm_connector_dynamic_register ==========
[06:48:23] = drm_connector_attach_broadcast_rgb_property (2 subtests) =
[06:48:23] [PASSED] drm_test_drm_connector_attach_broadcast_rgb_property
[06:48:23] [PASSED] drm_test_drm_connector_attach_broadcast_rgb_property_hdmi_connector
[06:48:23] === [PASSED] drm_connector_attach_broadcast_rgb_property ===
[06:48:23] ========== drm_get_tv_mode_from_name (2 subtests) ==========
[06:48:23] ========== drm_test_get_tv_mode_from_name_valid ===========
[06:48:23] [PASSED] NTSC
[06:48:23] [PASSED] NTSC-443
[06:48:23] [PASSED] NTSC-J
[06:48:23] [PASSED] PAL
[06:48:23] [PASSED] PAL-M
[06:48:23] [PASSED] PAL-N
[06:48:23] [PASSED] SECAM
[06:48:23] [PASSED] Mono
[06:48:23] ====== [PASSED] drm_test_get_tv_mode_from_name_valid =======
[06:48:23] [PASSED] drm_test_get_tv_mode_from_name_truncated
[06:48:23] ============ [PASSED] drm_get_tv_mode_from_name ============
[06:48:23] = drm_test_connector_hdmi_compute_mode_clock (12 subtests) =
[06:48:23] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb
[06:48:23] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_10bpc
[06:48:23] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_10bpc_vic_1
[06:48:23] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_12bpc
[06:48:23] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_12bpc_vic_1
[06:48:23] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_double
[06:48:23] = drm_test_connector_hdmi_compute_mode_clock_yuv420_valid =
[06:48:23] [PASSED] VIC 96
[06:48:23] [PASSED] VIC 97
[06:48:23] [PASSED] VIC 101
[06:48:23] [PASSED] VIC 102
[06:48:23] [PASSED] VIC 106
[06:48:23] [PASSED] VIC 107
[06:48:23] === [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_valid ===
[06:48:23] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_10_bpc
[06:48:23] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_12_bpc
[06:48:23] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_8_bpc
[06:48:23] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_10_bpc
[06:48:23] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_12_bpc
[06:48:23] === [PASSED] drm_test_connector_hdmi_compute_mode_clock ====
[06:48:23] == drm_hdmi_connector_get_broadcast_rgb_name (2 subtests) ==
[06:48:23] === drm_test_drm_hdmi_connector_get_broadcast_rgb_name ====
[06:48:23] [PASSED] Automatic
[06:48:23] [PASSED] Full
[06:48:23] [PASSED] Limited 16:235
[06:48:23] === [PASSED] drm_test_drm_hdmi_connector_get_broadcast_rgb_name ===
[06:48:23] [PASSED] drm_test_drm_hdmi_connector_get_broadcast_rgb_name_invalid
[06:48:23] ==== [PASSED] drm_hdmi_connector_get_broadcast_rgb_name ====
[06:48:23] == drm_hdmi_connector_get_output_format_name (2 subtests) ==
[06:48:23] === drm_test_drm_hdmi_connector_get_output_format_name ====
[06:48:23] [PASSED] RGB
[06:48:23] [PASSED] YUV 4:2:0
[06:48:23] [PASSED] YUV 4:2:2
[06:48:23] [PASSED] YUV 4:4:4
[06:48:23] === [PASSED] drm_test_drm_hdmi_connector_get_output_format_name ===
[06:48:23] [PASSED] drm_test_drm_hdmi_connector_get_output_format_name_invalid
[06:48:23] ==== [PASSED] drm_hdmi_connector_get_output_format_name ====
[06:48:23] ============= drm_damage_helper (21 subtests) ==============
[06:48:23] [PASSED] drm_test_damage_iter_no_damage
[06:48:23] [PASSED] drm_test_damage_iter_no_damage_fractional_src
[06:48:23] [PASSED] drm_test_damage_iter_no_damage_src_moved
[06:48:23] [PASSED] drm_test_damage_iter_no_damage_fractional_src_moved
[06:48:23] [PASSED] drm_test_damage_iter_no_damage_not_visible
[06:48:23] [PASSED] drm_test_damage_iter_no_damage_no_crtc
[06:48:23] [PASSED] drm_test_damage_iter_no_damage_no_fb
[06:48:23] [PASSED] drm_test_damage_iter_simple_damage
[06:48:23] [PASSED] drm_test_damage_iter_single_damage
[06:48:23] [PASSED] drm_test_damage_iter_single_damage_intersect_src
[06:48:23] [PASSED] drm_test_damage_iter_single_damage_outside_src
[06:48:23] [PASSED] drm_test_damage_iter_single_damage_fractional_src
[06:48:23] [PASSED] drm_test_damage_iter_single_damage_intersect_fractional_src
[06:48:23] [PASSED] drm_test_damage_iter_single_damage_outside_fractional_src
[06:48:23] [PASSED] drm_test_damage_iter_single_damage_src_moved
[06:48:23] [PASSED] drm_test_damage_iter_single_damage_fractional_src_moved
[06:48:23] [PASSED] drm_test_damage_iter_damage
[06:48:23] [PASSED] drm_test_damage_iter_damage_one_intersect
[06:48:23] [PASSED] drm_test_damage_iter_damage_one_outside
[06:48:23] [PASSED] drm_test_damage_iter_damage_src_moved
[06:48:23] [PASSED] drm_test_damage_iter_damage_not_visible
[06:48:23] ================ [PASSED] drm_damage_helper ================
[06:48:23] ============== drm_dp_mst_helper (3 subtests) ==============
[06:48:23] ============== drm_test_dp_mst_calc_pbn_mode ==============
[06:48:23] [PASSED] Clock 154000 BPP 30 DSC disabled
[06:48:23] [PASSED] Clock 234000 BPP 30 DSC disabled
[06:48:23] [PASSED] Clock 297000 BPP 24 DSC disabled
[06:48:23] [PASSED] Clock 332880 BPP 24 DSC enabled
[06:48:23] [PASSED] Clock 324540 BPP 24 DSC enabled
[06:48:23] ========== [PASSED] drm_test_dp_mst_calc_pbn_mode ==========
[06:48:23] ============== drm_test_dp_mst_calc_pbn_div ===============
[06:48:23] [PASSED] Link rate 2000000 lane count 4
[06:48:23] [PASSED] Link rate 2000000 lane count 2
[06:48:23] [PASSED] Link rate 2000000 lane count 1
[06:48:23] [PASSED] Link rate 1350000 lane count 4
[06:48:23] [PASSED] Link rate 1350000 lane count 2
[06:48:23] [PASSED] Link rate 1350000 lane count 1
[06:48:23] [PASSED] Link rate 1000000 lane count 4
[06:48:23] [PASSED] Link rate 1000000 lane count 2
[06:48:23] [PASSED] Link rate 1000000 lane count 1
[06:48:23] [PASSED] Link rate 810000 lane count 4
[06:48:23] [PASSED] Link rate 810000 lane count 2
[06:48:23] [PASSED] Link rate 810000 lane count 1
[06:48:23] [PASSED] Link rate 540000 lane count 4
[06:48:23] [PASSED] Link rate 540000 lane count 2
[06:48:23] [PASSED] Link rate 540000 lane count 1
[06:48:23] [PASSED] Link rate 270000 lane count 4
[06:48:23] [PASSED] Link rate 270000 lane count 2
[06:48:23] [PASSED] Link rate 270000 lane count 1
[06:48:23] [PASSED] Link rate 162000 lane count 4
[06:48:23] [PASSED] Link rate 162000 lane count 2
[06:48:23] [PASSED] Link rate 162000 lane count 1
[06:48:23] ========== [PASSED] drm_test_dp_mst_calc_pbn_div ===========
[06:48:23] ========= drm_test_dp_mst_sideband_msg_req_decode =========
[06:48:23] [PASSED] DP_ENUM_PATH_RESOURCES with port number
[06:48:23] [PASSED] DP_POWER_UP_PHY with port number
[06:48:23] [PASSED] DP_POWER_DOWN_PHY with port number
[06:48:23] [PASSED] DP_ALLOCATE_PAYLOAD with SDP stream sinks
[06:48:23] [PASSED] DP_ALLOCATE_PAYLOAD with port number
[06:48:23] [PASSED] DP_ALLOCATE_PAYLOAD with VCPI
[06:48:23] [PASSED] DP_ALLOCATE_PAYLOAD with PBN
[06:48:23] [PASSED] DP_QUERY_PAYLOAD with port number
[06:48:23] [PASSED] DP_QUERY_PAYLOAD with VCPI
[06:48:23] [PASSED] DP_REMOTE_DPCD_READ with port number
[06:48:23] [PASSED] DP_REMOTE_DPCD_READ with DPCD address
[06:48:23] [PASSED] DP_REMOTE_DPCD_READ with max number of bytes
[06:48:23] [PASSED] DP_REMOTE_DPCD_WRITE with port number
[06:48:23] [PASSED] DP_REMOTE_DPCD_WRITE with DPCD address
[06:48:23] [PASSED] DP_REMOTE_DPCD_WRITE with data array
[06:48:23] [PASSED] DP_REMOTE_I2C_READ with port number
[06:48:23] [PASSED] DP_REMOTE_I2C_READ with I2C device ID
[06:48:23] [PASSED] DP_REMOTE_I2C_READ with transactions array
[06:48:23] [PASSED] DP_REMOTE_I2C_WRITE with port number
[06:48:23] [PASSED] DP_REMOTE_I2C_WRITE with I2C device ID
[06:48:23] [PASSED] DP_REMOTE_I2C_WRITE with data array
[06:48:23] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream ID
[06:48:23] [PASSED] DP_QUERY_STREAM_ENC_STATUS with client ID
[06:48:23] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream event
[06:48:23] [PASSED] DP_QUERY_STREAM_ENC_STATUS with valid stream event
[06:48:23] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream behavior
[06:48:23] [PASSED] DP_QUERY_STREAM_ENC_STATUS with a valid stream behavior
[06:48:23] ===== [PASSED] drm_test_dp_mst_sideband_msg_req_decode =====
[06:48:23] ================ [PASSED] drm_dp_mst_helper ================
[06:48:23] ================== drm_exec (7 subtests) ===================
[06:48:23] [PASSED] sanitycheck
[06:48:23] [PASSED] test_lock
[06:48:23] [PASSED] test_lock_unlock
[06:48:23] [PASSED] test_duplicates
[06:48:23] [PASSED] test_prepare
[06:48:23] [PASSED] test_prepare_array
[06:48:23] [PASSED] test_multiple_loops
[06:48:23] ==================== [PASSED] drm_exec =====================
[06:48:23] =========== drm_format_helper_test (17 subtests) ===========
[06:48:23] ============== drm_test_fb_xrgb8888_to_gray8 ==============
[06:48:23] [PASSED] single_pixel_source_buffer
[06:48:23] [PASSED] single_pixel_clip_rectangle
[06:48:23] [PASSED] well_known_colors
[06:48:23] [PASSED] destination_pitch
[06:48:23] ========== [PASSED] drm_test_fb_xrgb8888_to_gray8 ==========
[06:48:23] ============= drm_test_fb_xrgb8888_to_rgb332 ==============
[06:48:23] [PASSED] single_pixel_source_buffer
[06:48:23] [PASSED] single_pixel_clip_rectangle
[06:48:23] [PASSED] well_known_colors
[06:48:23] [PASSED] destination_pitch
[06:48:23] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb332 ==========
[06:48:23] ============= drm_test_fb_xrgb8888_to_rgb565 ==============
[06:48:23] [PASSED] single_pixel_source_buffer
[06:48:23] [PASSED] single_pixel_clip_rectangle
[06:48:23] [PASSED] well_known_colors
[06:48:23] [PASSED] destination_pitch
[06:48:23] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb565 ==========
[06:48:23] ============ drm_test_fb_xrgb8888_to_xrgb1555 =============
[06:48:23] [PASSED] single_pixel_source_buffer
[06:48:23] [PASSED] single_pixel_clip_rectangle
[06:48:23] [PASSED] well_known_colors
[06:48:23] [PASSED] destination_pitch
[06:48:23] ======== [PASSED] drm_test_fb_xrgb8888_to_xrgb1555 =========
[06:48:23] ============ drm_test_fb_xrgb8888_to_argb1555 =============
[06:48:23] [PASSED] single_pixel_source_buffer
[06:48:23] [PASSED] single_pixel_clip_rectangle
[06:48:23] [PASSED] well_known_colors
[06:48:23] [PASSED] destination_pitch
[06:48:23] ======== [PASSED] drm_test_fb_xrgb8888_to_argb1555 =========
[06:48:23] ============ drm_test_fb_xrgb8888_to_rgba5551 =============
[06:48:23] [PASSED] single_pixel_source_buffer
[06:48:23] [PASSED] single_pixel_clip_rectangle
[06:48:23] [PASSED] well_known_colors
[06:48:23] [PASSED] destination_pitch
[06:48:23] ======== [PASSED] drm_test_fb_xrgb8888_to_rgba5551 =========
[06:48:23] ============= drm_test_fb_xrgb8888_to_rgb888 ==============
[06:48:23] [PASSED] single_pixel_source_buffer
[06:48:23] [PASSED] single_pixel_clip_rectangle
[06:48:23] [PASSED] well_known_colors
[06:48:23] [PASSED] destination_pitch
[06:48:23] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb888 ==========
[06:48:23] ============= drm_test_fb_xrgb8888_to_bgr888 ==============
[06:48:23] [PASSED] single_pixel_source_buffer
[06:48:23] [PASSED] single_pixel_clip_rectangle
[06:48:23] [PASSED] well_known_colors
[06:48:23] [PASSED] destination_pitch
[06:48:23] ========= [PASSED] drm_test_fb_xrgb8888_to_bgr888 ==========
[06:48:23] ============ drm_test_fb_xrgb8888_to_argb8888 =============
[06:48:23] [PASSED] single_pixel_source_buffer
[06:48:23] [PASSED] single_pixel_clip_rectangle
[06:48:23] [PASSED] well_known_colors
[06:48:23] [PASSED] destination_pitch
[06:48:23] ======== [PASSED] drm_test_fb_xrgb8888_to_argb8888 =========
[06:48:23] =========== drm_test_fb_xrgb8888_to_xrgb2101010 ===========
[06:48:23] [PASSED] single_pixel_source_buffer
[06:48:23] [PASSED] single_pixel_clip_rectangle
[06:48:23] [PASSED] well_known_colors
[06:48:23] [PASSED] destination_pitch
[06:48:23] ======= [PASSED] drm_test_fb_xrgb8888_to_xrgb2101010 =======
[06:48:23] =========== drm_test_fb_xrgb8888_to_argb2101010 ===========
[06:48:23] [PASSED] single_pixel_source_buffer
[06:48:23] [PASSED] single_pixel_clip_rectangle
[06:48:23] [PASSED] well_known_colors
[06:48:23] [PASSED] destination_pitch
[06:48:23] ======= [PASSED] drm_test_fb_xrgb8888_to_argb2101010 =======
[06:48:23] ============== drm_test_fb_xrgb8888_to_mono ===============
[06:48:23] [PASSED] single_pixel_source_buffer
[06:48:23] [PASSED] single_pixel_clip_rectangle
[06:48:23] [PASSED] well_known_colors
[06:48:23] [PASSED] destination_pitch
[06:48:23] ========== [PASSED] drm_test_fb_xrgb8888_to_mono ===========
[06:48:23] ==================== drm_test_fb_swab =====================
[06:48:23] [PASSED] single_pixel_source_buffer
[06:48:23] [PASSED] single_pixel_clip_rectangle
[06:48:23] [PASSED] well_known_colors
[06:48:23] [PASSED] destination_pitch
[06:48:23] ================ [PASSED] drm_test_fb_swab =================
[06:48:23] ============ drm_test_fb_xrgb8888_to_xbgr8888 =============
[06:48:23] [PASSED] single_pixel_source_buffer
[06:48:23] [PASSED] single_pixel_clip_rectangle
[06:48:23] [PASSED] well_known_colors
[06:48:23] [PASSED] destination_pitch
[06:48:23] ======== [PASSED] drm_test_fb_xrgb8888_to_xbgr8888 =========
[06:48:23] ============ drm_test_fb_xrgb8888_to_abgr8888 =============
[06:48:23] [PASSED] single_pixel_source_buffer
[06:48:23] [PASSED] single_pixel_clip_rectangle
[06:48:23] [PASSED] well_known_colors
[06:48:23] [PASSED] destination_pitch
[06:48:23] ======== [PASSED] drm_test_fb_xrgb8888_to_abgr8888 =========
[06:48:23] ================= drm_test_fb_clip_offset =================
[06:48:23] [PASSED] pass through
[06:48:23] [PASSED] horizontal offset
[06:48:23] [PASSED] vertical offset
[06:48:23] [PASSED] horizontal and vertical offset
[06:48:23] [PASSED] horizontal offset (custom pitch)
[06:48:23] [PASSED] vertical offset (custom pitch)
[06:48:23] [PASSED] horizontal and vertical offset (custom pitch)
[06:48:23] ============= [PASSED] drm_test_fb_clip_offset =============
[06:48:23] =================== drm_test_fb_memcpy ====================
[06:48:23] [PASSED] single_pixel_source_buffer: XR24 little-endian (0x34325258)
[06:48:23] [PASSED] single_pixel_source_buffer: XRA8 little-endian (0x38415258)
[06:48:23] [PASSED] single_pixel_source_buffer: YU24 little-endian (0x34325559)
[06:48:23] [PASSED] single_pixel_clip_rectangle: XB24 little-endian (0x34324258)
[06:48:23] [PASSED] single_pixel_clip_rectangle: XRA8 little-endian (0x38415258)
[06:48:23] [PASSED] single_pixel_clip_rectangle: YU24 little-endian (0x34325559)
[06:48:23] [PASSED] well_known_colors: XB24 little-endian (0x34324258)
[06:48:23] [PASSED] well_known_colors: XRA8 little-endian (0x38415258)
[06:48:23] [PASSED] well_known_colors: YU24 little-endian (0x34325559)
[06:48:23] [PASSED] destination_pitch: XB24 little-endian (0x34324258)
[06:48:23] [PASSED] destination_pitch: XRA8 little-endian (0x38415258)
[06:48:23] [PASSED] destination_pitch: YU24 little-endian (0x34325559)
[06:48:23] =============== [PASSED] drm_test_fb_memcpy ================
[06:48:23] ============= [PASSED] drm_format_helper_test ==============
[06:48:23] ================= drm_format (18 subtests) =================
[06:48:23] [PASSED] drm_test_format_block_width_invalid
[06:48:23] [PASSED] drm_test_format_block_width_one_plane
[06:48:23] [PASSED] drm_test_format_block_width_two_plane
[06:48:23] [PASSED] drm_test_format_block_width_three_plane
[06:48:23] [PASSED] drm_test_format_block_width_tiled
[06:48:23] [PASSED] drm_test_format_block_height_invalid
[06:48:23] [PASSED] drm_test_format_block_height_one_plane
[06:48:23] [PASSED] drm_test_format_block_height_two_plane
[06:48:23] [PASSED] drm_test_format_block_height_three_plane
[06:48:23] [PASSED] drm_test_format_block_height_tiled
[06:48:23] [PASSED] drm_test_format_min_pitch_invalid
[06:48:23] [PASSED] drm_test_format_min_pitch_one_plane_8bpp
[06:48:23] [PASSED] drm_test_format_min_pitch_one_plane_16bpp
[06:48:23] [PASSED] drm_test_format_min_pitch_one_plane_24bpp
[06:48:23] [PASSED] drm_test_format_min_pitch_one_plane_32bpp
[06:48:23] [PASSED] drm_test_format_min_pitch_two_plane
[06:48:23] [PASSED] drm_test_format_min_pitch_three_plane_8bpp
[06:48:23] [PASSED] drm_test_format_min_pitch_tiled
[06:48:23] =================== [PASSED] drm_format ====================
[06:48:23] ============== drm_framebuffer (10 subtests) ===============
[06:48:23] ========== drm_test_framebuffer_check_src_coords ==========
[06:48:23] [PASSED] Success: source fits into fb
[06:48:23] [PASSED] Fail: overflowing fb with x-axis coordinate
[06:48:23] [PASSED] Fail: overflowing fb with y-axis coordinate
[06:48:23] [PASSED] Fail: overflowing fb with source width
[06:48:23] [PASSED] Fail: overflowing fb with source height
[06:48:23] ====== [PASSED] drm_test_framebuffer_check_src_coords ======
[06:48:23] [PASSED] drm_test_framebuffer_cleanup
[06:48:23] =============== drm_test_framebuffer_create ===============
[06:48:23] [PASSED] ABGR8888 normal sizes
[06:48:23] [PASSED] ABGR8888 max sizes
[06:48:23] [PASSED] ABGR8888 pitch greater than min required
[06:48:23] [PASSED] ABGR8888 pitch less than min required
[06:48:23] [PASSED] ABGR8888 Invalid width
[06:48:23] [PASSED] ABGR8888 Invalid buffer handle
[06:48:23] [PASSED] No pixel format
[06:48:23] [PASSED] ABGR8888 Width 0
[06:48:23] [PASSED] ABGR8888 Height 0
[06:48:23] [PASSED] ABGR8888 Out of bound height * pitch combination
[06:48:23] [PASSED] ABGR8888 Large buffer offset
[06:48:23] [PASSED] ABGR8888 Buffer offset for inexistent plane
[06:48:23] [PASSED] ABGR8888 Invalid flag
[06:48:23] [PASSED] ABGR8888 Set DRM_MODE_FB_MODIFIERS without modifiers
[06:48:23] [PASSED] ABGR8888 Valid buffer modifier
[06:48:23] [PASSED] ABGR8888 Invalid buffer modifier(DRM_FORMAT_MOD_SAMSUNG_64_32_TILE)
[06:48:23] [PASSED] ABGR8888 Extra pitches without DRM_MODE_FB_MODIFIERS
[06:48:23] [PASSED] ABGR8888 Extra pitches with DRM_MODE_FB_MODIFIERS
[06:48:23] [PASSED] NV12 Normal sizes
[06:48:23] [PASSED] NV12 Max sizes
[06:48:23] [PASSED] NV12 Invalid pitch
[06:48:23] [PASSED] NV12 Invalid modifier/missing DRM_MODE_FB_MODIFIERS flag
[06:48:23] [PASSED] NV12 different modifier per-plane
[06:48:23] [PASSED] NV12 with DRM_FORMAT_MOD_SAMSUNG_64_32_TILE
[06:48:23] [PASSED] NV12 Valid modifiers without DRM_MODE_FB_MODIFIERS
[06:48:23] [PASSED] NV12 Modifier for inexistent plane
[06:48:23] [PASSED] NV12 Handle for inexistent plane
[06:48:23] [PASSED] NV12 Handle for inexistent plane without DRM_MODE_FB_MODIFIERS
[06:48:23] [PASSED] YVU420 DRM_MODE_FB_MODIFIERS set without modifier
[06:48:23] [PASSED] YVU420 Normal sizes
[06:48:23] [PASSED] YVU420 Max sizes
[06:48:23] [PASSED] YVU420 Invalid pitch
[06:48:23] [PASSED] YVU420 Different pitches
[06:48:23] [PASSED] YVU420 Different buffer offsets/pitches
[06:48:23] [PASSED] YVU420 Modifier set just for plane 0, without DRM_MODE_FB_MODIFIERS
[06:48:23] [PASSED] YVU420 Modifier set just for planes 0, 1, without DRM_MODE_FB_MODIFIERS
[06:48:23] [PASSED] YVU420 Modifier set just for plane 0, 1, with DRM_MODE_FB_MODIFIERS
[06:48:23] [PASSED] YVU420 Valid modifier
[06:48:23] [PASSED] YVU420 Different modifiers per plane
[06:48:23] [PASSED] YVU420 Modifier for inexistent plane
[06:48:23] [PASSED] YUV420_10BIT Invalid modifier(DRM_FORMAT_MOD_LINEAR)
[06:48:23] [PASSED] X0L2 Normal sizes
[06:48:23] [PASSED] X0L2 Max sizes
[06:48:23] [PASSED] X0L2 Invalid pitch
[06:48:23] [PASSED] X0L2 Pitch greater than minimum required
[06:48:23] [PASSED] X0L2 Handle for inexistent plane
[06:48:23] [PASSED] X0L2 Offset for inexistent plane, without DRM_MODE_FB_MODIFIERS set
[06:48:23] [PASSED] X0L2 Modifier without DRM_MODE_FB_MODIFIERS set
[06:48:23] [PASSED] X0L2 Valid modifier
[06:48:23] [PASSED] X0L2 Modifier for inexistent plane
[06:48:23] =========== [PASSED] drm_test_framebuffer_create ===========
[06:48:23] [PASSED] drm_test_framebuffer_free
[06:48:23] [PASSED] drm_test_framebuffer_init
[06:48:23] [PASSED] drm_test_framebuffer_init_bad_format
[06:48:23] [PASSED] drm_test_framebuffer_init_dev_mismatch
[06:48:23] [PASSED] drm_test_framebuffer_lookup
[06:48:23] [PASSED] drm_test_framebuffer_lookup_inexistent
[06:48:23] [PASSED] drm_test_framebuffer_modifiers_not_supported
[06:48:23] ================= [PASSED] drm_framebuffer =================
[06:48:23] ================ drm_gem_shmem (8 subtests) ================
[06:48:23] [PASSED] drm_gem_shmem_test_obj_create
[06:48:23] [PASSED] drm_gem_shmem_test_obj_create_private
[06:48:23] [PASSED] drm_gem_shmem_test_pin_pages
[06:48:23] [PASSED] drm_gem_shmem_test_vmap
[06:48:23] [PASSED] drm_gem_shmem_test_get_pages_sgt
[06:48:23] [PASSED] drm_gem_shmem_test_get_sg_table
[06:48:23] [PASSED] drm_gem_shmem_test_madvise
[06:48:23] [PASSED] drm_gem_shmem_test_purge
[06:48:23] ================== [PASSED] drm_gem_shmem ==================
[06:48:23] === drm_atomic_helper_connector_hdmi_check (27 subtests) ===
[06:48:23] [PASSED] drm_test_check_broadcast_rgb_auto_cea_mode
[06:48:23] [PASSED] drm_test_check_broadcast_rgb_auto_cea_mode_vic_1
[06:48:23] [PASSED] drm_test_check_broadcast_rgb_full_cea_mode
[06:48:23] [PASSED] drm_test_check_broadcast_rgb_full_cea_mode_vic_1
[06:48:23] [PASSED] drm_test_check_broadcast_rgb_limited_cea_mode
[06:48:23] [PASSED] drm_test_check_broadcast_rgb_limited_cea_mode_vic_1
[06:48:23] ====== drm_test_check_broadcast_rgb_cea_mode_yuv420 =======
[06:48:23] [PASSED] Automatic
[06:48:23] [PASSED] Full
[06:48:23] [PASSED] Limited 16:235
[06:48:23] == [PASSED] drm_test_check_broadcast_rgb_cea_mode_yuv420 ===
[06:48:23] [PASSED] drm_test_check_broadcast_rgb_crtc_mode_changed
[06:48:23] [PASSED] drm_test_check_broadcast_rgb_crtc_mode_not_changed
[06:48:23] [PASSED] drm_test_check_disable_connector
[06:48:23] [PASSED] drm_test_check_hdmi_funcs_reject_rate
[06:48:23] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_rgb
[06:48:23] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_yuv420
[06:48:23] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_ignore_yuv422
[06:48:23] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_ignore_yuv420
[06:48:23] [PASSED] drm_test_check_driver_unsupported_fallback_yuv420
[06:48:23] [PASSED] drm_test_check_output_bpc_crtc_mode_changed
[06:48:23] [PASSED] drm_test_check_output_bpc_crtc_mode_not_changed
[06:48:23] [PASSED] drm_test_check_output_bpc_dvi
[06:48:23] [PASSED] drm_test_check_output_bpc_format_vic_1
[06:48:23] [PASSED] drm_test_check_output_bpc_format_display_8bpc_only
[06:48:23] [PASSED] drm_test_check_output_bpc_format_display_rgb_only
[06:48:23] [PASSED] drm_test_check_output_bpc_format_driver_8bpc_only
[06:48:23] [PASSED] drm_test_check_output_bpc_format_driver_rgb_only
[06:48:23] [PASSED] drm_test_check_tmds_char_rate_rgb_8bpc
[06:48:23] [PASSED] drm_test_check_tmds_char_rate_rgb_10bpc
[06:48:23] [PASSED] drm_test_check_tmds_char_rate_rgb_12bpc
[06:48:23] ===== [PASSED] drm_atomic_helper_connector_hdmi_check ======
[06:48:23] === drm_atomic_helper_connector_hdmi_reset (6 subtests) ====
[06:48:23] [PASSED] drm_test_check_broadcast_rgb_value
[06:48:23] [PASSED] drm_test_check_bpc_8_value
[06:48:23] [PASSED] drm_test_check_bpc_10_value
[06:48:23] [PASSED] drm_test_check_bpc_12_value
[06:48:23] [PASSED] drm_test_check_format_value
[06:48:23] [PASSED] drm_test_check_tmds_char_value
[06:48:23] ===== [PASSED] drm_atomic_helper_connector_hdmi_reset ======
[06:48:23] = drm_atomic_helper_connector_hdmi_mode_valid (4 subtests) =
[06:48:23] [PASSED] drm_test_check_mode_valid
[06:48:23] [PASSED] drm_test_check_mode_valid_reject
[06:48:23] [PASSED] drm_test_check_mode_valid_reject_rate
[06:48:23] [PASSED] drm_test_check_mode_valid_reject_max_clock
[06:48:23] === [PASSED] drm_atomic_helper_connector_hdmi_mode_valid ===
[06:48:23] ================= drm_managed (2 subtests) =================
[06:48:23] [PASSED] drm_test_managed_release_action
[06:48:23] [PASSED] drm_test_managed_run_action
[06:48:23] =================== [PASSED] drm_managed ===================
[06:48:23] =================== drm_mm (6 subtests) ====================
[06:48:23] [PASSED] drm_test_mm_init
[06:48:23] [PASSED] drm_test_mm_debug
[06:48:23] [PASSED] drm_test_mm_align32
[06:48:23] [PASSED] drm_test_mm_align64
[06:48:23] [PASSED] drm_test_mm_lowest
[06:48:23] [PASSED] drm_test_mm_highest
[06:48:23] ===================== [PASSED] drm_mm ======================
[06:48:23] ============= drm_modes_analog_tv (5 subtests) =============
[06:48:23] [PASSED] drm_test_modes_analog_tv_mono_576i
[06:48:23] [PASSED] drm_test_modes_analog_tv_ntsc_480i
[06:48:23] [PASSED] drm_test_modes_analog_tv_ntsc_480i_inlined
[06:48:23] [PASSED] drm_test_modes_analog_tv_pal_576i
[06:48:23] [PASSED] drm_test_modes_analog_tv_pal_576i_inlined
[06:48:23] =============== [PASSED] drm_modes_analog_tv ===============
[06:48:23] ============== drm_plane_helper (2 subtests) ===============
[06:48:23] =============== drm_test_check_plane_state ================
[06:48:23] [PASSED] clipping_simple
[06:48:23] [PASSED] clipping_rotate_reflect
[06:48:23] [PASSED] positioning_simple
[06:48:23] [PASSED] upscaling
[06:48:23] [PASSED] downscaling
[06:48:23] [PASSED] rounding1
[06:48:23] [PASSED] rounding2
[06:48:23] [PASSED] rounding3
[06:48:23] [PASSED] rounding4
[06:48:23] =========== [PASSED] drm_test_check_plane_state ============
[06:48:23] =========== drm_test_check_invalid_plane_state ============
[06:48:23] [PASSED] positioning_invalid
[06:48:23] [PASSED] upscaling_invalid
[06:48:23] [PASSED] downscaling_invalid
[06:48:23] ======= [PASSED] drm_test_check_invalid_plane_state ========
[06:48:23] ================ [PASSED] drm_plane_helper =================
[06:48:23] ====== drm_connector_helper_tv_get_modes (1 subtest) =======
[06:48:23] ====== drm_test_connector_helper_tv_get_modes_check =======
[06:48:23] [PASSED] None
[06:48:23] [PASSED] PAL
[06:48:23] [PASSED] NTSC
[06:48:23] [PASSED] Both, NTSC Default
[06:48:23] [PASSED] Both, PAL Default
[06:48:23] [PASSED] Both, NTSC Default, with PAL on command-line
[06:48:23] [PASSED] Both, PAL Default, with NTSC on command-line
[06:48:23] == [PASSED] drm_test_connector_helper_tv_get_modes_check ===
[06:48:23] ======== [PASSED] drm_connector_helper_tv_get_modes ========
[06:48:23] ================== drm_rect (9 subtests) ===================
[06:48:23] [PASSED] drm_test_rect_clip_scaled_div_by_zero
[06:48:23] [PASSED] drm_test_rect_clip_scaled_not_clipped
[06:48:23] [PASSED] drm_test_rect_clip_scaled_clipped
[06:48:23] [PASSED] drm_test_rect_clip_scaled_signed_vs_unsigned
[06:48:23] ================= drm_test_rect_intersect =================
[06:48:23] [PASSED] top-left x bottom-right: 2x2+1+1 x 2x2+0+0
[06:48:23] [PASSED] top-right x bottom-left: 2x2+0+0 x 2x2+1-1
[06:48:23] [PASSED] bottom-left x top-right: 2x2+1-1 x 2x2+0+0
[06:48:23] [PASSED] bottom-right x top-left: 2x2+0+0 x 2x2+1+1
[06:48:23] [PASSED] right x left: 2x1+0+0 x 3x1+1+0
[06:48:23] [PASSED] left x right: 3x1+1+0 x 2x1+0+0
[06:48:23] [PASSED] up x bottom: 1x2+0+0 x 1x3+0-1
[06:48:23] [PASSED] bottom x up: 1x3+0-1 x 1x2+0+0
[06:48:23] [PASSED] touching corner: 1x1+0+0 x 2x2+1+1
[06:48:23] [PASSED] touching side: 1x1+0+0 x 1x1+1+0
[06:48:23] [PASSED] equal rects: 2x2+0+0 x 2x2+0+0
[06:48:23] [PASSED] inside another: 2x2+0+0 x 1x1+1+1
[06:48:23] [PASSED] far away: 1x1+0+0 x 1x1+3+6
[06:48:23] [PASSED] points intersecting: 0x0+5+10 x 0x0+5+10
[06:48:23] [PASSED] points not intersecting: 0x0+0+0 x 0x0+5+10
[06:48:23] ============= [PASSED] drm_test_rect_intersect =============
[06:48:23] ================ drm_test_rect_calc_hscale ================
[06:48:23] [PASSED] normal use
[06:48:23] [PASSED] out of max range
[06:48:23] [PASSED] out of min range
[06:48:23] [PASSED] zero dst
[06:48:23] [PASSED] negative src
[06:48:23] [PASSED] negative dst
[06:48:23] ============ [PASSED] drm_test_rect_calc_hscale ============
[06:48:23] ================ drm_test_rect_calc_vscale ================
[06:48:23] [PASSED] normal use
stty: 'standard input': Inappropriate ioctl for device
[06:48:23] [PASSED] out of max range
[06:48:23] [PASSED] out of min range
[06:48:23] [PASSED] zero dst
[06:48:23] [PASSED] negative src
[06:48:23] [PASSED] negative dst
[06:48:23] ============ [PASSED] drm_test_rect_calc_vscale ============
[06:48:23] ================== drm_test_rect_rotate ===================
[06:48:23] [PASSED] reflect-x
[06:48:23] [PASSED] reflect-y
[06:48:23] [PASSED] rotate-0
[06:48:23] [PASSED] rotate-90
[06:48:23] [PASSED] rotate-180
[06:48:23] [PASSED] rotate-270
[06:48:23] ============== [PASSED] drm_test_rect_rotate ===============
[06:48:23] ================ drm_test_rect_rotate_inv =================
[06:48:23] [PASSED] reflect-x
[06:48:23] [PASSED] reflect-y
[06:48:23] [PASSED] rotate-0
[06:48:23] [PASSED] rotate-90
[06:48:23] [PASSED] rotate-180
[06:48:23] [PASSED] rotate-270
[06:48:23] ============ [PASSED] drm_test_rect_rotate_inv =============
[06:48:23] ==================== [PASSED] drm_rect =====================
[06:48:23] ============ drm_sysfb_modeset_test (1 subtest) ============
[06:48:23] ============ drm_test_sysfb_build_fourcc_list =============
[06:48:23] [PASSED] no native formats
[06:48:23] [PASSED] XRGB8888 as native format
[06:48:23] [PASSED] remove duplicates
[06:48:23] [PASSED] convert alpha formats
[06:48:23] [PASSED] random formats
[06:48:23] ======== [PASSED] drm_test_sysfb_build_fourcc_list =========
[06:48:23] ============= [PASSED] drm_sysfb_modeset_test ==============
[06:48:23] ================== drm_fixp (2 subtests) ===================
[06:48:23] [PASSED] drm_test_int2fixp
[06:48:23] [PASSED] drm_test_sm2fixp
[06:48:23] ==================== [PASSED] drm_fixp =====================
[06:48:23] ============================================================
[06:48:23] Testing complete. Ran 624 tests: passed: 624
[06:48:23] Elapsed time: 27.291s total, 1.665s configuring, 25.202s building, 0.393s running
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/ttm/tests/.kunitconfig
[06:48:23] Configuring KUnit Kernel ...
Regenerating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[06:48:25] 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
[06:48:34] Starting KUnit Kernel (1/1)...
[06:48:34] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[06:48:34] ================= ttm_device (5 subtests) ==================
[06:48:34] [PASSED] ttm_device_init_basic
[06:48:34] [PASSED] ttm_device_init_multiple
[06:48:34] [PASSED] ttm_device_fini_basic
[06:48:34] [PASSED] ttm_device_init_no_vma_man
[06:48:34] ================== ttm_device_init_pools ==================
[06:48:34] [PASSED] No DMA allocations, no DMA32 required
[06:48:34] [PASSED] DMA allocations, DMA32 required
[06:48:34] [PASSED] No DMA allocations, DMA32 required
[06:48:34] [PASSED] DMA allocations, no DMA32 required
[06:48:34] ============== [PASSED] ttm_device_init_pools ==============
[06:48:34] =================== [PASSED] ttm_device ====================
[06:48:34] ================== ttm_pool (8 subtests) ===================
[06:48:34] ================== ttm_pool_alloc_basic ===================
[06:48:34] [PASSED] One page
[06:48:34] [PASSED] More than one page
[06:48:34] [PASSED] Above the allocation limit
[06:48:34] [PASSED] One page, with coherent DMA mappings enabled
[06:48:34] [PASSED] Above the allocation limit, with coherent DMA mappings enabled
[06:48:34] ============== [PASSED] ttm_pool_alloc_basic ===============
[06:48:34] ============== ttm_pool_alloc_basic_dma_addr ==============
[06:48:34] [PASSED] One page
[06:48:34] [PASSED] More than one page
[06:48:34] [PASSED] Above the allocation limit
[06:48:34] [PASSED] One page, with coherent DMA mappings enabled
[06:48:34] [PASSED] Above the allocation limit, with coherent DMA mappings enabled
[06:48:34] ========== [PASSED] ttm_pool_alloc_basic_dma_addr ==========
[06:48:34] [PASSED] ttm_pool_alloc_order_caching_match
[06:48:34] [PASSED] ttm_pool_alloc_caching_mismatch
[06:48:34] [PASSED] ttm_pool_alloc_order_mismatch
[06:48:34] [PASSED] ttm_pool_free_dma_alloc
[06:48:34] [PASSED] ttm_pool_free_no_dma_alloc
[06:48:34] [PASSED] ttm_pool_fini_basic
[06:48:34] ==================== [PASSED] ttm_pool =====================
[06:48:34] ================ ttm_resource (8 subtests) =================
[06:48:34] ================= ttm_resource_init_basic =================
[06:48:34] [PASSED] Init resource in TTM_PL_SYSTEM
[06:48:34] [PASSED] Init resource in TTM_PL_VRAM
[06:48:34] [PASSED] Init resource in a private placement
[06:48:34] [PASSED] Init resource in TTM_PL_SYSTEM, set placement flags
[06:48:34] ============= [PASSED] ttm_resource_init_basic =============
[06:48:34] [PASSED] ttm_resource_init_pinned
[06:48:34] [PASSED] ttm_resource_fini_basic
[06:48:34] [PASSED] ttm_resource_manager_init_basic
[06:48:34] [PASSED] ttm_resource_manager_usage_basic
[06:48:34] [PASSED] ttm_resource_manager_set_used_basic
[06:48:34] [PASSED] ttm_sys_man_alloc_basic
[06:48:34] [PASSED] ttm_sys_man_free_basic
[06:48:34] ================== [PASSED] ttm_resource ===================
[06:48:34] =================== ttm_tt (15 subtests) ===================
[06:48:34] ==================== ttm_tt_init_basic ====================
[06:48:34] [PASSED] Page-aligned size
[06:48:34] [PASSED] Extra pages requested
[06:48:34] ================ [PASSED] ttm_tt_init_basic ================
[06:48:34] [PASSED] ttm_tt_init_misaligned
[06:48:34] [PASSED] ttm_tt_fini_basic
[06:48:34] [PASSED] ttm_tt_fini_sg
[06:48:34] [PASSED] ttm_tt_fini_shmem
[06:48:34] [PASSED] ttm_tt_create_basic
[06:48:34] [PASSED] ttm_tt_create_invalid_bo_type
[06:48:34] [PASSED] ttm_tt_create_ttm_exists
[06:48:34] [PASSED] ttm_tt_create_failed
[06:48:34] [PASSED] ttm_tt_destroy_basic
[06:48:34] [PASSED] ttm_tt_populate_null_ttm
[06:48:34] [PASSED] ttm_tt_populate_populated_ttm
[06:48:34] [PASSED] ttm_tt_unpopulate_basic
[06:48:34] [PASSED] ttm_tt_unpopulate_empty_ttm
[06:48:34] [PASSED] ttm_tt_swapin_basic
[06:48:34] ===================== [PASSED] ttm_tt ======================
[06:48:34] =================== ttm_bo (14 subtests) ===================
[06:48:34] =========== ttm_bo_reserve_optimistic_no_ticket ===========
[06:48:34] [PASSED] Cannot be interrupted and sleeps
[06:48:34] [PASSED] Cannot be interrupted, locks straight away
[06:48:34] [PASSED] Can be interrupted, sleeps
[06:48:34] ======= [PASSED] ttm_bo_reserve_optimistic_no_ticket =======
[06:48:34] [PASSED] ttm_bo_reserve_locked_no_sleep
[06:48:34] [PASSED] ttm_bo_reserve_no_wait_ticket
[06:48:34] [PASSED] ttm_bo_reserve_double_resv
[06:48:34] [PASSED] ttm_bo_reserve_interrupted
[06:48:34] [PASSED] ttm_bo_reserve_deadlock
[06:48:34] [PASSED] ttm_bo_unreserve_basic
[06:48:34] [PASSED] ttm_bo_unreserve_pinned
[06:48:34] [PASSED] ttm_bo_unreserve_bulk
[06:48:34] [PASSED] ttm_bo_fini_basic
[06:48:34] [PASSED] ttm_bo_fini_shared_resv
[06:48:34] [PASSED] ttm_bo_pin_basic
[06:48:34] [PASSED] ttm_bo_pin_unpin_resource
[06:48:34] [PASSED] ttm_bo_multiple_pin_one_unpin
[06:48:34] ===================== [PASSED] ttm_bo ======================
[06:48:34] ============== ttm_bo_validate (21 subtests) ===============
[06:48:34] ============== ttm_bo_init_reserved_sys_man ===============
[06:48:34] [PASSED] Buffer object for userspace
[06:48:34] [PASSED] Kernel buffer object
[06:48:34] [PASSED] Shared buffer object
[06:48:34] ========== [PASSED] ttm_bo_init_reserved_sys_man ===========
[06:48:34] ============== ttm_bo_init_reserved_mock_man ==============
[06:48:34] [PASSED] Buffer object for userspace
[06:48:34] [PASSED] Kernel buffer object
[06:48:34] [PASSED] Shared buffer object
[06:48:34] ========== [PASSED] ttm_bo_init_reserved_mock_man ==========
[06:48:34] [PASSED] ttm_bo_init_reserved_resv
[06:48:34] ================== ttm_bo_validate_basic ==================
[06:48:34] [PASSED] Buffer object for userspace
[06:48:34] [PASSED] Kernel buffer object
[06:48:34] [PASSED] Shared buffer object
[06:48:34] ============== [PASSED] ttm_bo_validate_basic ==============
[06:48:34] [PASSED] ttm_bo_validate_invalid_placement
[06:48:34] ============= ttm_bo_validate_same_placement ==============
[06:48:34] [PASSED] System manager
[06:48:34] [PASSED] VRAM manager
[06:48:34] ========= [PASSED] ttm_bo_validate_same_placement ==========
[06:48:34] [PASSED] ttm_bo_validate_failed_alloc
[06:48:34] [PASSED] ttm_bo_validate_pinned
[06:48:34] [PASSED] ttm_bo_validate_busy_placement
[06:48:34] ================ ttm_bo_validate_multihop =================
[06:48:34] [PASSED] Buffer object for userspace
[06:48:34] [PASSED] Kernel buffer object
[06:48:34] [PASSED] Shared buffer object
[06:48:34] ============ [PASSED] ttm_bo_validate_multihop =============
[06:48:34] ========== ttm_bo_validate_no_placement_signaled ==========
[06:48:34] [PASSED] Buffer object in system domain, no page vector
[06:48:34] [PASSED] Buffer object in system domain with an existing page vector
[06:48:34] ====== [PASSED] ttm_bo_validate_no_placement_signaled ======
[06:48:34] ======== ttm_bo_validate_no_placement_not_signaled ========
[06:48:34] [PASSED] Buffer object for userspace
[06:48:34] [PASSED] Kernel buffer object
[06:48:34] [PASSED] Shared buffer object
[06:48:34] ==== [PASSED] ttm_bo_validate_no_placement_not_signaled ====
[06:48:34] [PASSED] ttm_bo_validate_move_fence_signaled
[06:48:34] ========= ttm_bo_validate_move_fence_not_signaled =========
[06:48:34] [PASSED] Waits for GPU
[06:48:34] [PASSED] Tries to lock straight away
[06:48:34] ===== [PASSED] ttm_bo_validate_move_fence_not_signaled =====
[06:48:34] [PASSED] ttm_bo_validate_happy_evict
[06:48:34] [PASSED] ttm_bo_validate_all_pinned_evict
[06:48:34] [PASSED] ttm_bo_validate_allowed_only_evict
[06:48:34] [PASSED] ttm_bo_validate_deleted_evict
[06:48:34] [PASSED] ttm_bo_validate_busy_domain_evict
[06:48:34] [PASSED] ttm_bo_validate_evict_gutting
[06:48:34] [PASSED] ttm_bo_validate_recrusive_evict
stty: 'standard input': Inappropriate ioctl for device
[06:48:34] ================= [PASSED] ttm_bo_validate =================
[06:48:34] ============================================================
[06:48:34] Testing complete. Ran 101 tests: passed: 101
[06:48:34] Elapsed time: 11.277s total, 1.696s configuring, 9.366s building, 0.186s running
+ cleanup
++ stat -c %u:%g /kernel
+ chown -R 1003:1003 /kernel
^ permalink raw reply [flat|nested] 44+ messages in thread
* ✗ CI.checksparse: warning for Plane Color Pipeline support for Intel platforms (rev6)
2025-12-01 6:46 [v7 00/15] Plane Color Pipeline support for Intel platforms Uma Shankar
` (16 preceding siblings ...)
2025-12-01 6:48 ` ✓ CI.KUnit: success " Patchwork
@ 2025-12-01 7:03 ` Patchwork
2025-12-01 7:50 ` ✓ Xe.CI.BAT: success " Patchwork
2025-12-01 8:41 ` ✗ Xe.CI.Full: failure " Patchwork
19 siblings, 0 replies; 44+ messages in thread
From: Patchwork @ 2025-12-01 7:03 UTC (permalink / raw)
To: Uma Shankar; +Cc: intel-xe
== Series Details ==
Series: Plane Color Pipeline support for Intel platforms (rev6)
URL : https://patchwork.freedesktop.org/series/141788/
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 9fcf9189976d387cb9199155c35dd6c826268c52
Sparse version: 0.6.4 (Ubuntu: 0.6.4-4ubuntu3)
Fast mode used, each commit won't be checked separately.
-
+drivers/gpu/drm/i915/display/intel_alpm.c: note: in included file:
+drivers/gpu/drm/i915/display/intel_casf.c:147: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:2081:24: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/display/intel_display_types.h:2081:24: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/display/intel_display_types.h:2081:24: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/display/intel_display_types.h:2081:24: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/display/intel_display_types.h:2081:24: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/display/intel_display_types.h:2081:24: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/display/intel_display_types.h:2081:24: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/display/intel_display_types.h:2081:24: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/display/intel_display_types.h:2081:24: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/display/intel_display_types.h:2081:24: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/display/intel_display_types.h:2081:24: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/display/intel_display_types.h:2081:24: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/display/intel_display_types.h:2081:24: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/display/intel_display_types.h:2081:24: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/display/intel_display_types.h:2081:24: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/display/intel_display_types.h:2081:24: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/display/intel_display_types.h:2094:24: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/display/intel_display_types.h:2094:24: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/display/intel_display_types.h:2094: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_lt_phy.c:1935:35: warning: Using plain integer as NULL pointer
+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/i915_irq.c:467:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:467:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:475:16: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:475:16: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:480:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:480:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:480:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:518:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:518:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:526:16: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:526:16: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:531:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:531:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:531:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:575:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:575:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:578:15: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:578:15: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:582:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:582:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:589:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:589:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:589:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:589:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/intel_uncore.c:1930:1: warning: context imbalance in 'fwtable_read8' - unexpected unlock
+drivers/gpu/drm/i915/intel_uncore.c:1931:1: warning: context imbalance in 'fwtable_read16' - unexpected unlock
+drivers/gpu/drm/i915/intel_uncore.c:1932:1: warning: context imbalance in 'fwtable_read32' - unexpected unlock
+drivers/gpu/drm/i915/intel_uncore.c:1933:1: warning: context imbalance in 'fwtable_read64' - unexpected unlock
+drivers/gpu/drm/i915/intel_uncore.c:1998:1: warning: context imbalance in 'gen6_write8' - unexpected unlock
+drivers/gpu/drm/i915/intel_uncore.c:1999:1: warning: context imbalance in 'gen6_write16' - unexpected unlock
+drivers/gpu/drm/i915/intel_uncore.c:2000:1: warning: context imbalance in 'gen6_write32' - unexpected unlock
+drivers/gpu/drm/i915/intel_uncore.c:2020:1: warning: context imbalance in 'fwtable_write8' - unexpected unlock
+drivers/gpu/drm/i915/intel_uncore.c:2021:1: warning: context imbalance in 'fwtable_write16' - unexpected unlock
+drivers/gpu/drm/i915/intel_uncore.c:2022:1: warning: context imbalance in 'fwtable_write32' - unexpected unlock
+ cleanup
++ stat -c %u:%g /kernel
+ chown -R 1003:1003 /kernel
^ permalink raw reply [flat|nested] 44+ messages in thread
* ✓ Xe.CI.BAT: success for Plane Color Pipeline support for Intel platforms (rev6)
2025-12-01 6:46 [v7 00/15] Plane Color Pipeline support for Intel platforms Uma Shankar
` (17 preceding siblings ...)
2025-12-01 7:03 ` ✗ CI.checksparse: warning " Patchwork
@ 2025-12-01 7:50 ` Patchwork
2025-12-01 8:41 ` ✗ Xe.CI.Full: failure " Patchwork
19 siblings, 0 replies; 44+ messages in thread
From: Patchwork @ 2025-12-01 7:50 UTC (permalink / raw)
To: Uma Shankar; +Cc: intel-xe
[-- Attachment #1: Type: text/plain, Size: 1872 bytes --]
== Series Details ==
Series: Plane Color Pipeline support for Intel platforms (rev6)
URL : https://patchwork.freedesktop.org/series/141788/
State : success
== Summary ==
CI Bug Log - changes from xe-4170-9fcf9189976d387cb9199155c35dd6c826268c52_BAT -> xe-pw-141788v6_BAT
====================================================
Summary
-------
**SUCCESS**
No regressions found.
Participating hosts (12 -> 12)
------------------------------
No changes in participating hosts
Known issues
------------
Here are the changes found in xe-pw-141788v6_BAT that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@xe_waitfence@abstime:
- bat-dg2-oem2: [PASS][1] -> [TIMEOUT][2] ([Intel XE#6506])
[1]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4170-9fcf9189976d387cb9199155c35dd6c826268c52/bat-dg2-oem2/igt@xe_waitfence@abstime.html
[2]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141788v6/bat-dg2-oem2/igt@xe_waitfence@abstime.html
#### Possible fixes ####
* igt@xe_waitfence@engine:
- bat-dg2-oem2: [FAIL][3] ([Intel XE#6519]) -> [PASS][4]
[3]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4170-9fcf9189976d387cb9199155c35dd6c826268c52/bat-dg2-oem2/igt@xe_waitfence@engine.html
[4]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141788v6/bat-dg2-oem2/igt@xe_waitfence@engine.html
[Intel XE#6506]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6506
[Intel XE#6519]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6519
Build changes
-------------
* Linux: xe-4170-9fcf9189976d387cb9199155c35dd6c826268c52 -> xe-pw-141788v6
IGT_8645: 8645
xe-4170-9fcf9189976d387cb9199155c35dd6c826268c52: 9fcf9189976d387cb9199155c35dd6c826268c52
xe-pw-141788v6: 141788v6
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141788v6/index.html
[-- Attachment #2: Type: text/html, Size: 2459 bytes --]
^ permalink raw reply [flat|nested] 44+ messages in thread
* ✗ Xe.CI.Full: failure for Plane Color Pipeline support for Intel platforms (rev6)
2025-12-01 6:46 [v7 00/15] Plane Color Pipeline support for Intel platforms Uma Shankar
` (18 preceding siblings ...)
2025-12-01 7:50 ` ✓ Xe.CI.BAT: success " Patchwork
@ 2025-12-01 8:41 ` Patchwork
19 siblings, 0 replies; 44+ messages in thread
From: Patchwork @ 2025-12-01 8:41 UTC (permalink / raw)
To: Uma Shankar; +Cc: intel-xe
[-- Attachment #1: Type: text/plain, Size: 57137 bytes --]
== Series Details ==
Series: Plane Color Pipeline support for Intel platforms (rev6)
URL : https://patchwork.freedesktop.org/series/141788/
State : failure
== Summary ==
CI Bug Log - changes from xe-4170-9fcf9189976d387cb9199155c35dd6c826268c52_FULL -> xe-pw-141788v6_FULL
====================================================
Summary
-------
**FAILURE**
Serious unknown changes coming with xe-pw-141788v6_FULL absolutely need to be
verified manually.
If you think the reported changes have nothing to do with the changes
introduced in xe-pw-141788v6_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-141788v6_FULL:
### IGT changes ###
#### Possible regressions ####
* igt@kms_cursor_edge_walk@256x256-top-edge:
- shard-bmg: [PASS][1] -> [FAIL][2]
[1]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4170-9fcf9189976d387cb9199155c35dd6c826268c52/shard-bmg-3/igt@kms_cursor_edge_walk@256x256-top-edge.html
[2]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141788v6/shard-bmg-2/igt@kms_cursor_edge_walk@256x256-top-edge.html
* igt@kms_cursor_edge_walk@256x256-top-edge@pipe-a-hdmi-a-3:
- shard-bmg: NOTRUN -> [FAIL][3]
[3]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141788v6/shard-bmg-2/igt@kms_cursor_edge_walk@256x256-top-edge@pipe-a-hdmi-a-3.html
* igt@xe_exec_system_allocator@threads-shared-vm-many-new-prefetch:
- shard-bmg: NOTRUN -> [SKIP][4] +35 other tests skip
[4]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141788v6/shard-bmg-2/igt@xe_exec_system_allocator@threads-shared-vm-many-new-prefetch.html
* igt@xe_exec_threads@threads-hang-fd-userptr:
- shard-bmg: [PASS][5] -> [SKIP][6] +4 other tests skip
[5]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4170-9fcf9189976d387cb9199155c35dd6c826268c52/shard-bmg-3/igt@xe_exec_threads@threads-hang-fd-userptr.html
[6]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141788v6/shard-bmg-2/igt@xe_exec_threads@threads-hang-fd-userptr.html
* igt@xe_noexec_ping_pong@basic:
- shard-bmg: [PASS][7] -> [DMESG-WARN][8]
[7]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4170-9fcf9189976d387cb9199155c35dd6c826268c52/shard-bmg-3/igt@xe_noexec_ping_pong@basic.html
[8]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141788v6/shard-bmg-2/igt@xe_noexec_ping_pong@basic.html
#### Warnings ####
* igt@kms_content_protection@dp-mst-suspend-resume:
- shard-bmg: [SKIP][9] ([Intel XE#6692]) -> [SKIP][10]
[9]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4170-9fcf9189976d387cb9199155c35dd6c826268c52/shard-bmg-2/igt@kms_content_protection@dp-mst-suspend-resume.html
[10]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141788v6/shard-bmg-1/igt@kms_content_protection@dp-mst-suspend-resume.html
* igt@kms_frontbuffer_tracking@fbc-2p-primscrn-spr-indfb-fullscreen:
- shard-bmg: [SKIP][11] ([Intel XE#4141]) -> [SKIP][12] +1 other test skip
[11]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4170-9fcf9189976d387cb9199155c35dd6c826268c52/shard-bmg-3/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-spr-indfb-fullscreen.html
[12]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141788v6/shard-bmg-2/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-spr-indfb-fullscreen.html
* igt@kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-shrfb-msflip-blt:
- shard-bmg: [SKIP][13] ([Intel XE#2311]) -> [SKIP][14]
[13]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4170-9fcf9189976d387cb9199155c35dd6c826268c52/shard-bmg-3/igt@kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-shrfb-msflip-blt.html
[14]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141788v6/shard-bmg-2/igt@kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-shrfb-msflip-blt.html
* igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-cur-indfb-move:
- shard-bmg: [SKIP][15] ([Intel XE#2313]) -> [SKIP][16] +2 other tests skip
[15]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4170-9fcf9189976d387cb9199155c35dd6c826268c52/shard-bmg-3/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-cur-indfb-move.html
[16]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141788v6/shard-bmg-2/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-cur-indfb-move.html
* igt@xe_eudebug@discovery-race-vmbind:
- shard-bmg: [SKIP][17] ([Intel XE#4837]) -> [SKIP][18]
[17]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4170-9fcf9189976d387cb9199155c35dd6c826268c52/shard-bmg-3/igt@xe_eudebug@discovery-race-vmbind.html
[18]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141788v6/shard-bmg-2/igt@xe_eudebug@discovery-race-vmbind.html
* igt@xe_pm@s3-vm-bind-unbind-all:
- shard-bmg: [ABORT][19] ([Intel XE#6675]) -> [SKIP][20]
[19]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4170-9fcf9189976d387cb9199155c35dd6c826268c52/shard-bmg-3/igt@xe_pm@s3-vm-bind-unbind-all.html
[20]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141788v6/shard-bmg-2/igt@xe_pm@s3-vm-bind-unbind-all.html
* igt@xe_query@multigpu-query-invalid-extension:
- shard-bmg: [SKIP][21] ([Intel XE#944]) -> [SKIP][22]
[21]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4170-9fcf9189976d387cb9199155c35dd6c826268c52/shard-bmg-3/igt@xe_query@multigpu-query-invalid-extension.html
[22]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141788v6/shard-bmg-2/igt@xe_query@multigpu-query-invalid-extension.html
New tests
---------
New tests have been introduced between xe-4170-9fcf9189976d387cb9199155c35dd6c826268c52_FULL and xe-pw-141788v6_FULL:
### New IGT tests (26) ###
* igt@kms_color@deep-color@pipe-a-dp-2-ctm:
- Statuses : 1 pass(s)
- Exec time: [4.76] s
* igt@kms_color@deep-color@pipe-a-dp-2-degamma:
- Statuses : 1 pass(s)
- Exec time: [4.73] s
* igt@kms_color@deep-color@pipe-a-dp-2-gamma:
- Statuses : 1 pass(s)
- Exec time: [4.73] s
* igt@kms_color@deep-color@pipe-b-dp-2-ctm:
- Statuses : 1 pass(s)
- Exec time: [4.76] s
* igt@kms_color@deep-color@pipe-b-dp-2-degamma:
- Statuses : 1 pass(s)
- Exec time: [4.75] s
* igt@kms_color@deep-color@pipe-b-dp-2-gamma:
- Statuses : 1 pass(s)
- Exec time: [4.75] s
* igt@kms_color@deep-color@pipe-c-dp-2-ctm:
- Statuses : 1 pass(s)
- Exec time: [4.73] s
* igt@kms_color@deep-color@pipe-c-dp-2-degamma:
- Statuses : 1 pass(s)
- Exec time: [4.75] s
* igt@kms_color@deep-color@pipe-c-dp-2-gamma:
- Statuses : 1 pass(s)
- Exec time: [4.75] s
* igt@kms_color@deep-color@pipe-d-dp-2-ctm:
- Statuses : 1 pass(s)
- Exec time: [4.74] s
* igt@kms_color@deep-color@pipe-d-dp-2-degamma:
- Statuses : 1 pass(s)
- Exec time: [4.74] s
* igt@kms_color@deep-color@pipe-d-dp-2-gamma:
- Statuses : 1 pass(s)
- Exec time: [4.75] s
* igt@kms_cursor_crc@cursor-offscreen-256x256@pipe-a-dp-2:
- Statuses : 1 pass(s)
- Exec time: [2.69] s
* igt@kms_cursor_crc@cursor-offscreen-256x256@pipe-d-dp-2:
- Statuses : 1 pass(s)
- Exec time: [2.50] s
* igt@kms_plane_alpha_blend@constant-alpha-mid@pipe-a-dp-2:
- Statuses : 1 pass(s)
- Exec time: [0.75] s
* igt@kms_plane_alpha_blend@constant-alpha-mid@pipe-d-dp-2:
- Statuses : 1 pass(s)
- Exec time: [0.73] s
* igt@kms_pm_rpm@legacy-planes-dpms@plane-123:
- Statuses : 1 pass(s)
- Exec time: [7.87] s
* igt@kms_pm_rpm@legacy-planes-dpms@plane-133:
- Statuses : 1 pass(s)
- Exec time: [7.87] s
* igt@kms_pm_rpm@legacy-planes@plane-123:
- Statuses : 4 pass(s)
- Exec time: [2.63, 12.72] s
* igt@kms_pm_rpm@legacy-planes@plane-133:
- Statuses : 4 pass(s)
- Exec time: [2.58, 12.71] s
* igt@kms_pm_rpm@universal-planes-dpms@plane-123:
- Statuses : 3 pass(s)
- Exec time: [4.42, 12.03] s
* igt@kms_pm_rpm@universal-planes-dpms@plane-133:
- Statuses : 3 pass(s)
- Exec time: [5.83, 12.03] s
* igt@kms_pm_rpm@universal-planes-dpms@plane-143:
- Statuses : 3 pass(s)
- Exec time: [4.50, 12.02] s
* igt@kms_pm_rpm@universal-planes@plane-123:
- Statuses : 1 pass(s)
- Exec time: [12.84] s
* igt@kms_pm_rpm@universal-planes@plane-133:
- Statuses : 1 pass(s)
- Exec time: [12.84] s
* igt@kms_pm_rpm@universal-planes@plane-143:
- Statuses : 1 pass(s)
- Exec time: [12.12] s
Known issues
------------
Here are the changes found in xe-pw-141788v6_FULL that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@kms_async_flips@async-flip-suspend-resume@pipe-c-hdmi-a-1:
- shard-adlp: NOTRUN -> [DMESG-WARN][23] ([Intel XE#4543]) +2 other tests dmesg-warn
[23]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141788v6/shard-adlp-6/igt@kms_async_flips@async-flip-suspend-resume@pipe-c-hdmi-a-1.html
* igt@kms_async_flips@async-flip-with-page-flip-events-tiled-atomic:
- shard-adlp: [PASS][24] -> [DMESG-WARN][25] ([Intel XE#2953] / [Intel XE#4173])
[24]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4170-9fcf9189976d387cb9199155c35dd6c826268c52/shard-adlp-9/igt@kms_async_flips@async-flip-with-page-flip-events-tiled-atomic.html
[25]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141788v6/shard-adlp-8/igt@kms_async_flips@async-flip-with-page-flip-events-tiled-atomic.html
* igt@kms_big_fb@4-tiled-16bpp-rotate-270:
- shard-lnl: NOTRUN -> [SKIP][26] ([Intel XE#1407]) +1 other test skip
[26]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141788v6/shard-lnl-7/igt@kms_big_fb@4-tiled-16bpp-rotate-270.html
* igt@kms_big_fb@4-tiled-max-hw-stride-32bpp-rotate-180-async-flip:
- shard-adlp: NOTRUN -> [SKIP][27] ([Intel XE#1124]) +6 other tests skip
[27]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141788v6/shard-adlp-6/igt@kms_big_fb@4-tiled-max-hw-stride-32bpp-rotate-180-async-flip.html
* igt@kms_big_fb@x-tiled-32bpp-rotate-270:
- shard-adlp: NOTRUN -> [SKIP][28] ([Intel XE#316]) +1 other test skip
[28]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141788v6/shard-adlp-2/igt@kms_big_fb@x-tiled-32bpp-rotate-270.html
* igt@kms_bw@linear-tiling-3-displays-2160x1440p:
- shard-adlp: NOTRUN -> [SKIP][29] ([Intel XE#367])
[29]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141788v6/shard-adlp-6/igt@kms_bw@linear-tiling-3-displays-2160x1440p.html
* igt@kms_bw@linear-tiling-4-displays-2160x1440p:
- shard-lnl: NOTRUN -> [SKIP][30] ([Intel XE#1512])
[30]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141788v6/shard-lnl-7/igt@kms_bw@linear-tiling-4-displays-2160x1440p.html
* igt@kms_ccs@bad-pixel-format-4-tiled-mtl-mc-ccs:
- shard-lnl: NOTRUN -> [SKIP][31] ([Intel XE#2887]) +1 other test skip
[31]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141788v6/shard-lnl-7/igt@kms_ccs@bad-pixel-format-4-tiled-mtl-mc-ccs.html
* igt@kms_ccs@crc-primary-rotation-180-4-tiled-dg2-rc-ccs@pipe-b-hdmi-a-1:
- shard-adlp: NOTRUN -> [SKIP][32] ([Intel XE#787]) +8 other tests skip
[32]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141788v6/shard-adlp-6/igt@kms_ccs@crc-primary-rotation-180-4-tiled-dg2-rc-ccs@pipe-b-hdmi-a-1.html
* igt@kms_ccs@crc-primary-rotation-180-4-tiled-dg2-rc-ccs@pipe-d-hdmi-a-1:
- shard-adlp: NOTRUN -> [SKIP][33] ([Intel XE#455] / [Intel XE#787]) +5 other tests skip
[33]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141788v6/shard-adlp-6/igt@kms_ccs@crc-primary-rotation-180-4-tiled-dg2-rc-ccs@pipe-d-hdmi-a-1.html
* igt@kms_ccs@crc-primary-suspend-4-tiled-lnl-ccs:
- shard-adlp: NOTRUN -> [SKIP][34] ([Intel XE#3442])
[34]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141788v6/shard-adlp-9/igt@kms_ccs@crc-primary-suspend-4-tiled-lnl-ccs.html
* igt@kms_ccs@crc-primary-suspend-y-tiled-gen12-rc-ccs-cc:
- shard-lnl: NOTRUN -> [SKIP][35] ([Intel XE#3432])
[35]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141788v6/shard-lnl-5/igt@kms_ccs@crc-primary-suspend-y-tiled-gen12-rc-ccs-cc.html
* igt@kms_cdclk@mode-transition:
- shard-adlp: NOTRUN -> [SKIP][36] ([Intel XE#4417] / [Intel XE#455])
[36]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141788v6/shard-adlp-6/igt@kms_cdclk@mode-transition.html
* igt@kms_cdclk@mode-transition@pipe-a-hdmi-a-1:
- shard-adlp: NOTRUN -> [SKIP][37] ([Intel XE#4417]) +2 other tests skip
[37]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141788v6/shard-adlp-6/igt@kms_cdclk@mode-transition@pipe-a-hdmi-a-1.html
* igt@kms_chamelium_color@ctm-green-to-red:
- shard-adlp: NOTRUN -> [SKIP][38] ([Intel XE#306])
[38]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141788v6/shard-adlp-6/igt@kms_chamelium_color@ctm-green-to-red.html
* igt@kms_chamelium_color@ctm-max:
- shard-lnl: NOTRUN -> [SKIP][39] ([Intel XE#306])
[39]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141788v6/shard-lnl-5/igt@kms_chamelium_color@ctm-max.html
* igt@kms_chamelium_hpd@hdmi-hpd-after-suspend:
- shard-adlp: NOTRUN -> [SKIP][40] ([Intel XE#373]) +3 other tests skip
[40]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141788v6/shard-adlp-6/igt@kms_chamelium_hpd@hdmi-hpd-after-suspend.html
* igt@kms_chamelium_hpd@vga-hpd-without-ddc:
- shard-lnl: NOTRUN -> [SKIP][41] ([Intel XE#373])
[41]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141788v6/shard-lnl-7/igt@kms_chamelium_hpd@vga-hpd-without-ddc.html
* igt@kms_colorop@plane-xr24-xr24-ctm_3x4_bt709_enc:
- shard-lnl: NOTRUN -> [SKIP][42] ([Intel XE#6704]) +2 other tests skip
[42]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141788v6/shard-lnl-7/igt@kms_colorop@plane-xr24-xr24-ctm_3x4_bt709_enc.html
* igt@kms_colorop@plane-xr24-xr24-pq_125_eotf-pq_125_inv_eotf-pq_125_eotf:
- shard-adlp: NOTRUN -> [SKIP][43] ([Intel XE#6704]) +2 other tests skip
[43]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141788v6/shard-adlp-1/igt@kms_colorop@plane-xr24-xr24-pq_125_eotf-pq_125_inv_eotf-pq_125_eotf.html
* igt@kms_content_protection@atomic@pipe-a-dp-2:
- shard-bmg: NOTRUN -> [FAIL][44] ([Intel XE#1178])
[44]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141788v6/shard-bmg-1/igt@kms_content_protection@atomic@pipe-a-dp-2.html
* igt@kms_content_protection@dp-mst-lic-type-0:
- shard-adlp: NOTRUN -> [SKIP][45] ([Intel XE#307])
[45]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141788v6/shard-adlp-9/igt@kms_content_protection@dp-mst-lic-type-0.html
* igt@kms_cursor_crc@cursor-offscreen-max-size:
- shard-lnl: NOTRUN -> [SKIP][46] ([Intel XE#1424])
[46]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141788v6/shard-lnl-7/igt@kms_cursor_crc@cursor-offscreen-max-size.html
* igt@kms_cursor_legacy@2x-flip-vs-cursor-legacy:
- shard-adlp: NOTRUN -> [SKIP][47] ([Intel XE#309]) +3 other tests skip
[47]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141788v6/shard-adlp-6/igt@kms_cursor_legacy@2x-flip-vs-cursor-legacy.html
* igt@kms_cursor_legacy@2x-long-flip-vs-cursor-atomic:
- shard-bmg: [PASS][48] -> [SKIP][49] ([Intel XE#2291]) +1 other test skip
[48]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4170-9fcf9189976d387cb9199155c35dd6c826268c52/shard-bmg-7/igt@kms_cursor_legacy@2x-long-flip-vs-cursor-atomic.html
[49]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141788v6/shard-bmg-6/igt@kms_cursor_legacy@2x-long-flip-vs-cursor-atomic.html
* igt@kms_cursor_legacy@2x-long-nonblocking-modeset-vs-cursor-atomic:
- shard-lnl: NOTRUN -> [SKIP][50] ([Intel XE#309])
[50]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141788v6/shard-lnl-7/igt@kms_cursor_legacy@2x-long-nonblocking-modeset-vs-cursor-atomic.html
* igt@kms_dither@fb-8bpc-vs-panel-8bpc:
- shard-adlp: NOTRUN -> [SKIP][51] ([Intel XE#455]) +3 other tests skip
[51]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141788v6/shard-adlp-6/igt@kms_dither@fb-8bpc-vs-panel-8bpc.html
* igt@kms_dp_aux_dev:
- shard-adlp: NOTRUN -> [SKIP][52] ([Intel XE#3009])
[52]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141788v6/shard-adlp-2/igt@kms_dp_aux_dev.html
* igt@kms_dsc@dsc-fractional-bpp-with-bpc:
- shard-lnl: NOTRUN -> [SKIP][53] ([Intel XE#2244])
[53]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141788v6/shard-lnl-7/igt@kms_dsc@dsc-fractional-bpp-with-bpc.html
* igt@kms_feature_discovery@display-2x:
- shard-adlp: NOTRUN -> [SKIP][54] ([Intel XE#702])
[54]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141788v6/shard-adlp-9/igt@kms_feature_discovery@display-2x.html
* igt@kms_flip@2x-nonexisting-fb-interruptible:
- shard-lnl: NOTRUN -> [SKIP][55] ([Intel XE#1421])
[55]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141788v6/shard-lnl-7/igt@kms_flip@2x-nonexisting-fb-interruptible.html
* igt@kms_flip@2x-plain-flip-fb-recreate-interruptible:
- shard-adlp: NOTRUN -> [SKIP][56] ([Intel XE#310]) +4 other tests skip
[56]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141788v6/shard-adlp-6/igt@kms_flip@2x-plain-flip-fb-recreate-interruptible.html
* igt@kms_flip@2x-plain-flip-ts-check-interruptible:
- shard-bmg: [PASS][57] -> [SKIP][58] ([Intel XE#2316]) +7 other tests skip
[57]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4170-9fcf9189976d387cb9199155c35dd6c826268c52/shard-bmg-7/igt@kms_flip@2x-plain-flip-ts-check-interruptible.html
[58]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141788v6/shard-bmg-6/igt@kms_flip@2x-plain-flip-ts-check-interruptible.html
* igt@kms_flip@blocking-wf_vblank@b-dp2:
- shard-bmg: [PASS][59] -> [FAIL][60] ([Intel XE#5338] / [Intel XE#6266])
[59]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4170-9fcf9189976d387cb9199155c35dd6c826268c52/shard-bmg-8/igt@kms_flip@blocking-wf_vblank@b-dp2.html
[60]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141788v6/shard-bmg-4/igt@kms_flip@blocking-wf_vblank@b-dp2.html
* igt@kms_flip@flip-vs-absolute-wf_vblank:
- shard-lnl: [PASS][61] -> [FAIL][62] ([Intel XE#5337] / [Intel XE#6266]) +1 other test fail
[61]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4170-9fcf9189976d387cb9199155c35dd6c826268c52/shard-lnl-3/igt@kms_flip@flip-vs-absolute-wf_vblank.html
[62]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141788v6/shard-lnl-4/igt@kms_flip@flip-vs-absolute-wf_vblank.html
* igt@kms_flip_scaled_crc@flip-32bpp-linear-to-64bpp-linear-downscaling:
- shard-lnl: NOTRUN -> [SKIP][63] ([Intel XE#1397] / [Intel XE#1745])
[63]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141788v6/shard-lnl-5/igt@kms_flip_scaled_crc@flip-32bpp-linear-to-64bpp-linear-downscaling.html
* igt@kms_flip_scaled_crc@flip-32bpp-linear-to-64bpp-linear-downscaling@pipe-a-default-mode:
- shard-lnl: NOTRUN -> [SKIP][64] ([Intel XE#1397])
[64]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141788v6/shard-lnl-5/igt@kms_flip_scaled_crc@flip-32bpp-linear-to-64bpp-linear-downscaling@pipe-a-default-mode.html
* igt@kms_flip_scaled_crc@flip-32bpp-yftile-to-64bpp-yftile-upscaling:
- shard-lnl: NOTRUN -> [SKIP][65] ([Intel XE#1401] / [Intel XE#1745])
[65]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141788v6/shard-lnl-7/igt@kms_flip_scaled_crc@flip-32bpp-yftile-to-64bpp-yftile-upscaling.html
* igt@kms_flip_scaled_crc@flip-32bpp-yftile-to-64bpp-yftile-upscaling@pipe-a-default-mode:
- shard-lnl: NOTRUN -> [SKIP][66] ([Intel XE#1401])
[66]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141788v6/shard-lnl-7/igt@kms_flip_scaled_crc@flip-32bpp-yftile-to-64bpp-yftile-upscaling@pipe-a-default-mode.html
* igt@kms_frontbuffer_tracking@drrs-1p-primscrn-spr-indfb-draw-mmap-wc:
- shard-dg2-set2: NOTRUN -> [SKIP][67] ([Intel XE#651])
[67]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141788v6/shard-dg2-434/igt@kms_frontbuffer_tracking@drrs-1p-primscrn-spr-indfb-draw-mmap-wc.html
* igt@kms_frontbuffer_tracking@fbc-2p-primscrn-indfb-plflip-blt:
- shard-adlp: NOTRUN -> [SKIP][68] ([Intel XE#656]) +12 other tests skip
[68]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141788v6/shard-adlp-6/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-indfb-plflip-blt.html
* igt@kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-cur-indfb-draw-mmap-wc:
- shard-lnl: NOTRUN -> [SKIP][69] ([Intel XE#651])
[69]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141788v6/shard-lnl-7/igt@kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-cur-indfb-draw-mmap-wc.html
* igt@kms_frontbuffer_tracking@fbcdrrs-rgb101010-draw-render:
- shard-adlp: NOTRUN -> [SKIP][70] ([Intel XE#651]) +5 other tests skip
[70]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141788v6/shard-adlp-9/igt@kms_frontbuffer_tracking@fbcdrrs-rgb101010-draw-render.html
* igt@kms_frontbuffer_tracking@fbcpsr-indfb-scaledprimary:
- shard-adlp: NOTRUN -> [SKIP][71] ([Intel XE#653]) +4 other tests skip
[71]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141788v6/shard-adlp-6/igt@kms_frontbuffer_tracking@fbcpsr-indfb-scaledprimary.html
* igt@kms_frontbuffer_tracking@psr-2p-scndscrn-pri-indfb-draw-mmap-wc:
- shard-lnl: NOTRUN -> [SKIP][72] ([Intel XE#656]) +2 other tests skip
[72]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141788v6/shard-lnl-7/igt@kms_frontbuffer_tracking@psr-2p-scndscrn-pri-indfb-draw-mmap-wc.html
* igt@kms_hdr@bpc-switch-dpms:
- shard-bmg: [PASS][73] -> [ABORT][74] ([Intel XE#6662]) +1 other test abort
[73]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4170-9fcf9189976d387cb9199155c35dd6c826268c52/shard-bmg-4/igt@kms_hdr@bpc-switch-dpms.html
[74]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141788v6/shard-bmg-5/igt@kms_hdr@bpc-switch-dpms.html
* igt@kms_hdr@bpc-switch-suspend:
- shard-lnl: [PASS][75] -> [ABORT][76] ([Intel XE#6675]) +1 other test abort
[75]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4170-9fcf9189976d387cb9199155c35dd6c826268c52/shard-lnl-7/igt@kms_hdr@bpc-switch-suspend.html
[76]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141788v6/shard-lnl-8/igt@kms_hdr@bpc-switch-suspend.html
* igt@kms_hdr@bpc-switch-suspend@pipe-a-hdmi-a-3:
- shard-bmg: NOTRUN -> [ABORT][77] ([Intel XE#6675]) +1 other test abort
[77]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141788v6/shard-bmg-6/igt@kms_hdr@bpc-switch-suspend@pipe-a-hdmi-a-3.html
* igt@kms_hdr@brightness-with-hdr:
- shard-lnl: NOTRUN -> [SKIP][78] ([Intel XE#3374] / [Intel XE#3544])
[78]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141788v6/shard-lnl-7/igt@kms_hdr@brightness-with-hdr.html
* igt@kms_hdr@static-toggle-suspend:
- shard-lnl: NOTRUN -> [SKIP][79] ([Intel XE#1503])
[79]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141788v6/shard-lnl-5/igt@kms_hdr@static-toggle-suspend.html
* igt@kms_joiner@invalid-modeset-ultra-joiner:
- shard-adlp: NOTRUN -> [SKIP][80] ([Intel XE#2925] / [Intel XE#2927])
[80]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141788v6/shard-adlp-2/igt@kms_joiner@invalid-modeset-ultra-joiner.html
* igt@kms_joiner@switch-modeset-ultra-joiner-big-joiner:
- shard-lnl: NOTRUN -> [SKIP][81] ([Intel XE#2925])
[81]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141788v6/shard-lnl-7/igt@kms_joiner@switch-modeset-ultra-joiner-big-joiner.html
* igt@kms_plane_multiple@2x-tiling-4:
- shard-adlp: NOTRUN -> [SKIP][82] ([Intel XE#4596])
[82]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141788v6/shard-adlp-6/igt@kms_plane_multiple@2x-tiling-4.html
* igt@kms_plane_multiple@tiling-4:
- shard-adlp: NOTRUN -> [SKIP][83] ([Intel XE#5020])
[83]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141788v6/shard-adlp-9/igt@kms_plane_multiple@tiling-4.html
* igt@kms_pm_rpm@dpms-non-lpsp:
- shard-adlp: NOTRUN -> [SKIP][84] ([Intel XE#836])
[84]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141788v6/shard-adlp-2/igt@kms_pm_rpm@dpms-non-lpsp.html
* igt@kms_psr2_sf@pr-cursor-plane-move-continuous-sf:
- shard-lnl: NOTRUN -> [SKIP][85] ([Intel XE#1406] / [Intel XE#2893])
[85]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141788v6/shard-lnl-5/igt@kms_psr2_sf@pr-cursor-plane-move-continuous-sf.html
* igt@kms_psr2_sf@pr-primary-plane-update-sf-dmg-area-big-fb:
- shard-adlp: NOTRUN -> [SKIP][86] ([Intel XE#1406] / [Intel XE#1489]) +3 other tests skip
[86]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141788v6/shard-adlp-6/igt@kms_psr2_sf@pr-primary-plane-update-sf-dmg-area-big-fb.html
* igt@kms_psr2_su@page_flip-nv12:
- shard-lnl: NOTRUN -> [SKIP][87] ([Intel XE#1128] / [Intel XE#1406])
[87]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141788v6/shard-lnl-7/igt@kms_psr2_su@page_flip-nv12.html
* igt@kms_psr@fbc-pr-cursor-plane-onoff:
- shard-lnl: NOTRUN -> [SKIP][88] ([Intel XE#1406])
[88]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141788v6/shard-lnl-7/igt@kms_psr@fbc-pr-cursor-plane-onoff.html
* igt@kms_psr@psr-sprite-plane-onoff:
- shard-adlp: NOTRUN -> [SKIP][89] ([Intel XE#1406] / [Intel XE#2850] / [Intel XE#929]) +6 other tests skip
[89]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141788v6/shard-adlp-9/igt@kms_psr@psr-sprite-plane-onoff.html
* igt@kms_rotation_crc@primary-y-tiled-reflect-x-90:
- shard-lnl: NOTRUN -> [SKIP][90] ([Intel XE#3414] / [Intel XE#3904])
[90]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141788v6/shard-lnl-5/igt@kms_rotation_crc@primary-y-tiled-reflect-x-90.html
* igt@kms_setmode@basic@pipe-b-edp-1:
- shard-lnl: [PASS][91] -> [FAIL][92] ([Intel XE#6361]) +2 other tests fail
[91]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4170-9fcf9189976d387cb9199155c35dd6c826268c52/shard-lnl-8/igt@kms_setmode@basic@pipe-b-edp-1.html
[92]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141788v6/shard-lnl-2/igt@kms_setmode@basic@pipe-b-edp-1.html
* igt@kms_tv_load_detect@load-detect:
- shard-adlp: NOTRUN -> [SKIP][93] ([Intel XE#330])
[93]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141788v6/shard-adlp-6/igt@kms_tv_load_detect@load-detect.html
* igt@kms_vrr@negative-basic:
- shard-bmg: [PASS][94] -> [SKIP][95] ([Intel XE#1499])
[94]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4170-9fcf9189976d387cb9199155c35dd6c826268c52/shard-bmg-7/igt@kms_vrr@negative-basic.html
[95]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141788v6/shard-bmg-6/igt@kms_vrr@negative-basic.html
* igt@xe_ccs@large-ctrl-surf-copy:
- shard-adlp: NOTRUN -> [SKIP][96] ([Intel XE#3576] / [Intel XE#5610])
[96]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141788v6/shard-adlp-6/igt@xe_ccs@large-ctrl-surf-copy.html
* igt@xe_compute_preempt@compute-preempt-many-vram:
- shard-lnl: NOTRUN -> [SKIP][97] ([Intel XE#5191])
[97]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141788v6/shard-lnl-7/igt@xe_compute_preempt@compute-preempt-many-vram.html
* igt@xe_copy_basic@mem-set-linear-0x3fff:
- shard-adlp: NOTRUN -> [SKIP][98] ([Intel XE#1126]) +1 other test skip
[98]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141788v6/shard-adlp-6/igt@xe_copy_basic@mem-set-linear-0x3fff.html
* igt@xe_eu_stall@unprivileged-access:
- shard-adlp: NOTRUN -> [SKIP][99] ([Intel XE#5626])
[99]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141788v6/shard-adlp-6/igt@xe_eu_stall@unprivileged-access.html
* igt@xe_eudebug@basic-read-event:
- shard-adlp: NOTRUN -> [SKIP][100] ([Intel XE#4837] / [Intel XE#5565]) +2 other tests skip
[100]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141788v6/shard-adlp-9/igt@xe_eudebug@basic-read-event.html
* igt@xe_eudebug_online@pagefault-read:
- shard-lnl: NOTRUN -> [SKIP][101] ([Intel XE#4837]) +1 other test skip
[101]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141788v6/shard-lnl-5/igt@xe_eudebug_online@pagefault-read.html
* igt@xe_evict@evict-beng-large-multi-vm-cm:
- shard-lnl: NOTRUN -> [SKIP][102] ([Intel XE#688])
[102]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141788v6/shard-lnl-5/igt@xe_evict@evict-beng-large-multi-vm-cm.html
* igt@xe_evict@evict-beng-threads-small:
- shard-adlp: NOTRUN -> [SKIP][103] ([Intel XE#261])
[103]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141788v6/shard-adlp-6/igt@xe_evict@evict-beng-threads-small.html
* igt@xe_evict@evict-mixed-many-threads-small:
- shard-bmg: [PASS][104] -> [INCOMPLETE][105] ([Intel XE#6321] / [Intel XE#6606])
[104]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4170-9fcf9189976d387cb9199155c35dd6c826268c52/shard-bmg-3/igt@xe_evict@evict-mixed-many-threads-small.html
[105]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141788v6/shard-bmg-2/igt@xe_evict@evict-mixed-many-threads-small.html
* igt@xe_evict@evict-small-cm:
- shard-adlp: NOTRUN -> [SKIP][106] ([Intel XE#261] / [Intel XE#5564] / [Intel XE#688]) +1 other test skip
[106]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141788v6/shard-adlp-9/igt@xe_evict@evict-small-cm.html
* igt@xe_evict_ccs@evict-overcommit-standalone-nofree-samefd:
- shard-adlp: NOTRUN -> [SKIP][107] ([Intel XE#688])
[107]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141788v6/shard-adlp-9/igt@xe_evict_ccs@evict-overcommit-standalone-nofree-samefd.html
* igt@xe_exec_basic@multigpu-many-execqueues-many-vm-bindexecqueue-userptr-invalidate-race:
- shard-lnl: NOTRUN -> [SKIP][108] ([Intel XE#1392]) +1 other test skip
[108]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141788v6/shard-lnl-7/igt@xe_exec_basic@multigpu-many-execqueues-many-vm-bindexecqueue-userptr-invalidate-race.html
* igt@xe_exec_basic@multigpu-once-bindexecqueue-userptr-rebind:
- shard-adlp: NOTRUN -> [SKIP][109] ([Intel XE#1392] / [Intel XE#5575]) +5 other tests skip
[109]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141788v6/shard-adlp-6/igt@xe_exec_basic@multigpu-once-bindexecqueue-userptr-rebind.html
* igt@xe_exec_fault_mode@invalid-va-scratch-nopagefault:
- shard-adlp: NOTRUN -> [SKIP][110] ([Intel XE#288] / [Intel XE#5561]) +12 other tests skip
[110]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141788v6/shard-adlp-9/igt@xe_exec_fault_mode@invalid-va-scratch-nopagefault.html
* igt@xe_exec_reset@cm-close-fd:
- shard-adlp: [PASS][111] -> [DMESG-WARN][112] ([Intel XE#3868])
[111]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4170-9fcf9189976d387cb9199155c35dd6c826268c52/shard-adlp-1/igt@xe_exec_reset@cm-close-fd.html
[112]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141788v6/shard-adlp-3/igt@xe_exec_reset@cm-close-fd.html
* igt@xe_exec_system_allocator@once-mmap-new-nomemset:
- shard-bmg: NOTRUN -> [SKIP][113] ([Intel XE#6703])
[113]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141788v6/shard-bmg-2/igt@xe_exec_system_allocator@once-mmap-new-nomemset.html
* igt@xe_exec_system_allocator@process-many-large-mmap-remap-ro-dontunmap-eocheck:
- shard-adlp: NOTRUN -> [SKIP][114] ([Intel XE#4915]) +113 other tests skip
[114]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141788v6/shard-adlp-6/igt@xe_exec_system_allocator@process-many-large-mmap-remap-ro-dontunmap-eocheck.html
* igt@xe_exec_system_allocator@process-many-mmap-file-mlock-nomemset:
- shard-dg2-set2: NOTRUN -> [SKIP][115] ([Intel XE#4915]) +2 other tests skip
[115]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141788v6/shard-dg2-434/igt@xe_exec_system_allocator@process-many-mmap-file-mlock-nomemset.html
* igt@xe_exec_system_allocator@process-many-stride-mmap-shared-remap-dontunmap:
- shard-bmg: [PASS][116] -> [SKIP][117] ([Intel XE#6557])
[116]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4170-9fcf9189976d387cb9199155c35dd6c826268c52/shard-bmg-3/igt@xe_exec_system_allocator@process-many-stride-mmap-shared-remap-dontunmap.html
[117]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141788v6/shard-bmg-2/igt@xe_exec_system_allocator@process-many-stride-mmap-shared-remap-dontunmap.html
* igt@xe_exec_system_allocator@threads-shared-vm-many-large-mmap-huge-nomemset:
- shard-lnl: NOTRUN -> [SKIP][118] ([Intel XE#4943]) +2 other tests skip
[118]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141788v6/shard-lnl-7/igt@xe_exec_system_allocator@threads-shared-vm-many-large-mmap-huge-nomemset.html
* igt@xe_exec_system_allocator@threads-shared-vm-many-large-new-busy:
- shard-bmg: NOTRUN -> [SKIP][119] ([Intel XE#6557]) +3 other tests skip
[119]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141788v6/shard-bmg-2/igt@xe_exec_system_allocator@threads-shared-vm-many-large-new-busy.html
* igt@xe_oa@rc6-disable:
- shard-adlp: NOTRUN -> [SKIP][120] ([Intel XE#3573]) +3 other tests skip
[120]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141788v6/shard-adlp-6/igt@xe_oa@rc6-disable.html
* igt@xe_pm@s2idle-basic:
- shard-dg2-set2: NOTRUN -> [ABORT][121] ([Intel XE#6675])
[121]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141788v6/shard-dg2-434/igt@xe_pm@s2idle-basic.html
* igt@xe_pm@s2idle-basic-exec:
- shard-adlp: [PASS][122] -> [ABORT][123] ([Intel XE#6675]) +4 other tests abort
[122]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4170-9fcf9189976d387cb9199155c35dd6c826268c52/shard-adlp-2/igt@xe_pm@s2idle-basic-exec.html
[123]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141788v6/shard-adlp-6/igt@xe_pm@s2idle-basic-exec.html
* igt@xe_pm@s3-d3cold-basic-exec:
- shard-lnl: NOTRUN -> [SKIP][124] ([Intel XE#2284] / [Intel XE#366])
[124]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141788v6/shard-lnl-7/igt@xe_pm@s3-d3cold-basic-exec.html
* igt@xe_pm@s3-vm-bind-unbind-all:
- shard-dg2-set2: [PASS][125] -> [ABORT][126] ([Intel XE#6675])
[125]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4170-9fcf9189976d387cb9199155c35dd6c826268c52/shard-dg2-432/igt@xe_pm@s3-vm-bind-unbind-all.html
[126]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141788v6/shard-dg2-464/igt@xe_pm@s3-vm-bind-unbind-all.html
* igt@xe_pm@s4-multiple-execs:
- shard-bmg: [PASS][127] -> [ABORT][128] ([Intel XE#6675])
[127]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4170-9fcf9189976d387cb9199155c35dd6c826268c52/shard-bmg-2/igt@xe_pm@s4-multiple-execs.html
[128]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141788v6/shard-bmg-6/igt@xe_pm@s4-multiple-execs.html
* igt@xe_pm@s4-vm-bind-prefetch:
- shard-adlp: NOTRUN -> [ABORT][129] ([Intel XE#6675])
[129]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141788v6/shard-adlp-1/igt@xe_pm@s4-vm-bind-prefetch.html
* igt@xe_pm@s4-vm-bind-unbind-all:
- shard-lnl: NOTRUN -> [ABORT][130] ([Intel XE#6675])
[130]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141788v6/shard-lnl-7/igt@xe_pm@s4-vm-bind-unbind-all.html
* igt@xe_pmu@engine-activity-accuracy-90@engine-drm_xe_engine_class_video_enhance0:
- shard-lnl: [PASS][131] -> [FAIL][132] ([Intel XE#6251])
[131]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4170-9fcf9189976d387cb9199155c35dd6c826268c52/shard-lnl-4/igt@xe_pmu@engine-activity-accuracy-90@engine-drm_xe_engine_class_video_enhance0.html
[132]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141788v6/shard-lnl-5/igt@xe_pmu@engine-activity-accuracy-90@engine-drm_xe_engine_class_video_enhance0.html
* igt@xe_query@multigpu-query-invalid-size:
- shard-adlp: NOTRUN -> [SKIP][133] ([Intel XE#944]) +1 other test skip
[133]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141788v6/shard-adlp-6/igt@xe_query@multigpu-query-invalid-size.html
* igt@xe_sriov_vram@vf-access-after-resize-down:
- shard-adlp: NOTRUN -> [SKIP][134] ([Intel XE#6376])
[134]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141788v6/shard-adlp-2/igt@xe_sriov_vram@vf-access-after-resize-down.html
#### Possible fixes ####
* igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-0-hflip-async-flip:
- shard-adlp: [FAIL][135] ([Intel XE#1231]) -> [PASS][136] +1 other test pass
[135]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4170-9fcf9189976d387cb9199155c35dd6c826268c52/shard-adlp-4/igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-0-hflip-async-flip.html
[136]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141788v6/shard-adlp-3/igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-0-hflip-async-flip.html
* igt@kms_bw@connected-linear-tiling-2-displays-2560x1440p:
- shard-bmg: [SKIP][137] ([Intel XE#2314] / [Intel XE#2894]) -> [PASS][138]
[137]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4170-9fcf9189976d387cb9199155c35dd6c826268c52/shard-bmg-2/igt@kms_bw@connected-linear-tiling-2-displays-2560x1440p.html
[138]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141788v6/shard-bmg-1/igt@kms_bw@connected-linear-tiling-2-displays-2560x1440p.html
* igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs:
- shard-dg2-set2: [INCOMPLETE][139] ([Intel XE#1727] / [Intel XE#3113] / [Intel XE#4345] / [Intel XE#6168]) -> [PASS][140] +1 other test pass
[139]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4170-9fcf9189976d387cb9199155c35dd6c826268c52/shard-dg2-466/igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs.html
[140]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141788v6/shard-dg2-434/igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs.html
* igt@kms_cursor_legacy@2x-long-nonblocking-modeset-vs-cursor-atomic:
- shard-bmg: [SKIP][141] ([Intel XE#2291]) -> [PASS][142] +1 other test pass
[141]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4170-9fcf9189976d387cb9199155c35dd6c826268c52/shard-bmg-6/igt@kms_cursor_legacy@2x-long-nonblocking-modeset-vs-cursor-atomic.html
[142]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141788v6/shard-bmg-1/igt@kms_cursor_legacy@2x-long-nonblocking-modeset-vs-cursor-atomic.html
* igt@kms_flip@2x-plain-flip-interruptible:
- shard-bmg: [SKIP][143] ([Intel XE#2316]) -> [PASS][144] +2 other tests pass
[143]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4170-9fcf9189976d387cb9199155c35dd6c826268c52/shard-bmg-2/igt@kms_flip@2x-plain-flip-interruptible.html
[144]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141788v6/shard-bmg-1/igt@kms_flip@2x-plain-flip-interruptible.html
* igt@kms_force_connector_basic@force-connector-state:
- shard-adlp: [DMESG-WARN][145] ([Intel XE#2953] / [Intel XE#4173]) -> [PASS][146]
[145]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4170-9fcf9189976d387cb9199155c35dd6c826268c52/shard-adlp-9/igt@kms_force_connector_basic@force-connector-state.html
[146]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141788v6/shard-adlp-8/igt@kms_force_connector_basic@force-connector-state.html
* igt@kms_setmode@basic@pipe-a-dp-4:
- shard-dg2-set2: [FAIL][147] ([Intel XE#6361]) -> [PASS][148] +1 other test pass
[147]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4170-9fcf9189976d387cb9199155c35dd6c826268c52/shard-dg2-432/igt@kms_setmode@basic@pipe-a-dp-4.html
[148]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141788v6/shard-dg2-432/igt@kms_setmode@basic@pipe-a-dp-4.html
* igt@xe_pm@s2idle-exec-after:
- shard-lnl: [ABORT][149] ([Intel XE#6675]) -> [PASS][150] +1 other test pass
[149]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4170-9fcf9189976d387cb9199155c35dd6c826268c52/shard-lnl-2/igt@xe_pm@s2idle-exec-after.html
[150]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141788v6/shard-lnl-5/igt@xe_pm@s2idle-exec-after.html
* igt@xe_pm@s3-multiple-execs:
- shard-adlp: [ABORT][151] ([Intel XE#6675]) -> [PASS][152] +4 other tests pass
[151]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4170-9fcf9189976d387cb9199155c35dd6c826268c52/shard-adlp-2/igt@xe_pm@s3-multiple-execs.html
[152]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141788v6/shard-adlp-9/igt@xe_pm@s3-multiple-execs.html
* igt@xe_pmu@engine-activity-accuracy-90@engine-drm_xe_engine_class_video_decode0:
- shard-lnl: [FAIL][153] ([Intel XE#6251]) -> [PASS][154] +1 other test pass
[153]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4170-9fcf9189976d387cb9199155c35dd6c826268c52/shard-lnl-4/igt@xe_pmu@engine-activity-accuracy-90@engine-drm_xe_engine_class_video_decode0.html
[154]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141788v6/shard-lnl-5/igt@xe_pmu@engine-activity-accuracy-90@engine-drm_xe_engine_class_video_decode0.html
#### Warnings ####
* igt@kms_content_protection@atomic:
- shard-bmg: [SKIP][155] ([Intel XE#2341]) -> [FAIL][156] ([Intel XE#1178])
[155]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4170-9fcf9189976d387cb9199155c35dd6c826268c52/shard-bmg-2/igt@kms_content_protection@atomic.html
[156]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141788v6/shard-bmg-1/igt@kms_content_protection@atomic.html
* igt@kms_content_protection@legacy:
- shard-bmg: [FAIL][157] ([Intel XE#1178]) -> [SKIP][158] ([Intel XE#2341])
[157]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4170-9fcf9189976d387cb9199155c35dd6c826268c52/shard-bmg-3/igt@kms_content_protection@legacy.html
[158]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141788v6/shard-bmg-2/igt@kms_content_protection@legacy.html
* igt@kms_flip@blocking-wf_vblank:
- shard-bmg: [FAIL][159] ([Intel XE#5338] / [Intel XE#6266]) -> [FAIL][160] ([Intel XE#3098] / [Intel XE#5338] / [Intel XE#6266])
[159]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4170-9fcf9189976d387cb9199155c35dd6c826268c52/shard-bmg-8/igt@kms_flip@blocking-wf_vblank.html
[160]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141788v6/shard-bmg-4/igt@kms_flip@blocking-wf_vblank.html
* igt@kms_flip@blocking-wf_vblank@a-dp2:
- shard-bmg: [FAIL][161] ([Intel XE#5338] / [Intel XE#6266]) -> [FAIL][162] ([Intel XE#3098])
[161]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4170-9fcf9189976d387cb9199155c35dd6c826268c52/shard-bmg-8/igt@kms_flip@blocking-wf_vblank@a-dp2.html
[162]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141788v6/shard-bmg-4/igt@kms_flip@blocking-wf_vblank@a-dp2.html
* igt@kms_frontbuffer_tracking@drrs-2p-scndscrn-pri-shrfb-draw-mmap-wc:
- shard-bmg: [SKIP][163] ([Intel XE#2312]) -> [SKIP][164] ([Intel XE#2311]) +8 other tests skip
[163]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4170-9fcf9189976d387cb9199155c35dd6c826268c52/shard-bmg-2/igt@kms_frontbuffer_tracking@drrs-2p-scndscrn-pri-shrfb-draw-mmap-wc.html
[164]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141788v6/shard-bmg-1/igt@kms_frontbuffer_tracking@drrs-2p-scndscrn-pri-shrfb-draw-mmap-wc.html
* igt@kms_frontbuffer_tracking@fbc-2p-primscrn-indfb-msflip-blt:
- shard-bmg: [SKIP][165] ([Intel XE#2312]) -> [SKIP][166] ([Intel XE#4141]) +2 other tests skip
[165]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4170-9fcf9189976d387cb9199155c35dd6c826268c52/shard-bmg-2/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-indfb-msflip-blt.html
[166]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141788v6/shard-bmg-1/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-indfb-msflip-blt.html
* igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-shrfb-pgflip-blt:
- shard-bmg: [SKIP][167] ([Intel XE#4141]) -> [SKIP][168] ([Intel XE#2312]) +3 other tests skip
[167]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4170-9fcf9189976d387cb9199155c35dd6c826268c52/shard-bmg-7/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-shrfb-pgflip-blt.html
[168]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141788v6/shard-bmg-6/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-shrfb-pgflip-blt.html
* igt@kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-cur-indfb-draw-mmap-wc:
- shard-bmg: [SKIP][169] ([Intel XE#2311]) -> [SKIP][170] ([Intel XE#2312]) +11 other tests skip
[169]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4170-9fcf9189976d387cb9199155c35dd6c826268c52/shard-bmg-1/igt@kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-cur-indfb-draw-mmap-wc.html
[170]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141788v6/shard-bmg-2/igt@kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-cur-indfb-draw-mmap-wc.html
* igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-shrfb-pgflip-blt:
- shard-bmg: [SKIP][171] ([Intel XE#2313]) -> [SKIP][172] ([Intel XE#2312]) +7 other tests skip
[171]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4170-9fcf9189976d387cb9199155c35dd6c826268c52/shard-bmg-1/igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-shrfb-pgflip-blt.html
[172]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141788v6/shard-bmg-2/igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-shrfb-pgflip-blt.html
* igt@kms_frontbuffer_tracking@fbcpsr-tiling-4:
- shard-bmg: [SKIP][173] ([Intel XE#2313]) -> [SKIP][174] ([Intel XE#6557])
[173]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4170-9fcf9189976d387cb9199155c35dd6c826268c52/shard-bmg-3/igt@kms_frontbuffer_tracking@fbcpsr-tiling-4.html
[174]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141788v6/shard-bmg-2/igt@kms_frontbuffer_tracking@fbcpsr-tiling-4.html
* igt@kms_frontbuffer_tracking@psr-2p-primscrn-spr-indfb-fullscreen:
- shard-bmg: [SKIP][175] ([Intel XE#2312]) -> [SKIP][176] ([Intel XE#2313]) +5 other tests skip
[175]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4170-9fcf9189976d387cb9199155c35dd6c826268c52/shard-bmg-2/igt@kms_frontbuffer_tracking@psr-2p-primscrn-spr-indfb-fullscreen.html
[176]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141788v6/shard-bmg-1/igt@kms_frontbuffer_tracking@psr-2p-primscrn-spr-indfb-fullscreen.html
* igt@kms_hdr@brightness-with-hdr:
- shard-bmg: [SKIP][177] ([Intel XE#3544]) -> [SKIP][178] ([Intel XE#3374] / [Intel XE#3544])
[177]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4170-9fcf9189976d387cb9199155c35dd6c826268c52/shard-bmg-6/igt@kms_hdr@brightness-with-hdr.html
[178]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141788v6/shard-bmg-1/igt@kms_hdr@brightness-with-hdr.html
* igt@kms_plane_multiple@2x-tiling-y:
- shard-bmg: [SKIP][179] ([Intel XE#4596]) -> [SKIP][180] ([Intel XE#5021])
[179]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4170-9fcf9189976d387cb9199155c35dd6c826268c52/shard-bmg-2/igt@kms_plane_multiple@2x-tiling-y.html
[180]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141788v6/shard-bmg-1/igt@kms_plane_multiple@2x-tiling-y.html
* igt@kms_psr@fbc-pr-basic:
- shard-bmg: [SKIP][181] ([Intel XE#1406] / [Intel XE#2234] / [Intel XE#2850]) -> [SKIP][182] ([Intel XE#1406])
[181]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4170-9fcf9189976d387cb9199155c35dd6c826268c52/shard-bmg-3/igt@kms_psr@fbc-pr-basic.html
[182]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141788v6/shard-bmg-2/igt@kms_psr@fbc-pr-basic.html
* igt@kms_tiled_display@basic-test-pattern-with-chamelium:
- shard-bmg: [SKIP][183] ([Intel XE#2509]) -> [SKIP][184] ([Intel XE#2426])
[183]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4170-9fcf9189976d387cb9199155c35dd6c826268c52/shard-bmg-4/igt@kms_tiled_display@basic-test-pattern-with-chamelium.html
[184]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141788v6/shard-bmg-5/igt@kms_tiled_display@basic-test-pattern-with-chamelium.html
- shard-dg2-set2: [SKIP][185] ([Intel XE#362]) -> [SKIP][186] ([Intel XE#1500])
[185]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4170-9fcf9189976d387cb9199155c35dd6c826268c52/shard-dg2-463/igt@kms_tiled_display@basic-test-pattern-with-chamelium.html
[186]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141788v6/shard-dg2-464/igt@kms_tiled_display@basic-test-pattern-with-chamelium.html
{name}: This element is suppressed. This means it is ignored when computing
the status of the difference (SUCCESS, WARNING, or FAILURE).
[Intel XE#1124]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1124
[Intel XE#1126]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1126
[Intel XE#1128]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1128
[Intel XE#1178]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1178
[Intel XE#1231]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1231
[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#1401]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1401
[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#1489]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1489
[Intel XE#1499]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1499
[Intel XE#1500]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1500
[Intel XE#1503]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1503
[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#1745]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1745
[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#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#2314]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2314
[Intel XE#2316]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2316
[Intel XE#2341]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2341
[Intel XE#2426]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2426
[Intel XE#2509]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2509
[Intel XE#261]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/261
[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#2894]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2894
[Intel XE#2925]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2925
[Intel XE#2927]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2927
[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#306]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/306
[Intel XE#307]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/307
[Intel XE#309]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/309
[Intel XE#3098]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3098
[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#316]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/316
[Intel XE#330]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/330
[Intel XE#3374]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3374
[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#3442]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3442
[Intel XE#3544]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3544
[Intel XE#3573]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3573
[Intel XE#3576]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3576
[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#3868]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3868
[Intel XE#3904]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3904
[Intel XE#4141]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4141
[Intel XE#4173]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4173
[Intel XE#4345]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4345
[Intel XE#4417]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4417
[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#4837]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4837
[Intel XE#4915]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4915
[Intel XE#4943]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4943
[Intel XE#5020]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5020
[Intel XE#5021]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5021
[Intel XE#5191]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5191
[Intel XE#5337]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5337
[Intel XE#5338]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5338
[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#5610]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5610
[Intel XE#5626]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5626
[Intel XE#6168]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6168
[Intel XE#6251]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6251
[Intel XE#6266]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6266
[Intel XE#6321]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6321
[Intel XE#6361]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6361
[Intel XE#6376]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6376
[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#6557]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6557
[Intel XE#656]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/656
[Intel XE#6606]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6606
[Intel XE#6662]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6662
[Intel XE#6675]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6675
[Intel XE#6692]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6692
[Intel XE#6703]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6703
[Intel XE#6704]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6704
[Intel XE#688]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/688
[Intel XE#702]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/702
[Intel XE#787]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/787
[Intel XE#836]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/836
[Intel XE#929]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/929
[Intel XE#944]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/944
Build changes
-------------
* Linux: xe-4170-9fcf9189976d387cb9199155c35dd6c826268c52 -> xe-pw-141788v6
IGT_8645: 8645
xe-4170-9fcf9189976d387cb9199155c35dd6c826268c52: 9fcf9189976d387cb9199155c35dd6c826268c52
xe-pw-141788v6: 141788v6
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141788v6/index.html
[-- Attachment #2: Type: text/html, Size: 66624 bytes --]
^ permalink raw reply [flat|nested] 44+ messages in thread
* RE: [v7 04/15] drm/i915/color: Create a transfer function color pipeline
2025-12-01 6:46 ` [v7 04/15] drm/i915/color: Create a transfer function color pipeline Uma Shankar
@ 2025-12-01 9:02 ` Kandpal, Suraj
2025-12-01 15:55 ` kernel test robot
2025-12-02 7:56 ` [v7,04/15] " Murthy, Arun R
2 siblings, 0 replies; 44+ messages in thread
From: Kandpal, Suraj @ 2025-12-01 9:02 UTC (permalink / raw)
To: Shankar, Uma, intel-gfx@lists.freedesktop.org,
intel-xe@lists.freedesktop.org, dri-devel@lists.freedesktop.org
Cc: Borah, Chaitanya Kumar, ville.syrjala@linux.intel.com,
pekka.paalanen@collabora.com, contact@emersion.fr,
harry.wentland@amd.com, mwen@igalia.com, jadahl@redhat.com,
sebastian.wick@redhat.com, Sharma, Swati2, alex.hung@amd.com,
Nikula, Jani
> Subject: [v7 04/15] drm/i915/color: Create a transfer function color pipeline
>
> From: Chaitanya Kumar Borah <chaitanya.kumar.borah@intel.com>
>
> Add a color pipeline with three colorops in the sequence
>
> 1D LUT - 3x4 CTM - 1D LUT
>
> This pipeline can be used to do any color space conversion or HDR tone
> mapping
>
> v2: Change namespace to drm_plane_colorop*
> v3: Use simpler/pre-existing colorops for first iteration
> v4:
> - s/*_tf_*/*_color_* (Jani)
> - Refactor to separate files (Jani)
> - Add missing space in comment (Suraj)
> - Consolidate patch that adds/attaches pipeline property
> v5:
> - Limit MAX_COLOR_PIPELINES to 2.(Suraj)
> Increase it as and when we add more pipelines.
> - Remove redundant initialization code (Suraj)
>
> Signed-off-by: Uma Shankar <uma.shankar@intel.com>
> Signed-off-by: Chaitanya Kumar Borah <chaitanya.kumar.borah@intel.com>
> ---
> drivers/gpu/drm/i915/Makefile | 1 +
> .../drm/i915/display/intel_color_pipeline.c | 97 +++++++++++++++++++
> .../drm/i915/display/intel_color_pipeline.h | 13 +++
> drivers/gpu/drm/xe/Makefile | 1 +
> 4 files changed, 112 insertions(+)
> create mode 100644 drivers/gpu/drm/i915/display/intel_color_pipeline.c
> create mode 100644 drivers/gpu/drm/i915/display/intel_color_pipeline.h
>
> diff --git a/drivers/gpu/drm/i915/Makefile b/drivers/gpu/drm/i915/Makefile
> index 7c19d5345d88..ca5c69d1cb08 100644
> --- a/drivers/gpu/drm/i915/Makefile
> +++ b/drivers/gpu/drm/i915/Makefile
> @@ -241,6 +241,7 @@ i915-y += \
> display/intel_cmtg.o \
> display/intel_color.o \
> display/intel_colorop.o \
> + display/intel_color_pipeline.o \
> display/intel_combo_phy.o \
> display/intel_connector.o \
> display/intel_crtc.o \
> diff --git a/drivers/gpu/drm/i915/display/intel_color_pipeline.c
> b/drivers/gpu/drm/i915/display/intel_color_pipeline.c
> new file mode 100644
> index 000000000000..1415f94dd3e3
> --- /dev/null
> +++ b/drivers/gpu/drm/i915/display/intel_color_pipeline.c
> @@ -0,0 +1,97 @@
> +// SPDX-License-Identifier: MIT
> +/*
> + * Copyright © 2025 Intel Corporation
> + */
> +#include "intel_colorop.h"
> +#include "intel_color_pipeline.h"
> +#include "intel_de.h"
> +#include "intel_display_types.h"
> +#include "skl_universal_plane.h"
> +
> +#define MAX_COLOR_PIPELINES 2
> +#define PLANE_DEGAMMA_SIZE 128
> +#define PLANE_GAMMA_SIZE 32
> +
> +static
> +int _intel_color_pipeline_plane_init(struct drm_plane *plane, struct
> +drm_prop_enum_list *list) {
> + struct intel_colorop *colorop;
> + struct drm_device *dev = plane->dev;
> + int ret;
> + struct drm_colorop *prev_op;
> +
> + colorop = intel_colorop_create(INTEL_PLANE_CB_PRE_CSC_LUT);
> +
> + ret = drm_plane_colorop_curve_1d_lut_init(dev, &colorop->base,
> plane,
> + PLANE_DEGAMMA_SIZE,
> +
> DRM_COLOROP_LUT1D_INTERPOLATION_LINEAR,
> +
> DRM_COLOROP_FLAG_ALLOW_BYPASS);
> +
> + if (ret)
> + return ret;
> +
> + list->type = colorop->base.base.id;
> + list->name = kasprintf(GFP_KERNEL, "Color Pipeline %d",
> +colorop->base.base.id);
> +
> + /* TODO: handle failures and clean up */
> + prev_op = &colorop->base;
> +
> + colorop = intel_colorop_create(INTEL_PLANE_CB_CSC);
> + ret = drm_plane_colorop_ctm_3x4_init(dev, &colorop->base, plane,
> +
> DRM_COLOROP_FLAG_ALLOW_BYPASS);
> + if (ret)
> + return ret;
> +
> + drm_colorop_set_next_property(prev_op, &colorop->base);
> + prev_op = &colorop->base;
> +
> + colorop = intel_colorop_create(INTEL_PLANE_CB_POST_CSC_LUT);
> + ret = drm_plane_colorop_curve_1d_lut_init(dev, &colorop->base,
> plane,
> + PLANE_GAMMA_SIZE,
> +
> DRM_COLOROP_LUT1D_INTERPOLATION_LINEAR,
> +
> DRM_COLOROP_FLAG_ALLOW_BYPASS);
> + if (ret)
> + return ret;
> +
> + drm_colorop_set_next_property(prev_op, &colorop->base);
> +
> + return 0;
> +}
> +
> +int intel_color_pipeline_plane_init(struct drm_plane *plane) {
> + struct drm_device *dev = plane->dev;
> + struct intel_display *display = to_intel_display(dev);
> + struct drm_property *prop;
> + struct drm_prop_enum_list pipelines[MAX_COLOR_PIPELINES];
> + int len = 0;
> + int ret;
> +
> + /* Currently expose pipeline only for HDR planes */
> + if (!icl_is_hdr_plane(display, to_intel_plane(plane)->id))
> + return 0;
> +
> + /* Add "Bypass" (i.e. NULL) pipeline */
I think we can do away with th "(i.e NULL)" part since the documentation at drm core does a good job explaining what BYPASS pipeline is
With that fixed LGTM,
Reviewed-by: Suraj Kandpal <suraj.kandpal@intel.com>
> + pipelines[len].type = 0;
> + pipelines[len].name = "Bypass";
> + len++;
> +
> + /* Add pipeline consisting of transfer functions */
> + ret = _intel_color_pipeline_plane_init(plane, &pipelines[len]);
> + if (ret)
> + return ret;
> + len++;
> +
> + /* Create COLOR_PIPELINE property and attach */
> + prop = drm_property_create_enum(dev, DRM_MODE_PROP_ATOMIC,
> + "COLOR_PIPELINE",
> + pipelines, len);
> + if (!prop)
> + return -ENOMEM;
> +
> + plane->color_pipeline_property = prop;
> +
> + drm_object_attach_property(&plane->base, prop, 0);
> +
> + return 0;
> +}
> diff --git a/drivers/gpu/drm/i915/display/intel_color_pipeline.h
> b/drivers/gpu/drm/i915/display/intel_color_pipeline.h
> new file mode 100644
> index 000000000000..7f1d32bc9202
> --- /dev/null
> +++ b/drivers/gpu/drm/i915/display/intel_color_pipeline.h
> @@ -0,0 +1,13 @@
> +/* SPDX-License-Identifier: MIT */
> +/*
> + * Copyright © 2025 Intel Corporation
> + */
> +
> +#ifndef __INTEL_COLOR_PIPELINE_H__
> +#define __INTEL_COLOR_PIPELINE_H__
> +
> +struct drm_plane;
> +
> +int intel_color_pipeline_plane_init(struct drm_plane *plane);
> +
> +#endif /* __INTEL_COLOR_PIPELINE_H__ */
> diff --git a/drivers/gpu/drm/xe/Makefile b/drivers/gpu/drm/xe/Makefile index
> 3420725c4ba8..89f922d745ba 100644
> --- a/drivers/gpu/drm/xe/Makefile
> +++ b/drivers/gpu/drm/xe/Makefile
> @@ -235,6 +235,7 @@ xe-$(CONFIG_DRM_XE_DISPLAY) += \
> i915-display/intel_cmtg.o \
> i915-display/intel_color.o \
> i915-display/intel_colorop.o \
> + i915-display/intel_color_pipeline.o \
> i915-display/intel_combo_phy.o \
> i915-display/intel_connector.o \
> i915-display/intel_crtc.o \
> --
> 2.50.1
^ permalink raw reply [flat|nested] 44+ messages in thread
* RE: [v7 05/15] drm/i915/color: Add framework to program CSC
2025-12-01 6:46 ` [v7 05/15] drm/i915/color: Add framework to program CSC Uma Shankar
@ 2025-12-01 9:05 ` Kandpal, Suraj
2025-12-01 15:45 ` kernel test robot
1 sibling, 0 replies; 44+ messages in thread
From: Kandpal, Suraj @ 2025-12-01 9:05 UTC (permalink / raw)
To: Shankar, Uma, intel-gfx@lists.freedesktop.org,
intel-xe@lists.freedesktop.org, dri-devel@lists.freedesktop.org
Cc: Borah, Chaitanya Kumar, ville.syrjala@linux.intel.com,
pekka.paalanen@collabora.com, contact@emersion.fr,
harry.wentland@amd.com, mwen@igalia.com, jadahl@redhat.com,
sebastian.wick@redhat.com, Sharma, Swati2, alex.hung@amd.com,
Nikula, Jani
> Subject: [v7 05/15] drm/i915/color: Add framework to program CSC
>
> From: Chaitanya Kumar Borah <chaitanya.kumar.borah@intel.com>
>
> Add framework to program CSC. It enables copying of matrix from UAPI to intel
> plane state. Also add helper functions which will eventually program values to
> hardware.
>
> Add a crtc state variable to track plane color change.
>
> v2:
> - Add crtc_state->plane_color_changed
> - Improve comments (Suraj)
> - s/intel_plane_*_color/intel_plane_color_* (Suraj)
>
> v3:
> - align parameters with open braces (Suraj)
> - Improve commit message (Suraj)
>
> Signed-off-by: Chaitanya Kumar Borah <chaitanya.kumar.borah@intel.com>
> Signed-off-by: Uma Shankar <uma.shankar@intel.com>
> ---
> drivers/gpu/drm/i915/display/intel_color.c | 21 ++++++++
> drivers/gpu/drm/i915/display/intel_color.h | 4 +-
> .../drm/i915/display/intel_display_types.h | 4 ++
> drivers/gpu/drm/i915/display/intel_plane.c | 49 +++++++++++++++++++
> 4 files changed, 77 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_color.c
> b/drivers/gpu/drm/i915/display/intel_color.c
> index a217a67ceb43..33fe5c9b4663 100644
> --- a/drivers/gpu/drm/i915/display/intel_color.c
> +++ b/drivers/gpu/drm/i915/display/intel_color.c
> @@ -87,6 +87,10 @@ struct intel_color_funcs {
> * Read config other than LUTs and CSCs, before them. Optional.
> */
> void (*get_config)(struct intel_crtc_state *crtc_state);
> +
> + /* Plane CSC*/
> + void (*load_plane_csc_matrix)(struct intel_dsb *dsb,
> + const struct intel_plane_state
> *plane_state);
> };
>
> #define CTM_COEFF_SIGN (1ULL << 63)
> @@ -3963,6 +3967,23 @@ static const struct intel_color_funcs ilk_color_funcs
> = {
> .get_config = ilk_get_config,
> };
>
> +static void
> +intel_color_load_plane_csc_matrix(struct intel_dsb *dsb,
> + const struct intel_plane_state *plane_state) {
> + struct intel_display *display = to_intel_display(plane_state);
> +
> + if (display->funcs.color->load_plane_csc_matrix)
> + display->funcs.color->load_plane_csc_matrix(dsb,
> plane_state); }
> +
> +void intel_color_plane_program_pipeline(struct intel_dsb *dsb,
> + const struct intel_plane_state
> *plane_state) {
> + if (plane_state->hw.ctm)
> + intel_color_load_plane_csc_matrix(dsb, plane_state); }
> +
> void intel_color_crtc_init(struct intel_crtc *crtc) {
> struct intel_display *display = to_intel_display(crtc); diff --git
> a/drivers/gpu/drm/i915/display/intel_color.h
> b/drivers/gpu/drm/i915/display/intel_color.h
> index bf7a12ce9df0..8051c827a1d8 100644
> --- a/drivers/gpu/drm/i915/display/intel_color.h
> +++ b/drivers/gpu/drm/i915/display/intel_color.h
> @@ -13,6 +13,7 @@ struct intel_crtc_state; struct intel_crtc; struct
> intel_display; struct intel_dsb;
> +struct intel_plane_state;
> struct drm_property_blob;
>
> void intel_color_init_hooks(struct intel_display *display); @@ -40,5 +41,6 @@
> bool intel_color_lut_equal(const struct intel_crtc_state *crtc_state,
> const struct drm_property_blob *blob2,
> bool is_pre_csc_lut);
> void intel_color_assert_luts(const struct intel_crtc_state *crtc_state);
> -
> +void intel_color_plane_program_pipeline(struct intel_dsb *dsb,
> + const struct intel_plane_state
> *plane_state);
> #endif /* __INTEL_COLOR_H__ */
> diff --git a/drivers/gpu/drm/i915/display/intel_display_types.h
> b/drivers/gpu/drm/i915/display/intel_display_types.h
> index bb8b8466235a..6d8217497583 100644
> --- a/drivers/gpu/drm/i915/display/intel_display_types.h
> +++ b/drivers/gpu/drm/i915/display/intel_display_types.h
> @@ -646,6 +646,7 @@ struct intel_plane_state {
> enum drm_color_encoding color_encoding;
> enum drm_color_range color_range;
> enum drm_scaling_filter scaling_filter;
> + struct drm_property_blob *ctm;
> } hw;
>
> struct i915_vma *ggtt_vma;
> @@ -1391,6 +1392,9 @@ struct intel_crtc_state {
> u8 silence_period_sym_clocks;
> u8 lfps_half_cycle_num_of_syms;
> } alpm_state;
> +
> + /* to track changes in plane color blocks */
> + bool plane_color_changed;
> };
>
> enum intel_pipe_crc_source {
> diff --git a/drivers/gpu/drm/i915/display/intel_plane.c
> b/drivers/gpu/drm/i915/display/intel_plane.c
> index 7b7619d59251..328b12af4d27 100644
> --- a/drivers/gpu/drm/i915/display/intel_plane.c
> +++ b/drivers/gpu/drm/i915/display/intel_plane.c
> @@ -48,6 +48,7 @@
> #include "i9xx_plane_regs.h"
> #include "intel_cdclk.h"
> #include "intel_cursor.h"
> +#include "intel_colorop.h"
> #include "intel_display_rps.h"
> #include "intel_display_trace.h"
> #include "intel_display_types.h"
> @@ -340,6 +341,52 @@ intel_plane_copy_uapi_plane_damage(struct
> intel_plane_state *new_plane_state,
> *damage = drm_plane_state_src(&new_uapi_plane_state-
> >uapi);
> }
>
> +static bool
> +intel_plane_colorop_replace_blob(struct intel_plane_state *plane_state,
> + struct intel_colorop *intel_colorop,
> + struct drm_property_blob *blob)
> +{
> + if (intel_colorop->id == INTEL_PLANE_CB_CSC)
> + return drm_property_replace_blob(&plane_state->hw.ctm,
> blob);
> +
> + return false;
> +}
> +
> +static void
> +intel_plane_color_copy_uapi_to_hw_state(struct intel_plane_state
> *plane_state,
> + const struct intel_plane_state
> *from_plane_state,
> + struct intel_crtc *crtc)
> +{
> + struct drm_colorop *iter_colorop, *colorop;
> + struct drm_colorop_state *new_colorop_state;
> + struct drm_atomic_state *state = plane_state->uapi.state;
> + struct intel_colorop *intel_colorop;
> + struct drm_property_blob *blob;
> + int i = 0;
Nit: move this below bool or just above it keep all the struct together
Other than that LGTM,
Reviewed-by: Suraj Kandpal <suraj.kandpal@intel.com>
> + struct intel_atomic_state *intel_atomic_state =
> to_intel_atomic_state(state);
> + struct intel_crtc_state *new_crtc_state = intel_atomic_state ?
> + intel_atomic_get_new_crtc_state(intel_atomic_state, crtc) :
> NULL;
> + bool changed = false;
> +
> + iter_colorop = plane_state->uapi.color_pipeline;
> +
> + while (iter_colorop) {
> + for_each_new_colorop_in_state(state, colorop,
> new_colorop_state, i) {
> + if (new_colorop_state->colorop == iter_colorop) {
> + blob = new_colorop_state->bypass ? NULL :
> new_colorop_state->data;
> + intel_colorop = to_intel_colorop(colorop);
> + changed |=
> intel_plane_colorop_replace_blob(plane_state,
> +
> intel_colorop,
> +
> blob);
> + }
> + }
> + iter_colorop = iter_colorop->next;
> + }
> +
> + if (new_crtc_state && changed)
> + new_crtc_state->plane_color_changed = true; }
> +
> void intel_plane_copy_uapi_to_hw_state(struct intel_plane_state
> *plane_state,
> const struct intel_plane_state
> *from_plane_state,
> struct intel_crtc *crtc)
> @@ -368,6 +415,8 @@ void intel_plane_copy_uapi_to_hw_state(struct
> intel_plane_state *plane_state,
>
> plane_state->uapi.src = drm_plane_state_src(&from_plane_state-
> >uapi);
> plane_state->uapi.dst = drm_plane_state_dest(&from_plane_state-
> >uapi);
> +
> + intel_plane_color_copy_uapi_to_hw_state(plane_state,
> from_plane_state,
> +crtc);
> }
>
> void intel_plane_copy_hw_state(struct intel_plane_state *plane_state,
> --
> 2.50.1
^ permalink raw reply [flat|nested] 44+ messages in thread
* RE: [v7 07/15] drm/i915/color: Add plane CTM callback for D12 and beyond
2025-12-01 6:46 ` [v7 07/15] drm/i915/color: Add plane CTM callback for D12 and beyond Uma Shankar
@ 2025-12-01 9:16 ` Kandpal, Suraj
2025-12-01 18:13 ` kernel test robot
1 sibling, 0 replies; 44+ messages in thread
From: Kandpal, Suraj @ 2025-12-01 9:16 UTC (permalink / raw)
To: Shankar, Uma, intel-gfx@lists.freedesktop.org,
intel-xe@lists.freedesktop.org, dri-devel@lists.freedesktop.org
Cc: Borah, Chaitanya Kumar, ville.syrjala@linux.intel.com,
pekka.paalanen@collabora.com, contact@emersion.fr,
harry.wentland@amd.com, mwen@igalia.com, jadahl@redhat.com,
sebastian.wick@redhat.com, Sharma, Swati2, alex.hung@amd.com,
Nikula, Jani
> Subject: [v7 07/15] drm/i915/color: Add plane CTM callback for D12 and
> beyond
>
> Add callback for setting CTM block in platforms D12 and beyond
>
> v2:
> - Add dsb support
> - Pass plane_state as we are now doing a uapi to hw state copy
> - Add support for 3x4 matrix
>
> v3:
> - Add relevant header file
> - Fix typo (Suraj)
> - Add callback to TGL+ (Suraj)
>
> Signed-off-by: Chaitanya Kumar Borah <chaitanya.kumar.borah@intel.com>
> Signed-off-by: Uma Shankar <uma.shankar@intel.com>
> ---
> drivers/gpu/drm/i915/display/intel_color.c | 98 ++++++++++++++++++++++
> 1 file changed, 98 insertions(+)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_color.c
> b/drivers/gpu/drm/i915/display/intel_color.c
> index 81b87fed8878..2f8e985d51e5 100644
> --- a/drivers/gpu/drm/i915/display/intel_color.c
> +++ b/drivers/gpu/drm/i915/display/intel_color.c
> @@ -32,6 +32,8 @@
> #include "intel_display_utils.h"
> #include "intel_dsb.h"
> #include "intel_vrr.h"
> +#include "skl_universal_plane.h"
> +#include "skl_universal_plane_regs.h"
>
> struct intel_color_funcs {
> int (*color_check)(struct intel_atomic_state *state, @@ -3842,6
> +3844,101 @@ static void icl_read_luts(struct intel_crtc_state *crtc_state)
> }
> }
>
> +static void
> +xelpd_load_plane_csc_matrix(struct intel_dsb *dsb,
> + const struct intel_plane_state *plane_state) {
> + struct intel_display *display = to_intel_display(plane_state);
> + const struct drm_plane_state *state = &plane_state->uapi;
> + enum pipe pipe = to_intel_plane(state->plane)->pipe;
> + enum plane_id plane = to_intel_plane(state->plane)->id;
Lets have a variable intel_plane rather than inlining this specially if we need it at more than one place.
Other than that LGTM,
Reviewed-by: Suraj Kandpal <suraj.kandpal@intel.com>
> + const struct drm_property_blob *blob = plane_state->hw.ctm;
> + struct drm_color_ctm_3x4 *ctm;
> + const u64 *input;
> + u16 coeffs[9] = {};
> + int i, j;
> +
> + if (!icl_is_hdr_plane(display, plane) || !blob)
> + return;
> +
> + ctm = blob->data;
> + input = ctm->matrix;
> +
> + /*
> + * Convert fixed point S31.32 input to format supported by the
> + * hardware.
> + */
> + for (i = 0, j = 0; i < ARRAY_SIZE(coeffs); i++) {
> + u64 abs_coeff = ((1ULL << 63) - 1) & input[j];
> +
> + /*
> + * Clamp input value to min/max supported by
> + * hardware.
> + */
> + abs_coeff = clamp_val(abs_coeff, 0, CTM_COEFF_4_0 - 1);
> +
> + /* sign bit */
> + if (CTM_COEFF_NEGATIVE(input[j]))
> + coeffs[i] |= 1 << 15;
> +
> + if (abs_coeff < CTM_COEFF_0_125)
> + coeffs[i] |= (3 << 12) |
> + ILK_CSC_COEFF_FP(abs_coeff, 12);
> + else if (abs_coeff < CTM_COEFF_0_25)
> + coeffs[i] |= (2 << 12) |
> + ILK_CSC_COEFF_FP(abs_coeff, 11);
> + else if (abs_coeff < CTM_COEFF_0_5)
> + coeffs[i] |= (1 << 12) |
> + ILK_CSC_COEFF_FP(abs_coeff, 10);
> + else if (abs_coeff < CTM_COEFF_1_0)
> + coeffs[i] |= ILK_CSC_COEFF_FP(abs_coeff, 9);
> + else if (abs_coeff < CTM_COEFF_2_0)
> + coeffs[i] |= (7 << 12) |
> + ILK_CSC_COEFF_FP(abs_coeff, 8);
> + else
> + coeffs[i] |= (6 << 12) |
> + ILK_CSC_COEFF_FP(abs_coeff, 7);
> +
> + /* Skip postoffs */
> + if (!((j + 2) % 4))
> + j += 2;
> + else
> + j++;
> + }
> +
> + intel_de_write_dsb(display, dsb, PLANE_CSC_COEFF(pipe, plane, 0),
> + coeffs[0] << 16 | coeffs[1]);
> + intel_de_write_dsb(display, dsb, PLANE_CSC_COEFF(pipe, plane, 1),
> + coeffs[2] << 16);
> +
> + intel_de_write_dsb(display, dsb, PLANE_CSC_COEFF(pipe, plane, 2),
> + coeffs[3] << 16 | coeffs[4]);
> + intel_de_write_dsb(display, dsb, PLANE_CSC_COEFF(pipe, plane, 3),
> + coeffs[5] << 16);
> +
> + intel_de_write_dsb(display, dsb, PLANE_CSC_COEFF(pipe, plane, 4),
> + coeffs[6] << 16 | coeffs[7]);
> + intel_de_write_dsb(display, dsb, PLANE_CSC_COEFF(pipe, plane, 5),
> + coeffs[8] << 16);
> +
> + intel_de_write_dsb(display, dsb, PLANE_CSC_PREOFF(pipe, plane, 0),
> 0);
> + intel_de_write_dsb(display, dsb, PLANE_CSC_PREOFF(pipe, plane, 1),
> 0);
> + intel_de_write_dsb(display, dsb, PLANE_CSC_PREOFF(pipe, plane, 2),
> 0);
> +
> + /*
> + * Conversion from S31.32 to S0.12. BIT[12] is the signed bit
> + */
> + intel_de_write_dsb(display, dsb,
> + PLANE_CSC_POSTOFF(pipe, plane, 0),
> + ctm_to_twos_complement(input[3], 0, 12));
> + intel_de_write_dsb(display, dsb,
> + PLANE_CSC_POSTOFF(pipe, plane, 1),
> + ctm_to_twos_complement(input[7], 0, 12));
> + intel_de_write_dsb(display, dsb,
> + PLANE_CSC_POSTOFF(pipe, plane, 2),
> + ctm_to_twos_complement(input[11], 0, 12)); }
> +
> static const struct intel_color_funcs chv_color_funcs = {
> .color_check = chv_color_check,
> .color_commit_arm = i9xx_color_commit_arm, @@ -3889,6 +3986,7
> @@ static const struct intel_color_funcs tgl_color_funcs = {
> .lut_equal = icl_lut_equal,
> .read_csc = icl_read_csc,
> .get_config = skl_get_config,
> + .load_plane_csc_matrix = xelpd_load_plane_csc_matrix,
> };
>
> static const struct intel_color_funcs icl_color_funcs = {
> --
> 2.50.1
^ permalink raw reply [flat|nested] 44+ messages in thread
* RE: [v7 08/15] drm/i915: Add register definitions for Plane Degamma
2025-12-01 6:46 ` [v7 08/15] drm/i915: Add register definitions for Plane Degamma Uma Shankar
@ 2025-12-01 9:18 ` Kandpal, Suraj
0 siblings, 0 replies; 44+ messages in thread
From: Kandpal, Suraj @ 2025-12-01 9:18 UTC (permalink / raw)
To: Shankar, Uma, intel-gfx@lists.freedesktop.org,
intel-xe@lists.freedesktop.org, dri-devel@lists.freedesktop.org
Cc: Borah, Chaitanya Kumar, ville.syrjala@linux.intel.com,
pekka.paalanen@collabora.com, contact@emersion.fr,
harry.wentland@amd.com, mwen@igalia.com, jadahl@redhat.com,
sebastian.wick@redhat.com, Sharma, Swati2, alex.hung@amd.com,
Nikula, Jani
> Subject: [v7 08/15] drm/i915: Add register definitions for Plane Degamma
>
> Add macros to define Plane Degamma registers
>
> v2:
> - Add BSpec links (Suraj)
> v3:
> - Add Bspec links in trailer (Suraj)
> - Fix checkpatch issues (Suraj)
>
> BSpec: 50411, 50412, 50413, 50414
> Signed-off-by: Uma Shankar <uma.shankar@intel.com>
> Signed-off-by: Chaitanya Kumar Borah <chaitanya.kumar.borah@intel.com>
LGTM,
Reviewed-by: Suraj Kandpal <suraj.kandpal@intel.com>
> ---
> .../i915/display/skl_universal_plane_regs.h | 48 +++++++++++++++++++
> 1 file changed, 48 insertions(+)
>
> diff --git a/drivers/gpu/drm/i915/display/skl_universal_plane_regs.h
> b/drivers/gpu/drm/i915/display/skl_universal_plane_regs.h
> index 6f815b231340..1e5d7ef37f1c 100644
> --- a/drivers/gpu/drm/i915/display/skl_universal_plane_regs.h
> +++ b/drivers/gpu/drm/i915/display/skl_universal_plane_regs.h
> @@ -254,6 +254,7 @@
> #define PLANE_COLOR_PIPE_CSC_ENABLE REG_BIT(23)
> /* Pre-ICL */
> #define PLANE_COLOR_PLANE_CSC_ENABLE REG_BIT(21)
> /* ICL+ */
> #define PLANE_COLOR_INPUT_CSC_ENABLE REG_BIT(20)
> /* ICL+ */
> +#define PLANE_COLOR_PRE_CSC_GAMMA_ENABLE REG_BIT(14)
> #define PLANE_COLOR_CSC_MODE_MASK
> REG_GENMASK(19, 17)
> #define PLANE_COLOR_CSC_MODE_BYPASS
> REG_FIELD_PREP(PLANE_COLOR_CSC_MODE_MASK, 0)
> #define PLANE_COLOR_CSC_MODE_YUV601_TO_RGB601
> REG_FIELD_PREP(PLANE_COLOR_CSC_MODE_MASK, 1)
> @@ -290,6 +291,53 @@
>
> _PLANE_INPUT_CSC_POSTOFF_HI_1_A, _PLANE_INPUT_CSC_POSTOFF_HI_1_B,
> \
>
> _PLANE_INPUT_CSC_POSTOFF_HI_2_A, _PLANE_INPUT_CSC_POSTOFF_HI_2_B)
>
> +#define _MMIO_PLANE_GAMC(plane, i, a, b) _MMIO(_PIPE(plane, a, b) + (i) *
> 4)
> +
> +#define _PLANE_PRE_CSC_GAMC_INDEX_ENH_1_A 0x701d0
> +#define _PLANE_PRE_CSC_GAMC_INDEX_ENH_1_B 0x711d0
> +#define _PLANE_PRE_CSC_GAMC_INDEX_ENH_2_A 0x702d0
> +#define _PLANE_PRE_CSC_GAMC_INDEX_ENH_2_B 0x712d0
> +#define _PLANE_PRE_CSC_GAMC_INDEX_ENH_1(pipe) _PIPE(pipe,
> _PLANE_PRE_CSC_GAMC_INDEX_ENH_1_A, \
> +
> _PLANE_PRE_CSC_GAMC_INDEX_ENH_1_B)
> +#define _PLANE_PRE_CSC_GAMC_INDEX_ENH_2(pipe) _PIPE(pipe,
> _PLANE_PRE_CSC_GAMC_INDEX_ENH_2_A, \
> +
> _PLANE_PRE_CSC_GAMC_INDEX_ENH_2_B)
> +#define PLANE_PRE_CSC_GAMC_INDEX_ENH(pipe, plane, i)
> _MMIO_PLANE_GAMC(plane, i,
> _PLANE_PRE_CSC_GAMC_INDEX_ENH_1(pipe), \
> +
> _PLANE_PRE_CSC_GAMC_INDEX_ENH_2(pipe))
> +#define PLANE_PAL_PREC_AUTO_INCREMENT REG_BIT(10)
> +
> +#define _PLANE_PRE_CSC_GAMC_DATA_ENH_1_A 0x701d4
> +#define _PLANE_PRE_CSC_GAMC_DATA_ENH_1_B 0x711d4
> +#define _PLANE_PRE_CSC_GAMC_DATA_ENH_2_A 0x702d4
> +#define _PLANE_PRE_CSC_GAMC_DATA_ENH_2_B 0x712d4
> +#define _PLANE_PRE_CSC_GAMC_DATA_ENH_1(pipe) _PIPE(pipe,
> _PLANE_PRE_CSC_GAMC_DATA_ENH_1_A, \
> +
> _PLANE_PRE_CSC_GAMC_DATA_ENH_1_B)
> +#define _PLANE_PRE_CSC_GAMC_DATA_ENH_2(pipe) _PIPE(pipe,
> _PLANE_PRE_CSC_GAMC_DATA_ENH_2_A, \
> +
> _PLANE_PRE_CSC_GAMC_DATA_ENH_2_B)
> +#define PLANE_PRE_CSC_GAMC_DATA_ENH(pipe, plane, i)
> _MMIO_PLANE_GAMC(plane, i,
> _PLANE_PRE_CSC_GAMC_DATA_ENH_1(pipe), \
> +
> _PLANE_PRE_CSC_GAMC_DATA_ENH_2(pipe))
> +
> +#define _PLANE_PRE_CSC_GAMC_INDEX_1_A 0x704d0
> +#define _PLANE_PRE_CSC_GAMC_INDEX_1_B 0x714d0
> +#define _PLANE_PRE_CSC_GAMC_INDEX_2_A 0x705d0
> +#define _PLANE_PRE_CSC_GAMC_INDEX_2_B 0x715d0
> +#define _PLANE_PRE_CSC_GAMC_INDEX_1(pipe) _PIPE(pipe,
> _PLANE_PRE_CSC_GAMC_INDEX_1_A, \
> +
> _PLANE_PRE_CSC_GAMC_INDEX_1_B)
> +#define _PLANE_PRE_CSC_GAMC_INDEX_2(pipe) _PIPE(pipe,
> _PLANE_PRE_CSC_GAMC_INDEX_2_A, \
> +
> _PLANE_PRE_CSC_GAMC_INDEX_2_B)
> +#define PLANE_PRE_CSC_GAMC_INDEX(pipe, plane, i)
> _MMIO_PLANE_GAMC(plane, i,
> _PLANE_PRE_CSC_GAMC_INDEX_1(pipe), \
> +
> _PLANE_PRE_CSC_GAMC_INDEX_2(pipe))
> +
> +#define _PLANE_PRE_CSC_GAMC_DATA_1_A 0x704d4
> +#define _PLANE_PRE_CSC_GAMC_DATA_1_B 0x714d4
> +#define _PLANE_PRE_CSC_GAMC_DATA_2_A 0x705d4
> +#define _PLANE_PRE_CSC_GAMC_DATA_2_B 0x715d4
> +#define _PLANE_PRE_CSC_GAMC_DATA_1(pipe) _PIPE(pipe,
> _PLANE_PRE_CSC_GAMC_DATA_1_A, \
> +
> _PLANE_PRE_CSC_GAMC_DATA_1_B)
> +#define _PLANE_PRE_CSC_GAMC_DATA_2(pipe) _PIPE(pipe,
> _PLANE_PRE_CSC_GAMC_DATA_2_A, \
> +
> _PLANE_PRE_CSC_GAMC_DATA_2_B)
> +#define PLANE_PRE_CSC_GAMC_DATA(pipe, plane, i)
> _MMIO_PLANE_GAMC(plane, i,
> _PLANE_PRE_CSC_GAMC_DATA_1(pipe), \
> +
> _PLANE_PRE_CSC_GAMC_DATA_2(pipe))
> +
> #define _PLANE_CSC_RY_GY_1_A 0x70210
> #define _PLANE_CSC_RY_GY_2_A 0x70310
> #define _PLANE_CSC_RY_GY_1_B 0x71210
> --
> 2.50.1
^ permalink raw reply [flat|nested] 44+ messages in thread
* RE: [v7 09/15] drm/i915: Add register definitions for Plane Post CSC
2025-12-01 6:46 ` [v7 09/15] drm/i915: Add register definitions for Plane Post CSC Uma Shankar
@ 2025-12-01 9:21 ` Kandpal, Suraj
0 siblings, 0 replies; 44+ messages in thread
From: Kandpal, Suraj @ 2025-12-01 9:21 UTC (permalink / raw)
To: Shankar, Uma, intel-gfx@lists.freedesktop.org,
intel-xe@lists.freedesktop.org, dri-devel@lists.freedesktop.org
Cc: Borah, Chaitanya Kumar, ville.syrjala@linux.intel.com,
pekka.paalanen@collabora.com, contact@emersion.fr,
harry.wentland@amd.com, mwen@igalia.com, jadahl@redhat.com,
sebastian.wick@redhat.com, Sharma, Swati2, alex.hung@amd.com,
Nikula, Jani
> Subject: [v7 09/15] drm/i915: Add register definitions for Plane Post CSC
>
> Add macros to define Plane Post CSC registers
>
> BSpec: 50403, 50404, 50405, 50406, 50409, 50410,
I think you missed my last comment this needs to be right above the Signed-off-by
>
> v2:
> - Add Plane Post CSC Gamma Multi Segment Enable bit
> - Add BSpec entries (Suraj)
> v3:
> - Fix checkpatch issues (Suraj)
>
Here
> Signed-off-by: Uma Shankar <uma.shankar@intel.com>
> Signed-off-by: Chaitanya Kumar Borah <chaitanya.kumar.borah@intel.com>
With that Fixed
Reviewed-by: Suraj Kandpal <suraj.kandpal@intel.com>
> ---
> .../i915/display/skl_universal_plane_regs.h | 67 +++++++++++++++++++
> 1 file changed, 67 insertions(+)
>
> diff --git a/drivers/gpu/drm/i915/display/skl_universal_plane_regs.h
> b/drivers/gpu/drm/i915/display/skl_universal_plane_regs.h
> index 1e5d7ef37f1c..6fd4da9f63cf 100644
> --- a/drivers/gpu/drm/i915/display/skl_universal_plane_regs.h
> +++ b/drivers/gpu/drm/i915/display/skl_universal_plane_regs.h
> @@ -254,6 +254,7 @@
> #define PLANE_COLOR_PIPE_CSC_ENABLE REG_BIT(23)
> /* Pre-ICL */
> #define PLANE_COLOR_PLANE_CSC_ENABLE REG_BIT(21)
> /* ICL+ */
> #define PLANE_COLOR_INPUT_CSC_ENABLE REG_BIT(20)
> /* ICL+ */
> +#define PLANE_COLOR_POST_CSC_GAMMA_MULTSEG_ENABLE
> REG_BIT(15) /* TGL+ */
> #define PLANE_COLOR_PRE_CSC_GAMMA_ENABLE REG_BIT(14)
> #define PLANE_COLOR_CSC_MODE_MASK
> REG_GENMASK(19, 17)
> #define PLANE_COLOR_CSC_MODE_BYPASS
> REG_FIELD_PREP(PLANE_COLOR_CSC_MODE_MASK, 0)
> @@ -293,6 +294,72 @@
>
> #define _MMIO_PLANE_GAMC(plane, i, a, b) _MMIO(_PIPE(plane, a, b) + (i) *
> 4)
>
> +#define _PLANE_POST_CSC_GAMC_SEG0_INDEX_ENH_1_A 0x70160
> +#define _PLANE_POST_CSC_GAMC_SEG0_INDEX_ENH_1_B 0x71160
> +#define _PLANE_POST_CSC_GAMC_SEG0_INDEX_ENH_2_A 0x70260
> +#define _PLANE_POST_CSC_GAMC_SEG0_INDEX_ENH_2_B 0x71260
> +#define _PLANE_POST_CSC_GAMC_SEG0_INDEX_ENH_1(pipe)
> _PIPE(pipe, _PLANE_POST_CSC_GAMC_SEG0_INDEX_ENH_1_A, \
> +
> _PLANE_POST_CSC_GAMC_SEG0_INDEX_ENH_1_B)
> +#define _PLANE_POST_CSC_GAMC_SEG0_INDEX_ENH_2(pipe)
> _PIPE(pipe, _PLANE_POST_CSC_GAMC_SEG0_INDEX_ENH_2_A, \
> +
> _PLANE_POST_CSC_GAMC_SEG0_INDEX_ENH_2_B)
> +#define PLANE_POST_CSC_GAMC_SEG0_INDEX_ENH(pipe, plane, i)
> _MMIO_PLANE_GAMC(plane, i,
> _PLANE_POST_CSC_GAMC_SEG0_INDEX_ENH_1(pipe), \
> +
> _PLANE_POST_CSC_GAMC_SEG0_INDEX_ENH_2(pipe))
> +
> +#define _PLANE_POST_CSC_GAMC_SEG0_DATA_ENH_1_A 0x70164
> +#define _PLANE_POST_CSC_GAMC_SEG0_DATA_ENH_1_B 0x71164
> +#define _PLANE_POST_CSC_GAMC_SEG0_DATA_ENH_2_A 0x70264
> +#define _PLANE_POST_CSC_GAMC_SEG0_DATA_ENH_2_B 0x71264
> +#define _PLANE_POST_CSC_GAMC_SEG0_DATA_ENH_1(pipe) _PIPE(pipe,
> _PLANE_POST_CSC_GAMC_SEG0_DATA_ENH_1_A, \
> +
> _PLANE_POST_CSC_GAMC_SEG0_DATA_ENH_1_B)
> +#define _PLANE_POST_CSC_GAMC_SEG0_DATA_ENH_2(pipe) _PIPE(pipe,
> _PLANE_POST_CSC_GAMC_SEG0_DATA_ENH_2_A, \
> +
> _PLANE_POST_CSC_GAMC_SEG0_DATA_ENH_2_B)
> +#define PLANE_POST_CSC_GAMC_SEG0_DATA_ENH(pipe, plane, i)
> _MMIO_PLANE_GAMC(plane, i,
> _PLANE_POST_CSC_GAMC_SEG0_DATA_ENH_1(pipe), \
> +
> _PLANE_POST_CSC_GAMC_SEG0_DATA_ENH_2(pipe))
> +
> +#define _PLANE_POST_CSC_GAMC_INDEX_ENH_1_A 0x701d8
> +#define _PLANE_POST_CSC_GAMC_INDEX_ENH_1_B 0x711d8
> +#define _PLANE_POST_CSC_GAMC_INDEX_ENH_2_A 0x702d8
> +#define _PLANE_POST_CSC_GAMC_INDEX_ENH_2_B 0x712d8
> +#define _PLANE_POST_CSC_GAMC_INDEX_ENH_1(pipe)
> _PIPE(pipe, _PLANE_POST_CSC_GAMC_INDEX_ENH_1_A, \
> +
> _PLANE_POST_CSC_GAMC_INDEX_ENH_1_B)
> +#define _PLANE_POST_CSC_GAMC_INDEX_ENH_2(pipe)
> _PIPE(pipe, _PLANE_POST_CSC_GAMC_INDEX_ENH_2_A, \
> +
> _PLANE_POST_CSC_GAMC_INDEX_ENH_2_B)
> +#define PLANE_POST_CSC_GAMC_INDEX_ENH(pipe, plane, i)
> _MMIO_PLANE_GAMC(plane, i,
> _PLANE_POST_CSC_GAMC_INDEX_ENH_1(pipe), \
> +
> _PLANE_POST_CSC_GAMC_INDEX_ENH_2(pipe))
> +
> +#define _PLANE_POST_CSC_GAMC_DATA_ENH_1_A 0x701dc
> +#define _PLANE_POST_CSC_GAMC_DATA_ENH_1_B 0x711dc
> +#define _PLANE_POST_CSC_GAMC_DATA_ENH_2_A 0x702dc
> +#define _PLANE_POST_CSC_GAMC_DATA_ENH_2_B 0x712dc
> +#define _PLANE_POST_CSC_GAMC_DATA_ENH_1(pipe) _PIPE(pipe,
> _PLANE_POST_CSC_GAMC_DATA_ENH_1_A, \
> +
> _PLANE_POST_CSC_GAMC_DATA_ENH_1_B)
> +#define _PLANE_POST_CSC_GAMC_DATA_ENH_2(pipe) _PIPE(pipe,
> _PLANE_POST_CSC_GAMC_DATA_ENH_2_A, \
> +
> _PLANE_POST_CSC_GAMC_DATA_ENH_2_B)
> +#define PLANE_POST_CSC_GAMC_DATA_ENH(pipe, plane, i)
> _MMIO_PLANE_GAMC(plane, i,
> _PLANE_POST_CSC_GAMC_DATA_ENH_1(pipe), \
> +
> _PLANE_POST_CSC_GAMC_DATA_ENH_2(pipe))
> +
> +#define _PLANE_POST_CSC_GAMC_INDEX_1_A 0x704d8
> +#define _PLANE_POST_CSC_GAMC_INDEX_1_B 0x714d8
> +#define _PLANE_POST_CSC_GAMC_INDEX_2_A 0x705d8
> +#define _PLANE_POST_CSC_GAMC_INDEX_2_B 0x715d8
> +#define _PLANE_POST_CSC_GAMC_INDEX_1(pipe) _PIPE(pipe,
> _PLANE_POST_CSC_GAMC_INDEX_1_A, \
> +
> _PLANE_POST_CSC_GAMC_INDEX_1_B)
> +#define _PLANE_POST_CSC_GAMC_INDEX_2(pipe) _PIPE(pipe,
> _PLANE_POST_CSC_GAMC_INDEX_2_A, \
> +
> _PLANE_POST_CSC_GAMC_INDEX_2_B)
> +#define PLANE_POST_CSC_GAMC_INDEX(pipe, plane, i)
> _MMIO_PLANE_GAMC(plane, i,
> _PLANE_POST_CSC_GAMC_INDEX_1(pipe), \
> +
> _PLANE_POST_CSC_GAMC_INDEX_2(pipe))
> +
> +#define _PLANE_POST_CSC_GAMC_DATA_1_A 0x704dc
> +#define _PLANE_POST_CSC_GAMC_DATA_1_B 0x714dc
> +#define _PLANE_POST_CSC_GAMC_DATA_2_A 0x705dc
> +#define _PLANE_POST_CSC_GAMC_DATA_2_B 0x715dc
> +#define _PLANE_POST_CSC_GAMC_DATA_1(pipe) _PIPE(pipe,
> _PLANE_POST_CSC_GAMC_DATA_1_A, \
> +
> _PLANE_POST_CSC_GAMC_DATA_1_B)
> +#define _PLANE_POST_CSC_GAMC_DATA_2(pipe) _PIPE(pipe,
> _PLANE_POST_CSC_GAMC_DATA_2_A, \
> +
> _PLANE_POST_CSC_GAMC_DATA_2_B)
> +#define PLANE_POST_CSC_GAMC_DATA(pipe, plane, i)
> _MMIO_PLANE_GAMC(plane, i,
> _PLANE_POST_CSC_GAMC_DATA_1(pipe), \
> +
> _PLANE_POST_CSC_GAMC_DATA_2(pipe))
> +
> #define _PLANE_PRE_CSC_GAMC_INDEX_ENH_1_A 0x701d0
> #define _PLANE_PRE_CSC_GAMC_INDEX_ENH_1_B 0x711d0
> #define _PLANE_PRE_CSC_GAMC_INDEX_ENH_2_A 0x702d0
> --
> 2.50.1
^ permalink raw reply [flat|nested] 44+ messages in thread
* RE: [v7 10/15] drm/i915/color: Add framework to program PRE/POST CSC LUT
2025-12-01 6:46 ` [v7 10/15] drm/i915/color: Add framework to program PRE/POST CSC LUT Uma Shankar
@ 2025-12-01 9:23 ` Kandpal, Suraj
0 siblings, 0 replies; 44+ messages in thread
From: Kandpal, Suraj @ 2025-12-01 9:23 UTC (permalink / raw)
To: Shankar, Uma, intel-gfx@lists.freedesktop.org,
intel-xe@lists.freedesktop.org, dri-devel@lists.freedesktop.org
Cc: Borah, Chaitanya Kumar, ville.syrjala@linux.intel.com,
pekka.paalanen@collabora.com, contact@emersion.fr,
harry.wentland@amd.com, mwen@igalia.com, jadahl@redhat.com,
sebastian.wick@redhat.com, Sharma, Swati2, alex.hung@amd.com,
Nikula, Jani
> Subject: [v7 10/15] drm/i915/color: Add framework to program PRE/POST CSC
> LUT
>
> Add framework that will help in loading LUT to Pre/Post CSC color blocks.
>
> v2: Add dsb support
> v3: Align enum names
> v4: Propagate change in lut data to crtc_state
>
> Signed-off-by: Uma Shankar <uma.shankar@intel.com>
> Signed-off-by: Chaitanya Kumar Borah <chaitanya.kumar.borah@intel.com>
LGTM
Reviewed-by: Suraj Kandpal <suraj.kandpal@intel.com>
> ---
> drivers/gpu/drm/i915/display/intel_color.c | 16 ++++++++++++++++
> .../gpu/drm/i915/display/intel_display_types.h | 2 +-
> drivers/gpu/drm/i915/display/intel_plane.c | 4 ++++
> 3 files changed, 21 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_color.c
> b/drivers/gpu/drm/i915/display/intel_color.c
> index 2f8e985d51e5..4ca359d68730 100644
> --- a/drivers/gpu/drm/i915/display/intel_color.c
> +++ b/drivers/gpu/drm/i915/display/intel_color.c
> @@ -93,6 +93,10 @@ struct intel_color_funcs {
> /* Plane CSC*/
> void (*load_plane_csc_matrix)(struct intel_dsb *dsb,
> const struct intel_plane_state
> *plane_state);
> +
> + /* Plane Pre/Post CSC */
> + void (*load_plane_luts)(struct intel_dsb *dsb,
> + const struct intel_plane_state *plane_state);
> };
>
> #define CTM_COEFF_SIGN (1ULL << 63)
> @@ -4077,11 +4081,23 @@ intel_color_load_plane_csc_matrix(struct
> intel_dsb *dsb,
> display->funcs.color->load_plane_csc_matrix(dsb,
> plane_state); }
>
> +static void
> +intel_color_load_plane_luts(struct intel_dsb *dsb,
> + const struct intel_plane_state *plane_state) {
> + struct intel_display *display = to_intel_display(plane_state);
> +
> + if (display->funcs.color->load_plane_luts)
> + display->funcs.color->load_plane_luts(dsb, plane_state); }
> +
> void intel_color_plane_program_pipeline(struct intel_dsb *dsb,
> const struct intel_plane_state
> *plane_state) {
> if (plane_state->hw.ctm)
> intel_color_load_plane_csc_matrix(dsb, plane_state);
> + if (plane_state->hw.degamma_lut || plane_state->hw.gamma_lut)
> + intel_color_load_plane_luts(dsb, plane_state);
> }
>
> void intel_color_crtc_init(struct intel_crtc *crtc) diff --git
> a/drivers/gpu/drm/i915/display/intel_display_types.h
> b/drivers/gpu/drm/i915/display/intel_display_types.h
> index 6d8217497583..c419a814cb34 100644
> --- a/drivers/gpu/drm/i915/display/intel_display_types.h
> +++ b/drivers/gpu/drm/i915/display/intel_display_types.h
> @@ -646,7 +646,7 @@ struct intel_plane_state {
> enum drm_color_encoding color_encoding;
> enum drm_color_range color_range;
> enum drm_scaling_filter scaling_filter;
> - struct drm_property_blob *ctm;
> + struct drm_property_blob *ctm, *degamma_lut, *gamma_lut;
> } hw;
>
> struct i915_vma *ggtt_vma;
> diff --git a/drivers/gpu/drm/i915/display/intel_plane.c
> b/drivers/gpu/drm/i915/display/intel_plane.c
> index 328b12af4d27..4e6ddb36b872 100644
> --- a/drivers/gpu/drm/i915/display/intel_plane.c
> +++ b/drivers/gpu/drm/i915/display/intel_plane.c
> @@ -348,6 +348,10 @@ intel_plane_colorop_replace_blob(struct
> intel_plane_state *plane_state, {
> if (intel_colorop->id == INTEL_PLANE_CB_CSC)
> return drm_property_replace_blob(&plane_state->hw.ctm,
> blob);
> + else if (intel_colorop->id == INTEL_PLANE_CB_PRE_CSC_LUT)
> + return drm_property_replace_blob(&plane_state-
> >hw.degamma_lut, blob);
> + else if (intel_colorop->id == INTEL_PLANE_CB_POST_CSC_LUT)
> + return drm_property_replace_blob(&plane_state-
> >hw.gamma_lut, blob);
>
> return false;
> }
> --
> 2.50.1
^ permalink raw reply [flat|nested] 44+ messages in thread
* RE: [v7 11/15] drm/i915/color: Program Pre-CSC registers
2025-12-01 6:46 ` [v7 11/15] drm/i915/color: Program Pre-CSC registers Uma Shankar
@ 2025-12-01 9:24 ` Kandpal, Suraj
2025-12-02 8:24 ` Shankar, Uma
2025-12-01 19:28 ` kernel test robot
1 sibling, 1 reply; 44+ messages in thread
From: Kandpal, Suraj @ 2025-12-01 9:24 UTC (permalink / raw)
To: Shankar, Uma, intel-gfx@lists.freedesktop.org,
intel-xe@lists.freedesktop.org, dri-devel@lists.freedesktop.org
Cc: Borah, Chaitanya Kumar, ville.syrjala@linux.intel.com,
pekka.paalanen@collabora.com, contact@emersion.fr,
harry.wentland@amd.com, mwen@igalia.com, jadahl@redhat.com,
sebastian.wick@redhat.com, Sharma, Swati2, alex.hung@amd.com,
Nikula, Jani
> Subject: [v7 11/15] drm/i915/color: Program Pre-CSC registers
>
> Add callback to program Pre-CSC LUT for TGL and beyond
>
> v2: Add DSB support
> v3: Add support for single segment 1D LUT color op
> v4:
> - s/drm_color_lut_32/drm_color_lut32/ (Simon)
> - Change commit message (Suraj)
> - Improve comments (Suraj)
> - Remove multisegmented programming, to be added later
> - Remove dead code for SDR planes, add when needed
>
> BSpec: 50411, 50412, 50413, 50414
> Signed-off-by: Uma Shankar <uma.shankar@intel.com>
> Signed-off-by: Chaitanya Kumar Borah <chaitanya.kumar.borah@intel.com>
> ---
> drivers/gpu/drm/i915/display/intel_color.c | 61 ++++++++++++++++++++++
> 1 file changed, 61 insertions(+)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_color.c
> b/drivers/gpu/drm/i915/display/intel_color.c
> index 4ca359d68730..2a114d2964fa 100644
> --- a/drivers/gpu/drm/i915/display/intel_color.c
> +++ b/drivers/gpu/drm/i915/display/intel_color.c
> @@ -3943,6 +3943,66 @@ xelpd_load_plane_csc_matrix(struct intel_dsb *dsb,
> ctm_to_twos_complement(input[11], 0, 12)); }
>
> +static void
> +xelpd_program_plane_pre_csc_lut(struct intel_dsb *dsb,
> + const struct intel_plane_state *plane_state) {
> + struct intel_display *display = to_intel_display(plane_state);
> + const struct drm_plane_state *state = &plane_state->uapi;
> + enum pipe pipe = to_intel_plane(state->plane)->pipe;
> + enum plane_id plane = to_intel_plane(state->plane)->id;
Introduce intel_plane here and use that
Regards,
Suraj Kandpal
> + const struct drm_color_lut32 *pre_csc_lut = plane_state-
> >hw.degamma_lut->data;
> + u32 i, lut_size;
> +
> + if (icl_is_hdr_plane(display, plane)) {
> + lut_size = 128;
> +
> + intel_de_write_dsb(display, dsb,
> + PLANE_PRE_CSC_GAMC_INDEX_ENH(pipe,
> plane, 0),
> + PLANE_PAL_PREC_AUTO_INCREMENT);
> +
> + if (pre_csc_lut) {
> + for (i = 0; i < lut_size; i++) {
> + u32 lut_val =
> drm_color_lut32_extract(pre_csc_lut[i].green, 24);
> +
> + intel_de_write_dsb(display, dsb,
> +
> PLANE_PRE_CSC_GAMC_DATA_ENH(pipe, plane, 0),
> + lut_val);
> + }
> +
> + /* Program the max register to clamp values > 1.0. */
> + /* TODO: Restrict to 0x7ffffff */
> + do {
> + intel_de_write_dsb(display, dsb,
> +
> PLANE_PRE_CSC_GAMC_DATA_ENH(pipe, plane, 0),
> + (1 << 24));
> + } while (i++ > 130);
> + } else {
> + for (i = 0; i < lut_size; i++) {
> + u32 v = (i * ((1 << 24) - 1)) / (lut_size - 1);
> +
> + intel_de_write_dsb(display, dsb,
> +
> PLANE_PRE_CSC_GAMC_DATA_ENH(pipe, plane, 0), v);
> + }
> +
> + do {
> + intel_de_write_dsb(display, dsb,
> +
> PLANE_PRE_CSC_GAMC_DATA_ENH(pipe, plane, 0),
> + 1 << 24);
> + } while (i++ < 130);
> + }
> +
> + intel_de_write_dsb(display, dsb,
> PLANE_PRE_CSC_GAMC_INDEX_ENH(pipe, plane, 0), 0);
> + }
> +}
> +
> +static void
> +xelpd_plane_load_luts(struct intel_dsb *dsb, const struct
> +intel_plane_state *plane_state) {
> + if (plane_state->hw.degamma_lut)
> + xelpd_program_plane_pre_csc_lut(dsb, plane_state); }
> +
> static const struct intel_color_funcs chv_color_funcs = {
> .color_check = chv_color_check,
> .color_commit_arm = i9xx_color_commit_arm, @@ -3991,6 +4051,7
> @@ static const struct intel_color_funcs tgl_color_funcs = {
> .read_csc = icl_read_csc,
> .get_config = skl_get_config,
> .load_plane_csc_matrix = xelpd_load_plane_csc_matrix,
> + .load_plane_luts = xelpd_plane_load_luts,
> };
>
> static const struct intel_color_funcs icl_color_funcs = {
> --
> 2.50.1
^ permalink raw reply [flat|nested] 44+ messages in thread
* RE: [v7 13/15] drm/i915/display: Add registers for 3D LUT
2025-12-01 6:46 ` [v7 13/15] drm/i915/display: Add registers for 3D LUT Uma Shankar
@ 2025-12-01 9:26 ` Kandpal, Suraj
0 siblings, 0 replies; 44+ messages in thread
From: Kandpal, Suraj @ 2025-12-01 9:26 UTC (permalink / raw)
To: Shankar, Uma, intel-gfx@lists.freedesktop.org,
intel-xe@lists.freedesktop.org, dri-devel@lists.freedesktop.org
Cc: Borah, Chaitanya Kumar, ville.syrjala@linux.intel.com,
pekka.paalanen@collabora.com, contact@emersion.fr,
harry.wentland@amd.com, mwen@igalia.com, jadahl@redhat.com,
sebastian.wick@redhat.com, Sharma, Swati2, alex.hung@amd.com,
Nikula, Jani
> Subject: [v7 13/15] drm/i915/display: Add registers for 3D LUT
This needs to be /color
Other than that
Reviewed-by: Suraj Kandpal <suraj.kandpal@intel.com>
>
> From: Chaitanya Kumar Borah <chaitanya.kumar.borah@intel.com>
>
> Add registers needed to program 3D LUT
>
> v2:
> - Follow convention documented in i915_reg.h (Jani)
> - Removing space in trailer (Suraj)
> - Move registers to intel_color_regs.h
>
> BSpec: 69378, 69379, 69380
> Signed-off-by: Chaitanya Kumar Borah <chaitanya.kumar.borah@intel.com>
> Signed-off-by: Uma Shankar <uma.shankar@intel.com>
> ---
> .../gpu/drm/i915/display/intel_color_regs.h | 29 +++++++++++++++++++
> 1 file changed, 29 insertions(+)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_color_regs.h
> b/drivers/gpu/drm/i915/display/intel_color_regs.h
> index 8eb643cfead7..c370b6029369 100644
> --- a/drivers/gpu/drm/i915/display/intel_color_regs.h
> +++ b/drivers/gpu/drm/i915/display/intel_color_regs.h
> @@ -316,4 +316,33 @@
> #define SKL_BOTTOM_COLOR_CSC_ENABLE REG_BIT(30)
> #define SKL_BOTTOM_COLOR(pipe) _MMIO_PIPE(pipe,
> _SKL_BOTTOM_COLOR_A, _SKL_BOTTOM_COLOR_B)
>
> +/* 3D LUT */
> +#define _LUT_3D_CTL_A 0x490A4
> +#define _LUT_3D_CTL_B 0x491A4
> +#define LUT_3D_CTL(pipe) _MMIO_PIPE(pipe, _LUT_3D_CTL_A,
> _LUT_3D_CTL_B)
> +#define LUT_3D_ENABLE REG_BIT(31)
> +#define LUT_3D_READY REG_BIT(30)
> +#define LUT_3D_BINDING_MASK REG_GENMASK(23, 22)
> +#define LUT_3D_BIND_PIPE
> REG_FIELD_PREP(LUT_3D_BINDING_MASK, 0)
> +#define LUT_3D_BIND_PLANE_1
> REG_FIELD_PREP(LUT_3D_BINDING_MASK, 1)
> +#define LUT_3D_BIND_PLANE_2
> REG_FIELD_PREP(LUT_3D_BINDING_MASK, 2)
> +#define LUT_3D_BIND_PLANE_3
> REG_FIELD_PREP(LUT_3D_BINDING_MASK, 3)
> +
> +#define _LUT_3D_INDEX_A 0x490A8
> +#define _LUT_3D_INDEX_B 0x491A8
> +#define LUT_3D_INDEX(pipe) _MMIO_PIPE(pipe, _LUT_3D_INDEX_A,
> _LUT_3D_INDEX_B)
> +#define LUT_3D_AUTO_INCREMENT REG_BIT(13)
> +#define LUT_3D_INDEX_VALUE_MASK REG_GENMASK(12, 0)
> +#define LUT_3D_INDEX_VALUE(x)
> REG_FIELD_PREP(LUT_3D_INDEX_VALUE_MASK, (x))
> +
> +#define _LUT_3D_DATA_A 0x490AC
> +#define _LUT_3D_DATA_B 0x491AC
> +#define LUT_3D_DATA(pipe) _MMIO_PIPE(pipe, _LUT_3D_DATA_A,
> _LUT_3D_DATA_B)
> +#define LUT_3D_DATA_RED_MASK REG_GENMASK(29, 20)
> +#define LUT_3D_DATA_GREEN_MASK REG_GENMASK(19, 10)
> +#define LUT_3D_DATA_BLUE_MASK REG_GENMASK(9, 0)
> +#define LUT_3D_DATA_RED(x)
> REG_FIELD_PREP(LUT_3D_DATA_RED_MASK, (x))
> +#define LUT_3D_DATA_GREEN(x)
> REG_FIELD_PREP(LUT_3D_DATA_GREEN_MASK, (x))
> +#define LUT_3D_DATA_BLUE(x)
> REG_FIELD_PREP(LUT_3D_DATA_BLUE_MASK, (x))
> +
> #endif /* __INTEL_COLOR_REGS_H__ */
> --
> 2.50.1
^ permalink raw reply [flat|nested] 44+ messages in thread
* Re: [v7 02/15] drm/i915: Add intel_color_op
2025-12-01 6:46 ` [v7 02/15] drm/i915: Add intel_color_op Uma Shankar
@ 2025-12-01 14:21 ` kernel test robot
0 siblings, 0 replies; 44+ messages in thread
From: kernel test robot @ 2025-12-01 14:21 UTC (permalink / raw)
To: Uma Shankar, intel-gfx, intel-xe, dri-devel
Cc: oe-kbuild-all, chaitanya.kumar.borah, ville.syrjala,
pekka.paalanen, contact, harry.wentland, mwen, jadahl,
sebastian.wick, swati2.sharma, alex.hung, jani.nikula,
suraj.kandpal, Uma Shankar
Hi Uma,
kernel test robot noticed the following build errors:
[auto build test ERROR on next-20251201]
[also build test ERROR on linus/master v6.18]
[cannot apply to drm-xe/drm-xe-next drm-intel/for-linux-next drm-intel/for-linux-next-fixes drm-tip/drm-tip v6.18 v6.18-rc7 v6.18-rc6]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Uma-Shankar/drm-i915-display-Add-identifiers-for-driver-specific-blocks/20251201-150245
base: next-20251201
patch link: https://lore.kernel.org/r/20251201064655.3579280-3-uma.shankar%40intel.com
patch subject: [v7 02/15] drm/i915: Add intel_color_op
config: i386-buildonly-randconfig-006-20251201 (https://download.01.org/0day-ci/archive/20251201/202512012214.cxi2Gair-lkp@intel.com/config)
compiler: gcc-14 (Debian 14.2.0-19) 14.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20251201/202512012214.cxi2Gair-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202512012214.cxi2Gair-lkp@intel.com/
All error/warnings (new ones prefixed by >>):
In file included from drivers/gpu/drm/i915/display/intel_colorop.h:9,
from drivers/gpu/drm/i915/display/intel_colorop.c:5:
drivers/gpu/drm/i915/display/intel_display_types.h:1989:28: error: field 'base' has incomplete type
1989 | struct drm_colorop base;
| ^~~~
In file included from include/linux/container_of.h:5,
from include/linux/plist.h:76,
from include/linux/pm_qos.h:15,
from drivers/gpu/drm/i915/display/intel_display_types.h:29:
drivers/gpu/drm/i915/display/intel_colorop.c: In function 'to_intel_colorop':
>> include/linux/compiler_types.h:552:27: error: expression in static assertion is not an integer
552 | #define __same_type(a, b) __builtin_types_compatible_p(typeof(a), typeof(b))
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/build_bug.h:78:56: note: in definition of macro '__static_assert'
78 | #define __static_assert(expr, msg, ...) _Static_assert(expr, msg)
| ^~~~
include/linux/container_of.h:21:9: note: in expansion of macro 'static_assert'
21 | static_assert(__same_type(*(ptr), ((type *)0)->member) || \
| ^~~~~~~~~~~~~
include/linux/container_of.h:21:23: note: in expansion of macro '__same_type'
21 | static_assert(__same_type(*(ptr), ((type *)0)->member) || \
| ^~~~~~~~~~~
drivers/gpu/drm/i915/display/intel_colorop.c:9:16: note: in expansion of macro 'container_of'
9 | return container_of(colorop, struct intel_colorop, base);
| ^~~~~~~~~~~~
>> drivers/gpu/drm/i915/display/intel_colorop.c:10:1: warning: control reaches end of non-void function [-Wreturn-type]
10 | }
| ^
vim +10 drivers/gpu/drm/i915/display/intel_colorop.c
6
7 struct intel_colorop *to_intel_colorop(struct drm_colorop *colorop)
8 {
9 return container_of(colorop, struct intel_colorop, base);
> 10 }
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 44+ messages in thread
* Re: [v7 05/15] drm/i915/color: Add framework to program CSC
2025-12-01 6:46 ` [v7 05/15] drm/i915/color: Add framework to program CSC Uma Shankar
2025-12-01 9:05 ` Kandpal, Suraj
@ 2025-12-01 15:45 ` kernel test robot
1 sibling, 0 replies; 44+ messages in thread
From: kernel test robot @ 2025-12-01 15:45 UTC (permalink / raw)
To: Uma Shankar, intel-gfx, intel-xe, dri-devel
Cc: oe-kbuild-all, chaitanya.kumar.borah, ville.syrjala,
pekka.paalanen, contact, harry.wentland, mwen, jadahl,
sebastian.wick, swati2.sharma, alex.hung, jani.nikula,
suraj.kandpal, Uma Shankar
Hi Uma,
kernel test robot noticed the following build errors:
[auto build test ERROR on next-20251201]
[cannot apply to drm-xe/drm-xe-next drm-intel/for-linux-next drm-intel/for-linux-next-fixes drm-tip/drm-tip v6.18 v6.18-rc7 v6.18-rc6 linus/master v6.18]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Uma-Shankar/drm-i915-display-Add-identifiers-for-driver-specific-blocks/20251201-150245
base: next-20251201
patch link: https://lore.kernel.org/r/20251201064655.3579280-6-uma.shankar%40intel.com
patch subject: [v7 05/15] drm/i915/color: Add framework to program CSC
config: x86_64-randconfig-012-20251201 (https://download.01.org/0day-ci/archive/20251201/202512012301.V42g2qYb-lkp@intel.com/config)
compiler: gcc-14 (Debian 14.2.0-19) 14.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20251201/202512012301.V42g2qYb-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202512012301.V42g2qYb-lkp@intel.com/
All errors (new ones prefixed by >>):
In file included from drivers/gpu/drm/i915/display/intel_colorop.h:9,
from drivers/gpu/drm/i915/display/intel_plane.c:52:
drivers/gpu/drm/i915/display/intel_display_types.h:1993:28: error: field 'base' has incomplete type
1993 | struct drm_colorop base;
| ^~~~
drivers/gpu/drm/i915/display/intel_plane.c: In function 'intel_plane_color_copy_uapi_to_hw_state':
drivers/gpu/drm/i915/display/intel_plane.c:367:41: error: 'struct drm_plane_state' has no member named 'color_pipeline'
367 | iter_colorop = plane_state->uapi.color_pipeline;
| ^
drivers/gpu/drm/i915/display/intel_plane.c:370:17: error: implicit declaration of function 'for_each_new_colorop_in_state'; did you mean 'for_each_new_crtc_in_state'? [-Wimplicit-function-declaration]
370 | for_each_new_colorop_in_state(state, colorop, new_colorop_state, i) {
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| for_each_new_crtc_in_state
drivers/gpu/drm/i915/display/intel_plane.c:370:84: error: expected ';' before '{' token
370 | for_each_new_colorop_in_state(state, colorop, new_colorop_state, i) {
| ^~
| ;
>> drivers/gpu/drm/i915/display/intel_plane.c:360:35: error: unused variable 'blob' [-Werror=unused-variable]
360 | struct drm_property_blob *blob;
| ^~~~
>> drivers/gpu/drm/i915/display/intel_plane.c:359:31: error: unused variable 'intel_colorop' [-Werror=unused-variable]
359 | struct intel_colorop *intel_colorop;
| ^~~~~~~~~~~~~
drivers/gpu/drm/i915/display/intel_plane.c: At top level:
>> drivers/gpu/drm/i915/display/intel_plane.c:341:1: error: 'intel_plane_colorop_replace_blob' defined but not used [-Werror=unused-function]
341 | intel_plane_colorop_replace_blob(struct intel_plane_state *plane_state,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
cc1: all warnings being treated as errors
vim +/blob +360 drivers/gpu/drm/i915/display/intel_plane.c
339
340 static bool
> 341 intel_plane_colorop_replace_blob(struct intel_plane_state *plane_state,
342 struct intel_colorop *intel_colorop,
343 struct drm_property_blob *blob)
344 {
345 if (intel_colorop->id == INTEL_PLANE_CB_CSC)
346 return drm_property_replace_blob(&plane_state->hw.ctm, blob);
347
348 return false;
349 }
350
351 static void
352 intel_plane_color_copy_uapi_to_hw_state(struct intel_plane_state *plane_state,
353 const struct intel_plane_state *from_plane_state,
354 struct intel_crtc *crtc)
355 {
356 struct drm_colorop *iter_colorop, *colorop;
357 struct drm_colorop_state *new_colorop_state;
358 struct drm_atomic_state *state = plane_state->uapi.state;
> 359 struct intel_colorop *intel_colorop;
> 360 struct drm_property_blob *blob;
361 int i = 0;
362 struct intel_atomic_state *intel_atomic_state = to_intel_atomic_state(state);
363 struct intel_crtc_state *new_crtc_state = intel_atomic_state ?
364 intel_atomic_get_new_crtc_state(intel_atomic_state, crtc) : NULL;
365 bool changed = false;
366
367 iter_colorop = plane_state->uapi.color_pipeline;
368
369 while (iter_colorop) {
> 370 for_each_new_colorop_in_state(state, colorop, new_colorop_state, i) {
371 if (new_colorop_state->colorop == iter_colorop) {
372 blob = new_colorop_state->bypass ? NULL : new_colorop_state->data;
373 intel_colorop = to_intel_colorop(colorop);
374 changed |= intel_plane_colorop_replace_blob(plane_state,
375 intel_colorop,
376 blob);
377 }
378 }
379 iter_colorop = iter_colorop->next;
380 }
381
382 if (new_crtc_state && changed)
383 new_crtc_state->plane_color_changed = true;
384 }
385
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 44+ messages in thread
* Re: [v7 04/15] drm/i915/color: Create a transfer function color pipeline
2025-12-01 6:46 ` [v7 04/15] drm/i915/color: Create a transfer function color pipeline Uma Shankar
2025-12-01 9:02 ` Kandpal, Suraj
@ 2025-12-01 15:55 ` kernel test robot
2025-12-02 7:56 ` [v7,04/15] " Murthy, Arun R
2 siblings, 0 replies; 44+ messages in thread
From: kernel test robot @ 2025-12-01 15:55 UTC (permalink / raw)
To: Uma Shankar, intel-gfx, intel-xe, dri-devel
Cc: oe-kbuild-all, chaitanya.kumar.borah, ville.syrjala,
pekka.paalanen, contact, harry.wentland, mwen, jadahl,
sebastian.wick, swati2.sharma, alex.hung, jani.nikula,
suraj.kandpal, Uma Shankar
Hi Uma,
kernel test robot noticed the following build errors:
[auto build test ERROR on next-20251201]
[also build test ERROR on linus/master v6.18]
[cannot apply to drm-xe/drm-xe-next drm-intel/for-linux-next drm-intel/for-linux-next-fixes drm-tip/drm-tip v6.18 v6.18-rc7 v6.18-rc6]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Uma-Shankar/drm-i915-display-Add-identifiers-for-driver-specific-blocks/20251201-150245
base: next-20251201
patch link: https://lore.kernel.org/r/20251201064655.3579280-5-uma.shankar%40intel.com
patch subject: [v7 04/15] drm/i915/color: Create a transfer function color pipeline
config: i386-buildonly-randconfig-006-20251201 (https://download.01.org/0day-ci/archive/20251201/202512012314.C2mdxzIy-lkp@intel.com/config)
compiler: gcc-14 (Debian 14.2.0-19) 14.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20251201/202512012314.C2mdxzIy-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202512012314.C2mdxzIy-lkp@intel.com/
All errors (new ones prefixed by >>):
In file included from drivers/gpu/drm/i915/display/intel_colorop.h:9,
from drivers/gpu/drm/i915/display/intel_color_pipeline.c:5:
drivers/gpu/drm/i915/display/intel_display_types.h:1989:28: error: field 'base' has incomplete type
1989 | struct drm_colorop base;
| ^~~~
drivers/gpu/drm/i915/display/intel_color_pipeline.c: In function '_intel_color_pipeline_plane_init':
>> drivers/gpu/drm/i915/display/intel_color_pipeline.c:25:15: error: implicit declaration of function 'drm_plane_colorop_curve_1d_lut_init' [-Wimplicit-function-declaration]
25 | ret = drm_plane_colorop_curve_1d_lut_init(dev, &colorop->base, plane,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> drivers/gpu/drm/i915/display/intel_color_pipeline.c:27:51: error: 'DRM_COLOROP_LUT1D_INTERPOLATION_LINEAR' undeclared (first use in this function)
27 | DRM_COLOROP_LUT1D_INTERPOLATION_LINEAR,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/gpu/drm/i915/display/intel_color_pipeline.c:27:51: note: each undeclared identifier is reported only once for each function it appears in
>> drivers/gpu/drm/i915/display/intel_color_pipeline.c:28:51: error: 'DRM_COLOROP_FLAG_ALLOW_BYPASS' undeclared (first use in this function)
28 | DRM_COLOROP_FLAG_ALLOW_BYPASS);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> drivers/gpu/drm/i915/display/intel_color_pipeline.c:40:15: error: implicit declaration of function 'drm_plane_colorop_ctm_3x4_init' [-Wimplicit-function-declaration]
40 | ret = drm_plane_colorop_ctm_3x4_init(dev, &colorop->base, plane,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> drivers/gpu/drm/i915/display/intel_color_pipeline.c:45:9: error: implicit declaration of function 'drm_colorop_set_next_property'; did you mean 'drm_connector_set_tile_property'? [-Wimplicit-function-declaration]
45 | drm_colorop_set_next_property(prev_op, &colorop->base);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| drm_connector_set_tile_property
drivers/gpu/drm/i915/display/intel_color_pipeline.c: In function 'intel_color_pipeline_plane_init':
>> drivers/gpu/drm/i915/display/intel_color_pipeline.c:92:16: error: 'struct drm_plane' has no member named 'color_pipeline_property'; did you mean 'color_encoding_property'?
92 | plane->color_pipeline_property = prop;
| ^~~~~~~~~~~~~~~~~~~~~~~
| color_encoding_property
vim +/drm_plane_colorop_curve_1d_lut_init +25 drivers/gpu/drm/i915/display/intel_color_pipeline.c
> 5 #include "intel_colorop.h"
6 #include "intel_color_pipeline.h"
7 #include "intel_de.h"
8 #include "intel_display_types.h"
9 #include "skl_universal_plane.h"
10
11 #define MAX_COLOR_PIPELINES 2
12 #define PLANE_DEGAMMA_SIZE 128
13 #define PLANE_GAMMA_SIZE 32
14
15 static
16 int _intel_color_pipeline_plane_init(struct drm_plane *plane, struct drm_prop_enum_list *list)
17 {
18 struct intel_colorop *colorop;
19 struct drm_device *dev = plane->dev;
20 int ret;
21 struct drm_colorop *prev_op;
22
23 colorop = intel_colorop_create(INTEL_PLANE_CB_PRE_CSC_LUT);
24
> 25 ret = drm_plane_colorop_curve_1d_lut_init(dev, &colorop->base, plane,
26 PLANE_DEGAMMA_SIZE,
> 27 DRM_COLOROP_LUT1D_INTERPOLATION_LINEAR,
> 28 DRM_COLOROP_FLAG_ALLOW_BYPASS);
29
30 if (ret)
31 return ret;
32
33 list->type = colorop->base.base.id;
34 list->name = kasprintf(GFP_KERNEL, "Color Pipeline %d", colorop->base.base.id);
35
36 /* TODO: handle failures and clean up */
37 prev_op = &colorop->base;
38
39 colorop = intel_colorop_create(INTEL_PLANE_CB_CSC);
> 40 ret = drm_plane_colorop_ctm_3x4_init(dev, &colorop->base, plane,
41 DRM_COLOROP_FLAG_ALLOW_BYPASS);
42 if (ret)
43 return ret;
44
> 45 drm_colorop_set_next_property(prev_op, &colorop->base);
46 prev_op = &colorop->base;
47
48 colorop = intel_colorop_create(INTEL_PLANE_CB_POST_CSC_LUT);
49 ret = drm_plane_colorop_curve_1d_lut_init(dev, &colorop->base, plane,
50 PLANE_GAMMA_SIZE,
51 DRM_COLOROP_LUT1D_INTERPOLATION_LINEAR,
52 DRM_COLOROP_FLAG_ALLOW_BYPASS);
53 if (ret)
54 return ret;
55
56 drm_colorop_set_next_property(prev_op, &colorop->base);
57
58 return 0;
59 }
60
61 int intel_color_pipeline_plane_init(struct drm_plane *plane)
62 {
63 struct drm_device *dev = plane->dev;
64 struct intel_display *display = to_intel_display(dev);
65 struct drm_property *prop;
66 struct drm_prop_enum_list pipelines[MAX_COLOR_PIPELINES];
67 int len = 0;
68 int ret;
69
70 /* Currently expose pipeline only for HDR planes */
71 if (!icl_is_hdr_plane(display, to_intel_plane(plane)->id))
72 return 0;
73
74 /* Add "Bypass" (i.e. NULL) pipeline */
75 pipelines[len].type = 0;
76 pipelines[len].name = "Bypass";
77 len++;
78
79 /* Add pipeline consisting of transfer functions */
80 ret = _intel_color_pipeline_plane_init(plane, &pipelines[len]);
81 if (ret)
82 return ret;
83 len++;
84
85 /* Create COLOR_PIPELINE property and attach */
86 prop = drm_property_create_enum(dev, DRM_MODE_PROP_ATOMIC,
87 "COLOR_PIPELINE",
88 pipelines, len);
89 if (!prop)
90 return -ENOMEM;
91
> 92 plane->color_pipeline_property = prop;
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 44+ messages in thread
* Re: [v7 07/15] drm/i915/color: Add plane CTM callback for D12 and beyond
2025-12-01 6:46 ` [v7 07/15] drm/i915/color: Add plane CTM callback for D12 and beyond Uma Shankar
2025-12-01 9:16 ` Kandpal, Suraj
@ 2025-12-01 18:13 ` kernel test robot
1 sibling, 0 replies; 44+ messages in thread
From: kernel test robot @ 2025-12-01 18:13 UTC (permalink / raw)
To: Uma Shankar, intel-gfx, intel-xe, dri-devel
Cc: oe-kbuild-all, chaitanya.kumar.borah, ville.syrjala,
pekka.paalanen, contact, harry.wentland, mwen, jadahl,
sebastian.wick, swati2.sharma, alex.hung, jani.nikula,
suraj.kandpal, Uma Shankar
Hi Uma,
kernel test robot noticed the following build errors:
[auto build test ERROR on next-20251201]
[cannot apply to drm-xe/drm-xe-next drm-intel/for-linux-next drm-intel/for-linux-next-fixes drm-tip/drm-tip v6.18 v6.18-rc7 v6.18-rc6 linus/master v6.18]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Uma-Shankar/drm-i915-display-Add-identifiers-for-driver-specific-blocks/20251201-150245
base: next-20251201
patch link: https://lore.kernel.org/r/20251201064655.3579280-8-uma.shankar%40intel.com
patch subject: [v7 07/15] drm/i915/color: Add plane CTM callback for D12 and beyond
config: i386-buildonly-randconfig-006-20251201 (https://download.01.org/0day-ci/archive/20251202/202512020215.qWaNGjB2-lkp@intel.com/config)
compiler: gcc-14 (Debian 14.2.0-19) 14.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20251202/202512020215.qWaNGjB2-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202512020215.qWaNGjB2-lkp@intel.com/
All errors (new ones prefixed by >>):
In file included from drivers/gpu/drm/i915/display/intel_color.c:31:
drivers/gpu/drm/i915/display/intel_display_types.h:1993:28: error: field 'base' has incomplete type
1993 | struct drm_colorop base;
| ^~~~
drivers/gpu/drm/i915/display/intel_color.c: In function 'xelpd_load_plane_csc_matrix':
>> drivers/gpu/drm/i915/display/intel_color.c:3865:20: error: invalid use of undefined type 'struct drm_color_ctm_3x4'
3865 | input = ctm->matrix;
| ^~
vim +3865 drivers/gpu/drm/i915/display/intel_color.c
3846
3847 static void
3848 xelpd_load_plane_csc_matrix(struct intel_dsb *dsb,
3849 const struct intel_plane_state *plane_state)
3850 {
3851 struct intel_display *display = to_intel_display(plane_state);
3852 const struct drm_plane_state *state = &plane_state->uapi;
3853 enum pipe pipe = to_intel_plane(state->plane)->pipe;
3854 enum plane_id plane = to_intel_plane(state->plane)->id;
3855 const struct drm_property_blob *blob = plane_state->hw.ctm;
3856 struct drm_color_ctm_3x4 *ctm;
3857 const u64 *input;
3858 u16 coeffs[9] = {};
3859 int i, j;
3860
3861 if (!icl_is_hdr_plane(display, plane) || !blob)
3862 return;
3863
3864 ctm = blob->data;
> 3865 input = ctm->matrix;
3866
3867 /*
3868 * Convert fixed point S31.32 input to format supported by the
3869 * hardware.
3870 */
3871 for (i = 0, j = 0; i < ARRAY_SIZE(coeffs); i++) {
3872 u64 abs_coeff = ((1ULL << 63) - 1) & input[j];
3873
3874 /*
3875 * Clamp input value to min/max supported by
3876 * hardware.
3877 */
3878 abs_coeff = clamp_val(abs_coeff, 0, CTM_COEFF_4_0 - 1);
3879
3880 /* sign bit */
3881 if (CTM_COEFF_NEGATIVE(input[j]))
3882 coeffs[i] |= 1 << 15;
3883
3884 if (abs_coeff < CTM_COEFF_0_125)
3885 coeffs[i] |= (3 << 12) |
3886 ILK_CSC_COEFF_FP(abs_coeff, 12);
3887 else if (abs_coeff < CTM_COEFF_0_25)
3888 coeffs[i] |= (2 << 12) |
3889 ILK_CSC_COEFF_FP(abs_coeff, 11);
3890 else if (abs_coeff < CTM_COEFF_0_5)
3891 coeffs[i] |= (1 << 12) |
3892 ILK_CSC_COEFF_FP(abs_coeff, 10);
3893 else if (abs_coeff < CTM_COEFF_1_0)
3894 coeffs[i] |= ILK_CSC_COEFF_FP(abs_coeff, 9);
3895 else if (abs_coeff < CTM_COEFF_2_0)
3896 coeffs[i] |= (7 << 12) |
3897 ILK_CSC_COEFF_FP(abs_coeff, 8);
3898 else
3899 coeffs[i] |= (6 << 12) |
3900 ILK_CSC_COEFF_FP(abs_coeff, 7);
3901
3902 /* Skip postoffs */
3903 if (!((j + 2) % 4))
3904 j += 2;
3905 else
3906 j++;
3907 }
3908
3909 intel_de_write_dsb(display, dsb, PLANE_CSC_COEFF(pipe, plane, 0),
3910 coeffs[0] << 16 | coeffs[1]);
3911 intel_de_write_dsb(display, dsb, PLANE_CSC_COEFF(pipe, plane, 1),
3912 coeffs[2] << 16);
3913
3914 intel_de_write_dsb(display, dsb, PLANE_CSC_COEFF(pipe, plane, 2),
3915 coeffs[3] << 16 | coeffs[4]);
3916 intel_de_write_dsb(display, dsb, PLANE_CSC_COEFF(pipe, plane, 3),
3917 coeffs[5] << 16);
3918
3919 intel_de_write_dsb(display, dsb, PLANE_CSC_COEFF(pipe, plane, 4),
3920 coeffs[6] << 16 | coeffs[7]);
3921 intel_de_write_dsb(display, dsb, PLANE_CSC_COEFF(pipe, plane, 5),
3922 coeffs[8] << 16);
3923
3924 intel_de_write_dsb(display, dsb, PLANE_CSC_PREOFF(pipe, plane, 0), 0);
3925 intel_de_write_dsb(display, dsb, PLANE_CSC_PREOFF(pipe, plane, 1), 0);
3926 intel_de_write_dsb(display, dsb, PLANE_CSC_PREOFF(pipe, plane, 2), 0);
3927
3928 /*
3929 * Conversion from S31.32 to S0.12. BIT[12] is the signed bit
3930 */
3931 intel_de_write_dsb(display, dsb,
3932 PLANE_CSC_POSTOFF(pipe, plane, 0),
3933 ctm_to_twos_complement(input[3], 0, 12));
3934 intel_de_write_dsb(display, dsb,
3935 PLANE_CSC_POSTOFF(pipe, plane, 1),
3936 ctm_to_twos_complement(input[7], 0, 12));
3937 intel_de_write_dsb(display, dsb,
3938 PLANE_CSC_POSTOFF(pipe, plane, 2),
3939 ctm_to_twos_complement(input[11], 0, 12));
3940 }
3941
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 44+ messages in thread
* Re: [v7 11/15] drm/i915/color: Program Pre-CSC registers
2025-12-01 6:46 ` [v7 11/15] drm/i915/color: Program Pre-CSC registers Uma Shankar
2025-12-01 9:24 ` Kandpal, Suraj
@ 2025-12-01 19:28 ` kernel test robot
1 sibling, 0 replies; 44+ messages in thread
From: kernel test robot @ 2025-12-01 19:28 UTC (permalink / raw)
To: Uma Shankar, intel-gfx, intel-xe, dri-devel
Cc: oe-kbuild-all, chaitanya.kumar.borah, ville.syrjala,
pekka.paalanen, contact, harry.wentland, mwen, jadahl,
sebastian.wick, swati2.sharma, alex.hung, jani.nikula,
suraj.kandpal, Uma Shankar
Hi Uma,
kernel test robot noticed the following build errors:
[auto build test ERROR on next-20251201]
[cannot apply to drm-xe/drm-xe-next drm-intel/for-linux-next drm-intel/for-linux-next-fixes drm-tip/drm-tip v6.18 v6.18-rc7 v6.18-rc6 linus/master v6.18]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Uma-Shankar/drm-i915-display-Add-identifiers-for-driver-specific-blocks/20251201-150245
base: next-20251201
patch link: https://lore.kernel.org/r/20251201064655.3579280-12-uma.shankar%40intel.com
patch subject: [v7 11/15] drm/i915/color: Program Pre-CSC registers
config: i386-buildonly-randconfig-006-20251201 (https://download.01.org/0day-ci/archive/20251202/202512020343.7KKu4M4I-lkp@intel.com/config)
compiler: gcc-14 (Debian 14.2.0-19) 14.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20251202/202512020343.7KKu4M4I-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202512020343.7KKu4M4I-lkp@intel.com/
All errors (new ones prefixed by >>):
In file included from drivers/gpu/drm/i915/display/intel_color.c:31:
drivers/gpu/drm/i915/display/intel_display_types.h:1993:28: error: field 'base' has incomplete type
1993 | struct drm_colorop base;
| ^~~~
drivers/gpu/drm/i915/display/intel_color.c: In function 'xelpd_load_plane_csc_matrix':
drivers/gpu/drm/i915/display/intel_color.c:3869:20: error: invalid use of undefined type 'struct drm_color_ctm_3x4'
3869 | input = ctm->matrix;
| ^~
drivers/gpu/drm/i915/display/intel_color.c: In function 'xelpd_program_plane_pre_csc_lut':
>> drivers/gpu/drm/i915/display/intel_color.c:3966:47: error: implicit declaration of function 'drm_color_lut32_extract'; did you mean 'drm_color_lut_extract'? [-Wimplicit-function-declaration]
3966 | u32 lut_val = drm_color_lut32_extract(pre_csc_lut[i].green, 24);
| ^~~~~~~~~~~~~~~~~~~~~~~
| drm_color_lut_extract
>> drivers/gpu/drm/i915/display/intel_color.c:3966:82: error: invalid use of undefined type 'struct drm_color_lut32'
3966 | u32 lut_val = drm_color_lut32_extract(pre_csc_lut[i].green, 24);
| ^
>> drivers/gpu/drm/i915/display/intel_color.c:3966:85: error: invalid use of undefined type 'const struct drm_color_lut32'
3966 | u32 lut_val = drm_color_lut32_extract(pre_csc_lut[i].green, 24);
| ^
vim +3966 drivers/gpu/drm/i915/display/intel_color.c
3850
3851 static void
3852 xelpd_load_plane_csc_matrix(struct intel_dsb *dsb,
3853 const struct intel_plane_state *plane_state)
3854 {
3855 struct intel_display *display = to_intel_display(plane_state);
3856 const struct drm_plane_state *state = &plane_state->uapi;
3857 enum pipe pipe = to_intel_plane(state->plane)->pipe;
3858 enum plane_id plane = to_intel_plane(state->plane)->id;
3859 const struct drm_property_blob *blob = plane_state->hw.ctm;
3860 struct drm_color_ctm_3x4 *ctm;
3861 const u64 *input;
3862 u16 coeffs[9] = {};
3863 int i, j;
3864
3865 if (!icl_is_hdr_plane(display, plane) || !blob)
3866 return;
3867
3868 ctm = blob->data;
> 3869 input = ctm->matrix;
3870
3871 /*
3872 * Convert fixed point S31.32 input to format supported by the
3873 * hardware.
3874 */
3875 for (i = 0, j = 0; i < ARRAY_SIZE(coeffs); i++) {
3876 u64 abs_coeff = ((1ULL << 63) - 1) & input[j];
3877
3878 /*
3879 * Clamp input value to min/max supported by
3880 * hardware.
3881 */
3882 abs_coeff = clamp_val(abs_coeff, 0, CTM_COEFF_4_0 - 1);
3883
3884 /* sign bit */
3885 if (CTM_COEFF_NEGATIVE(input[j]))
3886 coeffs[i] |= 1 << 15;
3887
3888 if (abs_coeff < CTM_COEFF_0_125)
3889 coeffs[i] |= (3 << 12) |
3890 ILK_CSC_COEFF_FP(abs_coeff, 12);
3891 else if (abs_coeff < CTM_COEFF_0_25)
3892 coeffs[i] |= (2 << 12) |
3893 ILK_CSC_COEFF_FP(abs_coeff, 11);
3894 else if (abs_coeff < CTM_COEFF_0_5)
3895 coeffs[i] |= (1 << 12) |
3896 ILK_CSC_COEFF_FP(abs_coeff, 10);
3897 else if (abs_coeff < CTM_COEFF_1_0)
3898 coeffs[i] |= ILK_CSC_COEFF_FP(abs_coeff, 9);
3899 else if (abs_coeff < CTM_COEFF_2_0)
3900 coeffs[i] |= (7 << 12) |
3901 ILK_CSC_COEFF_FP(abs_coeff, 8);
3902 else
3903 coeffs[i] |= (6 << 12) |
3904 ILK_CSC_COEFF_FP(abs_coeff, 7);
3905
3906 /* Skip postoffs */
3907 if (!((j + 2) % 4))
3908 j += 2;
3909 else
3910 j++;
3911 }
3912
3913 intel_de_write_dsb(display, dsb, PLANE_CSC_COEFF(pipe, plane, 0),
3914 coeffs[0] << 16 | coeffs[1]);
3915 intel_de_write_dsb(display, dsb, PLANE_CSC_COEFF(pipe, plane, 1),
3916 coeffs[2] << 16);
3917
3918 intel_de_write_dsb(display, dsb, PLANE_CSC_COEFF(pipe, plane, 2),
3919 coeffs[3] << 16 | coeffs[4]);
3920 intel_de_write_dsb(display, dsb, PLANE_CSC_COEFF(pipe, plane, 3),
3921 coeffs[5] << 16);
3922
3923 intel_de_write_dsb(display, dsb, PLANE_CSC_COEFF(pipe, plane, 4),
3924 coeffs[6] << 16 | coeffs[7]);
3925 intel_de_write_dsb(display, dsb, PLANE_CSC_COEFF(pipe, plane, 5),
3926 coeffs[8] << 16);
3927
3928 intel_de_write_dsb(display, dsb, PLANE_CSC_PREOFF(pipe, plane, 0), 0);
3929 intel_de_write_dsb(display, dsb, PLANE_CSC_PREOFF(pipe, plane, 1), 0);
3930 intel_de_write_dsb(display, dsb, PLANE_CSC_PREOFF(pipe, plane, 2), 0);
3931
3932 /*
3933 * Conversion from S31.32 to S0.12. BIT[12] is the signed bit
3934 */
3935 intel_de_write_dsb(display, dsb,
3936 PLANE_CSC_POSTOFF(pipe, plane, 0),
3937 ctm_to_twos_complement(input[3], 0, 12));
3938 intel_de_write_dsb(display, dsb,
3939 PLANE_CSC_POSTOFF(pipe, plane, 1),
3940 ctm_to_twos_complement(input[7], 0, 12));
3941 intel_de_write_dsb(display, dsb,
3942 PLANE_CSC_POSTOFF(pipe, plane, 2),
3943 ctm_to_twos_complement(input[11], 0, 12));
3944 }
3945
3946 static void
3947 xelpd_program_plane_pre_csc_lut(struct intel_dsb *dsb,
3948 const struct intel_plane_state *plane_state)
3949 {
3950 struct intel_display *display = to_intel_display(plane_state);
3951 const struct drm_plane_state *state = &plane_state->uapi;
3952 enum pipe pipe = to_intel_plane(state->plane)->pipe;
3953 enum plane_id plane = to_intel_plane(state->plane)->id;
3954 const struct drm_color_lut32 *pre_csc_lut = plane_state->hw.degamma_lut->data;
3955 u32 i, lut_size;
3956
3957 if (icl_is_hdr_plane(display, plane)) {
3958 lut_size = 128;
3959
3960 intel_de_write_dsb(display, dsb,
3961 PLANE_PRE_CSC_GAMC_INDEX_ENH(pipe, plane, 0),
3962 PLANE_PAL_PREC_AUTO_INCREMENT);
3963
3964 if (pre_csc_lut) {
3965 for (i = 0; i < lut_size; i++) {
> 3966 u32 lut_val = drm_color_lut32_extract(pre_csc_lut[i].green, 24);
3967
3968 intel_de_write_dsb(display, dsb,
3969 PLANE_PRE_CSC_GAMC_DATA_ENH(pipe, plane, 0),
3970 lut_val);
3971 }
3972
3973 /* Program the max register to clamp values > 1.0. */
3974 /* TODO: Restrict to 0x7ffffff */
3975 do {
3976 intel_de_write_dsb(display, dsb,
3977 PLANE_PRE_CSC_GAMC_DATA_ENH(pipe, plane, 0),
3978 (1 << 24));
3979 } while (i++ > 130);
3980 } else {
3981 for (i = 0; i < lut_size; i++) {
3982 u32 v = (i * ((1 << 24) - 1)) / (lut_size - 1);
3983
3984 intel_de_write_dsb(display, dsb,
3985 PLANE_PRE_CSC_GAMC_DATA_ENH(pipe, plane, 0), v);
3986 }
3987
3988 do {
3989 intel_de_write_dsb(display, dsb,
3990 PLANE_PRE_CSC_GAMC_DATA_ENH(pipe, plane, 0),
3991 1 << 24);
3992 } while (i++ < 130);
3993 }
3994
3995 intel_de_write_dsb(display, dsb, PLANE_PRE_CSC_GAMC_INDEX_ENH(pipe, plane, 0), 0);
3996 }
3997 }
3998
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 44+ messages in thread
* Re: [v7 15/15] drm/i915/color: Enable Plane Color Pipelines
2025-12-01 6:46 ` [v7 15/15] drm/i915/color: Enable Plane Color Pipelines Uma Shankar
@ 2025-12-01 21:14 ` kernel test robot
0 siblings, 0 replies; 44+ messages in thread
From: kernel test robot @ 2025-12-01 21:14 UTC (permalink / raw)
To: Uma Shankar, intel-gfx, intel-xe, dri-devel
Cc: oe-kbuild-all, chaitanya.kumar.borah, ville.syrjala,
pekka.paalanen, contact, harry.wentland, mwen, jadahl,
sebastian.wick, swati2.sharma, alex.hung, jani.nikula,
suraj.kandpal, Uma Shankar
Hi Uma,
kernel test robot noticed the following build errors:
[auto build test ERROR on next-20251201]
[cannot apply to drm-xe/drm-xe-next drm-intel/for-linux-next drm-intel/for-linux-next-fixes drm-tip/drm-tip v6.18 v6.18-rc7 v6.18-rc6 linus/master v6.18]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Uma-Shankar/drm-i915-display-Add-identifiers-for-driver-specific-blocks/20251201-150245
base: next-20251201
patch link: https://lore.kernel.org/r/20251201064655.3579280-16-uma.shankar%40intel.com
patch subject: [v7 15/15] drm/i915/color: Enable Plane Color Pipelines
config: i386-buildonly-randconfig-006-20251201 (https://download.01.org/0day-ci/archive/20251202/202512020555.0E687sGd-lkp@intel.com/config)
compiler: gcc-14 (Debian 14.2.0-19) 14.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20251202/202512020555.0E687sGd-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202512020555.0E687sGd-lkp@intel.com/
All errors (new ones prefixed by >>):
In file included from drivers/gpu/drm/i915/display/skl_universal_plane.c:19:
drivers/gpu/drm/i915/display/intel_display_types.h:1993:28: error: field 'base' has incomplete type
1993 | struct drm_colorop base;
| ^~~~
drivers/gpu/drm/i915/display/skl_universal_plane.c: In function 'glk_plane_color_ctl':
>> drivers/gpu/drm/i915/display/skl_universal_plane.c:1288:21: error: implicit declaration of function 'drm_color_lut32_size'; did you mean 'drm_color_lut_size'? [-Wimplicit-function-declaration]
1288 | if (drm_color_lut32_size(plane_state->hw.gamma_lut) != 32)
| ^~~~~~~~~~~~~~~~~~~~
| drm_color_lut_size
vim +1288 drivers/gpu/drm/i915/display/skl_universal_plane.c
1245
1246 static u32 glk_plane_color_ctl(const struct intel_plane_state *plane_state)
1247 {
1248 struct intel_display *display = to_intel_display(plane_state);
1249 const struct drm_framebuffer *fb = plane_state->hw.fb;
1250 struct intel_plane *plane = to_intel_plane(plane_state->uapi.plane);
1251 u32 plane_color_ctl = 0;
1252
1253 plane_color_ctl |= PLANE_COLOR_PLANE_GAMMA_DISABLE;
1254 plane_color_ctl |= glk_plane_color_ctl_alpha(plane_state);
1255
1256 if (fb->format->is_yuv && !icl_is_hdr_plane(display, plane->id)) {
1257 switch (plane_state->hw.color_encoding) {
1258 case DRM_COLOR_YCBCR_BT709:
1259 plane_color_ctl |= PLANE_COLOR_CSC_MODE_YUV709_TO_RGB709;
1260 break;
1261 case DRM_COLOR_YCBCR_BT2020:
1262 plane_color_ctl |=
1263 PLANE_COLOR_CSC_MODE_YUV2020_TO_RGB2020;
1264 break;
1265 default:
1266 plane_color_ctl |=
1267 PLANE_COLOR_CSC_MODE_YUV601_TO_RGB601;
1268 }
1269 if (plane_state->hw.color_range == DRM_COLOR_YCBCR_FULL_RANGE)
1270 plane_color_ctl |= PLANE_COLOR_YUV_RANGE_CORRECTION_DISABLE;
1271 } else if (fb->format->is_yuv) {
1272 plane_color_ctl |= PLANE_COLOR_INPUT_CSC_ENABLE;
1273 if (plane_state->hw.color_range == DRM_COLOR_YCBCR_FULL_RANGE)
1274 plane_color_ctl |= PLANE_COLOR_YUV_RANGE_CORRECTION_DISABLE;
1275 }
1276
1277 if (plane_state->force_black)
1278 plane_color_ctl |= PLANE_COLOR_PLANE_CSC_ENABLE;
1279
1280 if (plane_state->hw.degamma_lut)
1281 plane_color_ctl |= PLANE_COLOR_PRE_CSC_GAMMA_ENABLE;
1282
1283 if (plane_state->hw.ctm)
1284 plane_color_ctl |= PLANE_COLOR_PLANE_CSC_ENABLE;
1285
1286 if (plane_state->hw.gamma_lut) {
1287 plane_color_ctl &= ~PLANE_COLOR_PLANE_GAMMA_DISABLE;
> 1288 if (drm_color_lut32_size(plane_state->hw.gamma_lut) != 32)
1289 plane_color_ctl |= PLANE_COLOR_POST_CSC_GAMMA_MULTSEG_ENABLE;
1290 }
1291
1292 return plane_color_ctl;
1293 }
1294
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 44+ messages in thread
* Re: [v7, 01/15] drm/i915/display: Add identifiers for driver specific blocks
2025-12-01 6:46 ` [v7 01/15] drm/i915/display: Add identifiers for driver specific blocks Uma Shankar
@ 2025-12-02 7:42 ` Murthy, Arun R
2025-12-02 8:04 ` Borah, Chaitanya Kumar
0 siblings, 1 reply; 44+ messages in thread
From: Murthy, Arun R @ 2025-12-02 7:42 UTC (permalink / raw)
To: Uma Shankar, intel-gfx, intel-xe, dri-devel
Cc: chaitanya.kumar.borah, ville.syrjala, pekka.paalanen, contact,
harry.wentland, mwen, jadahl, sebastian.wick, swati2.sharma,
alex.hung, jani.nikula, suraj.kandpal
On 01-12-2025 12:16, Uma Shankar wrote:
> From: Chaitanya Kumar Borah <chaitanya.kumar.borah@intel.com>
>
> Add macros to identify intel specific color blocks. It will help
> in mapping drm_color_ops to intel color HW blocks
>
> v2:- Prefix enums with INTEL_* (Jani, Suraj)
> - Remove unnecessary comments (Jani)
> - Commit message improvements (Suraj)
>
> Reviewed-by: Suraj Kandpal <suraj.kandpal@intel.com>
> Signed-off-by: Chaitanya Kumar Borah <chaitanya.kumar.borah@intel.com>
> Signed-off-by: Uma Shankar <uma.shankar@intel.com>
> ---
> drivers/gpu/drm/i915/display/intel_display_limits.h | 8 ++++++++
> 1 file changed, 8 insertions(+)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_display_limits.h b/drivers/gpu/drm/i915/display/intel_display_limits.h
> index f0fa27e365ab..55fd574ba313 100644
> --- a/drivers/gpu/drm/i915/display/intel_display_limits.h
> +++ b/drivers/gpu/drm/i915/display/intel_display_limits.h
> @@ -138,4 +138,12 @@ enum hpd_pin {
> HPD_NUM_PINS
> };
>
> +enum intel_color_block {
Can this be intel_plane_color_block/pipeline as we get a new
block/pipeline for crtc which can later be named as
intel_crtc_color_block/pipeline
Thanks and Regards,
Arun R Murthy
-------------------
> + INTEL_PLANE_CB_PRE_CSC_LUT,
> + INTEL_PLANE_CB_CSC,
> + INTEL_PLANE_CB_POST_CSC_LUT,
> +
> + INTEL_CB_MAX
> +};
> +
> #endif /* __INTEL_DISPLAY_LIMITS_H__ */
^ permalink raw reply [flat|nested] 44+ messages in thread
* Re: [v7,04/15] drm/i915/color: Create a transfer function color pipeline
2025-12-01 6:46 ` [v7 04/15] drm/i915/color: Create a transfer function color pipeline Uma Shankar
2025-12-01 9:02 ` Kandpal, Suraj
2025-12-01 15:55 ` kernel test robot
@ 2025-12-02 7:56 ` Murthy, Arun R
2025-12-02 8:20 ` Borah, Chaitanya Kumar
2 siblings, 1 reply; 44+ messages in thread
From: Murthy, Arun R @ 2025-12-02 7:56 UTC (permalink / raw)
To: Uma Shankar, intel-gfx, intel-xe, dri-devel
Cc: chaitanya.kumar.borah, ville.syrjala, pekka.paalanen, contact,
harry.wentland, mwen, jadahl, sebastian.wick, swati2.sharma,
alex.hung, jani.nikula, suraj.kandpal
On 01-12-2025 12:16, Uma Shankar wrote:
> From: Chaitanya Kumar Borah <chaitanya.kumar.borah@intel.com>
>
> Add a color pipeline with three colorops in the sequence
>
> 1D LUT - 3x4 CTM - 1D LUT
>
> This pipeline can be used to do any color space conversion or HDR
> tone mapping
>
> v2: Change namespace to drm_plane_colorop*
> v3: Use simpler/pre-existing colorops for first iteration
> v4:
> - s/*_tf_*/*_color_* (Jani)
> - Refactor to separate files (Jani)
> - Add missing space in comment (Suraj)
> - Consolidate patch that adds/attaches pipeline property
> v5:
> - Limit MAX_COLOR_PIPELINES to 2.(Suraj)
> Increase it as and when we add more pipelines.
> - Remove redundant initialization code (Suraj)
>
> Signed-off-by: Uma Shankar <uma.shankar@intel.com>
> Signed-off-by: Chaitanya Kumar Borah <chaitanya.kumar.borah@intel.com>
> Reviewed-by: Suraj Kandpal <suraj.kandpal@intel.com>
> ---
> drivers/gpu/drm/i915/Makefile | 1 +
> .../drm/i915/display/intel_color_pipeline.c | 97 +++++++++++++++++++
> .../drm/i915/display/intel_color_pipeline.h | 13 +++
> drivers/gpu/drm/xe/Makefile | 1 +
> 4 files changed, 112 insertions(+)
> create mode 100644 drivers/gpu/drm/i915/display/intel_color_pipeline.c
> create mode 100644 drivers/gpu/drm/i915/display/intel_color_pipeline.h
>
> diff --git a/drivers/gpu/drm/i915/Makefile b/drivers/gpu/drm/i915/Makefile
> index 7c19d5345d88..ca5c69d1cb08 100644
> --- a/drivers/gpu/drm/i915/Makefile
> +++ b/drivers/gpu/drm/i915/Makefile
> @@ -241,6 +241,7 @@ i915-y += \
> display/intel_cmtg.o \
> display/intel_color.o \
> display/intel_colorop.o \
> + display/intel_color_pipeline.o \
> display/intel_combo_phy.o \
> display/intel_connector.o \
> display/intel_crtc.o \
> diff --git a/drivers/gpu/drm/i915/display/intel_color_pipeline.c b/drivers/gpu/drm/i915/display/intel_color_pipeline.c
> new file mode 100644
> index 000000000000..1415f94dd3e3
> --- /dev/null
> +++ b/drivers/gpu/drm/i915/display/intel_color_pipeline.c
> @@ -0,0 +1,97 @@
> +// SPDX-License-Identifier: MIT
> +/*
> + * Copyright © 2025 Intel Corporation
> + */
> +#include "intel_colorop.h"
> +#include "intel_color_pipeline.h"
> +#include "intel_de.h"
> +#include "intel_display_types.h"
> +#include "skl_universal_plane.h"
> +
> +#define MAX_COLOR_PIPELINES 2
Should this be same as INTEL_CB_MAX defined in intel_display_limits.h ?
> +#define PLANE_DEGAMMA_SIZE 128
> +#define PLANE_GAMMA_SIZE 32
> +
> +static
> +int _intel_color_pipeline_plane_init(struct drm_plane *plane, struct drm_prop_enum_list *list)
> +{
> + struct intel_colorop *colorop;
> + struct drm_device *dev = plane->dev;
> + int ret;
> + struct drm_colorop *prev_op;
> +
> + colorop = intel_colorop_create(INTEL_PLANE_CB_PRE_CSC_LUT);
> +
> + ret = drm_plane_colorop_curve_1d_lut_init(dev, &colorop->base, plane,
> + PLANE_DEGAMMA_SIZE,
> + DRM_COLOROP_LUT1D_INTERPOLATION_LINEAR,
> + DRM_COLOROP_FLAG_ALLOW_BYPASS);
> +
> + if (ret)
> + return ret;
> +
> + list->type = colorop->base.base.id;
> + list->name = kasprintf(GFP_KERNEL, "Color Pipeline %d", colorop->base.base.id);
> +
> + /* TODO: handle failures and clean up */
> + prev_op = &colorop->base;
> +
> + colorop = intel_colorop_create(INTEL_PLANE_CB_CSC);
> + ret = drm_plane_colorop_ctm_3x4_init(dev, &colorop->base, plane,
> + DRM_COLOROP_FLAG_ALLOW_BYPASS);
> + if (ret)
> + return ret;
> +
> + drm_colorop_set_next_property(prev_op, &colorop->base);
> + prev_op = &colorop->base;
> +
> + colorop = intel_colorop_create(INTEL_PLANE_CB_POST_CSC_LUT);
> + ret = drm_plane_colorop_curve_1d_lut_init(dev, &colorop->base, plane,
> + PLANE_GAMMA_SIZE,
> + DRM_COLOROP_LUT1D_INTERPOLATION_LINEAR,
> + DRM_COLOROP_FLAG_ALLOW_BYPASS);
> + if (ret)
> + return ret;
> +
> + drm_colorop_set_next_property(prev_op, &colorop->base);
> +
> + return 0;
> +}
> +
> +int intel_color_pipeline_plane_init(struct drm_plane *plane)
> +{
> + struct drm_device *dev = plane->dev;
> + struct intel_display *display = to_intel_display(dev);
> + struct drm_property *prop;
> + struct drm_prop_enum_list pipelines[MAX_COLOR_PIPELINES];
> + int len = 0;
> + int ret;
> +
> + /* Currently expose pipeline only for HDR planes */
> + if (!icl_is_hdr_plane(display, to_intel_plane(plane)->id))
> + return 0;
> +
> + /* Add "Bypass" (i.e. NULL) pipeline */
> + pipelines[len].type = 0;
> + pipelines[len].name = "Bypass";
> + len++;
Code for creating Bypass and COLOR_PIPELINE property is there in
drm_core and is exported as drm_plane_create_color_pipeline_property()
Can this function be used to avoid code duplication?
Thanks and Regards,
Arun R Murthy
-------------------
> +
> + /* Add pipeline consisting of transfer functions */
> + ret = _intel_color_pipeline_plane_init(plane, &pipelines[len]);
> + if (ret)
> + return ret;
> + len++;
> +
> + /* Create COLOR_PIPELINE property and attach */
> + prop = drm_property_create_enum(dev, DRM_MODE_PROP_ATOMIC,
> + "COLOR_PIPELINE",
> + pipelines, len);
> + if (!prop)
> + return -ENOMEM;
> +
> + plane->color_pipeline_property = prop;
> +
> + drm_object_attach_property(&plane->base, prop, 0);
> +
> + return 0;
> +}
> diff --git a/drivers/gpu/drm/i915/display/intel_color_pipeline.h b/drivers/gpu/drm/i915/display/intel_color_pipeline.h
> new file mode 100644
> index 000000000000..7f1d32bc9202
> --- /dev/null
> +++ b/drivers/gpu/drm/i915/display/intel_color_pipeline.h
> @@ -0,0 +1,13 @@
> +/* SPDX-License-Identifier: MIT */
> +/*
> + * Copyright © 2025 Intel Corporation
> + */
> +
> +#ifndef __INTEL_COLOR_PIPELINE_H__
> +#define __INTEL_COLOR_PIPELINE_H__
> +
> +struct drm_plane;
> +
> +int intel_color_pipeline_plane_init(struct drm_plane *plane);
> +
> +#endif /* __INTEL_COLOR_PIPELINE_H__ */
> diff --git a/drivers/gpu/drm/xe/Makefile b/drivers/gpu/drm/xe/Makefile
> index 3420725c4ba8..89f922d745ba 100644
> --- a/drivers/gpu/drm/xe/Makefile
> +++ b/drivers/gpu/drm/xe/Makefile
> @@ -235,6 +235,7 @@ xe-$(CONFIG_DRM_XE_DISPLAY) += \
> i915-display/intel_cmtg.o \
> i915-display/intel_color.o \
> i915-display/intel_colorop.o \
> + i915-display/intel_color_pipeline.o \
> i915-display/intel_combo_phy.o \
> i915-display/intel_connector.o \
> i915-display/intel_crtc.o \
^ permalink raw reply [flat|nested] 44+ messages in thread
* Re: [v7, 01/15] drm/i915/display: Add identifiers for driver specific blocks
2025-12-02 7:42 ` [v7, " Murthy, Arun R
@ 2025-12-02 8:04 ` Borah, Chaitanya Kumar
0 siblings, 0 replies; 44+ messages in thread
From: Borah, Chaitanya Kumar @ 2025-12-02 8:04 UTC (permalink / raw)
To: Murthy, Arun R, Uma Shankar, intel-gfx, intel-xe, dri-devel
Cc: ville.syrjala, pekka.paalanen, contact, harry.wentland, mwen,
jadahl, sebastian.wick, swati2.sharma, alex.hung, jani.nikula,
suraj.kandpal
On 12/2/2025 1:12 PM, Murthy, Arun R wrote:
> On 01-12-2025 12:16, Uma Shankar wrote:
>> From: Chaitanya Kumar Borah <chaitanya.kumar.borah@intel.com>
>>
>> Add macros to identify intel specific color blocks. It will help
>> in mapping drm_color_ops to intel color HW blocks
>>
>> v2:- Prefix enums with INTEL_* (Jani, Suraj)
>> - Remove unnecessary comments (Jani)
>> - Commit message improvements (Suraj)
>>
>> Reviewed-by: Suraj Kandpal <suraj.kandpal@intel.com>
>> Signed-off-by: Chaitanya Kumar Borah <chaitanya.kumar.borah@intel.com>
>> Signed-off-by: Uma Shankar <uma.shankar@intel.com>
>> ---
>> drivers/gpu/drm/i915/display/intel_display_limits.h | 8 ++++++++
>> 1 file changed, 8 insertions(+)
>>
>> diff --git a/drivers/gpu/drm/i915/display/intel_display_limits.h b/
>> drivers/gpu/drm/i915/display/intel_display_limits.h
>> index f0fa27e365ab..55fd574ba313 100644
>> --- a/drivers/gpu/drm/i915/display/intel_display_limits.h
>> +++ b/drivers/gpu/drm/i915/display/intel_display_limits.h
>> @@ -138,4 +138,12 @@ enum hpd_pin {
>> HPD_NUM_PINS
>> };
>> +enum intel_color_block {
>
> Can this be intel_plane_color_block/pipeline as we get a new block/
> pipeline for crtc which can later be named as intel_crtc_color_block/
> pipeline
I had given it a thought but we don't really need a different enum
because all the intel_colorop code is agnostic to which object it is
attached to. Otherwise we have to create plane and crtc specific colorop
functions without much need of it. So, I envision it as a single colorop
enum type serving both plane and crtc but with appropriate prefix.
enum intel_color_block {
/* Plane color blocks */
INTEL_PLANE_CB_PRE_CSC_LUT,
INTEL_PLANE_CB_CSC,
INTEL_PLANE_CB_POST_CSC_LUT,
INTEL_PLANE_CB_3DLUT,
/* CRTC color blocks */
INTEL_CRTC_CB_PRE_CSC_LUT,
...
INTEL_CB_MAX
};
==
Chaitanya
>
> Thanks and Regards,
> Arun R Murthy
> -------------------
>
>> + INTEL_PLANE_CB_PRE_CSC_LUT,
>> + INTEL_PLANE_CB_CSC,
>> + INTEL_PLANE_CB_POST_CSC_LUT,
>> +
>> + INTEL_CB_MAX
>> +};
>> +
>> #endif /* __INTEL_DISPLAY_LIMITS_H__ */
^ permalink raw reply [flat|nested] 44+ messages in thread
* Re: [v7,04/15] drm/i915/color: Create a transfer function color pipeline
2025-12-02 7:56 ` [v7,04/15] " Murthy, Arun R
@ 2025-12-02 8:20 ` Borah, Chaitanya Kumar
0 siblings, 0 replies; 44+ messages in thread
From: Borah, Chaitanya Kumar @ 2025-12-02 8:20 UTC (permalink / raw)
To: Murthy, Arun R, Uma Shankar, intel-gfx, intel-xe, dri-devel
Cc: ville.syrjala, pekka.paalanen, contact, harry.wentland, mwen,
jadahl, sebastian.wick, swati2.sharma, alex.hung, jani.nikula,
suraj.kandpal
On 12/2/2025 1:26 PM, Murthy, Arun R wrote:
>
> On 01-12-2025 12:16, Uma Shankar wrote:
>> From: Chaitanya Kumar Borah <chaitanya.kumar.borah@intel.com>
>>
>> Add a color pipeline with three colorops in the sequence
>>
>> 1D LUT - 3x4 CTM - 1D LUT
>>
>> This pipeline can be used to do any color space conversion or HDR
>> tone mapping
>>
>> v2: Change namespace to drm_plane_colorop*
>> v3: Use simpler/pre-existing colorops for first iteration
>> v4:
>> - s/*_tf_*/*_color_* (Jani)
>> - Refactor to separate files (Jani)
>> - Add missing space in comment (Suraj)
>> - Consolidate patch that adds/attaches pipeline property
>> v5:
>> - Limit MAX_COLOR_PIPELINES to 2.(Suraj)
>> Increase it as and when we add more pipelines.
>> - Remove redundant initialization code (Suraj)
>>
>> Signed-off-by: Uma Shankar <uma.shankar@intel.com>
>> Signed-off-by: Chaitanya Kumar Borah <chaitanya.kumar.borah@intel.com>
>> Reviewed-by: Suraj Kandpal <suraj.kandpal@intel.com>
>> ---
>> drivers/gpu/drm/i915/Makefile | 1 +
>> .../drm/i915/display/intel_color_pipeline.c | 97 +++++++++++++++++++
>> .../drm/i915/display/intel_color_pipeline.h | 13 +++
>> drivers/gpu/drm/xe/Makefile | 1 +
>> 4 files changed, 112 insertions(+)
>> create mode 100644 drivers/gpu/drm/i915/display/intel_color_pipeline.c
>> create mode 100644 drivers/gpu/drm/i915/display/intel_color_pipeline.h
>>
>> diff --git a/drivers/gpu/drm/i915/Makefile b/drivers/gpu/drm/i915/
>> Makefile
>> index 7c19d5345d88..ca5c69d1cb08 100644
>> --- a/drivers/gpu/drm/i915/Makefile
>> +++ b/drivers/gpu/drm/i915/Makefile
>> @@ -241,6 +241,7 @@ i915-y += \
>> display/intel_cmtg.o \
>> display/intel_color.o \
>> display/intel_colorop.o \
>> + display/intel_color_pipeline.o \
>> display/intel_combo_phy.o \
>> display/intel_connector.o \
>> display/intel_crtc.o \
>> diff --git a/drivers/gpu/drm/i915/display/intel_color_pipeline.c b/
>> drivers/gpu/drm/i915/display/intel_color_pipeline.c
>> new file mode 100644
>> index 000000000000..1415f94dd3e3
>> --- /dev/null
>> +++ b/drivers/gpu/drm/i915/display/intel_color_pipeline.c
>> @@ -0,0 +1,97 @@
>> +// SPDX-License-Identifier: MIT
>> +/*
>> + * Copyright © 2025 Intel Corporation
>> + */
>> +#include "intel_colorop.h"
>> +#include "intel_color_pipeline.h"
>> +#include "intel_de.h"
>> +#include "intel_display_types.h"
>> +#include "skl_universal_plane.h"
>> +
>> +#define MAX_COLOR_PIPELINES 2
> Should this be same as INTEL_CB_MAX defined in intel_display_limits.h ?
>> +#define PLANE_DEGAMMA_SIZE 128
>> +#define PLANE_GAMMA_SIZE 32
>> +
>> +static
>> +int _intel_color_pipeline_plane_init(struct drm_plane *plane, struct
>> drm_prop_enum_list *list)
>> +{
>> + struct intel_colorop *colorop;
>> + struct drm_device *dev = plane->dev;
>> + int ret;
>> + struct drm_colorop *prev_op;
>> +
>> + colorop = intel_colorop_create(INTEL_PLANE_CB_PRE_CSC_LUT);
>> +
>> + ret = drm_plane_colorop_curve_1d_lut_init(dev, &colorop->base,
>> plane,
>> + PLANE_DEGAMMA_SIZE,
>> + DRM_COLOROP_LUT1D_INTERPOLATION_LINEAR,
>> + DRM_COLOROP_FLAG_ALLOW_BYPASS);
>> +
>> + if (ret)
>> + return ret;
>> +
>> + list->type = colorop->base.base.id;
>> + list->name = kasprintf(GFP_KERNEL, "Color Pipeline %d", colorop-
>> >base.base.id);
>> +
>> + /* TODO: handle failures and clean up */
>> + prev_op = &colorop->base;
>> +
>> + colorop = intel_colorop_create(INTEL_PLANE_CB_CSC);
>> + ret = drm_plane_colorop_ctm_3x4_init(dev, &colorop->base, plane,
>> + DRM_COLOROP_FLAG_ALLOW_BYPASS);
>> + if (ret)
>> + return ret;
>> +
>> + drm_colorop_set_next_property(prev_op, &colorop->base);
>> + prev_op = &colorop->base;
>> +
>> + colorop = intel_colorop_create(INTEL_PLANE_CB_POST_CSC_LUT);
>> + ret = drm_plane_colorop_curve_1d_lut_init(dev, &colorop->base,
>> plane,
>> + PLANE_GAMMA_SIZE,
>> + DRM_COLOROP_LUT1D_INTERPOLATION_LINEAR,
>> + DRM_COLOROP_FLAG_ALLOW_BYPASS);
>> + if (ret)
>> + return ret;
>> +
>> + drm_colorop_set_next_property(prev_op, &colorop->base);
>> +
>> + return 0;
>> +}
>> +
>> +int intel_color_pipeline_plane_init(struct drm_plane *plane)
>> +{
>> + struct drm_device *dev = plane->dev;
>> + struct intel_display *display = to_intel_display(dev);
>> + struct drm_property *prop;
>> + struct drm_prop_enum_list pipelines[MAX_COLOR_PIPELINES];
>> + int len = 0;
>> + int ret;
>> +
>> + /* Currently expose pipeline only for HDR planes */
>> + if (!icl_is_hdr_plane(display, to_intel_plane(plane)->id))
>> + return 0;
>> +
>> + /* Add "Bypass" (i.e. NULL) pipeline */
>> + pipelines[len].type = 0;
>> + pipelines[len].name = "Bypass";
>> + len++;
> Code for creating Bypass and COLOR_PIPELINE property is there in
> drm_core and is exported as drm_plane_create_color_pipeline_property()
>
> Can this function be used to avoid code duplication?
Makes sense. Would be added in the next version.
Regards
Chaitanya
>
> Thanks and Regards,
> Arun R Murthy
> -------------------
>
>> +
>> + /* Add pipeline consisting of transfer functions */
>> + ret = _intel_color_pipeline_plane_init(plane, &pipelines[len]);
>> + if (ret)
>> + return ret;
>> + len++;
>> +
>> + /* Create COLOR_PIPELINE property and attach */
>> + prop = drm_property_create_enum(dev, DRM_MODE_PROP_ATOMIC,
>> + "COLOR_PIPELINE",
>> + pipelines, len);
>> + if (!prop)
>> + return -ENOMEM;
>> +
>> + plane->color_pipeline_property = prop;
>> +
>> + drm_object_attach_property(&plane->base, prop, 0);
>> +
>> + return 0;
>> +}
>> diff --git a/drivers/gpu/drm/i915/display/intel_color_pipeline.h b/
>> drivers/gpu/drm/i915/display/intel_color_pipeline.h
>> new file mode 100644
>> index 000000000000..7f1d32bc9202
>> --- /dev/null
>> +++ b/drivers/gpu/drm/i915/display/intel_color_pipeline.h
>> @@ -0,0 +1,13 @@
>> +/* SPDX-License-Identifier: MIT */
>> +/*
>> + * Copyright © 2025 Intel Corporation
>> + */
>> +
>> +#ifndef __INTEL_COLOR_PIPELINE_H__
>> +#define __INTEL_COLOR_PIPELINE_H__
>> +
>> +struct drm_plane;
>> +
>> +int intel_color_pipeline_plane_init(struct drm_plane *plane);
>> +
>> +#endif /* __INTEL_COLOR_PIPELINE_H__ */
>> diff --git a/drivers/gpu/drm/xe/Makefile b/drivers/gpu/drm/xe/Makefile
>> index 3420725c4ba8..89f922d745ba 100644
>> --- a/drivers/gpu/drm/xe/Makefile
>> +++ b/drivers/gpu/drm/xe/Makefile
>> @@ -235,6 +235,7 @@ xe-$(CONFIG_DRM_XE_DISPLAY) += \
>> i915-display/intel_cmtg.o \
>> i915-display/intel_color.o \
>> i915-display/intel_colorop.o \
>> + i915-display/intel_color_pipeline.o \
>> i915-display/intel_combo_phy.o \
>> i915-display/intel_connector.o \
>> i915-display/intel_crtc.o \
^ permalink raw reply [flat|nested] 44+ messages in thread
* RE: [v7 11/15] drm/i915/color: Program Pre-CSC registers
2025-12-01 9:24 ` Kandpal, Suraj
@ 2025-12-02 8:24 ` Shankar, Uma
2025-12-02 16:00 ` Kandpal, Suraj
0 siblings, 1 reply; 44+ messages in thread
From: Shankar, Uma @ 2025-12-02 8:24 UTC (permalink / raw)
To: Kandpal, Suraj, intel-gfx@lists.freedesktop.org,
intel-xe@lists.freedesktop.org, dri-devel@lists.freedesktop.org
Cc: Borah, Chaitanya Kumar, ville.syrjala@linux.intel.com,
pekka.paalanen@collabora.com, contact@emersion.fr,
harry.wentland@amd.com, mwen@igalia.com, jadahl@redhat.com,
sebastian.wick@redhat.com, Sharma, Swati2, alex.hung@amd.com,
Nikula, Jani
> -----Original Message-----
> From: Kandpal, Suraj <suraj.kandpal@intel.com>
> Sent: Monday, December 1, 2025 2:55 PM
> To: Shankar, Uma <uma.shankar@intel.com>; intel-gfx@lists.freedesktop.org;
> intel-xe@lists.freedesktop.org; dri-devel@lists.freedesktop.org
> Cc: Borah, Chaitanya Kumar <chaitanya.kumar.borah@intel.com>;
> ville.syrjala@linux.intel.com; pekka.paalanen@collabora.com;
> contact@emersion.fr; harry.wentland@amd.com; mwen@igalia.com;
> jadahl@redhat.com; sebastian.wick@redhat.com; Sharma, Swati2
> <swati2.sharma@intel.com>; alex.hung@amd.com; Nikula, Jani
> <jani.nikula@intel.com>
> Subject: RE: [v7 11/15] drm/i915/color: Program Pre-CSC registers
>
> > Subject: [v7 11/15] drm/i915/color: Program Pre-CSC registers
> >
> > Add callback to program Pre-CSC LUT for TGL and beyond
> >
> > v2: Add DSB support
> > v3: Add support for single segment 1D LUT color op
> > v4:
> > - s/drm_color_lut_32/drm_color_lut32/ (Simon)
> > - Change commit message (Suraj)
> > - Improve comments (Suraj)
> > - Remove multisegmented programming, to be added later
> > - Remove dead code for SDR planes, add when needed
> >
> > BSpec: 50411, 50412, 50413, 50414
> > Signed-off-by: Uma Shankar <uma.shankar@intel.com>
> > Signed-off-by: Chaitanya Kumar Borah <chaitanya.kumar.borah@intel.com>
> > ---
> > drivers/gpu/drm/i915/display/intel_color.c | 61
> > ++++++++++++++++++++++
> > 1 file changed, 61 insertions(+)
> >
> > diff --git a/drivers/gpu/drm/i915/display/intel_color.c
> > b/drivers/gpu/drm/i915/display/intel_color.c
> > index 4ca359d68730..2a114d2964fa 100644
> > --- a/drivers/gpu/drm/i915/display/intel_color.c
> > +++ b/drivers/gpu/drm/i915/display/intel_color.c
> > @@ -3943,6 +3943,66 @@ xelpd_load_plane_csc_matrix(struct intel_dsb *dsb,
> > ctm_to_twos_complement(input[11], 0, 12)); }
> >
> > +static void
> > +xelpd_program_plane_pre_csc_lut(struct intel_dsb *dsb,
> > + const struct intel_plane_state *plane_state) {
> > + struct intel_display *display = to_intel_display(plane_state);
> > + const struct drm_plane_state *state = &plane_state->uapi;
> > + enum pipe pipe = to_intel_plane(state->plane)->pipe;
> > + enum plane_id plane = to_intel_plane(state->plane)->id;
>
> Introduce intel_plane here and use that
I think its only used at 2 places, don't see any need of extra variable.
If no strong objection, I think it's ok to keep this way.
Regards,
Uma Shankar
> Regards,
> Suraj Kandpal
>
> > + const struct drm_color_lut32 *pre_csc_lut = plane_state-
> > >hw.degamma_lut->data;
> > + u32 i, lut_size;
> > +
> > + if (icl_is_hdr_plane(display, plane)) {
> > + lut_size = 128;
> > +
> > + intel_de_write_dsb(display, dsb,
> > + PLANE_PRE_CSC_GAMC_INDEX_ENH(pipe,
> > plane, 0),
> > + PLANE_PAL_PREC_AUTO_INCREMENT);
> > +
> > + if (pre_csc_lut) {
> > + for (i = 0; i < lut_size; i++) {
> > + u32 lut_val =
> > drm_color_lut32_extract(pre_csc_lut[i].green, 24);
> > +
> > + intel_de_write_dsb(display, dsb,
> > +
> > PLANE_PRE_CSC_GAMC_DATA_ENH(pipe, plane, 0),
> > + lut_val);
> > + }
> > +
> > + /* Program the max register to clamp values > 1.0. */
> > + /* TODO: Restrict to 0x7ffffff */
> > + do {
> > + intel_de_write_dsb(display, dsb,
> > +
> > PLANE_PRE_CSC_GAMC_DATA_ENH(pipe, plane, 0),
> > + (1 << 24));
> > + } while (i++ > 130);
> > + } else {
> > + for (i = 0; i < lut_size; i++) {
> > + u32 v = (i * ((1 << 24) - 1)) / (lut_size - 1);
> > +
> > + intel_de_write_dsb(display, dsb,
> > +
> > PLANE_PRE_CSC_GAMC_DATA_ENH(pipe, plane, 0), v);
> > + }
> > +
> > + do {
> > + intel_de_write_dsb(display, dsb,
> > +
> > PLANE_PRE_CSC_GAMC_DATA_ENH(pipe, plane, 0),
> > + 1 << 24);
> > + } while (i++ < 130);
> > + }
> > +
> > + intel_de_write_dsb(display, dsb,
> > PLANE_PRE_CSC_GAMC_INDEX_ENH(pipe, plane, 0), 0);
> > + }
> > +}
> > +
> > +static void
> > +xelpd_plane_load_luts(struct intel_dsb *dsb, const struct
> > +intel_plane_state *plane_state) {
> > + if (plane_state->hw.degamma_lut)
> > + xelpd_program_plane_pre_csc_lut(dsb, plane_state); }
> > +
> > static const struct intel_color_funcs chv_color_funcs = {
> > .color_check = chv_color_check,
> > .color_commit_arm = i9xx_color_commit_arm, @@ -3991,6 +4051,7 @@
> > static const struct intel_color_funcs tgl_color_funcs = {
> > .read_csc = icl_read_csc,
> > .get_config = skl_get_config,
> > .load_plane_csc_matrix = xelpd_load_plane_csc_matrix,
> > + .load_plane_luts = xelpd_plane_load_luts,
> > };
> >
> > static const struct intel_color_funcs icl_color_funcs = {
> > --
> > 2.50.1
^ permalink raw reply [flat|nested] 44+ messages in thread
* RE: [v7 12/15] drm/i915/xelpd: Program Plane Post CSC Registers
2025-12-01 6:46 ` [v7 12/15] drm/i915/xelpd: Program Plane Post CSC Registers Uma Shankar
@ 2025-12-02 15:32 ` Kandpal, Suraj
2025-12-02 16:10 ` Kandpal, Suraj
0 siblings, 1 reply; 44+ messages in thread
From: Kandpal, Suraj @ 2025-12-02 15:32 UTC (permalink / raw)
To: Shankar, Uma, intel-gfx@lists.freedesktop.org,
intel-xe@lists.freedesktop.org, dri-devel@lists.freedesktop.org
Cc: Borah, Chaitanya Kumar, ville.syrjala@linux.intel.com,
pekka.paalanen@collabora.com, contact@emersion.fr,
harry.wentland@amd.com, mwen@igalia.com, jadahl@redhat.com,
sebastian.wick@redhat.com, Sharma, Swati2, alex.hung@amd.com,
Nikula, Jani
> Subject: [v7 12/15] drm/i915/xelpd: Program Plane Post CSC Registers
This needs to be i915/color:
>
> Extract the LUT and program plane post csc registers.
>
> v2: Add DSB support
> v3: Add support for single segment 1D LUT
> v4:
> - s/drm_color_lut_32/drm_color_lut32 (Simon)
> - Move declaration to beginning of the function (Suraj)
> - Remove multisegmented code, add it later
> - Remove dead code for SDR planes, add it later
> v5:
> - Fix iterator issues
>
> Signed-off-by: Uma Shankar <uma.shankar@intel.com>
> Signed-off-by: Chaitanya Kumar Borah <chaitanya.kumar.borah@intel.com>
> ---
> drivers/gpu/drm/i915/display/intel_color.c | 59 ++++++++++++++++++++++
> 1 file changed, 59 insertions(+)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_color.c
> b/drivers/gpu/drm/i915/display/intel_color.c
> index 2a114d2964fa..86d1fbc906bf 100644
> --- a/drivers/gpu/drm/i915/display/intel_color.c
> +++ b/drivers/gpu/drm/i915/display/intel_color.c
> @@ -3996,11 +3996,70 @@ xelpd_program_plane_pre_csc_lut(struct
> intel_dsb *dsb,
> }
> }
>
> +static void
> +xelpd_program_plane_post_csc_lut(struct intel_dsb *dsb,
> + const struct intel_plane_state *plane_state) {
> + struct intel_display *display = to_intel_display(plane_state);
> + const struct drm_plane_state *state = &plane_state->uapi;
> + enum pipe pipe = to_intel_plane(state->plane)->pipe;
> + enum plane_id plane = to_intel_plane(state->plane)->id;
> + const struct drm_color_lut32 *post_csc_lut = plane_state-
> >hw.gamma_lut->data;
> + u32 i, j, lut_size, lut_val;
j is un-uninitialized here and it remains un-initialized even when first used can cause unforeseen errors
Regards,
Suraj Kandpal
> +
> + if (icl_is_hdr_plane(display, plane)) {
> + intel_de_write_dsb(display, dsb,
> PLANE_POST_CSC_GAMC_INDEX_ENH(pipe, plane, 0),
> + PLANE_PAL_PREC_AUTO_INCREMENT);
> + /* TODO: Add macro */
> + intel_de_write_dsb(display, dsb,
> PLANE_POST_CSC_GAMC_SEG0_INDEX_ENH(pipe, plane, 0),
> + PLANE_PAL_PREC_AUTO_INCREMENT);
> + if (post_csc_lut) {
> + lut_size = 32;
> + for (i = 0; i < lut_size; i++) {
> + lut_val =
> drm_color_lut32_extract(post_csc_lut[j++].green, 24);
> +
> + intel_de_write_dsb(display, dsb,
> +
> PLANE_POST_CSC_GAMC_DATA_ENH(pipe, plane, 0),
> + lut_val);
> + }
> +
> + /* Segment 2 */
> + do {
> + intel_de_write_dsb(display, dsb,
> +
> PLANE_POST_CSC_GAMC_DATA_ENH(pipe, plane, 0),
> + (1 << 24));
> + } while (++j < 34);
> + } else {
> + /*TODO: Add for segment 0 */
> + lut_size = 32;
> + for (i = 0; i < lut_size; i++) {
> + u32 v = (i * ((1 << 24) - 1)) / (lut_size - 1);
> +
> + intel_de_write_dsb(display, dsb,
> +
> PLANE_POST_CSC_GAMC_DATA_ENH(pipe, plane, 0), v);
> + }
> +
> + do {
> + intel_de_write_dsb(display, dsb,
> +
> PLANE_POST_CSC_GAMC_DATA_ENH(pipe, plane, 0),
> + 1 << 24);
> + } while (i++ < 34);
> + }
> +
> + intel_de_write_dsb(display, dsb,
> PLANE_POST_CSC_GAMC_INDEX_ENH(pipe, plane, 0), 0);
> + intel_de_write_dsb(display, dsb,
> +
> PLANE_POST_CSC_GAMC_SEG0_INDEX_ENH(pipe, plane, 0), 0);
> + }
> +}
> +
> static void
> xelpd_plane_load_luts(struct intel_dsb *dsb, const struct intel_plane_state
> *plane_state) {
> if (plane_state->hw.degamma_lut)
> xelpd_program_plane_pre_csc_lut(dsb, plane_state);
> +
> + if (plane_state->hw.gamma_lut)
> + xelpd_program_plane_post_csc_lut(dsb, plane_state);
> }
>
> static const struct intel_color_funcs chv_color_funcs = {
> --
> 2.50.1
^ permalink raw reply [flat|nested] 44+ messages in thread
* RE: [v7 14/15] drm/i915/color: Add 3D LUT to color pipeline
2025-12-01 6:46 ` [v7 14/15] drm/i915/color: Add 3D LUT to color pipeline Uma Shankar
@ 2025-12-02 15:42 ` Kandpal, Suraj
0 siblings, 0 replies; 44+ messages in thread
From: Kandpal, Suraj @ 2025-12-02 15:42 UTC (permalink / raw)
To: Shankar, Uma, intel-gfx@lists.freedesktop.org,
intel-xe@lists.freedesktop.org, dri-devel@lists.freedesktop.org
Cc: Borah, Chaitanya Kumar, ville.syrjala@linux.intel.com,
pekka.paalanen@collabora.com, contact@emersion.fr,
harry.wentland@amd.com, mwen@igalia.com, jadahl@redhat.com,
sebastian.wick@redhat.com, Sharma, Swati2, alex.hung@amd.com,
Nikula, Jani
> Subject: [v7 14/15] drm/i915/color: Add 3D LUT to color pipeline
>
> From: Chaitanya Kumar Borah <chaitanya.kumar.borah@intel.com>
>
> Add helpers to program the 3D LUT registers and arm them.
>
> LUT_3D_READY in LUT_3D_CLT is cleared off by the HW once the LUT buffer is
> loaded into it's internal working RAM.
> So by the time we try to load/commit new values, we expect it to be cleared
> off. If not, log an error and return without writing new values. Do it only when
> while writing with MMIO.
This should be either "while writing MMIO" or "when writing MMIO"
> There is no way to read register within DSB
> execution.
>
> v2:
> - Add information regarding LUT_3D_READY to commit message (Jani)
> - Log error instead of a drm_warn and return without committing changes
> if 3DLUT HW is not ready to accept new values.
> - Refactor intel_color_crtc_has_3dlut()
> Also remove Gen10 check (Suraj)
>
> Signed-off-by: Chaitanya Kumar Borah <chaitanya.kumar.borah@intel.com>
> Signed-off-by: Uma Shankar <uma.shankar@intel.com>
> ---
> drivers/gpu/drm/i915/display/intel_color.c | 79 +++++++++++++++++++
> drivers/gpu/drm/i915/display/intel_color.h | 4 +
> .../drm/i915/display/intel_color_pipeline.c | 25 +++++-
> .../drm/i915/display/intel_color_pipeline.h | 3 +-
> .../drm/i915/display/intel_display_limits.h | 1 +
> .../drm/i915/display/intel_display_types.h | 2 +-
> drivers/gpu/drm/i915/display/intel_plane.c | 2 +
> 7 files changed, 111 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_color.c
> b/drivers/gpu/drm/i915/display/intel_color.c
> index 86d1fbc906bf..70e6effba9b3 100644
> --- a/drivers/gpu/drm/i915/display/intel_color.c
> +++ b/drivers/gpu/drm/i915/display/intel_color.c
> @@ -4062,6 +4062,53 @@ xelpd_plane_load_luts(struct intel_dsb *dsb, const
> struct intel_plane_state *pla
> xelpd_program_plane_post_csc_lut(dsb, plane_state); }
>
> +static u32 glk_3dlut_10(const struct drm_color_lut32 *color) {
> + return REG_FIELD_PREP(LUT_3D_DATA_RED_MASK,
> drm_color_lut32_extract(color->red, 10)) |
> + REG_FIELD_PREP(LUT_3D_DATA_GREEN_MASK,
> drm_color_lut32_extract(color->green, 10)) |
> + REG_FIELD_PREP(LUT_3D_DATA_BLUE_MASK,
> +drm_color_lut32_extract(color->blue, 10)); }
> +
> +static void glk_load_lut_3d(struct intel_dsb *dsb,
> + struct intel_crtc *crtc,
> + const struct drm_property_blob *blob) {
> + struct intel_display *display = to_intel_display(crtc->base.dev);
> + const struct drm_color_lut32 *lut = blob->data;
> + int i, lut_size = drm_color_lut32_size(blob);
> + enum pipe pipe = crtc->pipe;
> +
> + if (!dsb && intel_de_read(display, LUT_3D_CTL(pipe)) &
> LUT_3D_READY) {
> + drm_err(display->drm, "[CRTC:%d:%s] 3D LUT not ready, not
> loading LUTs\n",
> + crtc->base.base.id, crtc->base.name);
> + return;
> + }
> +
> + intel_de_write_dsb(display, dsb, LUT_3D_INDEX(pipe),
> LUT_3D_AUTO_INCREMENT);
> + for (i = 0; i < lut_size; i++)
> + intel_de_write_dsb(display, dsb, LUT_3D_DATA(pipe),
> glk_3dlut_10(&lut[i]));
> + intel_de_write_dsb(display, dsb, LUT_3D_INDEX(pipe), 0); }
> +
> +static void glk_lut_3d_commit(struct intel_dsb *dsb, struct intel_crtc
> +*crtc, bool enable) {
> + struct intel_display *display = to_intel_display(crtc);
> + enum pipe pipe = crtc->pipe;
> + u32 val;
> +
> + if (!dsb && intel_de_read(display, LUT_3D_CTL(pipe)) &
> LUT_3D_READY) {
> + drm_err(display->drm, "[CRTC:%d:%s] 3D LUT not ready, not
> committing change\n",
> + crtc->base.base.id, crtc->base.name);
> + return;
> + }
> +
> + if (enable)
> + val = LUT_3D_ENABLE | LUT_3D_READY |
> LUT_3D_BIND_PLANE_1;
> + else
> + val = 0;
If you initialize the val to 0 when you declare it, the else block can be avoided.
> + intel_de_write_dsb(display, dsb, LUT_3D_CTL(pipe), val); }
> +
> static const struct intel_color_funcs chv_color_funcs = {
> .color_check = chv_color_check,
> .color_commit_arm = i9xx_color_commit_arm, @@ -4191,6 +4238,16
> @@ static const struct intel_color_funcs ilk_color_funcs = {
> .get_config = ilk_get_config,
> };
>
> +void intel_color_plane_commit_arm(struct intel_dsb *dsb,
> + const struct intel_plane_state *plane_state) {
> + struct intel_display *display = to_intel_display(plane_state);
> + struct intel_crtc *crtc = to_intel_crtc(plane_state->uapi.crtc);
> +
> + if (crtc && intel_color_crtc_has_3dlut(display, crtc->pipe))
> + glk_lut_3d_commit(dsb, crtc, !!plane_state->hw.lut_3d); }
> +
> static void
> intel_color_load_plane_csc_matrix(struct intel_dsb *dsb,
> const struct intel_plane_state *plane_state)
> @@ -4211,6 +4268,26 @@ intel_color_load_plane_luts(struct intel_dsb *dsb,
> display->funcs.color->load_plane_luts(dsb, plane_state); }
>
> +bool
> +intel_color_crtc_has_3dlut(struct intel_display *display, enum pipe
> +pipe) {
> + if (DISPLAY_VER(display) >= 12)
> + return pipe == PIPE_A || pipe == PIPE_B;
> + else
> + return false;
> +}
> +
> +static void
> +intel_color_load_3dlut(struct intel_dsb *dsb,
> + const struct intel_plane_state *plane_state) {
> + struct intel_display *display = to_intel_display(plane_state);
> + struct intel_crtc *crtc = to_intel_crtc(plane_state->uapi.crtc);
> +
> + if (crtc && intel_color_crtc_has_3dlut(display, crtc->pipe))
> + glk_load_lut_3d(dsb, crtc, plane_state->hw.lut_3d); }
> +
> void intel_color_plane_program_pipeline(struct intel_dsb *dsb,
> const struct intel_plane_state
> *plane_state) { @@ -4218,6 +4295,8 @@ void
> intel_color_plane_program_pipeline(struct intel_dsb *dsb,
> intel_color_load_plane_csc_matrix(dsb, plane_state);
> if (plane_state->hw.degamma_lut || plane_state->hw.gamma_lut)
> intel_color_load_plane_luts(dsb, plane_state);
> + if (plane_state->hw.lut_3d)
> + intel_color_load_3dlut(dsb, plane_state);
> }
>
> void intel_color_crtc_init(struct intel_crtc *crtc) diff --git
> a/drivers/gpu/drm/i915/display/intel_color.h
> b/drivers/gpu/drm/i915/display/intel_color.h
> index 8051c827a1d8..c21b9bdf7bb8 100644
> --- a/drivers/gpu/drm/i915/display/intel_color.h
> +++ b/drivers/gpu/drm/i915/display/intel_color.h
> @@ -15,6 +15,7 @@ struct intel_display;
> struct intel_dsb;
> struct intel_plane_state;
> struct drm_property_blob;
> +enum pipe;
>
> void intel_color_init_hooks(struct intel_display *display); int
> intel_color_init(struct intel_display *display); @@ -43,4 +44,7 @@ bool
> intel_color_lut_equal(const struct intel_crtc_state *crtc_state, void
> intel_color_assert_luts(const struct intel_crtc_state *crtc_state); void
> intel_color_plane_program_pipeline(struct intel_dsb *dsb,
> const struct intel_plane_state
> *plane_state);
> +void intel_color_plane_commit_arm(struct intel_dsb *dsb,
> + const struct intel_plane_state *plane_state);
> bool
> +intel_color_crtc_has_3dlut(struct intel_display *display, enum pipe
> +pipe);
> #endif /* __INTEL_COLOR_H__ */
> diff --git a/drivers/gpu/drm/i915/display/intel_color_pipeline.c
> b/drivers/gpu/drm/i915/display/intel_color_pipeline.c
> index 1415f94dd3e3..8214a00e34cf 100644
> --- a/drivers/gpu/drm/i915/display/intel_color_pipeline.c
> +++ b/drivers/gpu/drm/i915/display/intel_color_pipeline.c
> @@ -2,6 +2,7 @@
> /*
> * Copyright © 2025 Intel Corporation
> */
> +#include "intel_color.h"
> #include "intel_colorop.h"
> #include "intel_color_pipeline.h"
> #include "intel_de.h"
> @@ -13,10 +14,12 @@
> #define PLANE_GAMMA_SIZE 32
>
> static
> -int _intel_color_pipeline_plane_init(struct drm_plane *plane, struct
> drm_prop_enum_list *list)
> +int _intel_color_pipeline_plane_init(struct drm_plane *plane, struct
> drm_prop_enum_list *list,
> + enum pipe pipe)
> {
> struct intel_colorop *colorop;
> struct drm_device *dev = plane->dev;
> + struct intel_display *display = to_intel_display(dev);
This needs to be declared at the first line when possible or at least at the next topmost line.
With all the above fixed LGTM,
Reviewed-by: Suraj Kandpal <suraj.kandpal@intel.com>
> int ret;
> struct drm_colorop *prev_op;
>
> @@ -36,6 +39,22 @@ int _intel_color_pipeline_plane_init(struct drm_plane
> *plane, struct drm_prop_en
> /* TODO: handle failures and clean up */
> prev_op = &colorop->base;
>
> + if (DISPLAY_VER(display) >= 35 &&
> + intel_color_crtc_has_3dlut(display, pipe) &&
> + plane->type == DRM_PLANE_TYPE_PRIMARY) {
> + colorop = intel_colorop_create(INTEL_PLANE_CB_3DLUT);
> +
> + ret = drm_plane_colorop_3dlut_init(dev, &colorop->base,
> plane, 17,
> +
> DRM_COLOROP_LUT3D_INTERPOLATION_TETRAHEDRAL,
> + true);
> + if (ret)
> + return ret;
> +
> + drm_colorop_set_next_property(prev_op, &colorop->base);
> +
> + prev_op = &colorop->base;
> + }
> +
> colorop = intel_colorop_create(INTEL_PLANE_CB_CSC);
> ret = drm_plane_colorop_ctm_3x4_init(dev, &colorop->base, plane,
>
> DRM_COLOROP_FLAG_ALLOW_BYPASS); @@ -58,7 +77,7 @@ int
> _intel_color_pipeline_plane_init(struct drm_plane *plane, struct drm_prop_en
> return 0;
> }
>
> -int intel_color_pipeline_plane_init(struct drm_plane *plane)
> +int intel_color_pipeline_plane_init(struct drm_plane *plane, enum pipe
> +pipe)
> {
> struct drm_device *dev = plane->dev;
> struct intel_display *display = to_intel_display(dev); @@ -77,7 +96,7
> @@ int intel_color_pipeline_plane_init(struct drm_plane *plane)
> len++;
>
> /* Add pipeline consisting of transfer functions */
> - ret = _intel_color_pipeline_plane_init(plane, &pipelines[len]);
> + ret = _intel_color_pipeline_plane_init(plane, &pipelines[len], pipe);
> if (ret)
> return ret;
> len++;
> diff --git a/drivers/gpu/drm/i915/display/intel_color_pipeline.h
> b/drivers/gpu/drm/i915/display/intel_color_pipeline.h
> index 7f1d32bc9202..a457d306da7f 100644
> --- a/drivers/gpu/drm/i915/display/intel_color_pipeline.h
> +++ b/drivers/gpu/drm/i915/display/intel_color_pipeline.h
> @@ -7,7 +7,8 @@
> #define __INTEL_COLOR_PIPELINE_H__
>
> struct drm_plane;
> +enum pipe;
>
> -int intel_color_pipeline_plane_init(struct drm_plane *plane);
> +int intel_color_pipeline_plane_init(struct drm_plane *plane, enum pipe
> +pipe);
>
> #endif /* __INTEL_COLOR_PIPELINE_H__ */ diff --git
> a/drivers/gpu/drm/i915/display/intel_display_limits.h
> b/drivers/gpu/drm/i915/display/intel_display_limits.h
> index 55fd574ba313..cb3c9c665c44 100644
> --- a/drivers/gpu/drm/i915/display/intel_display_limits.h
> +++ b/drivers/gpu/drm/i915/display/intel_display_limits.h
> @@ -142,6 +142,7 @@ enum intel_color_block {
> INTEL_PLANE_CB_PRE_CSC_LUT,
> INTEL_PLANE_CB_CSC,
> INTEL_PLANE_CB_POST_CSC_LUT,
> + INTEL_PLANE_CB_3DLUT,
>
> INTEL_CB_MAX
> };
> diff --git a/drivers/gpu/drm/i915/display/intel_display_types.h
> b/drivers/gpu/drm/i915/display/intel_display_types.h
> index c419a814cb34..06bf8f7c0989 100644
> --- a/drivers/gpu/drm/i915/display/intel_display_types.h
> +++ b/drivers/gpu/drm/i915/display/intel_display_types.h
> @@ -646,7 +646,7 @@ struct intel_plane_state {
> enum drm_color_encoding color_encoding;
> enum drm_color_range color_range;
> enum drm_scaling_filter scaling_filter;
> - struct drm_property_blob *ctm, *degamma_lut, *gamma_lut;
> + struct drm_property_blob *ctm, *degamma_lut, *gamma_lut,
> *lut_3d;
> } hw;
>
> struct i915_vma *ggtt_vma;
> diff --git a/drivers/gpu/drm/i915/display/intel_plane.c
> b/drivers/gpu/drm/i915/display/intel_plane.c
> index 4e6ddb36b872..d9db3742b8c4 100644
> --- a/drivers/gpu/drm/i915/display/intel_plane.c
> +++ b/drivers/gpu/drm/i915/display/intel_plane.c
> @@ -352,6 +352,8 @@ intel_plane_colorop_replace_blob(struct
> intel_plane_state *plane_state,
> return drm_property_replace_blob(&plane_state-
> >hw.degamma_lut, blob);
> else if (intel_colorop->id == INTEL_PLANE_CB_POST_CSC_LUT)
> return drm_property_replace_blob(&plane_state-
> >hw.gamma_lut, blob);
> + else if (intel_colorop->id == INTEL_PLANE_CB_3DLUT)
> + return drm_property_replace_blob(&plane_state->hw.lut_3d,
> blob);
>
> return false;
> }
> --
> 2.50.1
^ permalink raw reply [flat|nested] 44+ messages in thread
* RE: [v7 11/15] drm/i915/color: Program Pre-CSC registers
2025-12-02 8:24 ` Shankar, Uma
@ 2025-12-02 16:00 ` Kandpal, Suraj
0 siblings, 0 replies; 44+ messages in thread
From: Kandpal, Suraj @ 2025-12-02 16:00 UTC (permalink / raw)
To: Shankar, Uma, intel-gfx@lists.freedesktop.org,
intel-xe@lists.freedesktop.org, dri-devel@lists.freedesktop.org
Cc: Borah, Chaitanya Kumar, ville.syrjala@linux.intel.com,
pekka.paalanen@collabora.com, contact@emersion.fr,
harry.wentland@amd.com, mwen@igalia.com, jadahl@redhat.com,
sebastian.wick@redhat.com, Sharma, Swati2, alex.hung@amd.com,
Nikula, Jani
> > Subject: RE: [v7 11/15] drm/i915/color: Program Pre-CSC registers
> >
> > > Subject: [v7 11/15] drm/i915/color: Program Pre-CSC registers
> > >
> > > Add callback to program Pre-CSC LUT for TGL and beyond
> > >
> > > v2: Add DSB support
> > > v3: Add support for single segment 1D LUT color op
> > > v4:
> > > - s/drm_color_lut_32/drm_color_lut32/ (Simon)
> > > - Change commit message (Suraj)
> > > - Improve comments (Suraj)
> > > - Remove multisegmented programming, to be added later
> > > - Remove dead code for SDR planes, add when needed
> > >
> > > BSpec: 50411, 50412, 50413, 50414
> > > Signed-off-by: Uma Shankar <uma.shankar@intel.com>
> > > Signed-off-by: Chaitanya Kumar Borah
> > > <chaitanya.kumar.borah@intel.com>
> > > ---
> > > drivers/gpu/drm/i915/display/intel_color.c | 61
> > > ++++++++++++++++++++++
> > > 1 file changed, 61 insertions(+)
> > >
> > > diff --git a/drivers/gpu/drm/i915/display/intel_color.c
> > > b/drivers/gpu/drm/i915/display/intel_color.c
> > > index 4ca359d68730..2a114d2964fa 100644
> > > --- a/drivers/gpu/drm/i915/display/intel_color.c
> > > +++ b/drivers/gpu/drm/i915/display/intel_color.c
> > > @@ -3943,6 +3943,66 @@ xelpd_load_plane_csc_matrix(struct intel_dsb
> *dsb,
> > > ctm_to_twos_complement(input[11], 0, 12)); }
> > >
> > > +static void
> > > +xelpd_program_plane_pre_csc_lut(struct intel_dsb *dsb,
> > > + const struct intel_plane_state *plane_state) {
> > > + struct intel_display *display = to_intel_display(plane_state);
> > > + const struct drm_plane_state *state = &plane_state->uapi;
> > > + enum pipe pipe = to_intel_plane(state->plane)->pipe;
> > > + enum plane_id plane = to_intel_plane(state->plane)->id;
> >
> > Introduce intel_plane here and use that
>
> I think its only used at 2 places, don't see any need of extra variable.
> If no strong objection, I think it's ok to keep this way.
Sure Reviewed-by: Suraj Kandpal <suraj.kandpal@intel.com>
>
> Regards,
> Uma Shankar
>
> > Regards,
> > Suraj Kandpal
> >
> > > + const struct drm_color_lut32 *pre_csc_lut = plane_state-
> > > >hw.degamma_lut->data;
> > > + u32 i, lut_size;
> > > +
> > > + if (icl_is_hdr_plane(display, plane)) {
> > > + lut_size = 128;
> > > +
> > > + intel_de_write_dsb(display, dsb,
> > > + PLANE_PRE_CSC_GAMC_INDEX_ENH(pipe,
> > > plane, 0),
> > > + PLANE_PAL_PREC_AUTO_INCREMENT);
> > > +
> > > + if (pre_csc_lut) {
> > > + for (i = 0; i < lut_size; i++) {
> > > + u32 lut_val =
> > > drm_color_lut32_extract(pre_csc_lut[i].green, 24);
> > > +
> > > + intel_de_write_dsb(display, dsb,
> > > +
> > > PLANE_PRE_CSC_GAMC_DATA_ENH(pipe, plane, 0),
> > > + lut_val);
> > > + }
> > > +
> > > + /* Program the max register to clamp values > 1.0. */
> > > + /* TODO: Restrict to 0x7ffffff */
> > > + do {
> > > + intel_de_write_dsb(display, dsb,
> > > +
> > > PLANE_PRE_CSC_GAMC_DATA_ENH(pipe, plane, 0),
> > > + (1 << 24));
> > > + } while (i++ > 130);
> > > + } else {
> > > + for (i = 0; i < lut_size; i++) {
> > > + u32 v = (i * ((1 << 24) - 1)) / (lut_size - 1);
> > > +
> > > + intel_de_write_dsb(display, dsb,
> > > +
> > > PLANE_PRE_CSC_GAMC_DATA_ENH(pipe, plane, 0), v);
> > > + }
> > > +
> > > + do {
> > > + intel_de_write_dsb(display, dsb,
> > > +
> > > PLANE_PRE_CSC_GAMC_DATA_ENH(pipe, plane, 0),
> > > + 1 << 24);
> > > + } while (i++ < 130);
> > > + }
> > > +
> > > + intel_de_write_dsb(display, dsb,
> > > PLANE_PRE_CSC_GAMC_INDEX_ENH(pipe, plane, 0), 0);
> > > + }
> > > +}
> > > +
> > > +static void
> > > +xelpd_plane_load_luts(struct intel_dsb *dsb, const struct
> > > +intel_plane_state *plane_state) {
> > > + if (plane_state->hw.degamma_lut)
> > > + xelpd_program_plane_pre_csc_lut(dsb, plane_state); }
> > > +
> > > static const struct intel_color_funcs chv_color_funcs = {
> > > .color_check = chv_color_check,
> > > .color_commit_arm = i9xx_color_commit_arm, @@ -3991,6 +4051,7
> @@
> > > static const struct intel_color_funcs tgl_color_funcs = {
> > > .read_csc = icl_read_csc,
> > > .get_config = skl_get_config,
> > > .load_plane_csc_matrix = xelpd_load_plane_csc_matrix,
> > > + .load_plane_luts = xelpd_plane_load_luts,
> > > };
> > >
> > > static const struct intel_color_funcs icl_color_funcs = {
> > > --
> > > 2.50.1
^ permalink raw reply [flat|nested] 44+ messages in thread
* RE: [v7 12/15] drm/i915/xelpd: Program Plane Post CSC Registers
2025-12-02 15:32 ` Kandpal, Suraj
@ 2025-12-02 16:10 ` Kandpal, Suraj
0 siblings, 0 replies; 44+ messages in thread
From: Kandpal, Suraj @ 2025-12-02 16:10 UTC (permalink / raw)
To: Shankar, Uma, intel-gfx@lists.freedesktop.org,
intel-xe@lists.freedesktop.org, dri-devel@lists.freedesktop.org
Cc: Borah, Chaitanya Kumar, ville.syrjala@linux.intel.com,
pekka.paalanen@collabora.com, contact@emersion.fr,
harry.wentland@amd.com, mwen@igalia.com, jadahl@redhat.com,
sebastian.wick@redhat.com, Sharma, Swati2, alex.hung@amd.com,
Nikula, Jani
> > Subject: [v7 12/15] drm/i915/xelpd: Program Plane Post CSC Registers
>
> This needs to be i915/color:
>
> >
> > Extract the LUT and program plane post csc registers.
> >
> > v2: Add DSB support
> > v3: Add support for single segment 1D LUT
> > v4:
> > - s/drm_color_lut_32/drm_color_lut32 (Simon)
> > - Move declaration to beginning of the function (Suraj)
> > - Remove multisegmented code, add it later
> > - Remove dead code for SDR planes, add it later
> > v5:
> > - Fix iterator issues
> >
> > Signed-off-by: Uma Shankar <uma.shankar@intel.com>
> > Signed-off-by: Chaitanya Kumar Borah <chaitanya.kumar.borah@intel.com>
> > ---
> > drivers/gpu/drm/i915/display/intel_color.c | 59 ++++++++++++++++++++++
> > 1 file changed, 59 insertions(+)
> >
> > diff --git a/drivers/gpu/drm/i915/display/intel_color.c
> > b/drivers/gpu/drm/i915/display/intel_color.c
> > index 2a114d2964fa..86d1fbc906bf 100644
> > --- a/drivers/gpu/drm/i915/display/intel_color.c
> > +++ b/drivers/gpu/drm/i915/display/intel_color.c
> > @@ -3996,11 +3996,70 @@ xelpd_program_plane_pre_csc_lut(struct
> > intel_dsb *dsb,
> > }
> > }
> >
> > +static void
> > +xelpd_program_plane_post_csc_lut(struct intel_dsb *dsb,
> > + const struct intel_plane_state *plane_state) {
> > + struct intel_display *display = to_intel_display(plane_state);
> > + const struct drm_plane_state *state = &plane_state->uapi;
> > + enum pipe pipe = to_intel_plane(state->plane)->pipe;
> > + enum plane_id plane = to_intel_plane(state->plane)->id;
> > + const struct drm_color_lut32 *post_csc_lut = plane_state-
> > >hw.gamma_lut->data;
> > + u32 i, j, lut_size, lut_val;
>
> j is un-uninitialized here and it remains un-initialized even when first used can
> cause unforeseen errors
I meant uninitialized here 😃, with the above comments addressed
Reviewed-by: Suraj Kandpal <suraj.kandpal@intel.com>
>
> Regards,
> Suraj Kandpal
>
> > +
> > + if (icl_is_hdr_plane(display, plane)) {
> > + intel_de_write_dsb(display, dsb,
> > PLANE_POST_CSC_GAMC_INDEX_ENH(pipe, plane, 0),
> > + PLANE_PAL_PREC_AUTO_INCREMENT);
> > + /* TODO: Add macro */
> > + intel_de_write_dsb(display, dsb,
> > PLANE_POST_CSC_GAMC_SEG0_INDEX_ENH(pipe, plane, 0),
> > + PLANE_PAL_PREC_AUTO_INCREMENT);
> > + if (post_csc_lut) {
> > + lut_size = 32;
> > + for (i = 0; i < lut_size; i++) {
> > + lut_val =
> > drm_color_lut32_extract(post_csc_lut[j++].green, 24);
> > +
> > + intel_de_write_dsb(display, dsb,
> > +
> > PLANE_POST_CSC_GAMC_DATA_ENH(pipe, plane, 0),
> > + lut_val);
> > + }
> > +
> > + /* Segment 2 */
> > + do {
> > + intel_de_write_dsb(display, dsb,
> > +
> > PLANE_POST_CSC_GAMC_DATA_ENH(pipe, plane, 0),
> > + (1 << 24));
> > + } while (++j < 34);
> > + } else {
> > + /*TODO: Add for segment 0 */
> > + lut_size = 32;
> > + for (i = 0; i < lut_size; i++) {
> > + u32 v = (i * ((1 << 24) - 1)) / (lut_size - 1);
> > +
> > + intel_de_write_dsb(display, dsb,
> > +
> > PLANE_POST_CSC_GAMC_DATA_ENH(pipe, plane, 0), v);
> > + }
> > +
> > + do {
> > + intel_de_write_dsb(display, dsb,
> > +
> > PLANE_POST_CSC_GAMC_DATA_ENH(pipe, plane, 0),
> > + 1 << 24);
> > + } while (i++ < 34);
> > + }
> > +
> > + intel_de_write_dsb(display, dsb,
> > PLANE_POST_CSC_GAMC_INDEX_ENH(pipe, plane, 0), 0);
> > + intel_de_write_dsb(display, dsb,
> > +
> > PLANE_POST_CSC_GAMC_SEG0_INDEX_ENH(pipe, plane, 0), 0);
> > + }
> > +}
> > +
> > static void
> > xelpd_plane_load_luts(struct intel_dsb *dsb, const struct intel_plane_state
> > *plane_state) {
> > if (plane_state->hw.degamma_lut)
> > xelpd_program_plane_pre_csc_lut(dsb, plane_state);
> > +
> > + if (plane_state->hw.gamma_lut)
> > + xelpd_program_plane_post_csc_lut(dsb, plane_state);
> > }
> >
> > static const struct intel_color_funcs chv_color_funcs = {
> > --
> > 2.50.1
^ permalink raw reply [flat|nested] 44+ messages in thread
end of thread, other threads:[~2025-12-02 16:10 UTC | newest]
Thread overview: 44+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-12-01 6:46 [v7 00/15] Plane Color Pipeline support for Intel platforms Uma Shankar
2025-12-01 6:46 ` [v7 01/15] drm/i915/display: Add identifiers for driver specific blocks Uma Shankar
2025-12-02 7:42 ` [v7, " Murthy, Arun R
2025-12-02 8:04 ` Borah, Chaitanya Kumar
2025-12-01 6:46 ` [v7 02/15] drm/i915: Add intel_color_op Uma Shankar
2025-12-01 14:21 ` kernel test robot
2025-12-01 6:46 ` [v7 03/15] drm/i915/color: Add helper to create intel colorop Uma Shankar
2025-12-01 6:46 ` [v7 04/15] drm/i915/color: Create a transfer function color pipeline Uma Shankar
2025-12-01 9:02 ` Kandpal, Suraj
2025-12-01 15:55 ` kernel test robot
2025-12-02 7:56 ` [v7,04/15] " Murthy, Arun R
2025-12-02 8:20 ` Borah, Chaitanya Kumar
2025-12-01 6:46 ` [v7 05/15] drm/i915/color: Add framework to program CSC Uma Shankar
2025-12-01 9:05 ` Kandpal, Suraj
2025-12-01 15:45 ` kernel test robot
2025-12-01 6:46 ` [v7 06/15] drm/i915/color: Preserve sign bit when int_bits is Zero Uma Shankar
2025-12-01 6:46 ` [v7 07/15] drm/i915/color: Add plane CTM callback for D12 and beyond Uma Shankar
2025-12-01 9:16 ` Kandpal, Suraj
2025-12-01 18:13 ` kernel test robot
2025-12-01 6:46 ` [v7 08/15] drm/i915: Add register definitions for Plane Degamma Uma Shankar
2025-12-01 9:18 ` Kandpal, Suraj
2025-12-01 6:46 ` [v7 09/15] drm/i915: Add register definitions for Plane Post CSC Uma Shankar
2025-12-01 9:21 ` Kandpal, Suraj
2025-12-01 6:46 ` [v7 10/15] drm/i915/color: Add framework to program PRE/POST CSC LUT Uma Shankar
2025-12-01 9:23 ` Kandpal, Suraj
2025-12-01 6:46 ` [v7 11/15] drm/i915/color: Program Pre-CSC registers Uma Shankar
2025-12-01 9:24 ` Kandpal, Suraj
2025-12-02 8:24 ` Shankar, Uma
2025-12-02 16:00 ` Kandpal, Suraj
2025-12-01 19:28 ` kernel test robot
2025-12-01 6:46 ` [v7 12/15] drm/i915/xelpd: Program Plane Post CSC Registers Uma Shankar
2025-12-02 15:32 ` Kandpal, Suraj
2025-12-02 16:10 ` Kandpal, Suraj
2025-12-01 6:46 ` [v7 13/15] drm/i915/display: Add registers for 3D LUT Uma Shankar
2025-12-01 9:26 ` Kandpal, Suraj
2025-12-01 6:46 ` [v7 14/15] drm/i915/color: Add 3D LUT to color pipeline Uma Shankar
2025-12-02 15:42 ` Kandpal, Suraj
2025-12-01 6:46 ` [v7 15/15] drm/i915/color: Enable Plane Color Pipelines Uma Shankar
2025-12-01 21:14 ` kernel test robot
2025-12-01 6:47 ` ✗ CI.checkpatch: warning for Plane Color Pipeline support for Intel platforms (rev6) Patchwork
2025-12-01 6:48 ` ✓ CI.KUnit: success " Patchwork
2025-12-01 7:03 ` ✗ CI.checksparse: warning " Patchwork
2025-12-01 7:50 ` ✓ Xe.CI.BAT: success " Patchwork
2025-12-01 8:41 ` ✗ Xe.CI.Full: failure " Patchwork
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox