From: Pekka Paalanen <ppaalanen@gmail.com>
To: Rob Clark <robdclark@gmail.com>
Cc: dri-devel@lists.freedesktop.org, freedreno@lists.freedesktop.org,
"Daniel Vetter" <daniel@ffwll.ch>,
"Christian König" <ckoenig.leichtzumerken@gmail.com>,
"Michel Dänzer" <michel@daenzer.net>,
"Tvrtko Ursulin" <tvrtko.ursulin@intel.com>,
"Rodrigo Vivi" <rodrigo.vivi@intel.com>,
"Alex Deucher" <alexander.deucher@amd.com>,
"Simon Ser" <contact@emersion.fr>,
"Rob Clark" <robdclark@chromium.org>,
"Maarten Lankhorst" <maarten.lankhorst@linux.intel.com>,
"Maxime Ripard" <mripard@kernel.org>,
"Thomas Zimmermann" <tzimmermann@suse.de>,
"David Airlie" <airlied@gmail.com>,
"open list" <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH v4 10/14] drm/vblank: Add helper to get next vblank time
Date: Tue, 21 Feb 2023 10:45:51 +0200 [thread overview]
Message-ID: <20230221104551.60d44d1c@eldfell> (raw)
In-Reply-To: <CAF6AEGuo-vmW4Va9=RH+kH9KgNvR2vzjJ8meO-oty56xjDhjgg@mail.gmail.com>
[-- Attachment #1: Type: text/plain, Size: 3704 bytes --]
On Mon, 20 Feb 2023 07:55:41 -0800
Rob Clark <robdclark@gmail.com> wrote:
> On Mon, Feb 20, 2023 at 1:08 AM Pekka Paalanen <ppaalanen@gmail.com> wrote:
> >
> > On Sat, 18 Feb 2023 13:15:53 -0800
> > Rob Clark <robdclark@gmail.com> wrote:
> >
> > > From: Rob Clark <robdclark@chromium.org>
> > >
> > > Will be used in the next commit to set a deadline on fences that an
> > > atomic update is waiting on.
> > >
> > > Signed-off-by: Rob Clark <robdclark@chromium.org>
> > > ---
> > > drivers/gpu/drm/drm_vblank.c | 32 ++++++++++++++++++++++++++++++++
> > > include/drm/drm_vblank.h | 1 +
> > > 2 files changed, 33 insertions(+)
> > >
> > > diff --git a/drivers/gpu/drm/drm_vblank.c b/drivers/gpu/drm/drm_vblank.c
> > > index 2ff31717a3de..caf25ebb34c5 100644
> > > --- a/drivers/gpu/drm/drm_vblank.c
> > > +++ b/drivers/gpu/drm/drm_vblank.c
> > > @@ -980,6 +980,38 @@ u64 drm_crtc_vblank_count_and_time(struct drm_crtc *crtc,
> > > }
> > > EXPORT_SYMBOL(drm_crtc_vblank_count_and_time);
> > >
> > > +/**
> > > + * drm_crtc_next_vblank_time - calculate the time of the next vblank
> > > + * @crtc: the crtc for which to calculate next vblank time
> > > + * @vblanktime: pointer to time to receive the next vblank timestamp.
> > > + *
> > > + * Calculate the expected time of the next vblank based on time of previous
> > > + * vblank and frame duration
> >
> > Hi,
> >
> > for VRR this targets the highest frame rate possible for the current
> > VRR mode, right?
> >
>
> It is based on vblank->framedur_ns which is in turn based on
> mode->crtc_clock. Presumably for VRR that ends up being a maximum?
I don't know. :-)
You need a number of clock cycles in addition to the clock frequency,
and that could still be minimum, maximum, the last realized one, ...
VRR works by adjusting the front porch length IIRC.
Thanks,
pq
> BR,
> -R
>
>
> >
> > Thanks,
> > pq
> >
> > > + */
> > > +int drm_crtc_next_vblank_time(struct drm_crtc *crtc, ktime_t *vblanktime)
> > > +{
> > > + unsigned int pipe = drm_crtc_index(crtc);
> > > + struct drm_vblank_crtc *vblank = &crtc->dev->vblank[pipe];
> > > + u64 count;
> > > +
> > > + if (!vblank->framedur_ns)
> > > + return -EINVAL;
> > > +
> > > + count = drm_vblank_count_and_time(crtc->dev, pipe, vblanktime);
> > > +
> > > + /*
> > > + * If we don't get a valid count, then we probably also don't
> > > + * have a valid time:
> > > + */
> > > + if (!count)
> > > + return -EINVAL;
> > > +
> > > + *vblanktime = ktime_add(*vblanktime, ns_to_ktime(vblank->framedur_ns));
> > > +
> > > + return 0;
> > > +}
> > > +EXPORT_SYMBOL(drm_crtc_next_vblank_time);
> > > +
> > > static void send_vblank_event(struct drm_device *dev,
> > > struct drm_pending_vblank_event *e,
> > > u64 seq, ktime_t now)
> > > diff --git a/include/drm/drm_vblank.h b/include/drm/drm_vblank.h
> > > index 733a3e2d1d10..a63bc2c92f3c 100644
> > > --- a/include/drm/drm_vblank.h
> > > +++ b/include/drm/drm_vblank.h
> > > @@ -230,6 +230,7 @@ bool drm_dev_has_vblank(const struct drm_device *dev);
> > > u64 drm_crtc_vblank_count(struct drm_crtc *crtc);
> > > u64 drm_crtc_vblank_count_and_time(struct drm_crtc *crtc,
> > > ktime_t *vblanktime);
> > > +int drm_crtc_next_vblank_time(struct drm_crtc *crtc, ktime_t *vblanktime);
> > > void drm_crtc_send_vblank_event(struct drm_crtc *crtc,
> > > struct drm_pending_vblank_event *e);
> > > void drm_crtc_arm_vblank_event(struct drm_crtc *crtc,
> >
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
next prev parent reply other threads:[~2023-02-21 8:46 UTC|newest]
Thread overview: 93+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-02-18 21:15 [PATCH v4 00/14] dma-fence: Deadline awareness Rob Clark
2023-02-18 21:15 ` [PATCH v4 01/14] dma-buf/dma-fence: Add deadline awareness Rob Clark
2023-02-22 10:23 ` Tvrtko Ursulin
2023-02-22 15:28 ` Christian König
2023-02-22 17:04 ` Tvrtko Ursulin
2023-02-22 17:16 ` Rob Clark
2023-02-22 17:33 ` Tvrtko Ursulin
2023-02-22 18:57 ` Rob Clark
2023-02-22 11:01 ` Luben Tuikov
2023-02-18 21:15 ` [PATCH v4 02/14] dma-buf/fence-array: Add fence deadline support Rob Clark
2023-02-18 21:15 ` [PATCH v4 03/14] dma-buf/fence-chain: " Rob Clark
2023-02-22 10:27 ` Tvrtko Ursulin
2023-02-22 15:55 ` Rob Clark
2023-02-18 21:15 ` [PATCH v4 04/14] dma-buf/dma-resv: Add a way to set fence deadline Rob Clark
2023-02-20 8:16 ` Christian König
2023-02-18 21:15 ` [PATCH v4 05/14] dma-buf/sync_file: Add SET_DEADLINE ioctl Rob Clark
2023-02-20 8:27 ` Christian König
2023-02-20 16:09 ` Rob Clark
2023-02-21 8:41 ` Pekka Paalanen
2023-02-23 9:19 ` Christian König
2023-02-20 8:48 ` Pekka Paalanen
2023-02-18 21:15 ` [PATCH v4 06/14] dma-buf/sync_file: Support (E)POLLPRI Rob Clark
2023-02-20 8:31 ` Christian König
2023-02-21 8:38 ` Pekka Paalanen
2023-02-20 8:53 ` Pekka Paalanen
2023-02-20 16:14 ` Rob Clark
2023-02-21 8:37 ` Pekka Paalanen
2023-02-21 16:01 ` Sebastian Wick
2023-02-21 17:55 ` Rob Clark
2023-02-21 16:48 ` Luben Tuikov
2023-02-21 17:53 ` Rob Clark
2023-02-22 9:49 ` Pekka Paalanen
2023-02-22 10:26 ` Luben Tuikov
2023-02-22 15:37 ` Rob Clark
2023-02-23 9:38 ` Pekka Paalanen
2023-02-23 18:51 ` Rob Clark
2023-02-24 9:26 ` Pekka Paalanen
2023-02-24 9:41 ` Tvrtko Ursulin
2023-02-24 10:24 ` Pekka Paalanen
2023-02-24 10:50 ` Tvrtko Ursulin
2023-02-24 11:00 ` Pekka Paalanen
2023-02-24 11:37 ` Tvrtko Ursulin
2023-02-24 15:26 ` Luben Tuikov
2023-02-24 17:59 ` Rob Clark
2023-02-27 21:35 ` Rodrigo Vivi
2023-02-27 22:20 ` Rob Clark
2023-02-27 22:44 ` Sebastian Wick
2023-02-27 23:48 ` Rob Clark
2023-02-28 14:30 ` Sebastian Wick
2023-02-28 22:52 ` Rob Clark
2023-03-01 15:31 ` Sebastian Wick
2023-03-01 16:02 ` Rob Clark
2023-03-01 15:45 ` Rodrigo Vivi
2023-02-24 16:59 ` Rob Clark
2023-02-24 19:44 ` Rob Clark
2023-02-27 9:34 ` Pekka Paalanen
2023-02-27 18:43 ` Rob Clark
2023-02-18 21:15 ` [PATCH v4 07/14] dma-buf/sw_sync: Add fence deadline support Rob Clark
2023-02-20 8:29 ` Christian König
2023-02-18 21:15 ` [PATCH v4 08/14] drm/scheduler: " Rob Clark
2023-02-21 19:40 ` Luben Tuikov
2023-02-18 21:15 ` [PATCH v4 09/14] drm/syncobj: Add deadline support for syncobj waits Rob Clark
2023-02-19 16:09 ` Rob Clark
2023-02-20 9:05 ` Pekka Paalanen
2023-02-20 16:20 ` Rob Clark
2023-02-24 9:51 ` Tvrtko Ursulin
2023-02-18 21:15 ` [PATCH v4 10/14] drm/vblank: Add helper to get next vblank time Rob Clark
2023-02-20 9:08 ` Pekka Paalanen
2023-02-20 15:55 ` Rob Clark
2023-02-21 8:45 ` Pekka Paalanen [this message]
2023-02-21 13:01 ` Ville Syrjälä
2023-02-21 13:11 ` Pekka Paalanen
2023-02-21 13:42 ` Ville Syrjälä
2023-02-21 17:50 ` Rob Clark
2023-02-22 9:57 ` Pekka Paalanen
2023-02-22 15:44 ` Rob Clark
2023-02-22 15:55 ` Ville Syrjälä
2023-02-21 19:54 ` Rob Clark
2023-02-21 21:39 ` Ville Syrjälä
2023-02-21 21:48 ` Ville Syrjälä
2023-02-21 22:28 ` [Freedreno] " Rob Clark
2023-02-21 22:46 ` Ville Syrjälä
2023-02-21 23:20 ` Rob Clark
2023-02-21 23:25 ` Rob Clark
2023-02-22 10:37 ` Luben Tuikov
2023-02-22 15:48 ` Rob Clark
2023-02-18 21:15 ` [PATCH v4 11/14] drm/atomic-helper: Set fence deadline for vblank Rob Clark
2023-02-22 10:46 ` Luben Tuikov
2023-02-22 15:50 ` Rob Clark
2023-02-18 21:15 ` [PATCH v4 12/14] drm/msm: Add deadline based boost support Rob Clark
2023-02-18 21:15 ` [PATCH v4 13/14] drm/msm: Add wait-boost support Rob Clark
2023-02-18 21:15 ` [PATCH v4 14/14] drm/i915: Add deadline based boost support Rob Clark
2023-02-20 15:46 ` Tvrtko Ursulin
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=20230221104551.60d44d1c@eldfell \
--to=ppaalanen@gmail.com \
--cc=airlied@gmail.com \
--cc=alexander.deucher@amd.com \
--cc=ckoenig.leichtzumerken@gmail.com \
--cc=contact@emersion.fr \
--cc=daniel@ffwll.ch \
--cc=dri-devel@lists.freedesktop.org \
--cc=freedreno@lists.freedesktop.org \
--cc=linux-kernel@vger.kernel.org \
--cc=maarten.lankhorst@linux.intel.com \
--cc=michel@daenzer.net \
--cc=mripard@kernel.org \
--cc=robdclark@chromium.org \
--cc=robdclark@gmail.com \
--cc=rodrigo.vivi@intel.com \
--cc=tvrtko.ursulin@intel.com \
--cc=tzimmermann@suse.de \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox