All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Ville Syrjälä" <ville.syrjala@linux.intel.com>
To: Arun R Murthy <arun.r.murthy@intel.com>
Cc: dri-devel@lists.freedesktop.org, intel-gfx@lists.freedesktop.org,
	intel-xe@lists.freedesktop.org, chaitanya.kumar.borah@intel.com,
	Naveen Kumar <naveen1.kumar@intel.com>
Subject: Re: [PATCH v6 1/3] drm/plane: Add new plane property IN_FORMATS_ASYNC
Date: Wed, 19 Feb 2025 20:54:26 +0200	[thread overview]
Message-ID: <Z7Yo4jYqmEtTEgsK@intel.com> (raw)
In-Reply-To: <20250219-asyn-v6-1-b959e6becb3c@intel.com>

On Wed, Feb 19, 2025 at 02:47:23PM +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 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)
> 
> 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..dbbef20753f834a85ae9ded748cff2b3f0e85043 100644
> --- a/drivers/gpu/drm/drm_mode_config.c
> +++ b/drivers/gpu/drm/drm_mode_config.c
> @@ -388,6 +388,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;

Please put it next to the other blob.

> +
>  	return 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

-- 
Ville Syrjälä
Intel

  reply	other threads:[~2025-02-19 19:40 UTC|newest]

Thread overview: 29+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-02-19  9:17 [PATCH v6 0/3] Expose modifiers/formats supported by async flips Arun R Murthy
2025-02-19  9:17 ` [PATCH v6 1/3] drm/plane: Add new plane property IN_FORMATS_ASYNC Arun R Murthy
2025-02-19 18:54   ` Ville Syrjälä [this message]
2025-02-19  9:17 ` [PATCH v6 2/3] drm/plane: modify create_in_formats to accommodate async Arun R Murthy
2025-02-19 18:53   ` Ville Syrjälä
2025-03-12  5:48   ` Borah, Chaitanya Kumar
2025-03-12  5:51     ` Borah, Chaitanya Kumar
2025-02-19  9:17 ` [PATCH v6 3/3] drm/i915/display: Add i915 hook for format_mod_supported_async Arun R Murthy
2025-02-19 19:08   ` Ville Syrjälä
2025-02-19  9:39 ` ✓ CI.Patch_applied: success for Expose modifiers/formats supported by async flips (rev7) Patchwork
2025-02-19  9:40 ` ✗ CI.checkpatch: warning " Patchwork
2025-02-19  9:41 ` ✓ CI.KUnit: success " Patchwork
2025-02-19  9:57 ` ✓ CI.Build: " Patchwork
2025-02-19 10:00 ` ✓ CI.Hooks: " Patchwork
2025-02-19 10:01 ` ✗ Fi.CI.CHECKPATCH: warning for Expose modifiers/formats supported by async flips (rev6) Patchwork
2025-02-19 10:01 ` ✗ Fi.CI.SPARSE: " Patchwork
2025-02-19 10:01 ` ✗ CI.checksparse: warning for Expose modifiers/formats supported by async flips (rev7) Patchwork
2025-02-19 10:15 ` ✗ i915.CI.BAT: failure for Expose modifiers/formats supported by async flips (rev6) Patchwork
2025-02-19 13:53 ` [PATCH v6 0/3] Expose modifiers/formats supported by async flips Simona Vetter
2025-02-19 22:33 ` Ville Syrjälä
2025-02-20  6:20 ` ✓ CI.Patch_applied: success for Expose modifiers/formats supported by async flips (rev8) Patchwork
2025-02-20  6:20 ` ✗ CI.checkpatch: warning " Patchwork
2025-02-20  6:21 ` ✓ CI.KUnit: success " Patchwork
2025-02-20  6:38 ` ✓ CI.Build: " Patchwork
2025-02-20  6:40 ` ✓ CI.Hooks: " Patchwork
2025-02-20  6:50 ` ✗ CI.checksparse: warning " Patchwork
2025-02-20  7:15 ` ✗ Xe.CI.Full: failure for Expose modifiers/formats supported by async flips (rev7) Patchwork
2025-02-20  7:15 ` ✓ Xe.CI.BAT: success for Expose modifiers/formats supported by async flips (rev8) Patchwork
2025-02-21  0:55 ` ✗ Xe.CI.Full: failure " Patchwork

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=Z7Yo4jYqmEtTEgsK@intel.com \
    --to=ville.syrjala@linux.intel.com \
    --cc=arun.r.murthy@intel.com \
    --cc=chaitanya.kumar.borah@intel.com \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=intel-gfx@lists.freedesktop.org \
    --cc=intel-xe@lists.freedesktop.org \
    --cc=naveen1.kumar@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.