* [PATCH v7 0/3] Expose modifiers/formats supported by async flips
@ 2025-02-25 7:33 Arun R Murthy
2025-02-25 7:33 ` [PATCH v7 1/3] drm/plane: Add new plane property IN_FORMATS_ASYNC Arun R Murthy
` (5 more replies)
0 siblings, 6 replies; 10+ messages in thread
From: Arun R Murthy @ 2025-02-25 7:33 UTC (permalink / raw)
To: dri-devel, intel-gfx, intel-xe, ville.syrjala
Cc: Arun R Murthy, Chaitanya Kumar Borah, Naveen Kumar,
Sebastian Brzezinka
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
Mutter implementation for IN_FORMARTS_ASYNC under review @
https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4063
Xorg/modesetting patch
https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1816
TODO: Upon merge of the patch related to async flip
https://patchwork.freedesktop.org/patch/626849/?series=139807&rev=6
the patch 5 in this series will have to make use of the new function
pointer can_async_flip().
v3: Add new plane->funcs format_mod_supported_async (Ville)
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
---
Arun R Murthy (5):
drm/plane: Add new plane property IN_FORMATS_ASYNC
drm/plane: Expose function to create format/modifier blob
drm/plane: Function to check async supported modifier/format
drm/i915/display: Populate list of async supported formats/modifiers
drm/i915/display: Add function for format_mod_supported_async
drivers/gpu/drm/drm_mode_config.c | 7 ++
drivers/gpu/drm/drm_plane.c | 72 +++++++++----
drivers/gpu/drm/i915/display/skl_universal_plane.c | 113 ++++++++++++++++++---
include/drm/drm_mode_config.h | 6 ++
include/drm/drm_plane.h | 24 +++++
5 files changed, 188 insertions(+), 34 deletions(-)
---
base-commit: 08bd590935a5258ffd79355c59adffd72fb2c642
change-id: 20250102-asyn-bf76730501cc
Best regards,
--
Arun R Murthy <arun.r.murthy@intel.com>
---
Changes in v6:
- EDITME: describe what is new in this series revision.
- EDITME: use bulletpoints and terse descriptions.
- Link to v5: https://lore.kernel.org/r/20250218-asyn-v5-0-7ac5ac4abd4a@intel.com
---
Arun R Murthy (3):
drm/plane: Add new plane property IN_FORMATS_ASYNC
drm/plane: modify create_in_formats to accommodate async
drm/i915/display: Add i915 hook for format_mod_supported_async
drivers/gpu/drm/drm_mode_config.c | 7 +++
drivers/gpu/drm/drm_plane.c | 53 +++++++++++++++-----
drivers/gpu/drm/i915/display/skl_universal_plane.c | 56 ++++++++++++++++------
include/drm/drm_mode_config.h | 6 +++
include/drm/drm_plane.h | 17 +++++++
5 files changed, 112 insertions(+), 27 deletions(-)
---
base-commit: bc7a84cbc968ce97e581e9e3c2d26fb0ac106482
change-id: 20250102-asyn-bf76730501cc
Best regards,
--
Arun R Murthy <arun.r.murthy@intel.com>
---
Arun R Murthy (3):
drm/plane: Add new plane property IN_FORMATS_ASYNC
drm/plane: modify create_in_formats to accommodate async
drm/i915/display: Add i915 hook for format_mod_supported_async
drivers/gpu/drm/drm_mode_config.c | 7 ++++
drivers/gpu/drm/drm_plane.c | 49 ++++++++++++++++------
drivers/gpu/drm/i915/display/i9xx_plane.c | 6 ++-
drivers/gpu/drm/i915/display/intel_atomic_plane.c | 30 ++++++++++++-
drivers/gpu/drm/i915/display/intel_atomic_plane.h | 6 ++-
drivers/gpu/drm/i915/display/intel_display.c | 11 +----
drivers/gpu/drm/i915/display/skl_universal_plane.c | 5 ++-
include/drm/drm_mode_config.h | 6 +++
include/drm/drm_plane.h | 17 ++++++++
9 files changed, 111 insertions(+), 26 deletions(-)
---
base-commit: be5a404c3344b7d794766f045b8f94aa93c42069
change-id: 20250102-asyn-bf76730501cc
Best regards,
--
Arun R Murthy <arun.r.murthy@intel.com>
^ permalink raw reply [flat|nested] 10+ messages in thread* [PATCH v7 1/3] drm/plane: Add new plane property IN_FORMATS_ASYNC 2025-02-25 7:33 [PATCH v7 0/3] Expose modifiers/formats supported by async flips Arun R Murthy @ 2025-02-25 7:33 ` Arun R Murthy 2025-03-05 6:51 ` Borah, Chaitanya Kumar 2025-02-25 7:33 ` [PATCH v7 2/3] drm/plane: modify create_in_formats to accommodate async Arun R Murthy ` (4 subsequent siblings) 5 siblings, 1 reply; 10+ messages in thread From: Arun R Murthy @ 2025-02-25 7:33 UTC (permalink / raw) To: dri-devel, intel-gfx, intel-xe, ville.syrjala Cc: Arun R Murthy, Chaitanya Kumar Borah, Naveen Kumar There exists a property IN_FORMATS which exposes the plane supported modifiers/formats to the user. In some platforms when asynchronous flip 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 flip supported modifiers/formats so that user can use this information ahead and do flip with unsupported formats/modifiers. This will save flip failures. Add a new function pointer similar to format_mod_supported specifically for asynchronous flip. v2: Remove async variable from drm_plane (Ville) v3: Add new function pointer for async (Ville) v5: Typo corrected in commit message & some correction in the kernel documentation. (Chaitanya) v7: Place IN_FORMATS_ASYNC next to IN_FORMATS (Ville) Signed-off-by: Arun R Murthy <arun.r.murthy@intel.com> Reviewed-by: Chaitanya Kumar Borah <chaitanya.kumar.borah@intel.com> Tested-by: Naveen Kumar <naveen1.kumar@intel.com> --- drivers/gpu/drm/drm_mode_config.c | 7 +++++++ drivers/gpu/drm/drm_plane.c | 8 ++++++++ include/drm/drm_mode_config.h | 6 ++++++ include/drm/drm_plane.h | 17 +++++++++++++++++ 4 files changed, 38 insertions(+) diff --git a/drivers/gpu/drm/drm_mode_config.c b/drivers/gpu/drm/drm_mode_config.c index 8642a2fb25a90116dab975aa0ab6b51deafb4b96..b4239fd04e9da4d4b5cfccdef1d3dde9556f322d 100644 --- a/drivers/gpu/drm/drm_mode_config.c +++ b/drivers/gpu/drm/drm_mode_config.c @@ -381,6 +381,13 @@ static int drm_mode_create_standard_properties(struct drm_device *dev) return -ENOMEM; dev->mode_config.modifiers_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; + prop = drm_property_create(dev, DRM_MODE_PROP_IMMUTABLE | DRM_MODE_PROP_BLOB, "SIZE_HINTS", 0); diff --git a/drivers/gpu/drm/drm_plane.c b/drivers/gpu/drm/drm_plane.c index a28b22fdd7a41aca82d097d42237851da9a0a79b..fe181c1002171acc68d3054c2d178f9b9f501fe2 100644 --- a/drivers/gpu/drm/drm_plane.c +++ b/drivers/gpu/drm/drm_plane.c @@ -141,6 +141,14 @@ * 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. Userspace cannot change this property. This is an + * optional property and if not present then user should expect a failure in + * atomic ioctl when the modifier/format is not supported by that plane under + * asynchronous flip. + * * 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 271765e2e9f2da62aaf0d258828ef4196e14822e..0c116d6dfd277262b1a4c0f097fce2d719f43844 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 dd718c62ac31bf16606f3ee9f025a5b171cd1e67..4393a0e9edf91ccfd78ef62b168b9313187c1a81 100644 --- a/include/drm/drm_plane.h +++ b/include/drm/drm_plane.h @@ -549,6 +549,23 @@ struct drm_plane_funcs { */ bool (*format_mod_supported)(struct drm_plane *plane, uint32_t format, uint64_t modifier); + /** + * @format_mod_supported_async: + * + * This optional hook is used for the DRM to determine if for + * asynchronous flip the given format/modifier combination is valid for + * the plane. This allows the DRM to generate the correct format + * bitmask (which formats apply to which modifier), and to validate + * modifiers at atomic_check time. + * + * Returns: + * + * True if the given modifier is valid for that format on the plane. + * False otherwise. + */ + bool (*format_mod_supported_async)(struct drm_plane *plane, + uint32_t format, uint64_t modifier); + }; /** -- 2.25.1 ^ permalink raw reply related [flat|nested] 10+ messages in thread
* RE: [PATCH v7 1/3] drm/plane: Add new plane property IN_FORMATS_ASYNC 2025-02-25 7:33 ` [PATCH v7 1/3] drm/plane: Add new plane property IN_FORMATS_ASYNC Arun R Murthy @ 2025-03-05 6:51 ` Borah, Chaitanya Kumar 0 siblings, 0 replies; 10+ messages in thread From: Borah, Chaitanya Kumar @ 2025-03-05 6:51 UTC (permalink / raw) To: Murthy, Arun R, dri-devel@lists.freedesktop.org, intel-gfx@lists.freedesktop.org, intel-xe@lists.freedesktop.org, ville.syrjala@linux.intel.com Cc: Kumar, Naveen1 > -----Original Message----- > From: Murthy, Arun R <arun.r.murthy@intel.com> > Sent: Tuesday, February 25, 2025 1:04 PM > To: dri-devel@lists.freedesktop.org; intel-gfx@lists.freedesktop.org; intel- > xe@lists.freedesktop.org; ville.syrjala@linux.intel.com > Cc: Murthy, Arun R <arun.r.murthy@intel.com>; Borah, Chaitanya Kumar > <chaitanya.kumar.borah@intel.com>; Kumar, Naveen1 > <naveen1.kumar@intel.com> > Subject: [PATCH v7 1/3] drm/plane: Add new plane property > IN_FORMATS_ASYNC > > There exists a property IN_FORMATS which exposes the plane supported > modifiers/formats to the user. In some platforms when asynchronous flip 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 flip supported modifiers/formats so that user can use this information > ahead and do flip with unsupported formats/modifiers. This will save flip > failures. > Add a new function pointer similar to format_mod_supported specifically for > asynchronous flip. > > v2: Remove async variable from drm_plane (Ville) > v3: Add new function pointer for async (Ville) > v5: Typo corrected in commit message & some correction in the kernel > documentation. (Chaitanya) > v7: Place IN_FORMATS_ASYNC next to IN_FORMATS (Ville) > > Signed-off-by: Arun R Murthy <arun.r.murthy@intel.com> > Reviewed-by: Chaitanya Kumar Borah <chaitanya.kumar.borah@intel.com> > Tested-by: Naveen Kumar <naveen1.kumar@intel.com> > --- > drivers/gpu/drm/drm_mode_config.c | 7 +++++++ > drivers/gpu/drm/drm_plane.c | 8 ++++++++ > include/drm/drm_mode_config.h | 6 ++++++ > include/drm/drm_plane.h | 17 +++++++++++++++++ > 4 files changed, 38 insertions(+) > > diff --git a/drivers/gpu/drm/drm_mode_config.c > b/drivers/gpu/drm/drm_mode_config.c > index > 8642a2fb25a90116dab975aa0ab6b51deafb4b96..b4239fd04e9da4d4b5cfccde > f1d3dde9556f322d 100644 > --- a/drivers/gpu/drm/drm_mode_config.c > +++ b/drivers/gpu/drm/drm_mode_config.c > @@ -381,6 +381,13 @@ static int > drm_mode_create_standard_properties(struct drm_device *dev) > return -ENOMEM; > dev->mode_config.modifiers_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; > + > prop = drm_property_create(dev, > DRM_MODE_PROP_IMMUTABLE | > DRM_MODE_PROP_BLOB, > "SIZE_HINTS", 0); > diff --git a/drivers/gpu/drm/drm_plane.c b/drivers/gpu/drm/drm_plane.c > index > a28b22fdd7a41aca82d097d42237851da9a0a79b..fe181c1002171acc68d3054c > 2d178f9b9f501fe2 100644 > --- a/drivers/gpu/drm/drm_plane.c > +++ b/drivers/gpu/drm/drm_plane.c > @@ -141,6 +141,14 @@ > * 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. Userspace cannot change this property. > This is an > + * optional property and if not present then user should expect a failure in > + * atomic ioctl when the modifier/format is not supported by that plane > under > + * asynchronous flip. > + * > * 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 > 271765e2e9f2da62aaf0d258828ef4196e14822e..0c116d6dfd277262b1a4c0f0 > 97fce2d719f43844 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 > dd718c62ac31bf16606f3ee9f025a5b171cd1e67..4393a0e9edf91ccfd78ef62b1 > 68b9313187c1a81 100644 > --- a/include/drm/drm_plane.h > +++ b/include/drm/drm_plane.h > @@ -549,6 +549,23 @@ struct drm_plane_funcs { > */ > bool (*format_mod_supported)(struct drm_plane *plane, uint32_t > format, > uint64_t modifier); > + /** > + * @format_mod_supported_async: > + * > + * This optional hook is used for the DRM to determine if for > + * asynchronous flip the given format/modifier combination is valid > for > + * the plane. This allows the DRM to generate the correct format > + * bitmask (which formats apply to which modifier), and to validate > + * modifiers at atomic_check time. > + * > + * Returns: > + * > + * True if the given modifier is valid for that format on the plane. > + * False otherwise. > + */ > + bool (*format_mod_supported_async)(struct drm_plane *plane, > + uint32_t format, uint64_t modifier); These also need to be changed to u32 and u64. Regards Chaitanya > + > }; > > /** > > -- > 2.25.1 ^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH v7 2/3] drm/plane: modify create_in_formats to accommodate async 2025-02-25 7:33 [PATCH v7 0/3] Expose modifiers/formats supported by async flips Arun R Murthy 2025-02-25 7:33 ` [PATCH v7 1/3] drm/plane: Add new plane property IN_FORMATS_ASYNC Arun R Murthy @ 2025-02-25 7:33 ` Arun R Murthy 2025-03-12 5:50 ` Borah, Chaitanya Kumar 2025-02-25 7:33 ` [PATCH v7 3/3] drm/i915/display: Add i915 hook for format_mod_supported_async Arun R Murthy ` (3 subsequent siblings) 5 siblings, 1 reply; 10+ messages in thread From: Arun R Murthy @ 2025-02-25 7:33 UTC (permalink / raw) To: dri-devel, intel-gfx, intel-xe, ville.syrjala; +Cc: Arun R Murthy, Naveen Kumar create_in_formats creates the list of supported format/modifiers for synchronous flips, modify the same function so as to take the format_mod_supported as argument and create list of format/modifier for async as well. v5: create_in_formats can return -ve value in failure case, correct the if condition to check the creation of blob <Chaitanya> Dont add the modifier for which none of the formats is not supported. v6: Remove the code for masking the unsupported modifiers as UMD can leave with it. (Naveen/Chaitanya) v7: Retain the unsupported modifiers, userspace should have no impact, return pointer to blob instead of blob_id(Ville) Signed-off-by: Arun R Murthy <arun.r.murthy@intel.com> Tested-by: Naveen Kumar <naveen1.kumar@intel.com> --- drivers/gpu/drm/drm_plane.c | 41 +++++++++++++++++++++++++++++------------ 1 file changed, 29 insertions(+), 12 deletions(-) diff --git a/drivers/gpu/drm/drm_plane.c b/drivers/gpu/drm/drm_plane.c index fe181c1002171acc68d3054c2d178f9b9f501fe2..97a387a966622f4b53b0452279617cb27b42f7b2 100644 --- a/drivers/gpu/drm/drm_plane.c +++ b/drivers/gpu/drm/drm_plane.c @@ -193,9 +193,12 @@ 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) +static struct drm_property_blob *create_in_format_blob(struct drm_device *dev, + struct drm_plane *plane, + bool (*format_mod_supported)(struct drm_plane *plane, + u32 format, + u64 modifier)) { - const struct drm_mode_config *config = &dev->mode_config; struct drm_property_blob *blob; struct drm_format_modifier *mod; size_t blob_size, formats_size, modifiers_size; @@ -237,10 +240,10 @@ static int create_in_format_blob(struct drm_device *dev, struct drm_plane *plane 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 || - plane->funcs->format_mod_supported(plane, - plane->format_types[j], - plane->modifiers[i])) { + if (!format_mod_supported || + format_mod_supported(plane, + plane->format_types[j], + plane->modifiers[i])) { mod->formats |= 1ULL << j; } } @@ -251,10 +254,7 @@ static int create_in_format_blob(struct drm_device *dev, struct drm_plane *plane mod++; } - drm_object_attach_property(&plane->base, config->modifiers_property, - blob->base.id); - - return 0; + return blob; } /** @@ -366,6 +366,7 @@ static int __drm_universal_plane_init(struct drm_device *dev, const char *name, va_list ap) { struct drm_mode_config *config = &dev->mode_config; + struct drm_property_blob *blob; static const uint64_t default_modifiers[] = { DRM_FORMAT_MOD_LINEAR, }; @@ -477,8 +478,24 @@ static int __drm_universal_plane_init(struct drm_device *dev, drm_plane_create_hotspot_properties(plane); } - if (format_modifier_count) - create_in_format_blob(dev, plane); + if (format_modifier_count) { + blob = create_in_format_blob(dev, plane, + plane->funcs->format_mod_supported); + if (!IS_ERR(blob)) + drm_object_attach_property(&plane->base, + config->modifiers_property, + blob->base.id); + } + + if (plane->funcs->format_mod_supported_async) { + blob = create_in_format_blob(dev, plane, + plane->funcs->format_mod_supported_async); + if (!IS_ERR(blob)) + drm_object_attach_property(&plane->base, + config->async_modifiers_property, + blob->base.id); + } + return 0; } -- 2.25.1 ^ permalink raw reply related [flat|nested] 10+ messages in thread
* RE: [PATCH v7 2/3] drm/plane: modify create_in_formats to accommodate async 2025-02-25 7:33 ` [PATCH v7 2/3] drm/plane: modify create_in_formats to accommodate async Arun R Murthy @ 2025-03-12 5:50 ` Borah, Chaitanya Kumar 0 siblings, 0 replies; 10+ messages in thread From: Borah, Chaitanya Kumar @ 2025-03-12 5:50 UTC (permalink / raw) To: Murthy, Arun R, dri-devel@lists.freedesktop.org, intel-gfx@lists.freedesktop.org, intel-xe@lists.freedesktop.org, ville.syrjala@linux.intel.com Cc: Murthy, Arun R, Kumar, Naveen1 > -----Original Message----- > From: dri-devel <dri-devel-bounces@lists.freedesktop.org> On Behalf Of > Arun R Murthy > Sent: Tuesday, February 25, 2025 1:04 PM > To: dri-devel@lists.freedesktop.org; intel-gfx@lists.freedesktop.org; intel- > xe@lists.freedesktop.org; ville.syrjala@linux.intel.com > Cc: Murthy, Arun R <arun.r.murthy@intel.com>; Kumar, Naveen1 > <naveen1.kumar@intel.com> > Subject: [PATCH v7 2/3] drm/plane: modify create_in_formats to > accommodate async > > create_in_formats creates the list of supported format/modifiers for > synchronous flips, modify the same function so as to take the > format_mod_supported as argument and create list of format/modifier for > async as well. > > v5: create_in_formats can return -ve value in failure case, correct the if > condition to check the creation of blob <Chaitanya> Dont add the modifier for > which none of the formats is not supported. > v6: Remove the code for masking the unsupported modifiers as UMD can > leave with it. (Naveen/Chaitanya) > v7: Retain the unsupported modifiers, userspace should have no impact, > return pointer to blob instead of blob_id(Ville) > LGTM Reviewed-by: Chaitanya Kumar Borah <chaitanya.kumar.borah@intel.com> > Signed-off-by: Arun R Murthy <arun.r.murthy@intel.com> > Tested-by: Naveen Kumar <naveen1.kumar@intel.com> > --- > drivers/gpu/drm/drm_plane.c | 41 +++++++++++++++++++++++++++++-------- > ---- > 1 file changed, 29 insertions(+), 12 deletions(-) > > diff --git a/drivers/gpu/drm/drm_plane.c b/drivers/gpu/drm/drm_plane.c > index > fe181c1002171acc68d3054c2d178f9b9f501fe2..97a387a966622f4b53b045227 > 9617cb27b42f7b2 100644 > --- a/drivers/gpu/drm/drm_plane.c > +++ b/drivers/gpu/drm/drm_plane.c > @@ -193,9 +193,12 @@ 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) > +static struct drm_property_blob *create_in_format_blob(struct drm_device > *dev, > + struct drm_plane *plane, > + bool > (*format_mod_supported)(struct drm_plane *plane, > + u32 format, > + u64 modifier)) > { > - const struct drm_mode_config *config = &dev->mode_config; > struct drm_property_blob *blob; > struct drm_format_modifier *mod; > size_t blob_size, formats_size, modifiers_size; @@ -237,10 +240,10 > @@ static int create_in_format_blob(struct drm_device *dev, struct > drm_plane *plane > 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 || > - plane->funcs->format_mod_supported(plane, > - plane- > >format_types[j], > - plane- > >modifiers[i])) { > + if (!format_mod_supported || > + format_mod_supported(plane, > + plane->format_types[j], > + plane->modifiers[i])) { > mod->formats |= 1ULL << j; > } > } > @@ -251,10 +254,7 @@ static int create_in_format_blob(struct drm_device > *dev, struct drm_plane *plane > mod++; > } > > - drm_object_attach_property(&plane->base, config- > >modifiers_property, > - blob->base.id); > - > - return 0; > + return blob; > } > > /** > @@ -366,6 +366,7 @@ static int __drm_universal_plane_init(struct > drm_device *dev, > const char *name, va_list ap) { > struct drm_mode_config *config = &dev->mode_config; > + struct drm_property_blob *blob; > static const uint64_t default_modifiers[] = { > DRM_FORMAT_MOD_LINEAR, > }; > @@ -477,8 +478,24 @@ static int __drm_universal_plane_init(struct > drm_device *dev, > drm_plane_create_hotspot_properties(plane); > } > > - if (format_modifier_count) > - create_in_format_blob(dev, plane); > + if (format_modifier_count) { > + blob = create_in_format_blob(dev, plane, > + plane->funcs- > >format_mod_supported); > + if (!IS_ERR(blob)) > + drm_object_attach_property(&plane->base, > + config->modifiers_property, > + blob->base.id); > + } > + > + if (plane->funcs->format_mod_supported_async) { > + blob = create_in_format_blob(dev, plane, > + plane->funcs- > >format_mod_supported_async); > + if (!IS_ERR(blob)) > + drm_object_attach_property(&plane->base, > + config- > >async_modifiers_property, > + blob->base.id); > + } > + > > return 0; > } > > -- > 2.25.1 ^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH v7 3/3] drm/i915/display: Add i915 hook for format_mod_supported_async 2025-02-25 7:33 [PATCH v7 0/3] Expose modifiers/formats supported by async flips Arun R Murthy 2025-02-25 7:33 ` [PATCH v7 1/3] drm/plane: Add new plane property IN_FORMATS_ASYNC Arun R Murthy 2025-02-25 7:33 ` [PATCH v7 2/3] drm/plane: modify create_in_formats to accommodate async Arun R Murthy @ 2025-02-25 7:33 ` Arun R Murthy 2025-03-05 6:40 ` Borah, Chaitanya Kumar 2025-02-25 9:17 ` ✗ Fi.CI.CHECKPATCH: warning for Expose modifiers/formats supported by async flips (rev7) Patchwork ` (2 subsequent siblings) 5 siblings, 1 reply; 10+ messages in thread From: Arun R Murthy @ 2025-02-25 7:33 UTC (permalink / raw) To: dri-devel, intel-gfx, intel-xe, ville.syrjala Cc: Arun R Murthy, Chaitanya Kumar Borah, Sebastian Brzezinka, Naveen Kumar Hook up the newly added plane function pointer format_mod_supported_async to populate the modifiers/formats supported by asynchronous flips. v5: Correct the if condition for modifier support check (Chaitanya) v6: Replace uint32_t/uint64_t with u32/u64 (Jani) v7: Move plannar check from intel_async_flip_check_hw() to intel_plane_format_mod_supported_async() (Ville) Signed-off-by: Arun R Murthy <arun.r.murthy@intel.com> Reviewed-by: Chaitanya Kumar Borah <chaitanya.kumar.borah@intel.com> Reviewed-by: Sebastian Brzezinka <sebastian.brzezinka@intel.com> Tested-by: Naveen Kumar <naveen1.kumar@intel.com> --- drivers/gpu/drm/i915/display/i9xx_plane.c | 6 +++-- drivers/gpu/drm/i915/display/intel_atomic_plane.c | 30 +++++++++++++++++++++- drivers/gpu/drm/i915/display/intel_atomic_plane.h | 6 ++++- drivers/gpu/drm/i915/display/intel_display.c | 11 ++------ drivers/gpu/drm/i915/display/skl_universal_plane.c | 5 +++- 5 files changed, 44 insertions(+), 14 deletions(-) diff --git a/drivers/gpu/drm/i915/display/i9xx_plane.c b/drivers/gpu/drm/i915/display/i9xx_plane.c index 013295f66d56ec5e919b3a0c904034bf7985986a..6bd09adb8a30ba002ef334261d7638f398587a3e 100644 --- a/drivers/gpu/drm/i915/display/i9xx_plane.c +++ b/drivers/gpu/drm/i915/display/i9xx_plane.c @@ -820,7 +820,7 @@ unsigned int vlv_plane_min_alignment(struct intel_plane *plane, { struct intel_display *display = to_intel_display(plane); - if (intel_plane_can_async_flip(plane, fb->modifier)) + if (intel_plane_can_async_flip(plane, fb->format->format, fb->modifier)) return 256 * 1024; /* FIXME undocumented so not sure what's actually needed */ @@ -844,7 +844,7 @@ static unsigned int g4x_primary_min_alignment(struct intel_plane *plane, { struct intel_display *display = to_intel_display(plane); - if (intel_plane_can_async_flip(plane, fb->modifier)) + if (intel_plane_can_async_flip(plane, fb->format->format, fb->modifier)) return 256 * 1024; if (intel_scanout_needs_vtd_wa(display)) @@ -889,6 +889,7 @@ static const struct drm_plane_funcs i965_plane_funcs = { .atomic_duplicate_state = intel_plane_duplicate_state, .atomic_destroy_state = intel_plane_destroy_state, .format_mod_supported = i965_plane_format_mod_supported, + .format_mod_supported_async = intel_plane_format_mod_supported_async, }; static const struct drm_plane_funcs i8xx_plane_funcs = { @@ -898,6 +899,7 @@ static const struct drm_plane_funcs i8xx_plane_funcs = { .atomic_duplicate_state = intel_plane_duplicate_state, .atomic_destroy_state = intel_plane_destroy_state, .format_mod_supported = i8xx_plane_format_mod_supported, + .format_mod_supported_async = intel_plane_format_mod_supported_async, }; struct intel_plane * diff --git a/drivers/gpu/drm/i915/display/intel_atomic_plane.c b/drivers/gpu/drm/i915/display/intel_atomic_plane.c index 124cd9ddba0b96657a8166e613b93003e77e133c..4ebc40c914b72b8fe3118edb74d9bf95ab661b13 100644 --- a/drivers/gpu/drm/i915/display/intel_atomic_plane.c +++ b/drivers/gpu/drm/i915/display/intel_atomic_plane.c @@ -170,11 +170,39 @@ bool intel_plane_needs_physical(struct intel_plane *plane) DISPLAY_INFO(i915)->cursor_needs_physical; } -bool intel_plane_can_async_flip(struct intel_plane *plane, u64 modifier) +bool intel_plane_can_async_flip(struct intel_plane *plane, u32 format, + u64 modifier) { + struct intel_display *display = to_intel_display(plane); + + if (DISPLAY_VER(display) <= 14 ? + drm_format_info(format)->is_yuv : + intel_format_info_is_yuv_semiplanar(drm_format_info(format), + modifier)) { + drm_dbg_kms(plane->base.dev, + "[PLANE:%d:%s] Planar formats do not support async flips\n", + plane->base.base.id, plane->base.name); + return false; + } + return plane->can_async_flip && plane->can_async_flip(modifier); } +bool intel_plane_format_mod_supported_async(struct drm_plane *plane, + u32 format, + u64 modifier) +{ + if (!plane->funcs->format_mod_supported(plane, format, modifier)) { + drm_dbg_kms(plane->dev, + "[PLANE:%d:%s] Planar format/modifier not in universal list\n", + plane->base.id, plane->name); + return false; + } + + return intel_plane_can_async_flip(to_intel_plane(plane), + format, modifier); +} + unsigned int intel_adjusted_rate(const struct drm_rect *src, const struct drm_rect *dst, unsigned int rate) diff --git a/drivers/gpu/drm/i915/display/intel_atomic_plane.h b/drivers/gpu/drm/i915/display/intel_atomic_plane.h index 65edd88d28a9c532d6347fbd13b0f45698e9e5bb..0d1700bd5c6d7b1b3e4e7e6be760b548493d6846 100644 --- a/drivers/gpu/drm/i915/display/intel_atomic_plane.h +++ b/drivers/gpu/drm/i915/display/intel_atomic_plane.h @@ -21,7 +21,8 @@ enum plane_id; struct intel_plane * intel_crtc_get_plane(struct intel_crtc *crtc, enum plane_id plane_id); -bool intel_plane_can_async_flip(struct intel_plane *plane, u64 modifier); +bool intel_plane_can_async_flip(struct intel_plane *plane, u32 format, + u64 modifier); unsigned int intel_adjusted_rate(const struct drm_rect *src, const struct drm_rect *dst, unsigned int rate); @@ -87,5 +88,8 @@ void intel_plane_init_cursor_vblank_work(struct intel_plane_state *old_plane_sta int intel_atomic_add_affected_planes(struct intel_atomic_state *state, struct intel_crtc *crtc); int intel_atomic_check_planes(struct intel_atomic_state *state); +bool intel_plane_format_mod_supported_async(struct drm_plane *plane, + u32 format, + u64 modifier); #endif /* __INTEL_ATOMIC_PLANE_H__ */ diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c index 065fdf6dbb88e3c4ac990b38e7f1575e0c9ca413..c9abe1412aef12d0eda17110431a57a06f3f5d20 100644 --- a/drivers/gpu/drm/i915/display/intel_display.c +++ b/drivers/gpu/drm/i915/display/intel_display.c @@ -6188,7 +6188,8 @@ static int intel_async_flip_check_hw(struct intel_atomic_state *state, struct in if (!plane->async_flip) continue; - if (!intel_plane_can_async_flip(plane, new_plane_state->hw.fb->modifier)) { + if (!intel_plane_can_async_flip(plane, new_plane_state->hw.fb->format->format, + new_plane_state->hw.fb->modifier)) { drm_dbg_kms(&i915->drm, "[PLANE:%d:%s] Modifier 0x%llx does not support async flip\n", plane->base.base.id, plane->base.name, @@ -6196,14 +6197,6 @@ static int intel_async_flip_check_hw(struct intel_atomic_state *state, struct in return -EINVAL; } - if (intel_format_info_is_yuv_semiplanar(new_plane_state->hw.fb->format, - new_plane_state->hw.fb->modifier)) { - drm_dbg_kms(&i915->drm, - "[PLANE:%d:%s] Planar formats do not support async flips\n", - plane->base.base.id, plane->base.name); - return -EINVAL; - } - /* * We turn the first async flip request into a sync flip * so that we can reconfigure the plane (eg. change modifier). diff --git a/drivers/gpu/drm/i915/display/skl_universal_plane.c b/drivers/gpu/drm/i915/display/skl_universal_plane.c index cd9762947f1de227a3abbcd61b7c7b0c9848e439..1b0cafe9b158c24e74bf46222ac23d2c933555a5 100644 --- a/drivers/gpu/drm/i915/display/skl_universal_plane.c +++ b/drivers/gpu/drm/i915/display/skl_universal_plane.c @@ -601,7 +601,7 @@ static u32 tgl_plane_min_alignment(struct intel_plane *plane, * Figure out what's going on here... */ if (display->platform.alderlake_p && - intel_plane_can_async_flip(plane, fb->modifier)) + intel_plane_can_async_flip(plane, fb->format->format, fb->modifier)) return mult * 16 * 1024; switch (fb->modifier) { @@ -2623,6 +2623,7 @@ static const struct drm_plane_funcs skl_plane_funcs = { .atomic_duplicate_state = intel_plane_duplicate_state, .atomic_destroy_state = intel_plane_destroy_state, .format_mod_supported = skl_plane_format_mod_supported, + .format_mod_supported_async = intel_plane_format_mod_supported_async, }; static const struct drm_plane_funcs icl_plane_funcs = { @@ -2632,6 +2633,7 @@ static const struct drm_plane_funcs icl_plane_funcs = { .atomic_duplicate_state = intel_plane_duplicate_state, .atomic_destroy_state = intel_plane_destroy_state, .format_mod_supported = icl_plane_format_mod_supported, + .format_mod_supported_async = intel_plane_format_mod_supported_async, }; static const struct drm_plane_funcs tgl_plane_funcs = { @@ -2641,6 +2643,7 @@ static const struct drm_plane_funcs tgl_plane_funcs = { .atomic_duplicate_state = intel_plane_duplicate_state, .atomic_destroy_state = intel_plane_destroy_state, .format_mod_supported = tgl_plane_format_mod_supported, + .format_mod_supported_async = intel_plane_format_mod_supported_async, }; static void -- 2.25.1 ^ permalink raw reply related [flat|nested] 10+ messages in thread
* RE: [PATCH v7 3/3] drm/i915/display: Add i915 hook for format_mod_supported_async 2025-02-25 7:33 ` [PATCH v7 3/3] drm/i915/display: Add i915 hook for format_mod_supported_async Arun R Murthy @ 2025-03-05 6:40 ` Borah, Chaitanya Kumar 0 siblings, 0 replies; 10+ messages in thread From: Borah, Chaitanya Kumar @ 2025-03-05 6:40 UTC (permalink / raw) To: Murthy, Arun R, dri-devel@lists.freedesktop.org, intel-gfx@lists.freedesktop.org, intel-xe@lists.freedesktop.org, ville.syrjala@linux.intel.com Cc: Brzezinka, Sebastian, Kumar, Naveen1 > -----Original Message----- > From: Murthy, Arun R <arun.r.murthy@intel.com> > Sent: Tuesday, February 25, 2025 1:04 PM > To: dri-devel@lists.freedesktop.org; intel-gfx@lists.freedesktop.org; intel- > xe@lists.freedesktop.org; ville.syrjala@linux.intel.com > Cc: Murthy, Arun R <arun.r.murthy@intel.com>; Borah, Chaitanya Kumar > <chaitanya.kumar.borah@intel.com>; Brzezinka, Sebastian > <sebastian.brzezinka@intel.com>; Kumar, Naveen1 > <naveen1.kumar@intel.com> > Subject: [PATCH v7 3/3] drm/i915/display: Add i915 hook for > format_mod_supported_async > > Hook up the newly added plane function pointer > format_mod_supported_async to populate the modifiers/formats supported > by asynchronous flips. > > v5: Correct the if condition for modifier support check (Chaitanya) > v6: Replace uint32_t/uint64_t with u32/u64 (Jani) > v7: Move plannar check from intel_async_flip_check_hw() to > intel_plane_format_mod_supported_async() (Ville) > > Signed-off-by: Arun R Murthy <arun.r.murthy@intel.com> > Reviewed-by: Chaitanya Kumar Borah <chaitanya.kumar.borah@intel.com> > Reviewed-by: Sebastian Brzezinka <sebastian.brzezinka@intel.com> > Tested-by: Naveen Kumar <naveen1.kumar@intel.com> > --- > drivers/gpu/drm/i915/display/i9xx_plane.c | 6 +++-- > drivers/gpu/drm/i915/display/intel_atomic_plane.c | 30 > +++++++++++++++++++++- > drivers/gpu/drm/i915/display/intel_atomic_plane.h | 6 ++++- > drivers/gpu/drm/i915/display/intel_display.c | 11 ++------ > drivers/gpu/drm/i915/display/skl_universal_plane.c | 5 +++- > 5 files changed, 44 insertions(+), 14 deletions(-) > > diff --git a/drivers/gpu/drm/i915/display/i9xx_plane.c > b/drivers/gpu/drm/i915/display/i9xx_plane.c > index > 013295f66d56ec5e919b3a0c904034bf7985986a..6bd09adb8a30ba002ef3342 > 61d7638f398587a3e 100644 > --- a/drivers/gpu/drm/i915/display/i9xx_plane.c > +++ b/drivers/gpu/drm/i915/display/i9xx_plane.c > @@ -820,7 +820,7 @@ unsigned int vlv_plane_min_alignment(struct > intel_plane *plane, { > struct intel_display *display = to_intel_display(plane); > > - if (intel_plane_can_async_flip(plane, fb->modifier)) > + if (intel_plane_can_async_flip(plane, fb->format->format, > +fb->modifier)) > return 256 * 1024; > > /* FIXME undocumented so not sure what's actually needed */ @@ - > 844,7 +844,7 @@ static unsigned int g4x_primary_min_alignment(struct > intel_plane *plane, { > struct intel_display *display = to_intel_display(plane); > > - if (intel_plane_can_async_flip(plane, fb->modifier)) > + if (intel_plane_can_async_flip(plane, fb->format->format, > +fb->modifier)) > return 256 * 1024; > > if (intel_scanout_needs_vtd_wa(display)) > @@ -889,6 +889,7 @@ static const struct drm_plane_funcs i965_plane_funcs > = { > .atomic_duplicate_state = intel_plane_duplicate_state, > .atomic_destroy_state = intel_plane_destroy_state, > .format_mod_supported = i965_plane_format_mod_supported, > + .format_mod_supported_async = > intel_plane_format_mod_supported_async, > }; > > static const struct drm_plane_funcs i8xx_plane_funcs = { @@ -898,6 +899,7 > @@ static const struct drm_plane_funcs i8xx_plane_funcs = { > .atomic_duplicate_state = intel_plane_duplicate_state, > .atomic_destroy_state = intel_plane_destroy_state, > .format_mod_supported = i8xx_plane_format_mod_supported, > + .format_mod_supported_async = > intel_plane_format_mod_supported_async, > }; > > struct intel_plane * > diff --git a/drivers/gpu/drm/i915/display/intel_atomic_plane.c > b/drivers/gpu/drm/i915/display/intel_atomic_plane.c > index > 124cd9ddba0b96657a8166e613b93003e77e133c..4ebc40c914b72b8fe3118ed > b74d9bf95ab661b13 100644 > --- a/drivers/gpu/drm/i915/display/intel_atomic_plane.c > +++ b/drivers/gpu/drm/i915/display/intel_atomic_plane.c > @@ -170,11 +170,39 @@ bool intel_plane_needs_physical(struct intel_plane > *plane) > DISPLAY_INFO(i915)->cursor_needs_physical; > } > > -bool intel_plane_can_async_flip(struct intel_plane *plane, u64 modifier) > +bool intel_plane_can_async_flip(struct intel_plane *plane, u32 format, > + u64 modifier) > { > + struct intel_display *display = to_intel_display(plane); > + > + if (DISPLAY_VER(display) <= 14 ? > + drm_format_info(format)->is_yuv : > + intel_format_info_is_yuv_semiplanar(drm_format_info(format), > + modifier)) { > + drm_dbg_kms(plane->base.dev, > + "[PLANE:%d:%s] Planar formats do not support > async flips\n", > + plane->base.base.id, plane->base.name); > + return false; > + } > + > return plane->can_async_flip && plane->can_async_flip(modifier); } > > +bool intel_plane_format_mod_supported_async(struct drm_plane *plane, > + u32 format, > + u64 modifier) > +{ > + if (!plane->funcs->format_mod_supported(plane, format, modifier)) { In theory this hook is still optional, we should check for its availability. > + drm_dbg_kms(plane->dev, > + "[PLANE:%d:%s] Planar format/modifier not in > universal list\n", The debug message is incorrect. We are not checking only for planar formats here. We can perhaps print the format and modifier rejected. > + plane->base.id, plane->name); > + return false; > + } > + > + return intel_plane_can_async_flip(to_intel_plane(plane), > + format, modifier); > +} > + > unsigned int intel_adjusted_rate(const struct drm_rect *src, > const struct drm_rect *dst, > unsigned int rate) > diff --git a/drivers/gpu/drm/i915/display/intel_atomic_plane.h > b/drivers/gpu/drm/i915/display/intel_atomic_plane.h > index > 65edd88d28a9c532d6347fbd13b0f45698e9e5bb..0d1700bd5c6d7b1b3e4e7e > 6be760b548493d6846 100644 > --- a/drivers/gpu/drm/i915/display/intel_atomic_plane.h > +++ b/drivers/gpu/drm/i915/display/intel_atomic_plane.h > @@ -21,7 +21,8 @@ enum plane_id; > > struct intel_plane * > intel_crtc_get_plane(struct intel_crtc *crtc, enum plane_id plane_id); -bool > intel_plane_can_async_flip(struct intel_plane *plane, u64 modifier); > +bool intel_plane_can_async_flip(struct intel_plane *plane, u32 format, > + u64 modifier); > unsigned int intel_adjusted_rate(const struct drm_rect *src, > const struct drm_rect *dst, > unsigned int rate); > @@ -87,5 +88,8 @@ void intel_plane_init_cursor_vblank_work(struct > intel_plane_state *old_plane_sta int > intel_atomic_add_affected_planes(struct intel_atomic_state *state, > struct intel_crtc *crtc); > int intel_atomic_check_planes(struct intel_atomic_state *state); > +bool intel_plane_format_mod_supported_async(struct drm_plane *plane, > + u32 format, > + u64 modifier); > > #endif /* __INTEL_ATOMIC_PLANE_H__ */ > diff --git a/drivers/gpu/drm/i915/display/intel_display.c > b/drivers/gpu/drm/i915/display/intel_display.c > index > 065fdf6dbb88e3c4ac990b38e7f1575e0c9ca413..c9abe1412aef12d0eda17110 > 431a57a06f3f5d20 100644 > --- a/drivers/gpu/drm/i915/display/intel_display.c > +++ b/drivers/gpu/drm/i915/display/intel_display.c > @@ -6188,7 +6188,8 @@ static int intel_async_flip_check_hw(struct > intel_atomic_state *state, struct in > if (!plane->async_flip) > continue; > > - if (!intel_plane_can_async_flip(plane, new_plane_state- > >hw.fb->modifier)) { > + if (!intel_plane_can_async_flip(plane, new_plane_state- > >hw.fb->format->format, > + new_plane_state->hw.fb->modifier)) { > drm_dbg_kms(&i915->drm, > "[PLANE:%d:%s] Modifier 0x%llx does not > support async flip\n", Now that we are checking for formats too. Good to print it. Regards Chaitanya > plane->base.base.id, plane->base.name, > @@ -6196,14 +6197,6 @@ static int intel_async_flip_check_hw(struct > intel_atomic_state *state, struct in > return -EINVAL; > } > > - if (intel_format_info_is_yuv_semiplanar(new_plane_state- > >hw.fb->format, > - new_plane_state- > >hw.fb->modifier)) { > - drm_dbg_kms(&i915->drm, > - "[PLANE:%d:%s] Planar formats do not > support async flips\n", > - plane->base.base.id, plane->base.name); > - return -EINVAL; > - } > - > /* > * We turn the first async flip request into a sync flip > * so that we can reconfigure the plane (eg. change modifier). > diff --git a/drivers/gpu/drm/i915/display/skl_universal_plane.c > b/drivers/gpu/drm/i915/display/skl_universal_plane.c > index > cd9762947f1de227a3abbcd61b7c7b0c9848e439..1b0cafe9b158c24e74bf4622 > 2ac23d2c933555a5 100644 > --- a/drivers/gpu/drm/i915/display/skl_universal_plane.c > +++ b/drivers/gpu/drm/i915/display/skl_universal_plane.c > @@ -601,7 +601,7 @@ static u32 tgl_plane_min_alignment(struct intel_plane > *plane, > * Figure out what's going on here... > */ > if (display->platform.alderlake_p && > - intel_plane_can_async_flip(plane, fb->modifier)) > + intel_plane_can_async_flip(plane, fb->format->format, > +fb->modifier)) > return mult * 16 * 1024; > > switch (fb->modifier) { > @@ -2623,6 +2623,7 @@ static const struct drm_plane_funcs > skl_plane_funcs = { > .atomic_duplicate_state = intel_plane_duplicate_state, > .atomic_destroy_state = intel_plane_destroy_state, > .format_mod_supported = skl_plane_format_mod_supported, > + .format_mod_supported_async = > intel_plane_format_mod_supported_async, > }; > > static const struct drm_plane_funcs icl_plane_funcs = { @@ -2632,6 +2633,7 > @@ static const struct drm_plane_funcs icl_plane_funcs = { > .atomic_duplicate_state = intel_plane_duplicate_state, > .atomic_destroy_state = intel_plane_destroy_state, > .format_mod_supported = icl_plane_format_mod_supported, > + .format_mod_supported_async = > intel_plane_format_mod_supported_async, > }; > > static const struct drm_plane_funcs tgl_plane_funcs = { @@ -2641,6 +2643,7 > @@ static const struct drm_plane_funcs tgl_plane_funcs = { > .atomic_duplicate_state = intel_plane_duplicate_state, > .atomic_destroy_state = intel_plane_destroy_state, > .format_mod_supported = tgl_plane_format_mod_supported, > + .format_mod_supported_async = > intel_plane_format_mod_supported_async, > }; > > static void > > -- > 2.25.1 ^ permalink raw reply [flat|nested] 10+ messages in thread
* ✗ Fi.CI.CHECKPATCH: warning for Expose modifiers/formats supported by async flips (rev7) 2025-02-25 7:33 [PATCH v7 0/3] Expose modifiers/formats supported by async flips Arun R Murthy ` (2 preceding siblings ...) 2025-02-25 7:33 ` [PATCH v7 3/3] drm/i915/display: Add i915 hook for format_mod_supported_async Arun R Murthy @ 2025-02-25 9:17 ` Patchwork 2025-02-25 9:17 ` ✗ Fi.CI.SPARSE: " Patchwork 2025-02-25 9:40 ` ✗ i915.CI.BAT: failure " Patchwork 5 siblings, 0 replies; 10+ messages in thread From: Patchwork @ 2025-02-25 9:17 UTC (permalink / raw) To: Arun R Murthy; +Cc: intel-gfx == Series Details == Series: Expose modifiers/formats supported by async flips (rev7) URL : https://patchwork.freedesktop.org/series/140935/ State : warning == Summary == Error: dim checkpatch failed 080bab9db88a drm/plane: Add new plane property IN_FORMATS_ASYNC -:103: CHECK:PREFER_KERNEL_TYPES: Prefer kernel type 'u32' over 'uint32_t' #103: FILE: include/drm/drm_plane.h:567: + uint32_t format, uint64_t modifier); total: 0 errors, 0 warnings, 1 checks, 62 lines checked 4c74f8ffe286 drm/plane: modify create_in_formats to accommodate async -:33: WARNING:LONG_LINE: line length of 108 exceeds 100 columns #33: FILE: drivers/gpu/drm/drm_plane.c:198: + bool (*format_mod_supported)(struct drm_plane *plane, -:34: CHECK:PARENTHESIS_ALIGNMENT: Alignment should match open parenthesis #34: FILE: drivers/gpu/drm/drm_plane.c:199: + bool (*format_mod_supported)(struct drm_plane *plane, + u32 format, total: 0 errors, 1 warnings, 1 checks, 72 lines checked f89e95062661 drm/i915/display: Add i915 hook for format_mod_supported_async -:137: CHECK:PARENTHESIS_ALIGNMENT: Alignment should match open parenthesis #137: FILE: drivers/gpu/drm/i915/display/intel_display.c:6192: + if (!intel_plane_can_async_flip(plane, new_plane_state->hw.fb->format->format, + new_plane_state->hw.fb->modifier)) { total: 0 errors, 0 warnings, 1 checks, 139 lines checked ^ permalink raw reply [flat|nested] 10+ messages in thread
* ✗ Fi.CI.SPARSE: warning for Expose modifiers/formats supported by async flips (rev7) 2025-02-25 7:33 [PATCH v7 0/3] Expose modifiers/formats supported by async flips Arun R Murthy ` (3 preceding siblings ...) 2025-02-25 9:17 ` ✗ Fi.CI.CHECKPATCH: warning for Expose modifiers/formats supported by async flips (rev7) Patchwork @ 2025-02-25 9:17 ` Patchwork 2025-02-25 9:40 ` ✗ i915.CI.BAT: failure " Patchwork 5 siblings, 0 replies; 10+ messages in thread From: Patchwork @ 2025-02-25 9:17 UTC (permalink / raw) To: Arun R Murthy; +Cc: intel-gfx == Series Details == Series: Expose modifiers/formats supported by async flips (rev7) 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] 10+ messages in thread
* ✗ i915.CI.BAT: failure for Expose modifiers/formats supported by async flips (rev7) 2025-02-25 7:33 [PATCH v7 0/3] Expose modifiers/formats supported by async flips Arun R Murthy ` (4 preceding siblings ...) 2025-02-25 9:17 ` ✗ Fi.CI.SPARSE: " Patchwork @ 2025-02-25 9:40 ` Patchwork 5 siblings, 0 replies; 10+ messages in thread From: Patchwork @ 2025-02-25 9:40 UTC (permalink / raw) To: Arun R Murthy; +Cc: intel-gfx [-- Attachment #1: Type: text/plain, Size: 5670 bytes --] == Series Details == Series: Expose modifiers/formats supported by async flips (rev7) URL : https://patchwork.freedesktop.org/series/140935/ State : failure == Summary == CI Bug Log - changes from CI_DRM_16176 -> Patchwork_140935v7 ==================================================== Summary ------- **FAILURE** Serious unknown changes coming with Patchwork_140935v7 absolutely need to be verified manually. If you think the reported changes have nothing to do with the changes introduced in Patchwork_140935v7, 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_140935v7/index.html Participating hosts (42 -> 42) ------------------------------ No changes in participating hosts Possible new issues ------------------- Here are the unknown changes that may have been introduced in Patchwork_140935v7: ### IGT changes ### #### Possible regressions #### * igt@dmabuf@all-tests: - fi-skl-6600u: [PASS][1] -> [INCOMPLETE][2] [1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16176/fi-skl-6600u/igt@dmabuf@all-tests.html [2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v7/fi-skl-6600u/igt@dmabuf@all-tests.html * igt@i915_selftest@live@gem_migrate: - bat-twl-1: [PASS][3] -> [INCOMPLETE][4] [3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16176/bat-twl-1/igt@i915_selftest@live@gem_migrate.html [4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v7/bat-twl-1/igt@i915_selftest@live@gem_migrate.html * igt@kms_chamelium_frames@dp-crc-fast: - bat-dg2-13: [PASS][5] -> [FAIL][6] [5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16176/bat-dg2-13/igt@kms_chamelium_frames@dp-crc-fast.html [6]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v7/bat-dg2-13/igt@kms_chamelium_frames@dp-crc-fast.html Known issues ------------ Here are the changes found in Patchwork_140935v7 that come from known issues: ### IGT changes ### #### Issues hit #### * igt@i915_pm_rpm@module-reload: - bat-dg1-7: [PASS][7] -> [FAIL][8] ([i915#13633]) [7]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16176/bat-dg1-7/igt@i915_pm_rpm@module-reload.html [8]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v7/bat-dg1-7/igt@i915_pm_rpm@module-reload.html * igt@i915_selftest@live: - bat-twl-1: [PASS][9] -> [INCOMPLETE][10] ([i915#12435] / [i915#13761]) [9]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16176/bat-twl-1/igt@i915_selftest@live.html [10]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v7/bat-twl-1/igt@i915_selftest@live.html * igt@kms_pipe_crc_basic@nonblocking-crc-frame-sequence: - bat-dg2-11: [PASS][11] -> [SKIP][12] ([i915#9197]) +3 other tests skip [11]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16176/bat-dg2-11/igt@kms_pipe_crc_basic@nonblocking-crc-frame-sequence.html [12]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v7/bat-dg2-11/igt@kms_pipe_crc_basic@nonblocking-crc-frame-sequence.html #### Possible fixes #### * igt@i915_selftest@live@reset: - bat-twl-2: [ABORT][13] ([i915#12919] / [i915#13503]) -> [PASS][14] +1 other test pass [13]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16176/bat-twl-2/igt@i915_selftest@live@reset.html [14]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v7/bat-twl-2/igt@i915_selftest@live@reset.html * igt@i915_selftest@live@workarounds: - bat-arlh-3: [DMESG-FAIL][15] ([i915#12061]) -> [PASS][16] +1 other test pass [15]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16176/bat-arlh-3/igt@i915_selftest@live@workarounds.html [16]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v7/bat-arlh-3/igt@i915_selftest@live@workarounds.html - bat-arls-5: [DMESG-FAIL][17] ([i915#12061]) -> [PASS][18] +1 other test pass [17]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16176/bat-arls-5/igt@i915_selftest@live@workarounds.html [18]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v7/bat-arls-5/igt@i915_selftest@live@workarounds.html * igt@kms_pm_rpm@basic-rte: - bat-rpls-4: [DMESG-WARN][19] ([i915#13400]) -> [PASS][20] [19]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16176/bat-rpls-4/igt@kms_pm_rpm@basic-rte.html [20]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v7/bat-rpls-4/igt@kms_pm_rpm@basic-rte.html [i915#12061]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12061 [i915#12435]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12435 [i915#12919]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12919 [i915#13400]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13400 [i915#13503]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13503 [i915#13633]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13633 [i915#13761]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13761 [i915#9197]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9197 Build changes ------------- * Linux: CI_DRM_16176 -> Patchwork_140935v7 CI-20190529: 20190529 CI_DRM_16176: 32ff724d21f3ec064db2d1a034c47a76d800382f @ git://anongit.freedesktop.org/gfx-ci/linux IGT_8247: 8247 Patchwork_140935v7: 32ff724d21f3ec064db2d1a034c47a76d800382f @ git://anongit.freedesktop.org/gfx-ci/linux == Logs == For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v7/index.html [-- Attachment #2: Type: text/html, Size: 6577 bytes --] ^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2025-03-12 5:50 UTC | newest] Thread overview: 10+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2025-02-25 7:33 [PATCH v7 0/3] Expose modifiers/formats supported by async flips Arun R Murthy 2025-02-25 7:33 ` [PATCH v7 1/3] drm/plane: Add new plane property IN_FORMATS_ASYNC Arun R Murthy 2025-03-05 6:51 ` Borah, Chaitanya Kumar 2025-02-25 7:33 ` [PATCH v7 2/3] drm/plane: modify create_in_formats to accommodate async Arun R Murthy 2025-03-12 5:50 ` Borah, Chaitanya Kumar 2025-02-25 7:33 ` [PATCH v7 3/3] drm/i915/display: Add i915 hook for format_mod_supported_async Arun R Murthy 2025-03-05 6:40 ` Borah, Chaitanya Kumar 2025-02-25 9:17 ` ✗ Fi.CI.CHECKPATCH: warning for Expose modifiers/formats supported by async flips (rev7) Patchwork 2025-02-25 9:17 ` ✗ Fi.CI.SPARSE: " Patchwork 2025-02-25 9:40 ` ✗ i915.CI.BAT: failure " Patchwork
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox