From: "Ville Syrjälä" <ville.syrjala@linux.intel.com>
To: "André Almeida" <andrealmeid@igalia.com>
Cc: dri-devel@lists.freedesktop.org, amd-gfx@lists.freedesktop.org,
linux-kernel@vger.kernel.org, kernel-dev@igalia.com,
alexander.deucher@amd.com, christian.koenig@amd.com,
"Simon Ser" <contact@emersion.fr>,
"Pekka Paalanen" <ppaalanen@gmail.com>,
daniel@ffwll.ch, "Daniel Stone" <daniel@fooishbar.org>,
"'Marek Olšák'" <maraeo@gmail.com>,
"Dave Airlie" <airlied@gmail.com>,
"Xaver Hugl" <xaver.hugl@gmail.com>,
"Joshua Ashton" <joshua@froggi.es>,
"Michel Dänzer" <michel.daenzer@mailbox.org>
Subject: Re: [PATCH v5 2/3] drm: Allow drivers to choose plane types to async flip
Date: Wed, 12 Jun 2024 22:55:01 +0300 [thread overview]
Message-ID: <Zmn9FdyMh-tyGTQg@intel.com> (raw)
In-Reply-To: <20240612193713.167448-3-andrealmeid@igalia.com>
On Wed, Jun 12, 2024 at 04:37:12PM -0300, André Almeida wrote:
> Different planes may have different capabilities of doing async flips,
> so create a field to let drivers allow async flip per plane type.
>
> Signed-off-by: André Almeida <andrealmeid@igalia.com>
> ---
> drivers/gpu/drm/drm_atomic_uapi.c | 4 ++--
> drivers/gpu/drm/drm_plane.c | 3 +++
> include/drm/drm_plane.h | 5 +++++
> 3 files changed, 10 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/gpu/drm/drm_atomic_uapi.c b/drivers/gpu/drm/drm_atomic_uapi.c
> index 2e1d9391febe..dd4b1578f141 100644
> --- a/drivers/gpu/drm/drm_atomic_uapi.c
> +++ b/drivers/gpu/drm/drm_atomic_uapi.c
> @@ -1079,9 +1079,9 @@ int drm_atomic_set_property(struct drm_atomic_state *state,
> break;
> }
>
> - if (async_flip && plane_state->plane->type != DRM_PLANE_TYPE_PRIMARY) {
> + if (async_flip && !plane_state->plane->async_flip) {
You alreayd have 'plane', no need to dog it out again.
> drm_dbg_atomic(prop->dev,
> - "[OBJECT:%d] Only primary planes can be changed during async flip\n",
> + "[OBJECT:%d] This type of plane cannot be changed during async flip\n",
> obj->id);
"[PLANE:%d:%s] does not support async flips"
or something like it would make more sense to me.
> ret = -EINVAL;
> break;
> diff --git a/drivers/gpu/drm/drm_plane.c b/drivers/gpu/drm/drm_plane.c
> index 57662a1fd345..bbcec3940636 100644
> --- a/drivers/gpu/drm/drm_plane.c
> +++ b/drivers/gpu/drm/drm_plane.c
> @@ -385,6 +385,9 @@ static int __drm_universal_plane_init(struct drm_device *dev,
>
> drm_modeset_lock_init(&plane->mutex);
>
> + if (type == DRM_PLANE_TYPE_PRIMARY)
> + plane->async_flip = true;
Setting that would be the job of the driver.
You could probably just nuke mode_config.async_page_flip
and replace it fully with plane.async_flip checks.
> +
> plane->base.properties = &plane->properties;
> plane->dev = dev;
> plane->funcs = funcs;
> diff --git a/include/drm/drm_plane.h b/include/drm/drm_plane.h
> index 9507542121fa..0bebc72af5c3 100644
> --- a/include/drm/drm_plane.h
> +++ b/include/drm/drm_plane.h
> @@ -786,6 +786,11 @@ struct drm_plane {
> * @kmsg_panic: Used to register a panic notifier for this plane
> */
> struct kmsg_dumper kmsg_panic;
> +
> + /**
> + * @async_flip: indicates if a plane can do async flips
> + */
> + bool async_flip;
> };
>
> #define obj_to_plane(x) container_of(x, struct drm_plane, base)
> --
> 2.45.2
--
Ville Syrjälä
Intel
next prev parent reply other threads:[~2024-06-12 19:55 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-06-12 19:37 [PATCH v5 0/3] drm/atomic: Allow drivers to write their own plane check for async André Almeida
2024-06-12 19:37 ` [PATCH v5 1/3] drm/atomic: Allow userspace to use explicit sync with atomic async flips André Almeida
2024-06-12 19:37 ` [PATCH v5 2/3] drm: Allow drivers to choose plane types to async flip André Almeida
2024-06-12 19:55 ` Ville Syrjälä [this message]
2024-06-12 20:45 ` Dmitry Baryshkov
2024-06-13 15:59 ` André Almeida
2024-06-12 19:37 ` [PATCH v5 3/3] drm/amdgpu: Make it possible to async flip overlay planes André Almeida
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=Zmn9FdyMh-tyGTQg@intel.com \
--to=ville.syrjala@linux.intel.com \
--cc=airlied@gmail.com \
--cc=alexander.deucher@amd.com \
--cc=amd-gfx@lists.freedesktop.org \
--cc=andrealmeid@igalia.com \
--cc=christian.koenig@amd.com \
--cc=contact@emersion.fr \
--cc=daniel@ffwll.ch \
--cc=daniel@fooishbar.org \
--cc=dri-devel@lists.freedesktop.org \
--cc=joshua@froggi.es \
--cc=kernel-dev@igalia.com \
--cc=linux-kernel@vger.kernel.org \
--cc=maraeo@gmail.com \
--cc=michel.daenzer@mailbox.org \
--cc=ppaalanen@gmail.com \
--cc=xaver.hugl@gmail.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.