Intel-GFX Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/4] Expose modifiers/formats supported by async flips
@ 2024-11-05 10:26 Arun R Murthy
  2024-11-05 10:26 ` [PATCH 1/4] drm/plane: Add new plane property IN_FORMATS_ASYNC Arun R Murthy
                   ` (7 more replies)
  0 siblings, 8 replies; 15+ messages in thread
From: Arun R Murthy @ 2024-11-05 10:26 UTC (permalink / raw)
  To: intel-xe, intel-gfx, dri-devel; +Cc: Arun R Murthy

All of the formats/modifiers supported by the plane during synchronous
flips are nor supported by asynchronous flips. The formats/modifiers
exposed to user by IN_FORMATS exposes all formats/modifiers supported by
plane and this list varies for async flips. If the async flip supported
formats/modifiers are exposed to the user, user based on this list can
take decision to proceed or not and avoid flip failures during async
flips.
Discussion around this can be located @
https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/29618#note_2487123
Userspace implementation for IN_FORMARTS_ASYNC under review @
https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4063

Arun R Murthy (4):
  drm/plane: Add new plane property IN_FORMATS_ASYNC
  drm/i915/fb: Add async field to the modifiers description
  drm/i915/display: Add async_flip flag in get_modifiers
  drm/i915/display: Add async supported formats/modifiers

 drivers/gpu/drm/drm_mode_config.c             |  7 ++
 drivers/gpu/drm/drm_plane.c                   | 73 +++++++++++++++++++
 drivers/gpu/drm/i915/display/i9xx_plane.c     |  2 +-
 drivers/gpu/drm/i915/display/intel_cursor.c   |  2 +-
 drivers/gpu/drm/i915/display/intel_fb.c       | 53 ++++++++++++--
 drivers/gpu/drm/i915/display/intel_fb.h       |  4 +-
 drivers/gpu/drm/i915/display/intel_sprite.c   |  2 +-
 .../drm/i915/display/skl_universal_plane.c    | 25 ++++++-
 include/drm/drm_mode_config.h                 |  6 ++
 include/drm/drm_plane.h                       | 10 +++
 10 files changed, 172 insertions(+), 12 deletions(-)

-- 
2.25.1


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

* [PATCH 1/4] drm/plane: Add new plane property IN_FORMATS_ASYNC
  2024-11-05 10:26 [PATCH 0/4] Expose modifiers/formats supported by async flips Arun R Murthy
@ 2024-11-05 10:26 ` Arun R Murthy
  2024-11-06 14:00   ` Ville Syrjälä
  2024-11-05 10:26 ` [PATCH 2/4] drm/i915/fb: Add async field to the modifiers description Arun R Murthy
                   ` (6 subsequent siblings)
  7 siblings, 1 reply; 15+ messages in thread
From: Arun R Murthy @ 2024-11-05 10:26 UTC (permalink / raw)
  To: intel-xe, intel-gfx, dri-devel; +Cc: Arun R Murthy

There exists a property IN_FORMATS which exposes the plane supported
modifiers/formats to the user. In some platforms when asynchronous flips
are used all of modifiers/formats mentioned in IN_FORMATS are not
supported. This patch adds a new plane property IN_FORMATS_ASYNC to
expose the async flips supported modifiers/formats so that user can use
this information ahead and done flips with unsupported
formats/modifiers. This will save flips failures.

Signed-off-by: Arun R Murthy <arun.r.murthy@intel.com>
---
 drivers/gpu/drm/drm_mode_config.c |  7 +++
 drivers/gpu/drm/drm_plane.c       | 73 +++++++++++++++++++++++++++++++
 include/drm/drm_mode_config.h     |  6 +++
 include/drm/drm_plane.h           | 10 +++++
 4 files changed, 96 insertions(+)

diff --git a/drivers/gpu/drm/drm_mode_config.c b/drivers/gpu/drm/drm_mode_config.c
index 37d2e0a4ef4b..cff189a2e751 100644
--- a/drivers/gpu/drm/drm_mode_config.c
+++ b/drivers/gpu/drm/drm_mode_config.c
@@ -379,6 +379,13 @@ static int drm_mode_create_standard_properties(struct drm_device *dev)
 		return -ENOMEM;
 	dev->mode_config.size_hints_property = prop;
 
+	prop = drm_property_create(dev,
+				   DRM_MODE_PROP_IMMUTABLE | DRM_MODE_PROP_BLOB,
+				   "IN_FORMATS_ASYNC", 0);
+	if (!prop)
+		return -ENOMEM;
+	dev->mode_config.async_modifiers_property = prop;
+
 	return 0;
 }
 
diff --git a/drivers/gpu/drm/drm_plane.c b/drivers/gpu/drm/drm_plane.c
index a28b22fdd7a4..01b8e6932fda 100644
--- a/drivers/gpu/drm/drm_plane.c
+++ b/drivers/gpu/drm/drm_plane.c
@@ -141,6 +141,12 @@
  *     various bugs in this area with inconsistencies between the capability
  *     flag and per-plane properties.
  *
+ * IN_FORMATS_ASYNC:
+ *     Blob property which contains the set of buffer format and modifier
+ *     pairs supported by this plane for asynchronous flips. The blob is a struct
+ *     drm_format_modifier_blob. Without this property the plane doesn't
+ *     support buffers with modifiers. Userspace cannot change this property.
+ *
  * SIZE_HINTS:
  *     Blob property which contains the set of recommended plane size
  *     which can used for simple "cursor like" use cases (eg. no scaling).
@@ -249,6 +255,70 @@ static int create_in_format_blob(struct drm_device *dev, struct drm_plane *plane
 	return 0;
 }
 
+static int create_in_format_async_blob(struct drm_device *dev, struct drm_plane *plane)
+{
+	const struct drm_mode_config *config = &dev->mode_config;
+	struct drm_property_blob *blob;
+	struct drm_format_modifier *async_mod;
+	size_t blob_size, async_formats_size, async_modifiers_size;
+	struct drm_format_modifier_blob *blob_data;
+	unsigned int i, j;
+
+	async_formats_size = sizeof(__u32) * plane->async_format_count;
+	if (WARN_ON(!async_formats_size)) {
+		/* 0 formats are never expected */
+		return 0;
+	}
+
+	async_modifiers_size =
+		sizeof(struct drm_format_modifier) * plane->async_modifier_count;
+
+	blob_size = sizeof(struct drm_format_modifier_blob);
+	/* Modifiers offset is a pointer to a struct with a 64 bit field so it
+	 * should be naturally aligned to 8B.
+	 */
+	BUILD_BUG_ON(sizeof(struct drm_format_modifier_blob) % 8);
+	blob_size += ALIGN(async_formats_size, 8);
+	blob_size += async_modifiers_size;
+
+	blob = drm_property_create_blob(dev, blob_size, NULL);
+	if (IS_ERR(blob))
+		return -1;
+
+	blob_data = blob->data;
+	blob_data->version = FORMAT_BLOB_CURRENT;
+	blob_data->count_formats = plane->async_format_count;
+	blob_data->formats_offset = sizeof(struct drm_format_modifier_blob);
+	blob_data->count_modifiers = plane->async_modifier_count;
+
+	blob_data->modifiers_offset =
+		ALIGN(blob_data->formats_offset + async_formats_size, 8);
+
+	memcpy(formats_ptr(blob_data), plane->async_format_types, async_formats_size);
+
+	async_mod = modifiers_ptr(blob_data);
+	for (i = 0; i < plane->async_modifier_count; i++) {
+		for (j = 0; j < plane->async_format_count; j++) {
+			if (!plane->funcs->format_mod_supported ||
+			    plane->funcs->format_mod_supported(plane,
+							       plane->async_format_types[j],
+							       plane->async_modifiers[i])) {
+				async_mod->formats |= 1ULL << j;
+			}
+		}
+
+		async_mod->modifier = plane->async_modifiers[i];
+		async_mod->offset = 0;
+		async_mod->pad = 0;
+		async_mod++;
+	}
+
+	drm_object_attach_property(&plane->base, config->async_modifiers_property,
+				   blob->base.id);
+
+	return 0;
+}
+
 /**
  * DOC: hotspot properties
  *
@@ -472,6 +542,9 @@ static int __drm_universal_plane_init(struct drm_device *dev,
 	if (format_modifier_count)
 		create_in_format_blob(dev, plane);
 
+	if (plane->async_modifier_count)
+		create_in_format_async_blob(dev, plane);
+
 	return 0;
 }
 
diff --git a/include/drm/drm_mode_config.h b/include/drm/drm_mode_config.h
index 271765e2e9f2..0c116d6dfd27 100644
--- a/include/drm/drm_mode_config.h
+++ b/include/drm/drm_mode_config.h
@@ -936,6 +936,12 @@ struct drm_mode_config {
 	 */
 	struct drm_property *modifiers_property;
 
+	/**
+	 * @async_modifiers_property: Plane property to list support modifier/format
+	 * combination for asynchronous flips.
+	 */
+	struct drm_property *async_modifiers_property;
+
 	/**
 	 * @size_hints_property: Plane SIZE_HINTS property.
 	 */
diff --git a/include/drm/drm_plane.h b/include/drm/drm_plane.h
index dd718c62ac31..d9571265251a 100644
--- a/include/drm/drm_plane.h
+++ b/include/drm/drm_plane.h
@@ -658,11 +658,21 @@ struct drm_plane {
 	 */
 	bool format_default;
 
+	/** @format_types: array of formats supported by this plane */
+	uint32_t *async_format_types;
+	/** @format_count: Size of the array pointed at by @format_types. */
+	unsigned int async_format_count;
+
 	/** @modifiers: array of modifiers supported by this plane */
 	uint64_t *modifiers;
 	/** @modifier_count: Size of the array pointed at by @modifier_count. */
 	unsigned int modifier_count;
 
+	/** @modifiers: array of modifiers supported by this plane */
+	uint64_t *async_modifiers;
+	/** @modifier_count: Size of the array pointed at by @modifier_count. */
+	unsigned int async_modifier_count;
+
 	/**
 	 * @crtc:
 	 *
-- 
2.25.1


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

* [PATCH 2/4] drm/i915/fb: Add async field to the modifiers description
  2024-11-05 10:26 [PATCH 0/4] Expose modifiers/formats supported by async flips Arun R Murthy
  2024-11-05 10:26 ` [PATCH 1/4] drm/plane: Add new plane property IN_FORMATS_ASYNC Arun R Murthy
@ 2024-11-05 10:26 ` Arun R Murthy
  2024-11-05 10:26 ` [PATCH 3/4] drm/i915/display: Add async_flip flag in get_modifiers Arun R Murthy
                   ` (5 subsequent siblings)
  7 siblings, 0 replies; 15+ messages in thread
From: Arun R Murthy @ 2024-11-05 10:26 UTC (permalink / raw)
  To: intel-xe, intel-gfx, dri-devel; +Cc: Arun R Murthy

Few of the modifiers are not supported with async flip. Add an element
async_flip to say if the modifier supports asynchronous flips.

Signed-off-by: Arun R Murthy <arun.r.murthy@intel.com>
---
 drivers/gpu/drm/i915/display/intel_fb.c | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/drivers/gpu/drm/i915/display/intel_fb.c b/drivers/gpu/drm/i915/display/intel_fb.c
index 6a7060889f40..f05e0c444618 100644
--- a/drivers/gpu/drm/i915/display/intel_fb.c
+++ b/drivers/gpu/drm/i915/display/intel_fb.c
@@ -231,6 +231,7 @@ struct intel_modifier_desc {
 		u8 packed_aux_planes:4;
 		u8 planar_aux_planes:4;
 	} ccs;
+	bool async_flip;
 };
 
 #define INTEL_PLANE_CAP_CCS_MASK	(INTEL_PLANE_CAP_CCS_RC | \
@@ -247,10 +248,12 @@ static const struct intel_modifier_desc intel_modifiers[] = {
 		.modifier = I915_FORMAT_MOD_4_TILED_LNL_CCS,
 		.display_ver = { 20, -1 },
 		.plane_caps = INTEL_PLANE_CAP_TILING_4,
+		.async_flip = true,
 	}, {
 		.modifier = I915_FORMAT_MOD_4_TILED_BMG_CCS,
 		.display_ver = { 14, -1 },
 		.plane_caps = INTEL_PLANE_CAP_TILING_4 | INTEL_PLANE_CAP_NEED64K_PHYS,
+		.async_flip = true,
 	}, {
 		.modifier = I915_FORMAT_MOD_4_TILED_MTL_MC_CCS,
 		.display_ver = { 14, 14 },
@@ -268,6 +271,7 @@ static const struct intel_modifier_desc intel_modifiers[] = {
 		.ccs.packed_aux_planes = BIT(1),
 
 		FORMAT_OVERRIDE(gen12_ccs_formats),
+		.async_flip = true,
 	}, {
 		.modifier = I915_FORMAT_MOD_4_TILED_MTL_RC_CCS_CC,
 		.display_ver = { 14, 14 },
@@ -293,10 +297,12 @@ static const struct intel_modifier_desc intel_modifiers[] = {
 		.modifier = I915_FORMAT_MOD_4_TILED_DG2_RC_CCS,
 		.display_ver = { 13, 13 },
 		.plane_caps = INTEL_PLANE_CAP_TILING_4 | INTEL_PLANE_CAP_CCS_RC,
+		.async_flip = true,
 	}, {
 		.modifier = I915_FORMAT_MOD_4_TILED,
 		.display_ver = { 13, -1 },
 		.plane_caps = INTEL_PLANE_CAP_TILING_4,
+		.async_flip = true,
 	}, {
 		.modifier = I915_FORMAT_MOD_Y_TILED_GEN12_MC_CCS,
 		.display_ver = { 12, 13 },
@@ -314,6 +320,7 @@ static const struct intel_modifier_desc intel_modifiers[] = {
 		.ccs.packed_aux_planes = BIT(1),
 
 		FORMAT_OVERRIDE(gen12_ccs_formats),
+		.async_flip = true,
 	}, {
 		.modifier = I915_FORMAT_MOD_Y_TILED_GEN12_RC_CCS_CC,
 		.display_ver = { 12, 13 },
@@ -331,6 +338,7 @@ static const struct intel_modifier_desc intel_modifiers[] = {
 		.ccs.packed_aux_planes = BIT(1),
 
 		FORMAT_OVERRIDE(skl_ccs_formats),
+		.async_flip = true,
 	}, {
 		.modifier = I915_FORMAT_MOD_Y_TILED_CCS,
 		.display_ver = { 9, 11 },
@@ -339,21 +347,26 @@ static const struct intel_modifier_desc intel_modifiers[] = {
 		.ccs.packed_aux_planes = BIT(1),
 
 		FORMAT_OVERRIDE(skl_ccs_formats),
+		.async_flip = true,
 	}, {
 		.modifier = I915_FORMAT_MOD_Yf_TILED,
 		.display_ver = { 9, 11 },
 		.plane_caps = INTEL_PLANE_CAP_TILING_Yf,
+		.async_flip = true,
 	}, {
 		.modifier = I915_FORMAT_MOD_Y_TILED,
 		.display_ver = { 9, 13 },
 		.plane_caps = INTEL_PLANE_CAP_TILING_Y,
+		.async_flip = true,
 	}, {
 		.modifier = I915_FORMAT_MOD_X_TILED,
 		.display_ver = { 0, 29 },
 		.plane_caps = INTEL_PLANE_CAP_TILING_X,
+		.async_flip = true,
 	}, {
 		.modifier = DRM_FORMAT_MOD_LINEAR,
 		.display_ver = DISPLAY_VER_ALL,
+		.async_flip = true,
 	},
 };
 
-- 
2.25.1


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

* [PATCH 3/4] drm/i915/display: Add async_flip flag in get_modifiers
  2024-11-05 10:26 [PATCH 0/4] Expose modifiers/formats supported by async flips Arun R Murthy
  2024-11-05 10:26 ` [PATCH 1/4] drm/plane: Add new plane property IN_FORMATS_ASYNC Arun R Murthy
  2024-11-05 10:26 ` [PATCH 2/4] drm/i915/fb: Add async field to the modifiers description Arun R Murthy
@ 2024-11-05 10:26 ` Arun R Murthy
  2024-11-05 10:26 ` [PATCH 4/4] drm/i915/display: Add async supported formats/modifiers Arun R Murthy
                   ` (4 subsequent siblings)
  7 siblings, 0 replies; 15+ messages in thread
From: Arun R Murthy @ 2024-11-05 10:26 UTC (permalink / raw)
  To: intel-xe, intel-gfx, dri-devel; +Cc: Arun R Murthy

get_modifiers will get the list of modifiers supported by the plane. Add
a flag async_flip to fetch only the async_flip supported modifiers.
Also expose function to get the number of modifiers supported by the
platform.

Signed-off-by: Arun R Murthy <arun.r.murthy@intel.com>
---
 drivers/gpu/drm/i915/display/i9xx_plane.c     |  2 +-
 drivers/gpu/drm/i915/display/intel_cursor.c   |  2 +-
 drivers/gpu/drm/i915/display/intel_fb.c       | 40 +++++++++++++++----
 drivers/gpu/drm/i915/display/intel_fb.h       |  4 +-
 drivers/gpu/drm/i915/display/intel_sprite.c   |  2 +-
 .../drm/i915/display/skl_universal_plane.c    |  3 +-
 6 files changed, 41 insertions(+), 12 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/i9xx_plane.c b/drivers/gpu/drm/i915/display/i9xx_plane.c
index 17a1e3801a85..08d8bb6c770e 100644
--- a/drivers/gpu/drm/i915/display/i9xx_plane.c
+++ b/drivers/gpu/drm/i915/display/i9xx_plane.c
@@ -973,7 +973,7 @@ intel_primary_plane_create(struct drm_i915_private *dev_priv, enum pipe pipe)
 		plane->disable_flip_done = ilk_primary_disable_flip_done;
 	}
 
-	modifiers = intel_fb_plane_get_modifiers(dev_priv, INTEL_PLANE_CAP_TILING_X);
+	modifiers = intel_fb_plane_get_modifiers(dev_priv, INTEL_PLANE_CAP_TILING_X, false);
 
 	if (DISPLAY_VER(dev_priv) >= 5 || IS_G4X(dev_priv))
 		ret = drm_universal_plane_init(&dev_priv->drm, &plane->base,
diff --git a/drivers/gpu/drm/i915/display/intel_cursor.c b/drivers/gpu/drm/i915/display/intel_cursor.c
index 9ba77970dab7..a08f445fbcc7 100644
--- a/drivers/gpu/drm/i915/display/intel_cursor.c
+++ b/drivers/gpu/drm/i915/display/intel_cursor.c
@@ -1026,7 +1026,7 @@ intel_cursor_plane_create(struct drm_i915_private *dev_priv,
 	if (IS_I845G(dev_priv) || IS_I865G(dev_priv) || HAS_CUR_FBC(dev_priv))
 		cursor->cursor.size = ~0;
 
-	modifiers = intel_fb_plane_get_modifiers(dev_priv, INTEL_PLANE_CAP_NONE);
+	modifiers = intel_fb_plane_get_modifiers(dev_priv, INTEL_PLANE_CAP_NONE, false);
 
 	ret = drm_universal_plane_init(&dev_priv->drm, &cursor->base,
 				       0, &intel_cursor_plane_funcs,
diff --git a/drivers/gpu/drm/i915/display/intel_fb.c b/drivers/gpu/drm/i915/display/intel_fb.c
index f05e0c444618..fba1b6fb38ad 100644
--- a/drivers/gpu/drm/i915/display/intel_fb.c
+++ b/drivers/gpu/drm/i915/display/intel_fb.c
@@ -554,7 +554,8 @@ static bool check_modifier_display_ver_range(const struct intel_modifier_desc *m
 
 static bool plane_has_modifier(struct drm_i915_private *i915,
 			       u8 plane_caps,
-			       const struct intel_modifier_desc *md)
+			       const struct intel_modifier_desc *md,
+			       bool is_async_flip)
 {
 	if (!IS_DISPLAY_VER(i915, md->display_ver.from, md->display_ver.until))
 		return false;
@@ -562,6 +563,9 @@ static bool plane_has_modifier(struct drm_i915_private *i915,
 	if (!plane_caps_contain_all(plane_caps, md->plane_caps))
 		return false;
 
+	if (!(is_async_flip && md->async_flip))
+		return false;
+
 	/*
 	 * Separate AuxCCS and Flat CCS modifiers to be run only on platforms
 	 * where supported.
@@ -581,26 +585,48 @@ static bool plane_has_modifier(struct drm_i915_private *i915,
 	return true;
 }
 
+/**
+ * intel_fb_plane_get_modifiers_count - return the number of supported modifiers for a
+ *					given platform and plane capabilities
+ * @i915: i915 device instance
+ * @plane_caps: capabilities for the plane the modifiers are queried for
+ * @async_flip: flag to convey modifiers that support async flip
+ *
+ * Returns:
+ * Returns the number for modifiers supported by the @i915 platform and @plane_caps
+ * with/without @async_flip.
+ */
+int intel_fb_plane_get_modifiers_count(struct drm_i915_private *i915,
+				       u8 plane_caps, bool async_flip)
+{
+	int count = 1;
+	int i;
+
+	for (i = 0; i < ARRAY_SIZE(intel_modifiers); i++) {
+		if (plane_has_modifier(i915, plane_caps, &intel_modifiers[i], async_flip))
+			count++;
+	}
+	return count;
+}
+
 /**
  * intel_fb_plane_get_modifiers: Get the modifiers for the given platform and plane capabilities
  * @i915: i915 device instance
  * @plane_caps: capabilities for the plane the modifiers are queried for
+ * @async_flip: flag to convey modifiers that support async flip
  *
  * Returns:
  * Returns the list of modifiers allowed by the @i915 platform and @plane_caps.
  * The caller must free the returned buffer.
  */
 u64 *intel_fb_plane_get_modifiers(struct drm_i915_private *i915,
-				  u8 plane_caps)
+				  u8 plane_caps, bool async_flip)
 {
 	u64 *list, *p;
 	int count = 1;		/* +1 for invalid modifier terminator */
 	int i;
 
-	for (i = 0; i < ARRAY_SIZE(intel_modifiers); i++) {
-		if (plane_has_modifier(i915, plane_caps, &intel_modifiers[i]))
-			count++;
-	}
+	count = intel_fb_plane_get_modifiers_count(i915, plane_caps, async_flip);
 
 	list = kmalloc_array(count, sizeof(*list), GFP_KERNEL);
 	if (drm_WARN_ON(&i915->drm, !list))
@@ -608,7 +634,7 @@ u64 *intel_fb_plane_get_modifiers(struct drm_i915_private *i915,
 
 	p = list;
 	for (i = 0; i < ARRAY_SIZE(intel_modifiers); i++) {
-		if (plane_has_modifier(i915, plane_caps, &intel_modifiers[i]))
+		if (plane_has_modifier(i915, plane_caps, &intel_modifiers[i], async_flip))
 			*p++ = intel_modifiers[i].modifier;
 	}
 	*p++ = DRM_FORMAT_MOD_INVALID;
diff --git a/drivers/gpu/drm/i915/display/intel_fb.h b/drivers/gpu/drm/i915/display/intel_fb.h
index d78993e5eb62..4ae7cc75fe77 100644
--- a/drivers/gpu/drm/i915/display/intel_fb.h
+++ b/drivers/gpu/drm/i915/display/intel_fb.h
@@ -41,8 +41,10 @@ bool intel_fb_is_tile4_modifier(u64 modifier);
 bool intel_fb_is_ccs_aux_plane(const struct drm_framebuffer *fb, int color_plane);
 int intel_fb_rc_ccs_cc_plane(const struct drm_framebuffer *fb);
 
+int intel_fb_plane_get_modifiers_count(struct drm_i915_private *i915,
+				       u8 plane_caps, bool async_flip);
 u64 *intel_fb_plane_get_modifiers(struct drm_i915_private *i915,
-				  u8 plane_caps);
+				  u8 plane_caps, bool async_flip);
 bool intel_fb_plane_supports_modifier(struct intel_plane *plane, u64 modifier);
 
 const struct drm_format_info *
diff --git a/drivers/gpu/drm/i915/display/intel_sprite.c b/drivers/gpu/drm/i915/display/intel_sprite.c
index e6fadcef58e0..d1c5a3a3f13e 100644
--- a/drivers/gpu/drm/i915/display/intel_sprite.c
+++ b/drivers/gpu/drm/i915/display/intel_sprite.c
@@ -1685,7 +1685,7 @@ intel_sprite_plane_create(struct drm_i915_private *dev_priv,
 	plane->id = PLANE_SPRITE0 + sprite;
 	plane->frontbuffer_bit = INTEL_FRONTBUFFER(pipe, plane->id);
 
-	modifiers = intel_fb_plane_get_modifiers(dev_priv, INTEL_PLANE_CAP_TILING_X);
+	modifiers = intel_fb_plane_get_modifiers(dev_priv, INTEL_PLANE_CAP_TILING_X, false);
 
 	ret = drm_universal_plane_init(display->drm, &plane->base,
 				       0, plane_funcs,
diff --git a/drivers/gpu/drm/i915/display/skl_universal_plane.c b/drivers/gpu/drm/i915/display/skl_universal_plane.c
index 038ca2ec5d7a..54cf2c9374cb 100644
--- a/drivers/gpu/drm/i915/display/skl_universal_plane.c
+++ b/drivers/gpu/drm/i915/display/skl_universal_plane.c
@@ -2673,7 +2673,8 @@ skl_universal_plane_create(struct drm_i915_private *dev_priv,
 		plane_type = DRM_PLANE_TYPE_OVERLAY;
 
 	modifiers = intel_fb_plane_get_modifiers(dev_priv,
-						 skl_get_plane_caps(dev_priv, pipe, plane_id));
+						 skl_get_plane_caps(dev_priv, pipe, plane_id),
+						 false);
 
 	ret = drm_universal_plane_init(&dev_priv->drm, &plane->base,
 				       0, plane_funcs,
-- 
2.25.1


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

* [PATCH 4/4] drm/i915/display: Add async supported formats/modifiers
  2024-11-05 10:26 [PATCH 0/4] Expose modifiers/formats supported by async flips Arun R Murthy
                   ` (2 preceding siblings ...)
  2024-11-05 10:26 ` [PATCH 3/4] drm/i915/display: Add async_flip flag in get_modifiers Arun R Murthy
@ 2024-11-05 10:26 ` Arun R Murthy
  2024-11-05 12:10 ` ✗ Fi.CI.CHECKPATCH: warning for Expose modifiers/formats supported by async flips Patchwork
                   ` (3 subsequent siblings)
  7 siblings, 0 replies; 15+ messages in thread
From: Arun R Murthy @ 2024-11-05 10:26 UTC (permalink / raw)
  To: intel-xe, intel-gfx, dri-devel; +Cc: Arun R Murthy

Add the formats/modifiers supported by asynchronous flips by the
platform based on the plane capabilities.

Signed-off-by: Arun R Murthy <arun.r.murthy@intel.com>
---
 .../drm/i915/display/skl_universal_plane.c    | 22 +++++++++++++++++++
 1 file changed, 22 insertions(+)

diff --git a/drivers/gpu/drm/i915/display/skl_universal_plane.c b/drivers/gpu/drm/i915/display/skl_universal_plane.c
index 54cf2c9374cb..bead0c01af10 100644
--- a/drivers/gpu/drm/i915/display/skl_universal_plane.c
+++ b/drivers/gpu/drm/i915/display/skl_universal_plane.c
@@ -27,6 +27,18 @@
 #include "skl_watermark.h"
 #include "pxp/intel_pxp.h"
 
+static u32 skl_async_plane_formats[] = {
+	DRM_FORMAT_RGB565,
+	DRM_FORMAT_XRGB8888,
+	DRM_FORMAT_XBGR8888,
+	DRM_FORMAT_ARGB8888,
+	DRM_FORMAT_ABGR8888,
+	DRM_FORMAT_XRGB2101010,
+	DRM_FORMAT_XBGR2101010,
+	DRM_FORMAT_XRGB16161616F,
+	DRM_FORMAT_XBGR16161616F,
+};
+
 static const u32 skl_plane_formats[] = {
 	DRM_FORMAT_C8,
 	DRM_FORMAT_RGB565,
@@ -2660,6 +2672,9 @@ skl_universal_plane_create(struct drm_i915_private *dev_priv,
 		formats = skl_get_plane_formats(dev_priv, pipe,
 						plane_id, &num_formats);
 
+	plane->base.async_format_count = ARRAY_SIZE(skl_async_plane_formats);
+	plane->base.async_format_types = skl_async_plane_formats;
+
 	if (DISPLAY_VER(dev_priv) >= 12)
 		plane_funcs = &tgl_plane_funcs;
 	else if (DISPLAY_VER(dev_priv) == 11)
@@ -2672,6 +2687,13 @@ skl_universal_plane_create(struct drm_i915_private *dev_priv,
 	else
 		plane_type = DRM_PLANE_TYPE_OVERLAY;
 
+	plane->base.async_modifier_count = intel_fb_plane_get_modifiers_count(dev_priv,
+									      skl_get_plane_caps(dev_priv, pipe, plane_id),
+									      true);
+	plane->base.async_modifiers = intel_fb_plane_get_modifiers(dev_priv,
+								   skl_get_plane_caps(dev_priv, pipe, plane_id),
+								   true);
+
 	modifiers = intel_fb_plane_get_modifiers(dev_priv,
 						 skl_get_plane_caps(dev_priv, pipe, plane_id),
 						 false);
-- 
2.25.1


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

* ✗ Fi.CI.CHECKPATCH: warning for Expose modifiers/formats supported by async flips
  2024-11-05 10:26 [PATCH 0/4] Expose modifiers/formats supported by async flips Arun R Murthy
                   ` (3 preceding siblings ...)
  2024-11-05 10:26 ` [PATCH 4/4] drm/i915/display: Add async supported formats/modifiers Arun R Murthy
@ 2024-11-05 12:10 ` Patchwork
  2024-11-05 12:10 ` ✗ Fi.CI.SPARSE: " Patchwork
                   ` (2 subsequent siblings)
  7 siblings, 0 replies; 15+ messages in thread
From: Patchwork @ 2024-11-05 12:10 UTC (permalink / raw)
  To: Arun R Murthy; +Cc: intel-gfx

== Series Details ==

Series: Expose modifiers/formats supported by async flips
URL   : https://patchwork.freedesktop.org/series/140935/
State : warning

== Summary ==

Error: dim checkpatch failed
7d835ef6b236 drm/plane: Add new plane property IN_FORMATS_ASYNC
-:158: CHECK:PREFER_KERNEL_TYPES: Prefer kernel type 'u32' over 'uint32_t'
#158: FILE: include/drm/drm_plane.h:662:
+	uint32_t *async_format_types;

-:168: CHECK:PREFER_KERNEL_TYPES: Prefer kernel type 'u64' over 'uint64_t'
#168: FILE: include/drm/drm_plane.h:672:
+	uint64_t *async_modifiers;

total: 0 errors, 0 warnings, 2 checks, 137 lines checked
4e8bf91fe858 drm/i915/fb: Add async field to the modifiers description
abe5736d332f drm/i915/display: Add async_flip flag in get_modifiers
dc0ca9af7913 drm/i915/display: Add async supported formats/modifiers
-:49: WARNING:LONG_LINE: line length of 123 exceeds 100 columns
#49: FILE: drivers/gpu/drm/i915/display/skl_universal_plane.c:2691:
+									      skl_get_plane_caps(dev_priv, pipe, plane_id),

-:52: WARNING:LONG_LINE: line length of 112 exceeds 100 columns
#52: FILE: drivers/gpu/drm/i915/display/skl_universal_plane.c:2694:
+								   skl_get_plane_caps(dev_priv, pipe, plane_id),

total: 0 errors, 2 warnings, 0 checks, 40 lines checked



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

* ✗ Fi.CI.SPARSE: warning for Expose modifiers/formats supported by async flips
  2024-11-05 10:26 [PATCH 0/4] Expose modifiers/formats supported by async flips Arun R Murthy
                   ` (4 preceding siblings ...)
  2024-11-05 12:10 ` ✗ Fi.CI.CHECKPATCH: warning for Expose modifiers/formats supported by async flips Patchwork
@ 2024-11-05 12:10 ` Patchwork
  2024-11-05 13:21 ` ✗ Fi.CI.BAT: failure " Patchwork
  2024-11-18  7:48 ` [PATCHv2/3] " Arun R Murthy
  7 siblings, 0 replies; 15+ messages in thread
From: Patchwork @ 2024-11-05 12:10 UTC (permalink / raw)
  To: Arun R Murthy; +Cc: intel-gfx

== Series Details ==

Series: Expose modifiers/formats supported by async flips
URL   : https://patchwork.freedesktop.org/series/140935/
State : warning

== Summary ==

Error: dim sparse failed
Sparse version: v0.6.2
Fast mode used, each commit won't be checked separately.



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

* ✗ Fi.CI.BAT: failure for Expose modifiers/formats supported by async flips
  2024-11-05 10:26 [PATCH 0/4] Expose modifiers/formats supported by async flips Arun R Murthy
                   ` (5 preceding siblings ...)
  2024-11-05 12:10 ` ✗ Fi.CI.SPARSE: " Patchwork
@ 2024-11-05 13:21 ` Patchwork
  2024-11-18  7:48 ` [PATCHv2/3] " Arun R Murthy
  7 siblings, 0 replies; 15+ messages in thread
From: Patchwork @ 2024-11-05 13:21 UTC (permalink / raw)
  To: Arun R Murthy; +Cc: intel-gfx

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

== Series Details ==

Series: Expose modifiers/formats supported by async flips
URL   : https://patchwork.freedesktop.org/series/140935/
State : failure

== Summary ==

CI Bug Log - changes from CI_DRM_15634 -> Patchwork_140935v1
====================================================

Summary
-------

  **FAILURE**

  Serious unknown changes coming with Patchwork_140935v1 absolutely need to be
  verified manually.
  
  If you think the reported changes have nothing to do with the changes
  introduced in Patchwork_140935v1, 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.

  External URL: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/index.html

Participating hosts (44 -> 45)
------------------------------

  Additional (2): fi-skl-6600u fi-kbl-8809g 
  Missing    (1): fi-snb-2520m 

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

  Here are the unknown changes that may have been introduced in Patchwork_140935v1:

### IGT changes ###

#### Possible regressions ####

  * igt@core_hotunplug@unbind-rebind:
    - fi-cfl-guc:         [PASS][1] -> [DMESG-WARN][2] +2 other tests dmesg-warn
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/fi-cfl-guc/igt@core_hotunplug@unbind-rebind.html
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/fi-cfl-guc/igt@core_hotunplug@unbind-rebind.html
    - bat-arls-2:         [PASS][3] -> [DMESG-WARN][4] +2 other tests dmesg-warn
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-arls-2/igt@core_hotunplug@unbind-rebind.html
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-arls-2/igt@core_hotunplug@unbind-rebind.html
    - fi-cfl-8700k:       [PASS][5] -> [DMESG-WARN][6] +2 other tests dmesg-warn
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/fi-cfl-8700k/igt@core_hotunplug@unbind-rebind.html
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/fi-cfl-8700k/igt@core_hotunplug@unbind-rebind.html
    - fi-blb-e6850:       [PASS][7] -> [DMESG-WARN][8] +2 other tests dmesg-warn
   [7]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/fi-blb-e6850/igt@core_hotunplug@unbind-rebind.html
   [8]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/fi-blb-e6850/igt@core_hotunplug@unbind-rebind.html
    - bat-adlp-6:         [PASS][9] -> [DMESG-WARN][10] +2 other tests dmesg-warn
   [9]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-adlp-6/igt@core_hotunplug@unbind-rebind.html
   [10]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-adlp-6/igt@core_hotunplug@unbind-rebind.html
    - fi-skl-6600u:       NOTRUN -> [DMESG-WARN][11] +2 other tests dmesg-warn
   [11]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/fi-skl-6600u/igt@core_hotunplug@unbind-rebind.html
    - bat-jsl-3:          [PASS][12] -> [DMESG-WARN][13] +2 other tests dmesg-warn
   [12]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-jsl-3/igt@core_hotunplug@unbind-rebind.html
   [13]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-jsl-3/igt@core_hotunplug@unbind-rebind.html
    - bat-twl-2:          [PASS][14] -> [DMESG-WARN][15] +2 other tests dmesg-warn
   [14]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-twl-2/igt@core_hotunplug@unbind-rebind.html
   [15]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-twl-2/igt@core_hotunplug@unbind-rebind.html
    - fi-ivb-3770:        [PASS][16] -> [DMESG-WARN][17] +2 other tests dmesg-warn
   [16]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/fi-ivb-3770/igt@core_hotunplug@unbind-rebind.html
   [17]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/fi-ivb-3770/igt@core_hotunplug@unbind-rebind.html
    - fi-elk-e7500:       [PASS][18] -> [DMESG-WARN][19] +2 other tests dmesg-warn
   [18]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/fi-elk-e7500/igt@core_hotunplug@unbind-rebind.html
   [19]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/fi-elk-e7500/igt@core_hotunplug@unbind-rebind.html
    - fi-hsw-4770:        [PASS][20] -> [DMESG-WARN][21] +2 other tests dmesg-warn
   [20]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/fi-hsw-4770/igt@core_hotunplug@unbind-rebind.html
   [21]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/fi-hsw-4770/igt@core_hotunplug@unbind-rebind.html
    - bat-mtlp-8:         [PASS][22] -> [DMESG-WARN][23] +2 other tests dmesg-warn
   [22]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-mtlp-8/igt@core_hotunplug@unbind-rebind.html
   [23]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-mtlp-8/igt@core_hotunplug@unbind-rebind.html

  * igt@fbdev@eof:
    - bat-twl-1:          [PASS][24] -> [SKIP][25] +3 other tests skip
   [24]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-twl-1/igt@fbdev@eof.html
   [25]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-twl-1/igt@fbdev@eof.html

  * igt@fbdev@nullptr:
    - bat-jsl-1:          [PASS][26] -> [SKIP][27] +3 other tests skip
   [26]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-jsl-1/igt@fbdev@nullptr.html
   [27]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-jsl-1/igt@fbdev@nullptr.html

  * igt@fbdev@read:
    - bat-twl-2:          [PASS][28] -> [SKIP][29] +3 other tests skip
   [28]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-twl-2/igt@fbdev@read.html
   [29]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-twl-2/igt@fbdev@read.html
    - bat-jsl-3:          [PASS][30] -> [SKIP][31] +3 other tests skip
   [30]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-jsl-3/igt@fbdev@read.html
   [31]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-jsl-3/igt@fbdev@read.html

  * igt@gem_lmem_swapping@basic:
    - bat-dg2-11:         [PASS][32] -> [DMESG-WARN][33] +6 other tests dmesg-warn
   [32]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-dg2-11/igt@gem_lmem_swapping@basic.html
   [33]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-dg2-11/igt@gem_lmem_swapping@basic.html
    - bat-dg2-14:         [PASS][34] -> [DMESG-WARN][35] +6 other tests dmesg-warn
   [34]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-dg2-14/igt@gem_lmem_swapping@basic.html
   [35]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-dg2-14/igt@gem_lmem_swapping@basic.html
    - bat-dg2-8:          [PASS][36] -> [DMESG-WARN][37] +6 other tests dmesg-warn
   [36]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-dg2-8/igt@gem_lmem_swapping@basic.html
   [37]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-dg2-8/igt@gem_lmem_swapping@basic.html

  * igt@i915_module_load@load:
    - bat-jsl-1:          [PASS][38] -> [DMESG-WARN][39] +2 other tests dmesg-warn
   [38]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-jsl-1/igt@i915_module_load@load.html
   [39]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-jsl-1/igt@i915_module_load@load.html
    - bat-arls-1:         [PASS][40] -> [DMESG-WARN][41] +2 other tests dmesg-warn
   [40]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-arls-1/igt@i915_module_load@load.html
   [41]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-arls-1/igt@i915_module_load@load.html
    - fi-rkl-11600:       [PASS][42] -> [DMESG-WARN][43] +2 other tests dmesg-warn
   [42]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/fi-rkl-11600/igt@i915_module_load@load.html
   [43]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/fi-rkl-11600/igt@i915_module_load@load.html
    - bat-dg2-13:         [PASS][44] -> [DMESG-WARN][45]
   [44]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-dg2-13/igt@i915_module_load@load.html
   [45]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-dg2-13/igt@i915_module_load@load.html
    - fi-tgl-1115g4:      [PASS][46] -> [DMESG-WARN][47] +2 other tests dmesg-warn
   [46]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/fi-tgl-1115g4/igt@i915_module_load@load.html
   [47]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/fi-tgl-1115g4/igt@i915_module_load@load.html

  * igt@i915_module_load@reload:
    - bat-arlh-3:         [PASS][48] -> [DMESG-WARN][49] +2 other tests dmesg-warn
   [48]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-arlh-3/igt@i915_module_load@reload.html
   [49]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-arlh-3/igt@i915_module_load@reload.html
    - fi-pnv-d510:        [PASS][50] -> [DMESG-WARN][51] +2 other tests dmesg-warn
   [50]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/fi-pnv-d510/igt@i915_module_load@reload.html
   [51]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/fi-pnv-d510/igt@i915_module_load@reload.html
    - bat-dg1-7:          [PASS][52] -> [DMESG-WARN][53] +6 other tests dmesg-warn
   [52]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-dg1-7/igt@i915_module_load@reload.html
   [53]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-dg1-7/igt@i915_module_load@reload.html
    - fi-glk-j4005:       [PASS][54] -> [DMESG-WARN][55] +2 other tests dmesg-warn
   [54]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/fi-glk-j4005/igt@i915_module_load@reload.html
   [55]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/fi-glk-j4005/igt@i915_module_load@reload.html
    - bat-adlp-9:         [PASS][56] -> [DMESG-WARN][57] +2 other tests dmesg-warn
   [56]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-adlp-9/igt@i915_module_load@reload.html
   [57]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-adlp-9/igt@i915_module_load@reload.html
    - bat-rpls-4:         [PASS][58] -> [DMESG-WARN][59] +2 other tests dmesg-warn
   [58]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-rpls-4/igt@i915_module_load@reload.html
   [59]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-rpls-4/igt@i915_module_load@reload.html
    - fi-kbl-7567u:       [PASS][60] -> [DMESG-WARN][61] +2 other tests dmesg-warn
   [60]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/fi-kbl-7567u/igt@i915_module_load@reload.html
   [61]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/fi-kbl-7567u/igt@i915_module_load@reload.html
    - bat-twl-1:          [PASS][62] -> [DMESG-WARN][63] +2 other tests dmesg-warn
   [62]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-twl-1/igt@i915_module_load@reload.html
   [63]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-twl-1/igt@i915_module_load@reload.html
    - bat-apl-1:          [PASS][64] -> [DMESG-WARN][65] +2 other tests dmesg-warn
   [64]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-apl-1/igt@i915_module_load@reload.html
   [65]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-apl-1/igt@i915_module_load@reload.html
    - bat-rplp-1:         [PASS][66] -> [DMESG-WARN][67] +2 other tests dmesg-warn
   [66]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-rplp-1/igt@i915_module_load@reload.html
   [67]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-rplp-1/igt@i915_module_load@reload.html
    - fi-cfl-8109u:       [PASS][68] -> [DMESG-WARN][69] +2 other tests dmesg-warn
   [68]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/fi-cfl-8109u/igt@i915_module_load@reload.html
   [69]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/fi-cfl-8109u/igt@i915_module_load@reload.html
    - fi-ilk-650:         [PASS][70] -> [DMESG-WARN][71] +2 other tests dmesg-warn
   [70]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/fi-ilk-650/igt@i915_module_load@reload.html
   [71]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/fi-ilk-650/igt@i915_module_load@reload.html

  * igt@i915_pm_rpm@module-reload:
    - bat-adlp-6:         [PASS][72] -> [FAIL][73] +130 other tests fail
   [72]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-adlp-6/igt@i915_pm_rpm@module-reload.html
   [73]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-adlp-6/igt@i915_pm_rpm@module-reload.html

  * igt@i915_selftest@live@gt_lrc:
    - bat-twl-1:          [PASS][74] -> [INCOMPLETE][75] +1 other test incomplete
   [74]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-twl-1/igt@i915_selftest@live@gt_lrc.html
   [75]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-twl-1/igt@i915_selftest@live@gt_lrc.html

  * igt@kms_addfb_basic@addfb25-bad-modifier:
    - fi-glk-j4005:       [PASS][76] -> [FAIL][77] +95 other tests fail
   [76]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/fi-glk-j4005/igt@kms_addfb_basic@addfb25-bad-modifier.html
   [77]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/fi-glk-j4005/igt@kms_addfb_basic@addfb25-bad-modifier.html

  * igt@kms_addfb_basic@addfb25-modifier-no-flag:
    - bat-arls-2:         [PASS][78] -> [FAIL][79] +102 other tests fail
   [78]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-arls-2/igt@kms_addfb_basic@addfb25-modifier-no-flag.html
   [79]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-arls-2/igt@kms_addfb_basic@addfb25-modifier-no-flag.html
    - bat-dg1-6:          [PASS][80] -> [FAIL][81] +29 other tests fail
   [80]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-dg1-6/igt@kms_addfb_basic@addfb25-modifier-no-flag.html
   [81]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-dg1-6/igt@kms_addfb_basic@addfb25-modifier-no-flag.html

  * igt@kms_addfb_basic@addfb25-x-tiled-legacy:
    - fi-ilk-650:         [PASS][82] -> [FAIL][83] +80 other tests fail
   [82]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/fi-ilk-650/igt@kms_addfb_basic@addfb25-x-tiled-legacy.html
   [83]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/fi-ilk-650/igt@kms_addfb_basic@addfb25-x-tiled-legacy.html

  * igt@kms_addfb_basic@addfb25-y-tiled-small-legacy:
    - fi-kbl-x1275:       [PASS][84] -> [FAIL][85] +37 other tests fail
   [84]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/fi-kbl-x1275/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html
   [85]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/fi-kbl-x1275/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html
    - bat-adlp-11:        [PASS][86] -> [FAIL][87] +37 other tests fail
   [86]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-adlp-11/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html
   [87]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-adlp-11/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html

  * igt@kms_addfb_basic@addfb25-yf-tiled-legacy:
    - bat-arlh-3:         [PASS][88] -> [FAIL][89] +102 other tests fail
   [88]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-arlh-3/igt@kms_addfb_basic@addfb25-yf-tiled-legacy.html
   [89]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-arlh-3/igt@kms_addfb_basic@addfb25-yf-tiled-legacy.html

  * igt@kms_addfb_basic@bad-pitch-63:
    - bat-adlm-1:         [PASS][90] -> [FAIL][91] +38 other tests fail
   [90]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-adlm-1/igt@kms_addfb_basic@bad-pitch-63.html
   [91]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-adlm-1/igt@kms_addfb_basic@bad-pitch-63.html

  * igt@kms_addfb_basic@basic:
    - fi-hsw-4770:        [PASS][92] -> [FAIL][93] +93 other tests fail
   [92]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/fi-hsw-4770/igt@kms_addfb_basic@basic.html
   [93]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/fi-hsw-4770/igt@kms_addfb_basic@basic.html

  * igt@kms_addfb_basic@bo-too-small:
    - bat-kbl-2:          [PASS][94] -> [FAIL][95] +38 other tests fail
   [94]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-kbl-2/igt@kms_addfb_basic@bo-too-small.html
   [95]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-kbl-2/igt@kms_addfb_basic@bo-too-small.html

  * igt@kms_addfb_basic@framebuffer-vs-set-tiling:
    - fi-rkl-11600:       [PASS][96] -> [FAIL][97] +95 other tests fail
   [96]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/fi-rkl-11600/igt@kms_addfb_basic@framebuffer-vs-set-tiling.html
   [97]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/fi-rkl-11600/igt@kms_addfb_basic@framebuffer-vs-set-tiling.html

  * igt@kms_addfb_basic@invalid-get-prop-any:
    - fi-kbl-guc:         [PASS][98] -> [FAIL][99] +38 other tests fail
   [98]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/fi-kbl-guc/igt@kms_addfb_basic@invalid-get-prop-any.html
   [99]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/fi-kbl-guc/igt@kms_addfb_basic@invalid-get-prop-any.html

  * igt@kms_addfb_basic@invalid-set-prop:
    - fi-ivb-3770:        [PASS][100] -> [FAIL][101] +89 other tests fail
   [100]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/fi-ivb-3770/igt@kms_addfb_basic@invalid-set-prop.html
   [101]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/fi-ivb-3770/igt@kms_addfb_basic@invalid-set-prop.html

  * igt@kms_addfb_basic@invalid-set-prop-any:
    - bat-dg2-9:          [PASS][102] -> [FAIL][103] +28 other tests fail
   [102]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-dg2-9/igt@kms_addfb_basic@invalid-set-prop-any.html
   [103]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-dg2-9/igt@kms_addfb_basic@invalid-set-prop-any.html

  * igt@kms_addfb_basic@too-high:
    - bat-rpls-4:         [PASS][104] -> [FAIL][105] +122 other tests fail
   [104]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-rpls-4/igt@kms_addfb_basic@too-high.html
   [105]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-rpls-4/igt@kms_addfb_basic@too-high.html
    - fi-cfl-8109u:       [PASS][106] -> [FAIL][107] +106 other tests fail
   [106]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/fi-cfl-8109u/igt@kms_addfb_basic@too-high.html
   [107]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/fi-cfl-8109u/igt@kms_addfb_basic@too-high.html
    - fi-kbl-8809g:       NOTRUN -> [FAIL][108] +38 other tests fail
   [108]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/fi-kbl-8809g/igt@kms_addfb_basic@too-high.html

  * igt@kms_addfb_basic@too-wide:
    - bat-mtlp-6:         [PASS][109] -> [FAIL][110] +28 other tests fail
   [109]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-mtlp-6/igt@kms_addfb_basic@too-wide.html
   [110]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-mtlp-6/igt@kms_addfb_basic@too-wide.html

  * igt@kms_addfb_basic@unused-handle:
    - bat-mtlp-8:         [PASS][111] -> [FAIL][112] +102 other tests fail
   [111]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-mtlp-8/igt@kms_addfb_basic@unused-handle.html
   [112]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-mtlp-8/igt@kms_addfb_basic@unused-handle.html
    - bat-arlh-2:         [PASS][113] -> [FAIL][114] +27 other tests fail
   [113]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-arlh-2/igt@kms_addfb_basic@unused-handle.html
   [114]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-arlh-2/igt@kms_addfb_basic@unused-handle.html

  * igt@kms_addfb_basic@unused-offsets:
    - bat-dg2-14:         [PASS][115] -> [FAIL][116] +96 other tests fail
   [115]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-dg2-14/igt@kms_addfb_basic@unused-offsets.html
   [116]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-dg2-14/igt@kms_addfb_basic@unused-offsets.html
    - fi-elk-e7500:       [PASS][117] -> [FAIL][118] +86 other tests fail
   [117]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/fi-elk-e7500/igt@kms_addfb_basic@unused-offsets.html
   [118]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/fi-elk-e7500/igt@kms_addfb_basic@unused-offsets.html
    - bat-dg2-8:          [PASS][119] -> [FAIL][120] +98 other tests fail
   [119]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-dg2-8/igt@kms_addfb_basic@unused-offsets.html
   [120]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-dg2-8/igt@kms_addfb_basic@unused-offsets.html
    - fi-bsw-nick:        [PASS][121] -> [FAIL][122] +37 other tests fail
   [121]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/fi-bsw-nick/igt@kms_addfb_basic@unused-offsets.html
   [122]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/fi-bsw-nick/igt@kms_addfb_basic@unused-offsets.html

  * igt@kms_busy@basic@flip:
    - fi-cfl-8700k:       [PASS][123] -> [FAIL][124] +94 other tests fail
   [123]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/fi-cfl-8700k/igt@kms_busy@basic@flip.html
   [124]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/fi-cfl-8700k/igt@kms_busy@basic@flip.html

  * igt@kms_chamelium_frames@dp-crc-fast:
    - bat-dg2-13:         [PASS][125] -> [FAIL][126] +1 other test fail
   [125]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-dg2-13/igt@kms_chamelium_frames@dp-crc-fast.html
   [126]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-dg2-13/igt@kms_chamelium_frames@dp-crc-fast.html

  * igt@kms_cursor_legacy@basic-flip-after-cursor-legacy:
    - fi-blb-e6850:       [PASS][127] -> [FAIL][128] +74 other tests fail
   [127]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/fi-blb-e6850/igt@kms_cursor_legacy@basic-flip-after-cursor-legacy.html
   [128]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/fi-blb-e6850/igt@kms_cursor_legacy@basic-flip-after-cursor-legacy.html

  * igt@kms_flip@basic-flip-vs-dpms:
    - fi-cfl-guc:         [PASS][129] -> [FAIL][130] +94 other tests fail
   [129]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/fi-cfl-guc/igt@kms_flip@basic-flip-vs-dpms.html
   [130]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/fi-cfl-guc/igt@kms_flip@basic-flip-vs-dpms.html

  * igt@kms_flip@basic-flip-vs-dpms@a-vga1:
    - fi-pnv-d510:        [PASS][131] -> [FAIL][132] +74 other tests fail
   [131]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/fi-pnv-d510/igt@kms_flip@basic-flip-vs-dpms@a-vga1.html
   [132]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/fi-pnv-d510/igt@kms_flip@basic-flip-vs-dpms@a-vga1.html

  * igt@kms_flip@basic-flip-vs-dpms@b-edp1:
    - bat-jsl-3:          [PASS][133] -> [FAIL][134] +103 other tests fail
   [133]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-jsl-3/igt@kms_flip@basic-flip-vs-dpms@b-edp1.html
   [134]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-jsl-3/igt@kms_flip@basic-flip-vs-dpms@b-edp1.html

  * igt@kms_flip@basic-flip-vs-modeset@d-hdmi-a1:
    - fi-tgl-1115g4:      [PASS][135] -> [FAIL][136] +106 other tests fail
   [135]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/fi-tgl-1115g4/igt@kms_flip@basic-flip-vs-modeset@d-hdmi-a1.html
   [136]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/fi-tgl-1115g4/igt@kms_flip@basic-flip-vs-modeset@d-hdmi-a1.html

  * igt@kms_flip@basic-flip-vs-wf_vblank@a-edp1:
    - bat-twl-2:          [PASS][137] -> [FAIL][138] +103 other tests fail
   [137]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-twl-2/igt@kms_flip@basic-flip-vs-wf_vblank@a-edp1.html
   [138]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-twl-2/igt@kms_flip@basic-flip-vs-wf_vblank@a-edp1.html

  * igt@kms_flip@basic-flip-vs-wf_vblank@a-hdmi-a2:
    - bat-dg1-7:          [PASS][139] -> [FAIL][140] +97 other tests fail
   [139]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-dg1-7/igt@kms_flip@basic-flip-vs-wf_vblank@a-hdmi-a2.html
   [140]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-dg1-7/igt@kms_flip@basic-flip-vs-wf_vblank@a-hdmi-a2.html

  * igt@kms_pipe_crc_basic@compare-crc-sanitycheck-nv12@pipe-a-hdmi-a-2:
    - bat-dg2-11:         [PASS][141] -> [FAIL][142] +96 other tests fail
   [141]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-dg2-11/igt@kms_pipe_crc_basic@compare-crc-sanitycheck-nv12@pipe-a-hdmi-a-2.html
   [142]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-dg2-11/igt@kms_pipe_crc_basic@compare-crc-sanitycheck-nv12@pipe-a-hdmi-a-2.html

  * igt@kms_pipe_crc_basic@compare-crc-sanitycheck-xr24@pipe-a-dp-1:
    - bat-adlp-9:         [PASS][143] -> [FAIL][144] +106 other tests fail
   [143]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-adlp-9/igt@kms_pipe_crc_basic@compare-crc-sanitycheck-xr24@pipe-a-dp-1.html
   [144]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-adlp-9/igt@kms_pipe_crc_basic@compare-crc-sanitycheck-xr24@pipe-a-dp-1.html

  * igt@kms_pipe_crc_basic@hang-read-crc:
    - bat-rplp-1:         [PASS][145] -> [FAIL][146] +105 other tests fail
   [145]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-rplp-1/igt@kms_pipe_crc_basic@hang-read-crc.html
   [146]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-rplp-1/igt@kms_pipe_crc_basic@hang-read-crc.html

  * igt@kms_pipe_crc_basic@hang-read-crc@pipe-b-hdmi-a-2:
    - bat-arls-1:         [PASS][147] -> [FAIL][148] +96 other tests fail
   [147]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-arls-1/igt@kms_pipe_crc_basic@hang-read-crc@pipe-b-hdmi-a-2.html
   [148]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-arls-1/igt@kms_pipe_crc_basic@hang-read-crc@pipe-b-hdmi-a-2.html

  * igt@kms_pipe_crc_basic@hang-read-crc@pipe-c-edp-1:
    - fi-skl-6600u:       NOTRUN -> [FAIL][149] +99 other tests fail
   [149]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/fi-skl-6600u/igt@kms_pipe_crc_basic@hang-read-crc@pipe-c-edp-1.html

  * igt@kms_pipe_crc_basic@read-crc@pipe-b-edp-1:
    - bat-jsl-1:          [PASS][150] -> [FAIL][151] +103 other tests fail
   [150]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-jsl-1/igt@kms_pipe_crc_basic@read-crc@pipe-b-edp-1.html
   [151]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-jsl-1/igt@kms_pipe_crc_basic@read-crc@pipe-b-edp-1.html

  * igt@kms_pm_backlight@basic-brightness:
    - bat-adlp-6:         [PASS][152] -> [INCOMPLETE][153]
   [152]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-adlp-6/igt@kms_pm_backlight@basic-brightness.html
   [153]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-adlp-6/igt@kms_pm_backlight@basic-brightness.html
    - fi-skl-6600u:       NOTRUN -> [INCOMPLETE][154]
   [154]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/fi-skl-6600u/igt@kms_pm_backlight@basic-brightness.html
    - bat-jsl-3:          [PASS][155] -> [INCOMPLETE][156]
   [155]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-jsl-3/igt@kms_pm_backlight@basic-brightness.html
   [156]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-jsl-3/igt@kms_pm_backlight@basic-brightness.html
    - bat-twl-2:          [PASS][157] -> [INCOMPLETE][158]
   [157]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-twl-2/igt@kms_pm_backlight@basic-brightness.html
   [158]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-twl-2/igt@kms_pm_backlight@basic-brightness.html
    - bat-mtlp-8:         [PASS][159] -> [INCOMPLETE][160]
   [159]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-mtlp-8/igt@kms_pm_backlight@basic-brightness.html
   [160]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-mtlp-8/igt@kms_pm_backlight@basic-brightness.html
    - bat-jsl-1:          [PASS][161] -> [INCOMPLETE][162]
   [161]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-jsl-1/igt@kms_pm_backlight@basic-brightness.html
   [162]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-jsl-1/igt@kms_pm_backlight@basic-brightness.html
    - bat-arlh-3:         [PASS][163] -> [INCOMPLETE][164]
   [163]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-arlh-3/igt@kms_pm_backlight@basic-brightness.html
   [164]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-arlh-3/igt@kms_pm_backlight@basic-brightness.html
    - bat-rplp-1:         [PASS][165] -> [INCOMPLETE][166]
   [165]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-rplp-1/igt@kms_pm_backlight@basic-brightness.html
   [166]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-rplp-1/igt@kms_pm_backlight@basic-brightness.html
    - bat-arls-2:         [PASS][167] -> [INCOMPLETE][168]
   [167]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-arls-2/igt@kms_pm_backlight@basic-brightness.html
   [168]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-arls-2/igt@kms_pm_backlight@basic-brightness.html

  * igt@kms_pm_rpm@basic-pci-d3-state:
    - fi-kbl-7567u:       [PASS][169] -> [FAIL][170] +94 other tests fail
   [169]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/fi-kbl-7567u/igt@kms_pm_rpm@basic-pci-d3-state.html
   [170]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/fi-kbl-7567u/igt@kms_pm_rpm@basic-pci-d3-state.html
    - bat-twl-1:          [PASS][171] -> [FAIL][172] +103 other tests fail
   [171]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-twl-1/igt@kms_pm_rpm@basic-pci-d3-state.html
   [172]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-twl-1/igt@kms_pm_rpm@basic-pci-d3-state.html
    - bat-apl-1:          [PASS][173] -> [FAIL][174] +90 other tests fail
   [173]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-apl-1/igt@kms_pm_rpm@basic-pci-d3-state.html
   [174]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-apl-1/igt@kms_pm_rpm@basic-pci-d3-state.html

  * igt@prime_vgem@basic-fence-flip:
    - bat-arlh-3:         [PASS][175] -> [SKIP][176]
   [175]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-arlh-3/igt@prime_vgem@basic-fence-flip.html
   [176]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-arlh-3/igt@prime_vgem@basic-fence-flip.html

  
#### Warnings ####

  * igt@i915_pm_rpm@module-reload:
    - fi-blb-e6850:       [SKIP][177] -> [FAIL][178] +3 other tests fail
   [177]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/fi-blb-e6850/igt@i915_pm_rpm@module-reload.html
   [178]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/fi-blb-e6850/igt@i915_pm_rpm@module-reload.html
    - fi-pnv-d510:        [SKIP][179] -> [FAIL][180] +3 other tests fail
   [179]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/fi-pnv-d510/igt@i915_pm_rpm@module-reload.html
   [180]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/fi-pnv-d510/igt@i915_pm_rpm@module-reload.html

  * igt@kms_addfb_basic@addfb25-framebuffer-vs-set-tiling:
    - bat-dg1-6:          [SKIP][181] ([i915#12311]) -> [FAIL][182] +8 other tests fail
   [181]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-dg1-6/igt@kms_addfb_basic@addfb25-framebuffer-vs-set-tiling.html
   [182]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-dg1-6/igt@kms_addfb_basic@addfb25-framebuffer-vs-set-tiling.html

  * igt@kms_addfb_basic@addfb25-x-tiled-legacy:
    - bat-mtlp-6:         [SKIP][183] ([i915#4212] / [i915#9792]) -> [FAIL][184] +8 other tests fail
   [183]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-mtlp-6/igt@kms_addfb_basic@addfb25-x-tiled-legacy.html
   [184]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-mtlp-6/igt@kms_addfb_basic@addfb25-x-tiled-legacy.html

  * igt@kms_addfb_basic@addfb25-x-tiled-mismatch-legacy:
    - bat-dg2-11:         [SKIP][185] ([i915#4212]) -> [FAIL][186] +7 other tests fail
   [185]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-dg2-11/igt@kms_addfb_basic@addfb25-x-tiled-mismatch-legacy.html
   [186]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-dg2-11/igt@kms_addfb_basic@addfb25-x-tiled-mismatch-legacy.html

  * igt@kms_addfb_basic@addfb25-y-tiled-small-legacy:
    - bat-dg2-9:          [SKIP][187] ([i915#4212] / [i915#5190]) -> [FAIL][188]
   [187]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-dg2-9/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html
   [188]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-dg2-9/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html
    - bat-arls-2:         [SKIP][189] ([i915#10200] / [i915#12203]) -> [FAIL][190]
   [189]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-arls-2/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html
   [190]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-arls-2/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html
    - bat-mtlp-6:         [SKIP][191] ([i915#4212] / [i915#5190] / [i915#9792]) -> [FAIL][192]
   [191]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-mtlp-6/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html
   [192]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-mtlp-6/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html
    - bat-dg2-11:         [SKIP][193] ([i915#4212] / [i915#5190]) -> [FAIL][194]
   [193]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-dg2-11/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html
   [194]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-dg2-11/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html
    - bat-dg2-14:         [SKIP][195] ([i915#4212] / [i915#5190]) -> [FAIL][196]
   [195]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-dg2-14/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html
   [196]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-dg2-14/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html
    - fi-bsw-nick:        [SKIP][197] -> [FAIL][198]
   [197]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/fi-bsw-nick/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html
   [198]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/fi-bsw-nick/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html
    - fi-hsw-4770:        [SKIP][199] ([i915#5190]) -> [FAIL][200]
   [199]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/fi-hsw-4770/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html
   [200]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/fi-hsw-4770/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html
    - bat-mtlp-8:         [SKIP][201] ([i915#4212] / [i915#5190]) -> [FAIL][202]
   [201]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-mtlp-8/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html
   [202]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-mtlp-8/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html
    - bat-dg2-8:          [SKIP][203] ([i915#4212] / [i915#5190]) -> [FAIL][204]
   [203]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-dg2-8/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html
   [204]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-dg2-8/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html
    - bat-arls-1:         [SKIP][205] ([i915#10200] / [i915#12203]) -> [FAIL][206]
   [205]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-arls-1/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html
   [206]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-arls-1/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html
    - bat-arlh-3:         [SKIP][207] ([i915#11666] / [i915#12203]) -> [FAIL][208]
   [207]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-arlh-3/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html
   [208]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-arlh-3/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html
    - bat-arlh-2:         [SKIP][209] ([i915#10200] / [i915#11346] / [i915#11666] / [i915#12203]) -> [FAIL][210]
   [209]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-arlh-2/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html
   [210]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-arlh-2/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html

  * igt@kms_addfb_basic@basic-x-tiled-legacy:
    - bat-arlh-2:         [SKIP][211] ([i915#10200] / [i915#11346] / [i915#11666]) -> [FAIL][212] +8 other tests fail
   [211]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-arlh-2/igt@kms_addfb_basic@basic-x-tiled-legacy.html
   [212]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-arlh-2/igt@kms_addfb_basic@basic-x-tiled-legacy.html

  * igt@kms_addfb_basic@basic-y-tiled-legacy:
    - bat-mtlp-8:         [SKIP][213] ([i915#4212]) -> [FAIL][214] +8 other tests fail
   [213]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-mtlp-8/igt@kms_addfb_basic@basic-y-tiled-legacy.html
   [214]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-mtlp-8/igt@kms_addfb_basic@basic-y-tiled-legacy.html
    - bat-dg2-8:          [SKIP][215] ([i915#4212] / [i915#4215] / [i915#5190]) -> [FAIL][216]
   [215]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-dg2-8/igt@kms_addfb_basic@basic-y-tiled-legacy.html
   [216]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-dg2-8/igt@kms_addfb_basic@basic-y-tiled-legacy.html
    - bat-arls-1:         [SKIP][217] ([i915#10200]) -> [FAIL][218] +8 other tests fail
   [217]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-arls-1/igt@kms_addfb_basic@basic-y-tiled-legacy.html
   [218]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-arls-1/igt@kms_addfb_basic@basic-y-tiled-legacy.html
    - bat-dg1-7:          [SKIP][219] ([i915#4212] / [i915#4215]) -> [FAIL][220]
   [219]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-dg1-7/igt@kms_addfb_basic@basic-y-tiled-legacy.html
   [220]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-dg1-7/igt@kms_addfb_basic@basic-y-tiled-legacy.html
    - bat-dg2-9:          [SKIP][221] ([i915#4212] / [i915#4215] / [i915#5190]) -> [FAIL][222]
   [221]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-dg2-9/igt@kms_addfb_basic@basic-y-tiled-legacy.html
   [222]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-dg2-9/igt@kms_addfb_basic@basic-y-tiled-legacy.html
    - bat-dg2-11:         [SKIP][223] ([i915#4212] / [i915#4215] / [i915#5190]) -> [FAIL][224]
   [223]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-dg2-11/igt@kms_addfb_basic@basic-y-tiled-legacy.html
   [224]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-dg2-11/igt@kms_addfb_basic@basic-y-tiled-legacy.html
    - bat-dg2-14:         [SKIP][225] ([i915#4212] / [i915#4215] / [i915#5190]) -> [FAIL][226]
   [225]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-dg2-14/igt@kms_addfb_basic@basic-y-tiled-legacy.html
   [226]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-dg2-14/igt@kms_addfb_basic@basic-y-tiled-legacy.html

  * igt@kms_addfb_basic@bo-too-small-due-to-tiling:
    - bat-arlh-3:         [SKIP][227] ([i915#11666]) -> [FAIL][228] +8 other tests fail
   [227]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-arlh-3/igt@kms_addfb_basic@bo-too-small-due-to-tiling.html
   [228]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-arlh-3/igt@kms_addfb_basic@bo-too-small-due-to-tiling.html
    - bat-dg1-7:          [SKIP][229] ([i915#4212]) -> [FAIL][230] +7 other tests fail
   [229]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-dg1-7/igt@kms_addfb_basic@bo-too-small-due-to-tiling.html
   [230]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-dg1-7/igt@kms_addfb_basic@bo-too-small-due-to-tiling.html

  * igt@kms_addfb_basic@framebuffer-vs-set-tiling:
    - bat-dg2-9:          [SKIP][231] ([i915#4212]) -> [FAIL][232] +7 other tests fail
   [231]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-dg2-9/igt@kms_addfb_basic@framebuffer-vs-set-tiling.html
   [232]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-dg2-9/igt@kms_addfb_basic@framebuffer-vs-set-tiling.html
    - bat-arls-2:         [SKIP][233] ([i915#10200]) -> [FAIL][234] +8 other tests fail
   [233]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-arls-2/igt@kms_addfb_basic@framebuffer-vs-set-tiling.html
   [234]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-arls-2/igt@kms_addfb_basic@framebuffer-vs-set-tiling.html

  * igt@kms_addfb_basic@tile-pitch-mismatch:
    - bat-dg2-14:         [SKIP][235] ([i915#4212]) -> [FAIL][236] +7 other tests fail
   [235]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-dg2-14/igt@kms_addfb_basic@tile-pitch-mismatch.html
   [236]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-dg2-14/igt@kms_addfb_basic@tile-pitch-mismatch.html
    - bat-dg2-8:          [SKIP][237] ([i915#4212]) -> [FAIL][238] +7 other tests fail
   [237]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-dg2-8/igt@kms_addfb_basic@tile-pitch-mismatch.html
   [238]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-dg2-8/igt@kms_addfb_basic@tile-pitch-mismatch.html

  * igt@kms_pm_rpm@basic-pci-d3-state:
    - fi-ilk-650:         [SKIP][239] -> [FAIL][240] +3 other tests fail
   [239]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/fi-ilk-650/igt@kms_pm_rpm@basic-pci-d3-state.html
   [240]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/fi-ilk-650/igt@kms_pm_rpm@basic-pci-d3-state.html

  * igt@kms_pm_rpm@basic-rte:
    - fi-ivb-3770:        [SKIP][241] -> [FAIL][242] +3 other tests fail
   [241]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/fi-ivb-3770/igt@kms_pm_rpm@basic-rte.html
   [242]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/fi-ivb-3770/igt@kms_pm_rpm@basic-rte.html
    - fi-elk-e7500:       [SKIP][243] -> [FAIL][244] +4 other tests fail
   [243]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/fi-elk-e7500/igt@kms_pm_rpm@basic-rte.html
   [244]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/fi-elk-e7500/igt@kms_pm_rpm@basic-rte.html

  * igt@kms_psr@psr-primary-mmap-gtt:
    - bat-mtlp-8:         [SKIP][245] ([i915#4077] / [i915#9688]) -> [FAIL][246] +1 other test fail
   [245]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-mtlp-8/igt@kms_psr@psr-primary-mmap-gtt.html
   [246]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-mtlp-8/igt@kms_psr@psr-primary-mmap-gtt.html
    - bat-arlh-3:         [SKIP][247] ([i915#12637]) -> [FAIL][248] +1 other test fail
   [247]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-arlh-3/igt@kms_psr@psr-primary-mmap-gtt.html
   [248]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-arlh-3/igt@kms_psr@psr-primary-mmap-gtt.html

  * igt@kms_psr@psr-primary-mmap-gtt@edp-1:
    - bat-arls-2:         [SKIP][249] ([i915#12637] / [i915#4077] / [i915#9688]) -> [FAIL][250] +1 other test fail
   [249]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-arls-2/igt@kms_psr@psr-primary-mmap-gtt@edp-1.html
   [250]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-arls-2/igt@kms_psr@psr-primary-mmap-gtt@edp-1.html

  * igt@kms_setmode@basic-clone-single-crtc:
    - bat-rpls-4:         [SKIP][251] ([i915#3555]) -> [INCOMPLETE][252]
   [251]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-rpls-4/igt@kms_setmode@basic-clone-single-crtc.html
   [252]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-rpls-4/igt@kms_setmode@basic-clone-single-crtc.html
    - fi-cfl-8109u:       [SKIP][253] -> [INCOMPLETE][254]
   [253]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/fi-cfl-8109u/igt@kms_setmode@basic-clone-single-crtc.html
   [254]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/fi-cfl-8109u/igt@kms_setmode@basic-clone-single-crtc.html
    - bat-adlp-6:         [SKIP][255] ([i915#3555]) -> [INCOMPLETE][256]
   [255]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-adlp-6/igt@kms_setmode@basic-clone-single-crtc.html
   [256]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-adlp-6/igt@kms_setmode@basic-clone-single-crtc.html

  
#### Suppressed ####

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

  * igt@core_hotunplug@unbind-rebind:
    - {bat-mtlp-9}:       [PASS][257] -> [DMESG-WARN][258] +2 other tests dmesg-warn
   [257]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-mtlp-9/igt@core_hotunplug@unbind-rebind.html
   [258]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-mtlp-9/igt@core_hotunplug@unbind-rebind.html

  * igt@kms_addfb_basic@addfb25-y-tiled-small-legacy:
    - {bat-mtlp-9}:       [SKIP][259] ([i915#4212] / [i915#5190]) -> [FAIL][260]
   [259]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-mtlp-9/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html
   [260]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-mtlp-9/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html

  * igt@kms_addfb_basic@basic-y-tiled-legacy:
    - {bat-mtlp-9}:       [SKIP][261] ([i915#4212]) -> [FAIL][262] +8 other tests fail
   [261]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-mtlp-9/igt@kms_addfb_basic@basic-y-tiled-legacy.html
   [262]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-mtlp-9/igt@kms_addfb_basic@basic-y-tiled-legacy.html

  * igt@kms_pipe_crc_basic@compare-crc-sanitycheck-nv12@pipe-a-edp-1:
    - {bat-mtlp-9}:       [PASS][263] -> [FAIL][264] +134 other tests fail
   [263]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-mtlp-9/igt@kms_pipe_crc_basic@compare-crc-sanitycheck-nv12@pipe-a-edp-1.html
   [264]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-mtlp-9/igt@kms_pipe_crc_basic@compare-crc-sanitycheck-nv12@pipe-a-edp-1.html

  * igt@kms_pm_backlight@basic-brightness:
    - {bat-mtlp-9}:       [PASS][265] -> [INCOMPLETE][266]
   [265]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-mtlp-9/igt@kms_pm_backlight@basic-brightness.html
   [266]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-mtlp-9/igt@kms_pm_backlight@basic-brightness.html

  * igt@kms_psr@psr-primary-mmap-gtt:
    - {bat-mtlp-9}:       [SKIP][267] ([i915#4077] / [i915#9688]) -> [FAIL][268] +1 other test fail
   [267]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-mtlp-9/igt@kms_psr@psr-primary-mmap-gtt.html
   [268]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-mtlp-9/igt@kms_psr@psr-primary-mmap-gtt.html

  * igt@kms_setmode@basic-clone-single-crtc:
    - {bat-mtlp-9}:       [SKIP][269] ([i915#3555] / [i915#8809]) -> [INCOMPLETE][270]
   [269]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-mtlp-9/igt@kms_setmode@basic-clone-single-crtc.html
   [270]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-mtlp-9/igt@kms_setmode@basic-clone-single-crtc.html

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

  Here are the changes found in Patchwork_140935v1 that come from known issues:

### IGT changes ###

#### Issues hit ####

  * igt@fbdev@eof:
    - bat-rpls-4:         [PASS][271] -> [SKIP][272] ([i915#2582]) +3 other tests skip
   [271]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-rpls-4/igt@fbdev@eof.html
   [272]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-rpls-4/igt@fbdev@eof.html
    - fi-kbl-7567u:       [PASS][273] -> [SKIP][274] +4 other tests skip
   [273]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/fi-kbl-7567u/igt@fbdev@eof.html
   [274]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/fi-kbl-7567u/igt@fbdev@eof.html
    - bat-apl-1:          [PASS][275] -> [SKIP][276] +4 other tests skip
   [275]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-apl-1/igt@fbdev@eof.html
   [276]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-apl-1/igt@fbdev@eof.html
    - bat-rplp-1:         [PASS][277] -> [SKIP][278] ([i915#2582]) +3 other tests skip
   [277]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-rplp-1/igt@fbdev@eof.html
   [278]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-rplp-1/igt@fbdev@eof.html
    - fi-rkl-11600:       [PASS][279] -> [SKIP][280] ([i915#2582]) +3 other tests skip
   [279]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/fi-rkl-11600/igt@fbdev@eof.html
   [280]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/fi-rkl-11600/igt@fbdev@eof.html
    - fi-cfl-8109u:       [PASS][281] -> [SKIP][282] +4 other tests skip
   [281]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/fi-cfl-8109u/igt@fbdev@eof.html
   [282]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/fi-cfl-8109u/igt@fbdev@eof.html
    - bat-arls-2:         [PASS][283] -> [SKIP][284] ([i915#11191] / [i915#11345]) +3 other tests skip
   [283]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-arls-2/igt@fbdev@eof.html
   [284]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-arls-2/igt@fbdev@eof.html
    - fi-ilk-650:         [PASS][285] -> [SKIP][286] +4 other tests skip
   [285]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/fi-ilk-650/igt@fbdev@eof.html
   [286]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/fi-ilk-650/igt@fbdev@eof.html
    - fi-tgl-1115g4:      [PASS][287] -> [SKIP][288] ([i915#2582]) +3 other tests skip
   [287]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/fi-tgl-1115g4/igt@fbdev@eof.html
   [288]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/fi-tgl-1115g4/igt@fbdev@eof.html

  * igt@fbdev@info:
    - fi-cfl-8109u:       [PASS][289] -> [SKIP][290] ([i915#1849])
   [289]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/fi-cfl-8109u/igt@fbdev@info.html
   [290]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/fi-cfl-8109u/igt@fbdev@info.html
    - bat-arls-2:         [PASS][291] -> [SKIP][292] ([i915#1849])
   [291]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-arls-2/igt@fbdev@info.html
   [292]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-arls-2/igt@fbdev@info.html
    - fi-ilk-650:         [PASS][293] -> [SKIP][294] ([i915#1849])
   [293]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/fi-ilk-650/igt@fbdev@info.html
   [294]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/fi-ilk-650/igt@fbdev@info.html
    - fi-blb-e6850:       [PASS][295] -> [SKIP][296] ([i915#1849])
   [295]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/fi-blb-e6850/igt@fbdev@info.html
   [296]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/fi-blb-e6850/igt@fbdev@info.html
    - bat-adlp-6:         [PASS][297] -> [SKIP][298] ([i915#1849] / [i915#2582])
   [297]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-adlp-6/igt@fbdev@info.html
   [298]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-adlp-6/igt@fbdev@info.html
    - fi-skl-6600u:       NOTRUN -> [SKIP][299] ([i915#1849])
   [299]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/fi-skl-6600u/igt@fbdev@info.html
    - bat-jsl-3:          [PASS][300] -> [SKIP][301] ([i915#1849])
   [300]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-jsl-3/igt@fbdev@info.html
   [301]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-jsl-3/igt@fbdev@info.html
    - bat-twl-2:          [PASS][302] -> [SKIP][303] ([i915#1849])
   [302]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-twl-2/igt@fbdev@info.html
   [303]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-twl-2/igt@fbdev@info.html
    - bat-dg2-11:         [PASS][304] -> [SKIP][305] ([i915#1849] / [i915#2582])
   [304]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-dg2-11/igt@fbdev@info.html
   [305]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-dg2-11/igt@fbdev@info.html
    - fi-cfl-8700k:       [PASS][306] -> [SKIP][307] ([i915#1849])
   [306]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/fi-cfl-8700k/igt@fbdev@info.html
   [307]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/fi-cfl-8700k/igt@fbdev@info.html
    - bat-dg2-14:         [PASS][308] -> [SKIP][309] ([i915#1849] / [i915#2582])
   [308]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-dg2-14/igt@fbdev@info.html
   [309]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-dg2-14/igt@fbdev@info.html
    - fi-elk-e7500:       [PASS][310] -> [SKIP][311] ([i915#1849])
   [310]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/fi-elk-e7500/igt@fbdev@info.html
   [311]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/fi-elk-e7500/igt@fbdev@info.html
    - fi-hsw-4770:        [PASS][312] -> [SKIP][313] ([i915#1849] / [i915#2582])
   [312]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/fi-hsw-4770/igt@fbdev@info.html
   [313]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/fi-hsw-4770/igt@fbdev@info.html
    - fi-ivb-3770:        [PASS][314] -> [SKIP][315] ([i915#1849])
   [314]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/fi-ivb-3770/igt@fbdev@info.html
   [315]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/fi-ivb-3770/igt@fbdev@info.html
    - bat-mtlp-8:         [PASS][316] -> [SKIP][317] ([i915#1849] / [i915#2582])
   [316]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-mtlp-8/igt@fbdev@info.html
   [317]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-mtlp-8/igt@fbdev@info.html
    - bat-dg2-8:          [PASS][318] -> [SKIP][319] ([i915#1849] / [i915#2582])
   [318]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-dg2-8/igt@fbdev@info.html
   [319]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-dg2-8/igt@fbdev@info.html
    - bat-jsl-1:          [PASS][320] -> [SKIP][321] ([i915#1849])
   [320]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-jsl-1/igt@fbdev@info.html
   [321]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-jsl-1/igt@fbdev@info.html
    - bat-arls-1:         [PASS][322] -> [SKIP][323] ([i915#1849])
   [322]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-arls-1/igt@fbdev@info.html
   [323]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-arls-1/igt@fbdev@info.html
    - fi-rkl-11600:       [PASS][324] -> [SKIP][325] ([i915#1849] / [i915#2582])
   [324]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/fi-rkl-11600/igt@fbdev@info.html
   [325]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/fi-rkl-11600/igt@fbdev@info.html
    - bat-arlh-3:         [PASS][326] -> [SKIP][327] ([i915#1849])
   [326]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-arlh-3/igt@fbdev@info.html
   [327]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-arlh-3/igt@fbdev@info.html
    - fi-pnv-d510:        [PASS][328] -> [SKIP][329] ([i915#1849])
   [328]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/fi-pnv-d510/igt@fbdev@info.html
   [329]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/fi-pnv-d510/igt@fbdev@info.html
    - bat-dg1-7:          [PASS][330] -> [SKIP][331] ([i915#1849] / [i915#2582])
   [330]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-dg1-7/igt@fbdev@info.html
   [331]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-dg1-7/igt@fbdev@info.html
    - fi-glk-j4005:       [PASS][332] -> [SKIP][333] ([i915#1849])
   [332]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/fi-glk-j4005/igt@fbdev@info.html
   [333]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/fi-glk-j4005/igt@fbdev@info.html
    - bat-adlp-9:         [PASS][334] -> [SKIP][335] ([i915#1849] / [i915#2582])
   [334]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-adlp-9/igt@fbdev@info.html
   [335]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-adlp-9/igt@fbdev@info.html
    - bat-rpls-4:         [PASS][336] -> [SKIP][337] ([i915#1849] / [i915#2582])
   [336]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-rpls-4/igt@fbdev@info.html
   [337]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-rpls-4/igt@fbdev@info.html
    - fi-kbl-7567u:       [PASS][338] -> [SKIP][339] ([i915#1849])
   [338]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/fi-kbl-7567u/igt@fbdev@info.html
   [339]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/fi-kbl-7567u/igt@fbdev@info.html
    - bat-twl-1:          [PASS][340] -> [SKIP][341] ([i915#1849])
   [340]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-twl-1/igt@fbdev@info.html
   [341]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-twl-1/igt@fbdev@info.html
    - bat-apl-1:          [PASS][342] -> [SKIP][343] ([i915#1849])
   [342]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-apl-1/igt@fbdev@info.html
   [343]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-apl-1/igt@fbdev@info.html
    - bat-rplp-1:         [PASS][344] -> [SKIP][345] ([i915#1849] / [i915#2582])
   [344]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-rplp-1/igt@fbdev@info.html
   [345]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-rplp-1/igt@fbdev@info.html
    - fi-tgl-1115g4:      [PASS][346] -> [SKIP][347] ([i915#1849] / [i915#2582])
   [346]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/fi-tgl-1115g4/igt@fbdev@info.html
   [347]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/fi-tgl-1115g4/igt@fbdev@info.html
    - fi-cfl-guc:         [PASS][348] -> [SKIP][349] ([i915#1849])
   [348]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/fi-cfl-guc/igt@fbdev@info.html
   [349]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/fi-cfl-guc/igt@fbdev@info.html

  * igt@fbdev@nullptr:
    - bat-arls-1:         [PASS][350] -> [SKIP][351] ([i915#11191] / [i915#11345]) +3 other tests skip
   [350]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-arls-1/igt@fbdev@nullptr.html
   [351]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-arls-1/igt@fbdev@nullptr.html
    - fi-hsw-4770:        [PASS][352] -> [SKIP][353] ([i915#2582]) +3 other tests skip
   [352]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/fi-hsw-4770/igt@fbdev@nullptr.html
   [353]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/fi-hsw-4770/igt@fbdev@nullptr.html
    - bat-mtlp-8:         [PASS][354] -> [SKIP][355] ([i915#2582]) +3 other tests skip
   [354]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-mtlp-8/igt@fbdev@nullptr.html
   [355]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-mtlp-8/igt@fbdev@nullptr.html
    - bat-arlh-3:         [PASS][356] -> [SKIP][357] ([i915#11345]) +3 other tests skip
   [356]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-arlh-3/igt@fbdev@nullptr.html
   [357]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-arlh-3/igt@fbdev@nullptr.html
    - fi-pnv-d510:        [PASS][358] -> [SKIP][359] +4 other tests skip
   [358]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/fi-pnv-d510/igt@fbdev@nullptr.html
   [359]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/fi-pnv-d510/igt@fbdev@nullptr.html
    - bat-dg1-7:          [PASS][360] -> [SKIP][361] ([i915#2582]) +3 other tests skip
   [360]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-dg1-7/igt@fbdev@nullptr.html
   [361]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-dg1-7/igt@fbdev@nullptr.html
    - bat-adlp-9:         [PASS][362] -> [SKIP][363] ([i915#2582]) +3 other tests skip
   [362]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-adlp-9/igt@fbdev@nullptr.html
   [363]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-adlp-9/igt@fbdev@nullptr.html

  * igt@fbdev@read:
    - bat-dg2-11:         [PASS][364] -> [SKIP][365] ([i915#2582]) +3 other tests skip
   [364]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-dg2-11/igt@fbdev@read.html
   [365]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-dg2-11/igt@fbdev@read.html
    - fi-cfl-8700k:       [PASS][366] -> [SKIP][367] +4 other tests skip
   [366]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/fi-cfl-8700k/igt@fbdev@read.html
   [367]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/fi-cfl-8700k/igt@fbdev@read.html
    - bat-dg2-14:         [PASS][368] -> [SKIP][369] ([i915#2582]) +3 other tests skip
   [368]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-dg2-14/igt@fbdev@read.html
   [369]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-dg2-14/igt@fbdev@read.html
    - bat-dg2-8:          [PASS][370] -> [SKIP][371] ([i915#2582]) +3 other tests skip
   [370]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-dg2-8/igt@fbdev@read.html
   [371]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-dg2-8/igt@fbdev@read.html

  * igt@fbdev@write:
    - fi-blb-e6850:       [PASS][372] -> [SKIP][373] +4 other tests skip
   [372]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/fi-blb-e6850/igt@fbdev@write.html
   [373]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/fi-blb-e6850/igt@fbdev@write.html
    - fi-cfl-guc:         [PASS][374] -> [SKIP][375] +4 other tests skip
   [374]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/fi-cfl-guc/igt@fbdev@write.html
   [375]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/fi-cfl-guc/igt@fbdev@write.html
    - fi-skl-6600u:       NOTRUN -> [SKIP][376] +14 other tests skip
   [376]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/fi-skl-6600u/igt@fbdev@write.html
    - bat-adlp-6:         [PASS][377] -> [SKIP][378] ([i915#2582]) +3 other tests skip
   [377]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-adlp-6/igt@fbdev@write.html
   [378]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-adlp-6/igt@fbdev@write.html

  * igt@gem_huc_copy@huc-copy:
    - fi-kbl-8809g:       NOTRUN -> [SKIP][379] ([i915#2190])
   [379]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/fi-kbl-8809g/igt@gem_huc_copy@huc-copy.html
    - fi-skl-6600u:       NOTRUN -> [SKIP][380] ([i915#2190])
   [380]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/fi-skl-6600u/igt@gem_huc_copy@huc-copy.html

  * igt@gem_lmem_swapping@parallel-random-engines:
    - fi-kbl-8809g:       NOTRUN -> [SKIP][381] ([i915#4613]) +3 other tests skip
   [381]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/fi-kbl-8809g/igt@gem_lmem_swapping@parallel-random-engines.html

  * igt@gem_lmem_swapping@random-engines:
    - fi-skl-6600u:       NOTRUN -> [SKIP][382] ([i915#4613]) +3 other tests skip
   [382]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/fi-skl-6600u/igt@gem_lmem_swapping@random-engines.html

  * igt@i915_selftest@live:
    - bat-twl-1:          [PASS][383] -> [INCOMPLETE][384] ([i915#12133])
   [383]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-twl-1/igt@i915_selftest@live.html
   [384]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-twl-1/igt@i915_selftest@live.html
    - bat-mtlp-6:         [PASS][385] -> [ABORT][386] ([i915#12061] / [i915#12133])
   [385]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-mtlp-6/igt@i915_selftest@live.html
   [386]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-mtlp-6/igt@i915_selftest@live.html

  * igt@i915_selftest@live@workarounds:
    - bat-mtlp-6:         [PASS][387] -> [ABORT][388] ([i915#12061])
   [387]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-mtlp-6/igt@i915_selftest@live@workarounds.html
   [388]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-mtlp-6/igt@i915_selftest@live@workarounds.html

  * igt@kms_dsc@dsc-basic:
    - fi-kbl-8809g:       NOTRUN -> [SKIP][389] +30 other tests skip
   [389]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/fi-kbl-8809g/igt@kms_dsc@dsc-basic.html

  * igt@prime_vgem@basic-fence-flip:
    - bat-jsl-3:          [PASS][390] -> [SKIP][391]
   [390]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-jsl-3/igt@prime_vgem@basic-fence-flip.html
   [391]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-jsl-3/igt@prime_vgem@basic-fence-flip.html
    - bat-twl-2:          [PASS][392] -> [SKIP][393] ([i915#3708])
   [392]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-twl-2/igt@prime_vgem@basic-fence-flip.html
   [393]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-twl-2/igt@prime_vgem@basic-fence-flip.html
    - fi-ivb-3770:        [PASS][394] -> [SKIP][395] +4 other tests skip
   [394]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/fi-ivb-3770/igt@prime_vgem@basic-fence-flip.html
   [395]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/fi-ivb-3770/igt@prime_vgem@basic-fence-flip.html
    - fi-elk-e7500:       [PASS][396] -> [SKIP][397] +4 other tests skip
   [396]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/fi-elk-e7500/igt@prime_vgem@basic-fence-flip.html
   [397]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/fi-elk-e7500/igt@prime_vgem@basic-fence-flip.html
    - bat-arls-1:         [PASS][398] -> [SKIP][399] ([i915#3708])
   [398]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-arls-1/igt@prime_vgem@basic-fence-flip.html
   [399]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-arls-1/igt@prime_vgem@basic-fence-flip.html
    - fi-hsw-4770:        [PASS][400] -> [SKIP][401]
   [400]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/fi-hsw-4770/igt@prime_vgem@basic-fence-flip.html
   [401]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/fi-hsw-4770/igt@prime_vgem@basic-fence-flip.html
    - fi-glk-j4005:       [PASS][402] -> [SKIP][403] +4 other tests skip
   [402]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/fi-glk-j4005/igt@prime_vgem@basic-fence-flip.html
   [403]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/fi-glk-j4005/igt@prime_vgem@basic-fence-flip.html
    - bat-mtlp-8:         [PASS][404] -> [SKIP][405] ([i915#3708])
   [404]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-mtlp-8/igt@prime_vgem@basic-fence-flip.html
   [405]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-mtlp-8/igt@prime_vgem@basic-fence-flip.html
    - bat-adlp-9:         [PASS][406] -> [SKIP][407] ([i915#3708])
   [406]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-adlp-9/igt@prime_vgem@basic-fence-flip.html
   [407]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-adlp-9/igt@prime_vgem@basic-fence-flip.html
    - bat-jsl-1:          [PASS][408] -> [SKIP][409]
   [408]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-jsl-1/igt@prime_vgem@basic-fence-flip.html
   [409]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-jsl-1/igt@prime_vgem@basic-fence-flip.html
    - fi-rkl-11600:       [PASS][410] -> [SKIP][411] ([i915#3708])
   [410]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/fi-rkl-11600/igt@prime_vgem@basic-fence-flip.html
   [411]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/fi-rkl-11600/igt@prime_vgem@basic-fence-flip.html
    - bat-rpls-4:         [PASS][412] -> [SKIP][413] ([i915#3708])
   [412]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-rpls-4/igt@prime_vgem@basic-fence-flip.html
   [413]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-rpls-4/igt@prime_vgem@basic-fence-flip.html
    - bat-twl-1:          [PASS][414] -> [SKIP][415] ([i915#3708])
   [414]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-twl-1/igt@prime_vgem@basic-fence-flip.html
   [415]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-twl-1/igt@prime_vgem@basic-fence-flip.html
    - bat-rplp-1:         [PASS][416] -> [SKIP][417] ([i915#3708])
   [416]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-rplp-1/igt@prime_vgem@basic-fence-flip.html
   [417]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-rplp-1/igt@prime_vgem@basic-fence-flip.html
    - fi-tgl-1115g4:      [PASS][418] -> [SKIP][419]
   [418]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/fi-tgl-1115g4/igt@prime_vgem@basic-fence-flip.html
   [419]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/fi-tgl-1115g4/igt@prime_vgem@basic-fence-flip.html
    - bat-arls-2:         [PASS][420] -> [SKIP][421] ([i915#3708])
   [420]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-arls-2/igt@prime_vgem@basic-fence-flip.html
   [421]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-arls-2/igt@prime_vgem@basic-fence-flip.html
    - bat-adlp-6:         [PASS][422] -> [SKIP][423] ([i915#3708])
   [422]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-adlp-6/igt@prime_vgem@basic-fence-flip.html
   [423]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-adlp-6/igt@prime_vgem@basic-fence-flip.html

  
#### Possible fixes ####

  * igt@i915_selftest@live:
    - bat-arlh-3:         [ABORT][424] ([i915#12133]) -> [PASS][425]
   [424]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-arlh-3/igt@i915_selftest@live.html
   [425]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-arlh-3/igt@i915_selftest@live.html

  * igt@i915_selftest@live@workarounds:
    - bat-arlh-3:         [ABORT][426] ([i915#12061]) -> [PASS][427]
   [426]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-arlh-3/igt@i915_selftest@live@workarounds.html
   [427]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-arlh-3/igt@i915_selftest@live@workarounds.html

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

  [i915#10200]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10200
  [i915#10341]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10341
  [i915#11191]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11191
  [i915#11345]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11345
  [i915#11346]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11346
  [i915#11349]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11349
  [i915#11666]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11666
  [i915#12061]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12061
  [i915#12133]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12133
  [i915#12203]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12203
  [i915#12311]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12311
  [i915#12637]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12637
  [i915#1849]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1849
  [i915#2190]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2190
  [i915#2582]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2582
  [i915#3555]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3555
  [i915#3708]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3708
  [i915#4077]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4077
  [i915#4212]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4212
  [i915#4215]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4215
  [i915#4613]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4613
  [i915#5190]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5190
  [i915#8809]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8809
  [i915#9688]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9688
  [i915#9792]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9792


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

  * Linux: CI_DRM_15634 -> Patchwork_140935v1

  CI-20190529: 20190529
  CI_DRM_15634: 913062707a924df0837c0d9eb9745ba52fd92958 @ git://anongit.freedesktop.org/gfx-ci/linux
  IGT_8097: 2e7c8e4b88a50e33e10d6c13286818aa833bef9b @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
  Patchwork_140935v1: 913062707a924df0837c0d9eb9745ba52fd92958 @ git://anongit.freedesktop.org/gfx-ci/linux

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/index.html

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

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

* Re: [PATCH 1/4] drm/plane: Add new plane property IN_FORMATS_ASYNC
  2024-11-05 10:26 ` [PATCH 1/4] drm/plane: Add new plane property IN_FORMATS_ASYNC Arun R Murthy
@ 2024-11-06 14:00   ` Ville Syrjälä
  2024-11-06 14:32     ` Murthy, Arun R
  0 siblings, 1 reply; 15+ messages in thread
From: Ville Syrjälä @ 2024-11-06 14:00 UTC (permalink / raw)
  To: Arun R Murthy; +Cc: intel-xe, intel-gfx, dri-devel

On Tue, Nov 05, 2024 at 03:56:05PM +0530, Arun R Murthy wrote:
> There exists a property IN_FORMATS which exposes the plane supported
> modifiers/formats to the user. In some platforms when asynchronous flips
> are used all of modifiers/formats mentioned in IN_FORMATS are not
> supported. This patch adds a new plane property IN_FORMATS_ASYNC to
> expose the async flips supported modifiers/formats so that user can use
> this information ahead and done flips with unsupported
> formats/modifiers. This will save flips failures.
> 
> Signed-off-by: Arun R Murthy <arun.r.murthy@intel.com>
> ---
>  drivers/gpu/drm/drm_mode_config.c |  7 +++
>  drivers/gpu/drm/drm_plane.c       | 73 +++++++++++++++++++++++++++++++
>  include/drm/drm_mode_config.h     |  6 +++
>  include/drm/drm_plane.h           | 10 +++++
>  4 files changed, 96 insertions(+)
> 
> diff --git a/drivers/gpu/drm/drm_mode_config.c b/drivers/gpu/drm/drm_mode_config.c
> index 37d2e0a4ef4b..cff189a2e751 100644
> --- a/drivers/gpu/drm/drm_mode_config.c
> +++ b/drivers/gpu/drm/drm_mode_config.c
> @@ -379,6 +379,13 @@ static int drm_mode_create_standard_properties(struct drm_device *dev)
>  		return -ENOMEM;
>  	dev->mode_config.size_hints_property = prop;
>  
> +	prop = drm_property_create(dev,
> +				   DRM_MODE_PROP_IMMUTABLE | DRM_MODE_PROP_BLOB,
> +				   "IN_FORMATS_ASYNC", 0);
> +	if (!prop)
> +		return -ENOMEM;
> +	dev->mode_config.async_modifiers_property = prop;
> +
>  	return 0;
>  }
>  
> diff --git a/drivers/gpu/drm/drm_plane.c b/drivers/gpu/drm/drm_plane.c
> index a28b22fdd7a4..01b8e6932fda 100644
> --- a/drivers/gpu/drm/drm_plane.c
> +++ b/drivers/gpu/drm/drm_plane.c
> @@ -141,6 +141,12 @@
>   *     various bugs in this area with inconsistencies between the capability
>   *     flag and per-plane properties.
>   *
> + * IN_FORMATS_ASYNC:
> + *     Blob property which contains the set of buffer format and modifier
> + *     pairs supported by this plane for asynchronous flips. The blob is a struct
> + *     drm_format_modifier_blob. Without this property the plane doesn't
> + *     support buffers with modifiers. Userspace cannot change this property.
> + *
>   * SIZE_HINTS:
>   *     Blob property which contains the set of recommended plane size
>   *     which can used for simple "cursor like" use cases (eg. no scaling).
> @@ -249,6 +255,70 @@ static int create_in_format_blob(struct drm_device *dev, struct drm_plane *plane
>  	return 0;
>  }
>  
> +static int create_in_format_async_blob(struct drm_device *dev, struct drm_plane *plane)
> +{
> +	const struct drm_mode_config *config = &dev->mode_config;
> +	struct drm_property_blob *blob;
> +	struct drm_format_modifier *async_mod;
> +	size_t blob_size, async_formats_size, async_modifiers_size;
> +	struct drm_format_modifier_blob *blob_data;
> +	unsigned int i, j;
> +
> +	async_formats_size = sizeof(__u32) * plane->async_format_count;
> +	if (WARN_ON(!async_formats_size)) {
> +		/* 0 formats are never expected */
> +		return 0;
> +	}
> +
> +	async_modifiers_size =
> +		sizeof(struct drm_format_modifier) * plane->async_modifier_count;
> +
> +	blob_size = sizeof(struct drm_format_modifier_blob);
> +	/* Modifiers offset is a pointer to a struct with a 64 bit field so it
> +	 * should be naturally aligned to 8B.
> +	 */
> +	BUILD_BUG_ON(sizeof(struct drm_format_modifier_blob) % 8);
> +	blob_size += ALIGN(async_formats_size, 8);
> +	blob_size += async_modifiers_size;
> +
> +	blob = drm_property_create_blob(dev, blob_size, NULL);
> +	if (IS_ERR(blob))
> +		return -1;
> +
> +	blob_data = blob->data;
> +	blob_data->version = FORMAT_BLOB_CURRENT;
> +	blob_data->count_formats = plane->async_format_count;
> +	blob_data->formats_offset = sizeof(struct drm_format_modifier_blob);
> +	blob_data->count_modifiers = plane->async_modifier_count;
> +
> +	blob_data->modifiers_offset =
> +		ALIGN(blob_data->formats_offset + async_formats_size, 8);
> +
> +	memcpy(formats_ptr(blob_data), plane->async_format_types, async_formats_size);
> +
> +	async_mod = modifiers_ptr(blob_data);
> +	for (i = 0; i < plane->async_modifier_count; i++) {
> +		for (j = 0; j < plane->async_format_count; j++) {
> +			if (!plane->funcs->format_mod_supported ||
> +			    plane->funcs->format_mod_supported(plane,
> +							       plane->async_format_types[j],
> +							       plane->async_modifiers[i])) {
> +				async_mod->formats |= 1ULL << j;
> +			}
> +		}
> +
> +		async_mod->modifier = plane->async_modifiers[i];
> +		async_mod->offset = 0;
> +		async_mod->pad = 0;
> +		async_mod++;
> +	}
> +
> +	drm_object_attach_property(&plane->base, config->async_modifiers_property,
> +				   blob->base.id);
> +
> +	return 0;
> +}

That is a verbatim copy of the existing code. Please refactor the
current code so that it can be reused.

> +
>  /**
>   * DOC: hotspot properties
>   *
> @@ -472,6 +542,9 @@ static int __drm_universal_plane_init(struct drm_device *dev,
>  	if (format_modifier_count)
>  		create_in_format_blob(dev, plane);
>  
> +	if (plane->async_modifier_count)
> +		create_in_format_async_blob(dev, plane);
> +
>  	return 0;
>  }
>  
> diff --git a/include/drm/drm_mode_config.h b/include/drm/drm_mode_config.h
> index 271765e2e9f2..0c116d6dfd27 100644
> --- a/include/drm/drm_mode_config.h
> +++ b/include/drm/drm_mode_config.h
> @@ -936,6 +936,12 @@ struct drm_mode_config {
>  	 */
>  	struct drm_property *modifiers_property;
>  
> +	/**
> +	 * @async_modifiers_property: Plane property to list support modifier/format
> +	 * combination for asynchronous flips.
> +	 */
> +	struct drm_property *async_modifiers_property;
> +
>  	/**
>  	 * @size_hints_property: Plane SIZE_HINTS property.
>  	 */
> diff --git a/include/drm/drm_plane.h b/include/drm/drm_plane.h
> index dd718c62ac31..d9571265251a 100644
> --- a/include/drm/drm_plane.h
> +++ b/include/drm/drm_plane.h
> @@ -658,11 +658,21 @@ struct drm_plane {
>  	 */
>  	bool format_default;
>  
> +	/** @format_types: array of formats supported by this plane */
> +	uint32_t *async_format_types;
> +	/** @format_count: Size of the array pointed at by @format_types. */
> +	unsigned int async_format_count;
> +
>  	/** @modifiers: array of modifiers supported by this plane */
>  	uint64_t *modifiers;
>  	/** @modifier_count: Size of the array pointed at by @modifier_count. */
>  	unsigned int modifier_count;
>  
> +	/** @modifiers: array of modifiers supported by this plane */
> +	uint64_t *async_modifiers;
> +	/** @modifier_count: Size of the array pointed at by @modifier_count. */
> +	unsigned int async_modifier_count;

I'm not sure adding any of this is really useful. I think we could
just add a new .format_mod_supported_async() hook instead (which
could be implemented in terms of the current thing + something like
https://patchwork.freedesktop.org/patch/619047/?series=139807&rev=3

That would also be more flexible since it can allow specific
format+modifier combinations to be either accepted or rejected.

> +
>  	/**
>  	 * @crtc:
>  	 *
> -- 
> 2.25.1

-- 
Ville Syrjälä
Intel

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

* RE: [PATCH 1/4] drm/plane: Add new plane property IN_FORMATS_ASYNC
  2024-11-06 14:00   ` Ville Syrjälä
@ 2024-11-06 14:32     ` Murthy, Arun R
  2024-11-06 14:47       ` Ville Syrjälä
  0 siblings, 1 reply; 15+ messages in thread
From: Murthy, Arun R @ 2024-11-06 14:32 UTC (permalink / raw)
  To: Ville Syrjälä
  Cc: intel-xe@lists.freedesktop.org, intel-gfx@lists.freedesktop.org,
	dri-devel@lists.freedesktop.org

> -----Original Message-----
> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
> Sent: Wednesday, November 6, 2024 7:31 PM
> To: Murthy, Arun R <arun.r.murthy@intel.com>
> Cc: intel-xe@lists.freedesktop.org; intel-gfx@lists.freedesktop.org; dri-
> devel@lists.freedesktop.org
> Subject: Re: [PATCH 1/4] drm/plane: Add new plane property
> IN_FORMATS_ASYNC
> 
> On Tue, Nov 05, 2024 at 03:56:05PM +0530, Arun R Murthy wrote:
> > There exists a property IN_FORMATS which exposes the plane supported
> > modifiers/formats to the user. In some platforms when asynchronous
> > flips are used all of modifiers/formats mentioned in IN_FORMATS are
> > not supported. This patch adds a new plane property IN_FORMATS_ASYNC
> > to expose the async flips supported modifiers/formats so that user can
> > use this information ahead and done flips with unsupported
> > formats/modifiers. This will save flips failures.
> >
> > Signed-off-by: Arun R Murthy <arun.r.murthy@intel.com>
> > ---
> >  drivers/gpu/drm/drm_mode_config.c |  7 +++
> >  drivers/gpu/drm/drm_plane.c       | 73
> +++++++++++++++++++++++++++++++
> >  include/drm/drm_mode_config.h     |  6 +++
> >  include/drm/drm_plane.h           | 10 +++++
> >  4 files changed, 96 insertions(+)
> >
> > diff --git a/drivers/gpu/drm/drm_mode_config.c
> > b/drivers/gpu/drm/drm_mode_config.c
> > index 37d2e0a4ef4b..cff189a2e751 100644
> > --- a/drivers/gpu/drm/drm_mode_config.c
> > +++ b/drivers/gpu/drm/drm_mode_config.c
> > @@ -379,6 +379,13 @@ static int
> drm_mode_create_standard_properties(struct drm_device *dev)
> >  		return -ENOMEM;
> >  	dev->mode_config.size_hints_property = prop;
> >
> > +	prop = drm_property_create(dev,
> > +				   DRM_MODE_PROP_IMMUTABLE |
> DRM_MODE_PROP_BLOB,
> > +				   "IN_FORMATS_ASYNC", 0);
> > +	if (!prop)
> > +		return -ENOMEM;
> > +	dev->mode_config.async_modifiers_property = prop;
> > +
> >  	return 0;
> >  }
> >
> > diff --git a/drivers/gpu/drm/drm_plane.c b/drivers/gpu/drm/drm_plane.c
> > index a28b22fdd7a4..01b8e6932fda 100644
> > --- a/drivers/gpu/drm/drm_plane.c
> > +++ b/drivers/gpu/drm/drm_plane.c
> > @@ -141,6 +141,12 @@
> >   *     various bugs in this area with inconsistencies between the capability
> >   *     flag and per-plane properties.
> >   *
> > + * IN_FORMATS_ASYNC:
> > + *     Blob property which contains the set of buffer format and modifier
> > + *     pairs supported by this plane for asynchronous flips. The blob is a struct
> > + *     drm_format_modifier_blob. Without this property the plane doesn't
> > + *     support buffers with modifiers. Userspace cannot change this property.
> > + *
> >   * SIZE_HINTS:
> >   *     Blob property which contains the set of recommended plane size
> >   *     which can used for simple "cursor like" use cases (eg. no scaling).
> > @@ -249,6 +255,70 @@ static int create_in_format_blob(struct drm_device
> *dev, struct drm_plane *plane
> >  	return 0;
> >  }
> >
> > +static int create_in_format_async_blob(struct drm_device *dev, struct
> > +drm_plane *plane) {
> > +	const struct drm_mode_config *config = &dev->mode_config;
> > +	struct drm_property_blob *blob;
> > +	struct drm_format_modifier *async_mod;
> > +	size_t blob_size, async_formats_size, async_modifiers_size;
> > +	struct drm_format_modifier_blob *blob_data;
> > +	unsigned int i, j;
> > +
> > +	async_formats_size = sizeof(__u32) * plane->async_format_count;
> > +	if (WARN_ON(!async_formats_size)) {
> > +		/* 0 formats are never expected */
> > +		return 0;
> > +	}
> > +
> > +	async_modifiers_size =
> > +		sizeof(struct drm_format_modifier) * plane-
> >async_modifier_count;
> > +
> > +	blob_size = sizeof(struct drm_format_modifier_blob);
> > +	/* Modifiers offset is a pointer to a struct with a 64 bit field so it
> > +	 * should be naturally aligned to 8B.
> > +	 */
> > +	BUILD_BUG_ON(sizeof(struct drm_format_modifier_blob) % 8);
> > +	blob_size += ALIGN(async_formats_size, 8);
> > +	blob_size += async_modifiers_size;
> > +
> > +	blob = drm_property_create_blob(dev, blob_size, NULL);
> > +	if (IS_ERR(blob))
> > +		return -1;
> > +
> > +	blob_data = blob->data;
> > +	blob_data->version = FORMAT_BLOB_CURRENT;
> > +	blob_data->count_formats = plane->async_format_count;
> > +	blob_data->formats_offset = sizeof(struct drm_format_modifier_blob);
> > +	blob_data->count_modifiers = plane->async_modifier_count;
> > +
> > +	blob_data->modifiers_offset =
> > +		ALIGN(blob_data->formats_offset + async_formats_size, 8);
> > +
> > +	memcpy(formats_ptr(blob_data), plane->async_format_types,
> > +async_formats_size);
> > +
> > +	async_mod = modifiers_ptr(blob_data);
> > +	for (i = 0; i < plane->async_modifier_count; i++) {
> > +		for (j = 0; j < plane->async_format_count; j++) {
> > +			if (!plane->funcs->format_mod_supported ||
> > +			    plane->funcs->format_mod_supported(plane,
> > +							       plane-
> >async_format_types[j],
> > +							       plane-
> >async_modifiers[i])) {
> > +				async_mod->formats |= 1ULL << j;
> > +			}
> > +		}
> > +
> > +		async_mod->modifier = plane->async_modifiers[i];
> > +		async_mod->offset = 0;
> > +		async_mod->pad = 0;
> > +		async_mod++;
> > +	}
> > +
> > +	drm_object_attach_property(&plane->base, config-
> >async_modifiers_property,
> > +				   blob->base.id);
> > +
> > +	return 0;
> > +}
> 
> That is a verbatim copy of the existing code. Please refactor the current code so
> that it can be reused.
> 
Ok will look into it in the next revision.

> > +
> >  /**
> >   * DOC: hotspot properties
> >   *
> > @@ -472,6 +542,9 @@ static int __drm_universal_plane_init(struct
> drm_device *dev,
> >  	if (format_modifier_count)
> >  		create_in_format_blob(dev, plane);
> >
> > +	if (plane->async_modifier_count)
> > +		create_in_format_async_blob(dev, plane);
> > +
> >  	return 0;
> >  }
> >
> > diff --git a/include/drm/drm_mode_config.h
> > b/include/drm/drm_mode_config.h index 271765e2e9f2..0c116d6dfd27
> > 100644
> > --- a/include/drm/drm_mode_config.h
> > +++ b/include/drm/drm_mode_config.h
> > @@ -936,6 +936,12 @@ struct drm_mode_config {
> >  	 */
> >  	struct drm_property *modifiers_property;
> >
> > +	/**
> > +	 * @async_modifiers_property: Plane property to list support
> modifier/format
> > +	 * combination for asynchronous flips.
> > +	 */
> > +	struct drm_property *async_modifiers_property;
> > +
> >  	/**
> >  	 * @size_hints_property: Plane SIZE_HINTS property.
> >  	 */
> > diff --git a/include/drm/drm_plane.h b/include/drm/drm_plane.h index
> > dd718c62ac31..d9571265251a 100644
> > --- a/include/drm/drm_plane.h
> > +++ b/include/drm/drm_plane.h
> > @@ -658,11 +658,21 @@ struct drm_plane {
> >  	 */
> >  	bool format_default;
> >
> > +	/** @format_types: array of formats supported by this plane */
> > +	uint32_t *async_format_types;
> > +	/** @format_count: Size of the array pointed at by @format_types. */
> > +	unsigned int async_format_count;
> > +
> >  	/** @modifiers: array of modifiers supported by this plane */
> >  	uint64_t *modifiers;
> >  	/** @modifier_count: Size of the array pointed at by @modifier_count.
> */
> >  	unsigned int modifier_count;
> >
> > +	/** @modifiers: array of modifiers supported by this plane */
> > +	uint64_t *async_modifiers;
> > +	/** @modifier_count: Size of the array pointed at by @modifier_count.
> */
> > +	unsigned int async_modifier_count;
> 
> I'm not sure adding any of this is really useful. I think we could just add a new
> .format_mod_supported_async() hook instead (which could be implemented in
> terms of the current thing + something like
> https://patchwork.freedesktop.org/patch/619047/?series=139807&rev=3
> 
> That would also be more flexible since it can allow specific
> format+modifier combinations to be either accepted or rejected.
> 
This would not serve the purpose. The purpose here is to expose the supported list to the user so that user can have this ahead and check for the modifier/format before sending the flip. This would avoid async flip failures due to unsupported modifier/format.

This approach has been acknowledged from the userspace which can be located @ https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4063

Thanks and Regards,
Arun R Murthy
-------------------
> > +
> >  	/**
> >  	 * @crtc:
> >  	 *
> > --
> > 2.25.1
> 
> --
> Ville Syrjälä
> Intel

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

* Re: [PATCH 1/4] drm/plane: Add new plane property IN_FORMATS_ASYNC
  2024-11-06 14:32     ` Murthy, Arun R
@ 2024-11-06 14:47       ` Ville Syrjälä
  0 siblings, 0 replies; 15+ messages in thread
From: Ville Syrjälä @ 2024-11-06 14:47 UTC (permalink / raw)
  To: Murthy, Arun R
  Cc: intel-xe@lists.freedesktop.org, intel-gfx@lists.freedesktop.org,
	dri-devel@lists.freedesktop.org

On Wed, Nov 06, 2024 at 02:32:28PM +0000, Murthy, Arun R wrote:
> > -----Original Message-----
> > From: Ville Syrjälä <ville.syrjala@linux.intel.com>
> > Sent: Wednesday, November 6, 2024 7:31 PM
> > To: Murthy, Arun R <arun.r.murthy@intel.com>
> > Cc: intel-xe@lists.freedesktop.org; intel-gfx@lists.freedesktop.org; dri-
> > devel@lists.freedesktop.org
> > Subject: Re: [PATCH 1/4] drm/plane: Add new plane property
> > IN_FORMATS_ASYNC
> > 
> > On Tue, Nov 05, 2024 at 03:56:05PM +0530, Arun R Murthy wrote:
> > > There exists a property IN_FORMATS which exposes the plane supported
> > > modifiers/formats to the user. In some platforms when asynchronous
> > > flips are used all of modifiers/formats mentioned in IN_FORMATS are
> > > not supported. This patch adds a new plane property IN_FORMATS_ASYNC
> > > to expose the async flips supported modifiers/formats so that user can
> > > use this information ahead and done flips with unsupported
> > > formats/modifiers. This will save flips failures.
> > >
> > > Signed-off-by: Arun R Murthy <arun.r.murthy@intel.com>
> > > ---
> > >  drivers/gpu/drm/drm_mode_config.c |  7 +++
> > >  drivers/gpu/drm/drm_plane.c       | 73
> > +++++++++++++++++++++++++++++++
> > >  include/drm/drm_mode_config.h     |  6 +++
> > >  include/drm/drm_plane.h           | 10 +++++
> > >  4 files changed, 96 insertions(+)
> > >
> > > diff --git a/drivers/gpu/drm/drm_mode_config.c
> > > b/drivers/gpu/drm/drm_mode_config.c
> > > index 37d2e0a4ef4b..cff189a2e751 100644
> > > --- a/drivers/gpu/drm/drm_mode_config.c
> > > +++ b/drivers/gpu/drm/drm_mode_config.c
> > > @@ -379,6 +379,13 @@ static int
> > drm_mode_create_standard_properties(struct drm_device *dev)
> > >  		return -ENOMEM;
> > >  	dev->mode_config.size_hints_property = prop;
> > >
> > > +	prop = drm_property_create(dev,
> > > +				   DRM_MODE_PROP_IMMUTABLE |
> > DRM_MODE_PROP_BLOB,
> > > +				   "IN_FORMATS_ASYNC", 0);
> > > +	if (!prop)
> > > +		return -ENOMEM;
> > > +	dev->mode_config.async_modifiers_property = prop;
> > > +
> > >  	return 0;
> > >  }
> > >
> > > diff --git a/drivers/gpu/drm/drm_plane.c b/drivers/gpu/drm/drm_plane.c
> > > index a28b22fdd7a4..01b8e6932fda 100644
> > > --- a/drivers/gpu/drm/drm_plane.c
> > > +++ b/drivers/gpu/drm/drm_plane.c
> > > @@ -141,6 +141,12 @@
> > >   *     various bugs in this area with inconsistencies between the capability
> > >   *     flag and per-plane properties.
> > >   *
> > > + * IN_FORMATS_ASYNC:
> > > + *     Blob property which contains the set of buffer format and modifier
> > > + *     pairs supported by this plane for asynchronous flips. The blob is a struct
> > > + *     drm_format_modifier_blob. Without this property the plane doesn't
> > > + *     support buffers with modifiers. Userspace cannot change this property.
> > > + *
> > >   * SIZE_HINTS:
> > >   *     Blob property which contains the set of recommended plane size
> > >   *     which can used for simple "cursor like" use cases (eg. no scaling).
> > > @@ -249,6 +255,70 @@ static int create_in_format_blob(struct drm_device
> > *dev, struct drm_plane *plane
> > >  	return 0;
> > >  }
> > >
> > > +static int create_in_format_async_blob(struct drm_device *dev, struct
> > > +drm_plane *plane) {
> > > +	const struct drm_mode_config *config = &dev->mode_config;
> > > +	struct drm_property_blob *blob;
> > > +	struct drm_format_modifier *async_mod;
> > > +	size_t blob_size, async_formats_size, async_modifiers_size;
> > > +	struct drm_format_modifier_blob *blob_data;
> > > +	unsigned int i, j;
> > > +
> > > +	async_formats_size = sizeof(__u32) * plane->async_format_count;
> > > +	if (WARN_ON(!async_formats_size)) {
> > > +		/* 0 formats are never expected */
> > > +		return 0;
> > > +	}
> > > +
> > > +	async_modifiers_size =
> > > +		sizeof(struct drm_format_modifier) * plane-
> > >async_modifier_count;
> > > +
> > > +	blob_size = sizeof(struct drm_format_modifier_blob);
> > > +	/* Modifiers offset is a pointer to a struct with a 64 bit field so it
> > > +	 * should be naturally aligned to 8B.
> > > +	 */
> > > +	BUILD_BUG_ON(sizeof(struct drm_format_modifier_blob) % 8);
> > > +	blob_size += ALIGN(async_formats_size, 8);
> > > +	blob_size += async_modifiers_size;
> > > +
> > > +	blob = drm_property_create_blob(dev, blob_size, NULL);
> > > +	if (IS_ERR(blob))
> > > +		return -1;
> > > +
> > > +	blob_data = blob->data;
> > > +	blob_data->version = FORMAT_BLOB_CURRENT;
> > > +	blob_data->count_formats = plane->async_format_count;
> > > +	blob_data->formats_offset = sizeof(struct drm_format_modifier_blob);
> > > +	blob_data->count_modifiers = plane->async_modifier_count;
> > > +
> > > +	blob_data->modifiers_offset =
> > > +		ALIGN(blob_data->formats_offset + async_formats_size, 8);
> > > +
> > > +	memcpy(formats_ptr(blob_data), plane->async_format_types,
> > > +async_formats_size);
> > > +
> > > +	async_mod = modifiers_ptr(blob_data);
> > > +	for (i = 0; i < plane->async_modifier_count; i++) {
> > > +		for (j = 0; j < plane->async_format_count; j++) {
> > > +			if (!plane->funcs->format_mod_supported ||
> > > +			    plane->funcs->format_mod_supported(plane,
> > > +							       plane-
> > >async_format_types[j],
> > > +							       plane-
> > >async_modifiers[i])) {
> > > +				async_mod->formats |= 1ULL << j;
> > > +			}
> > > +		}
> > > +
> > > +		async_mod->modifier = plane->async_modifiers[i];
> > > +		async_mod->offset = 0;
> > > +		async_mod->pad = 0;
> > > +		async_mod++;
> > > +	}
> > > +
> > > +	drm_object_attach_property(&plane->base, config-
> > >async_modifiers_property,
> > > +				   blob->base.id);
> > > +
> > > +	return 0;
> > > +}
> > 
> > That is a verbatim copy of the existing code. Please refactor the current code so
> > that it can be reused.
> > 
> Ok will look into it in the next revision.
> 
> > > +
> > >  /**
> > >   * DOC: hotspot properties
> > >   *
> > > @@ -472,6 +542,9 @@ static int __drm_universal_plane_init(struct
> > drm_device *dev,
> > >  	if (format_modifier_count)
> > >  		create_in_format_blob(dev, plane);
> > >
> > > +	if (plane->async_modifier_count)
> > > +		create_in_format_async_blob(dev, plane);
> > > +
> > >  	return 0;
> > >  }
> > >
> > > diff --git a/include/drm/drm_mode_config.h
> > > b/include/drm/drm_mode_config.h index 271765e2e9f2..0c116d6dfd27
> > > 100644
> > > --- a/include/drm/drm_mode_config.h
> > > +++ b/include/drm/drm_mode_config.h
> > > @@ -936,6 +936,12 @@ struct drm_mode_config {
> > >  	 */
> > >  	struct drm_property *modifiers_property;
> > >
> > > +	/**
> > > +	 * @async_modifiers_property: Plane property to list support
> > modifier/format
> > > +	 * combination for asynchronous flips.
> > > +	 */
> > > +	struct drm_property *async_modifiers_property;
> > > +
> > >  	/**
> > >  	 * @size_hints_property: Plane SIZE_HINTS property.
> > >  	 */
> > > diff --git a/include/drm/drm_plane.h b/include/drm/drm_plane.h index
> > > dd718c62ac31..d9571265251a 100644
> > > --- a/include/drm/drm_plane.h
> > > +++ b/include/drm/drm_plane.h
> > > @@ -658,11 +658,21 @@ struct drm_plane {
> > >  	 */
> > >  	bool format_default;
> > >
> > > +	/** @format_types: array of formats supported by this plane */
> > > +	uint32_t *async_format_types;
> > > +	/** @format_count: Size of the array pointed at by @format_types. */
> > > +	unsigned int async_format_count;
> > > +
> > >  	/** @modifiers: array of modifiers supported by this plane */
> > >  	uint64_t *modifiers;
> > >  	/** @modifier_count: Size of the array pointed at by @modifier_count.
> > */
> > >  	unsigned int modifier_count;
> > >
> > > +	/** @modifiers: array of modifiers supported by this plane */
> > > +	uint64_t *async_modifiers;
> > > +	/** @modifier_count: Size of the array pointed at by @modifier_count.
> > */
> > > +	unsigned int async_modifier_count;
> > 
> > I'm not sure adding any of this is really useful. I think we could just add a new
> > .format_mod_supported_async() hook instead (which could be implemented in
> > terms of the current thing + something like
> > https://patchwork.freedesktop.org/patch/619047/?series=139807&rev=3
> > 
> > That would also be more flexible since it can allow specific
> > format+modifier combinations to be either accepted or rejected.
> > 
> This would not serve the purpose. The purpose here is to expose the supported list to the user so that user can have this ahead and check for the modifier/format before sending the flip. This would avoid async flip failures due to unsupported modifier/format.

It would work just fine, and wouldn't affect the uapi at all.
The difference is that you don't have to bloat the plane struct
with those mostly unnecessary format/modifier lists.

> 
> This approach has been acknowledged from the userspace which can be located @ https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4063
> 
> Thanks and Regards,
> Arun R Murthy
> -------------------
> > > +
> > >  	/**
> > >  	 * @crtc:
> > >  	 *
> > > --
> > > 2.25.1
> > 
> > --
> > Ville Syrjälä
> > Intel

-- 
Ville Syrjälä
Intel

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

* [PATCHv2/3] Expose modifiers/formats supported by async flips
  2024-11-05 10:26 [PATCH 0/4] Expose modifiers/formats supported by async flips Arun R Murthy
                   ` (6 preceding siblings ...)
  2024-11-05 13:21 ` ✗ Fi.CI.BAT: failure " Patchwork
@ 2024-11-18  7:48 ` Arun R Murthy
  2024-11-18  7:48   ` [PATCHv2 1/3] drm/plane: Add new plane property IN_FORMATS_ASYNC Arun R Murthy
                     ` (2 more replies)
  7 siblings, 3 replies; 15+ messages in thread
From: Arun R Murthy @ 2024-11-18  7:48 UTC (permalink / raw)
  To: intel-xe, intel-gfx, dri-devel; +Cc: Arun R Murthy

All of the formats/modifiers supported by the plane during synchronous
flips are nor supported by asynchronous flips. The formats/modifiers
exposed to user by IN_FORMATS exposes all formats/modifiers supported by
plane and this list varies for async flips. If the async flip supported
formats/modifiers are exposed to the user, user based on this list can
take decision to proceed or not and avoid flip failures during async
flips.
Discussion around this can be located @
https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/29618#note_2487123
Userspace implementation for IN_FORMARTS_ASYNC under review @
https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4063

Arun R Murthy (3):
  drm/plane: Add new plane property IN_FORMATS_ASYNC
  drm/plane: Expose function to create format/modifier blob
  drm/i915/display: Populate list of async supported formats/modifiers

 drivers/gpu/drm/drm_mode_config.c             |  7 +++
 drivers/gpu/drm/drm_plane.c                   | 50 ++++++++++++------
 .../drm/i915/display/skl_universal_plane.c    | 51 +++++++++++++++++++
 include/drm/drm_mode_config.h                 |  6 +++
 include/drm/drm_plane.h                       |  4 ++
 5 files changed, 103 insertions(+), 15 deletions(-)

-- 
2.25.1


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

* [PATCHv2 1/3] drm/plane: Add new plane property IN_FORMATS_ASYNC
  2024-11-18  7:48 ` [PATCHv2/3] " Arun R Murthy
@ 2024-11-18  7:48   ` Arun R Murthy
  2024-11-18  7:48   ` [PATCHv2 2/3] drm/plane: Expose function to create format/modifier blob Arun R Murthy
  2024-11-18  7:49   ` [PATCHv2 3/3] drm/i915/display: Populate list of async supported formats/modifiers Arun R Murthy
  2 siblings, 0 replies; 15+ messages in thread
From: Arun R Murthy @ 2024-11-18  7:48 UTC (permalink / raw)
  To: intel-xe, intel-gfx, dri-devel; +Cc: Arun R Murthy

There exists a property IN_FORMATS which exposes the plane supported
modifiers/formats to the user. In some platforms when asynchronous flips
are used all of modifiers/formats mentioned in IN_FORMATS are not
supported. This patch adds a new plane property IN_FORMATS_ASYNC to
expose the async flips supported modifiers/formats so that user can use
this information ahead and done flips with unsupported
formats/modifiers. This will save flips failures.

v2: Remove async variable from drm_plane (Ville)

Signed-off-by: Arun R Murthy <arun.r.murthy@intel.com>
---
 drivers/gpu/drm/drm_mode_config.c | 7 +++++++
 drivers/gpu/drm/drm_plane.c       | 6 ++++++
 include/drm/drm_mode_config.h     | 6 ++++++
 3 files changed, 19 insertions(+)

diff --git a/drivers/gpu/drm/drm_mode_config.c b/drivers/gpu/drm/drm_mode_config.c
index 37d2e0a4ef4b..cff189a2e751 100644
--- a/drivers/gpu/drm/drm_mode_config.c
+++ b/drivers/gpu/drm/drm_mode_config.c
@@ -379,6 +379,13 @@ static int drm_mode_create_standard_properties(struct drm_device *dev)
 		return -ENOMEM;
 	dev->mode_config.size_hints_property = prop;
 
+	prop = drm_property_create(dev,
+				   DRM_MODE_PROP_IMMUTABLE | DRM_MODE_PROP_BLOB,
+				   "IN_FORMATS_ASYNC", 0);
+	if (!prop)
+		return -ENOMEM;
+	dev->mode_config.async_modifiers_property = prop;
+
 	return 0;
 }
 
diff --git a/drivers/gpu/drm/drm_plane.c b/drivers/gpu/drm/drm_plane.c
index a28b22fdd7a4..416818e54ccf 100644
--- a/drivers/gpu/drm/drm_plane.c
+++ b/drivers/gpu/drm/drm_plane.c
@@ -141,6 +141,12 @@
  *     various bugs in this area with inconsistencies between the capability
  *     flag and per-plane properties.
  *
+ * IN_FORMATS_ASYNC:
+ *     Blob property which contains the set of buffer format and modifier
+ *     pairs supported by this plane for asynchronous flips. The blob is a struct
+ *     drm_format_modifier_blob. Without this property the plane doesn't
+ *     support buffers with modifiers. Userspace cannot change this property.
+ *
  * SIZE_HINTS:
  *     Blob property which contains the set of recommended plane size
  *     which can used for simple "cursor like" use cases (eg. no scaling).
diff --git a/include/drm/drm_mode_config.h b/include/drm/drm_mode_config.h
index 271765e2e9f2..0c116d6dfd27 100644
--- a/include/drm/drm_mode_config.h
+++ b/include/drm/drm_mode_config.h
@@ -936,6 +936,12 @@ struct drm_mode_config {
 	 */
 	struct drm_property *modifiers_property;
 
+	/**
+	 * @async_modifiers_property: Plane property to list support modifier/format
+	 * combination for asynchronous flips.
+	 */
+	struct drm_property *async_modifiers_property;
+
 	/**
 	 * @size_hints_property: Plane SIZE_HINTS property.
 	 */
-- 
2.25.1


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

* [PATCHv2 2/3] drm/plane: Expose function to create format/modifier blob
  2024-11-18  7:48 ` [PATCHv2/3] " Arun R Murthy
  2024-11-18  7:48   ` [PATCHv2 1/3] drm/plane: Add new plane property IN_FORMATS_ASYNC Arun R Murthy
@ 2024-11-18  7:48   ` Arun R Murthy
  2024-11-18  7:49   ` [PATCHv2 3/3] drm/i915/display: Populate list of async supported formats/modifiers Arun R Murthy
  2 siblings, 0 replies; 15+ messages in thread
From: Arun R Murthy @ 2024-11-18  7:48 UTC (permalink / raw)
  To: intel-xe, intel-gfx, dri-devel; +Cc: Arun R Murthy

Expose drm plane function to create formats/modifiers blob. This
function can be used to expose list of supported formats/modifiers for
sync/async flips.

Signed-off-by: Arun R Murthy <arun.r.murthy@intel.com>
---
 drivers/gpu/drm/drm_plane.c | 44 ++++++++++++++++++++++++-------------
 include/drm/drm_plane.h     |  4 ++++
 2 files changed, 33 insertions(+), 15 deletions(-)

diff --git a/drivers/gpu/drm/drm_plane.c b/drivers/gpu/drm/drm_plane.c
index 416818e54ccf..4f35eec2b777 100644
--- a/drivers/gpu/drm/drm_plane.c
+++ b/drivers/gpu/drm/drm_plane.c
@@ -191,7 +191,10 @@ modifiers_ptr(struct drm_format_modifier_blob *blob)
 	return (struct drm_format_modifier *)(((char *)blob) + blob->modifiers_offset);
 }
 
-static int create_in_format_blob(struct drm_device *dev, struct drm_plane *plane)
+int drm_plane_create_format_blob(struct drm_device *dev,
+				 struct drm_plane *plane, u64 *modifiers,
+				 unsigned int modifier_count, u32 *formats,
+				 unsigned int format_count, bool is_async)
 {
 	const struct drm_mode_config *config = &dev->mode_config;
 	struct drm_property_blob *blob;
@@ -200,14 +203,14 @@ static int create_in_format_blob(struct drm_device *dev, struct drm_plane *plane
 	struct drm_format_modifier_blob *blob_data;
 	unsigned int i, j;
 
-	formats_size = sizeof(__u32) * plane->format_count;
+	formats_size = sizeof(__u32) * format_count;
 	if (WARN_ON(!formats_size)) {
 		/* 0 formats are never expected */
 		return 0;
 	}
 
 	modifiers_size =
-		sizeof(struct drm_format_modifier) * plane->modifier_count;
+		sizeof(struct drm_format_modifier) * modifier_count;
 
 	blob_size = sizeof(struct drm_format_modifier_blob);
 	/* Modifiers offset is a pointer to a struct with a 64 bit field so it
@@ -223,37 +226,45 @@ static int create_in_format_blob(struct drm_device *dev, struct drm_plane *plane
 
 	blob_data = blob->data;
 	blob_data->version = FORMAT_BLOB_CURRENT;
-	blob_data->count_formats = plane->format_count;
+	blob_data->count_formats = format_count;
 	blob_data->formats_offset = sizeof(struct drm_format_modifier_blob);
-	blob_data->count_modifiers = plane->modifier_count;
+	blob_data->count_modifiers = modifier_count;
 
 	blob_data->modifiers_offset =
 		ALIGN(blob_data->formats_offset + formats_size, 8);
 
-	memcpy(formats_ptr(blob_data), plane->format_types, formats_size);
+	memcpy(formats_ptr(blob_data), formats, formats_size);
 
 	mod = modifiers_ptr(blob_data);
-	for (i = 0; i < plane->modifier_count; i++) {
-		for (j = 0; j < plane->format_count; j++) {
-			if (!plane->funcs->format_mod_supported ||
+	for (i = 0; i < modifier_count; i++) {
+		for (j = 0; j < format_count; j++) {
+			if (is_async ||
+			    !plane->funcs->format_mod_supported ||
 			    plane->funcs->format_mod_supported(plane,
-							       plane->format_types[j],
-							       plane->modifiers[i])) {
+							       formats[j],
+							       modifiers[i])) {
 				mod->formats |= 1ULL << j;
 			}
 		}
 
-		mod->modifier = plane->modifiers[i];
+		mod->modifier = modifiers[i];
 		mod->offset = 0;
 		mod->pad = 0;
 		mod++;
 	}
 
-	drm_object_attach_property(&plane->base, config->modifiers_property,
-				   blob->base.id);
+	if (is_async)
+		drm_object_attach_property(&plane->base,
+					   config->async_modifiers_property,
+					   blob->base.id);
+	else
+		drm_object_attach_property(&plane->base,
+					   config->modifiers_property,
+					   blob->base.id);
 
 	return 0;
 }
+EXPORT_SYMBOL(drm_plane_create_format_blob);
 
 /**
  * DOC: hotspot properties
@@ -476,7 +487,10 @@ static int __drm_universal_plane_init(struct drm_device *dev,
 	}
 
 	if (format_modifier_count)
-		create_in_format_blob(dev, plane);
+		drm_plane_create_format_blob(dev, plane, plane->modifiers,
+					     format_modifier_count,
+					     plane->format_types, format_count,
+					     false);
 
 	return 0;
 }
diff --git a/include/drm/drm_plane.h b/include/drm/drm_plane.h
index dd718c62ac31..3c5c2c614af8 100644
--- a/include/drm/drm_plane.h
+++ b/include/drm/drm_plane.h
@@ -988,5 +988,9 @@ int drm_plane_create_scaling_filter_property(struct drm_plane *plane,
 int drm_plane_add_size_hints_property(struct drm_plane *plane,
 				      const struct drm_plane_size_hint *hints,
 				      int num_hints);
+int drm_plane_create_format_blob(struct drm_device *dev,
+				 struct drm_plane *plane, u64 *modifiers,
+				 unsigned int modifier_count, u32 *formats,
+				 unsigned int format_count, bool is_async);
 
 #endif
-- 
2.25.1


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

* [PATCHv2 3/3] drm/i915/display: Populate list of async supported formats/modifiers
  2024-11-18  7:48 ` [PATCHv2/3] " Arun R Murthy
  2024-11-18  7:48   ` [PATCHv2 1/3] drm/plane: Add new plane property IN_FORMATS_ASYNC Arun R Murthy
  2024-11-18  7:48   ` [PATCHv2 2/3] drm/plane: Expose function to create format/modifier blob Arun R Murthy
@ 2024-11-18  7:49   ` Arun R Murthy
  2 siblings, 0 replies; 15+ messages in thread
From: Arun R Murthy @ 2024-11-18  7:49 UTC (permalink / raw)
  To: intel-xe, intel-gfx, dri-devel; +Cc: Arun R Murthy

Populate the list of formats/modifiers supported by async flip. Register
a async property and expose the same to user through blob.

Signed-off-by: Arun R Murthy <arun.r.murthy@intel.com>
---
 .../drm/i915/display/skl_universal_plane.c    | 51 +++++++++++++++++++
 1 file changed, 51 insertions(+)

diff --git a/drivers/gpu/drm/i915/display/skl_universal_plane.c b/drivers/gpu/drm/i915/display/skl_universal_plane.c
index 038ca2ec5d7a..a6e84ac56277 100644
--- a/drivers/gpu/drm/i915/display/skl_universal_plane.c
+++ b/drivers/gpu/drm/i915/display/skl_universal_plane.c
@@ -170,6 +170,44 @@ static const u32 icl_hdr_plane_formats[] = {
 	DRM_FORMAT_XVYU16161616,
 };
 
+static u64 tgl_asyn_modifiers[] = {
+	DRM_FORMAT_MOD_LINEAR,
+	I915_FORMAT_MOD_X_TILED,
+	I915_FORMAT_MOD_Y_TILED,
+	I915_FORMAT_MOD_4_TILED,
+	I915_FORMAT_MOD_Y_TILED_GEN12_RC_CCS,
+	I915_FORMAT_MOD_4_TILED_MTL_RC_CCS,
+	I915_FORMAT_MOD_4_TILED_DG2_RC_CCS,
+	I915_FORMAT_MOD_4_TILED_BMG_CCS,
+	I915_FORMAT_MOD_4_TILED_LNL_CCS,
+};
+
+static u64 icl_async_modifiers[] = {
+	I915_FORMAT_MOD_X_TILED,
+	I915_FORMAT_MOD_Y_TILED,
+	I915_FORMAT_MOD_Yf_TILED,
+	I915_FORMAT_MOD_Y_TILED_CCS,
+	I915_FORMAT_MOD_Yf_TILED_CCS,
+};
+
+static u64 skl_async_modifiers[] = {
+	I915_FORMAT_MOD_X_TILED,
+	I915_FORMAT_MOD_Y_TILED,
+	I915_FORMAT_MOD_Yf_TILED,
+};
+
+static u32 intel_async_formats[] = {
+	DRM_FORMAT_RGB565,
+	DRM_FORMAT_XRGB8888,
+	DRM_FORMAT_XBGR8888,
+	DRM_FORMAT_ARGB8888,
+	DRM_FORMAT_ABGR8888,
+	DRM_FORMAT_XRGB2101010,
+	DRM_FORMAT_XBGR2101010,
+	DRM_FORMAT_XRGB16161616F,
+	DRM_FORMAT_XBGR16161616F,
+};
+
 int skl_format_to_fourcc(int format, bool rgb_order, bool alpha)
 {
 	switch (format) {
@@ -2585,6 +2623,7 @@ skl_universal_plane_create(struct drm_i915_private *dev_priv,
 	unsigned int supported_rotations;
 	unsigned int supported_csc;
 	const u64 *modifiers;
+	u64 *async_modifiers;
 	const u32 *formats;
 	int num_formats;
 	int ret;
@@ -2687,6 +2726,18 @@ skl_universal_plane_create(struct drm_i915_private *dev_priv,
 	if (ret)
 		goto fail;
 
+	if (DISPLAY_VER(dev_priv) >= 12)
+		async_modifiers = tgl_asyn_modifiers;
+	else if (DISPLAY_VER(dev_priv) == 11)
+		async_modifiers = icl_async_modifiers;
+	else
+		async_modifiers = skl_async_modifiers;
+
+	drm_plane_create_format_blob(&dev_priv->drm, &plane->base,
+				     async_modifiers, sizeof(async_modifiers),
+				     intel_async_formats,
+				     sizeof(intel_async_formats), true);
+
 	if (DISPLAY_VER(dev_priv) >= 13)
 		supported_rotations = DRM_MODE_ROTATE_0 | DRM_MODE_ROTATE_180;
 	else
-- 
2.25.1


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

end of thread, other threads:[~2024-11-18  7:58 UTC | newest]

Thread overview: 15+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-11-05 10:26 [PATCH 0/4] Expose modifiers/formats supported by async flips Arun R Murthy
2024-11-05 10:26 ` [PATCH 1/4] drm/plane: Add new plane property IN_FORMATS_ASYNC Arun R Murthy
2024-11-06 14:00   ` Ville Syrjälä
2024-11-06 14:32     ` Murthy, Arun R
2024-11-06 14:47       ` Ville Syrjälä
2024-11-05 10:26 ` [PATCH 2/4] drm/i915/fb: Add async field to the modifiers description Arun R Murthy
2024-11-05 10:26 ` [PATCH 3/4] drm/i915/display: Add async_flip flag in get_modifiers Arun R Murthy
2024-11-05 10:26 ` [PATCH 4/4] drm/i915/display: Add async supported formats/modifiers Arun R Murthy
2024-11-05 12:10 ` ✗ Fi.CI.CHECKPATCH: warning for Expose modifiers/formats supported by async flips Patchwork
2024-11-05 12:10 ` ✗ Fi.CI.SPARSE: " Patchwork
2024-11-05 13:21 ` ✗ Fi.CI.BAT: failure " Patchwork
2024-11-18  7:48 ` [PATCHv2/3] " Arun R Murthy
2024-11-18  7:48   ` [PATCHv2 1/3] drm/plane: Add new plane property IN_FORMATS_ASYNC Arun R Murthy
2024-11-18  7:48   ` [PATCHv2 2/3] drm/plane: Expose function to create format/modifier blob Arun R Murthy
2024-11-18  7:49   ` [PATCHv2 3/3] drm/i915/display: Populate list of async supported formats/modifiers Arun R Murthy

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