From: Pekka Paalanen <ppaalanen@gmail.com>
To: Daniel Vetter <daniel@ffwll.ch>
Cc: Brian Norris <briannorris@chromium.org>,
Rob Clark <robdclark@chromium.org>,
Andrzej Hajda <andrzej.hajda@intel.com>,
Peter Hutterer <peter.hutterer@who-t.net>,
David Airlie <airlied@linux.ie>,
Dmitry Torokhov <dmitry.torokhov@gmail.com>,
linux-kernel@vger.kernel.org,
Doug Anderson <dianders@chromium.org>,
linux-rockchip@lists.infradead.org,
"Kristian H . Kristensen" <hoegsberg@google.com>,
dri-devel@lists.freedesktop.org,
Thomas Zimmermann <tzimmermann@suse.de>,
linux-input@vger.kernel.org
Subject: Re: [PATCH v2 1/2] drm/input_helper: Add new input-handling helper
Date: Mon, 22 Nov 2021 11:25:09 +0200 [thread overview]
Message-ID: <20211122112509.4d7e6ad3@eldfell> (raw)
In-Reply-To: <YZfJET55LjuW4BP+@phenom.ffwll.local>
[-- Attachment #1: Type: text/plain, Size: 5079 bytes --]
On Fri, 19 Nov 2021 16:56:01 +0100
Daniel Vetter <daniel@ffwll.ch> wrote:
> On Fri, Nov 19, 2021 at 12:38:41PM +0200, Pekka Paalanen wrote:
> > On Thu, 18 Nov 2021 17:46:10 -0800
> > Brian Norris <briannorris@chromium.org> wrote:
> >
> > > Hi Pekka,
> > >
> > > Thanks for the thoughts and review. I've tried to respond below:
> > >
> > > On Thu, Nov 18, 2021 at 12:39:28PM +0200, Pekka Paalanen wrote:
> > > > On Wed, 17 Nov 2021 14:48:40 -0800
> > > > Brian Norris <briannorris@chromium.org> wrote:
> > > >
> > > > > A variety of applications have found it useful to listen to
> > > > > user-initiated input events to make decisions within a DRM driver, given
> > > > > that input events are often the first sign that we're going to start
> > > > > doing latency-sensitive activities:
> > > > >
> > > > > * Panel self-refresh: software-directed self-refresh (e.g., with
> > > > > Rockchip eDP) is especially latency sensitive. In some cases, it can
> > > > > take 10s of milliseconds for a panel to exit self-refresh, which can
> > > > > be noticeable. Rockchip RK3399 Chrome OS systems have always shipped
> > > > > with an input_handler boost, that preemptively exits self-refresh
> > > > > whenever there is input activity.
> > > > >
> > > > > * GPU drivers: on GPU-accelerated desktop systems, we may need to
> > > > > render new frames immediately after user activity. Powering up the
> > > > > GPU can take enough time that it is worthwhile to start this process
> > > > > as soon as there is input activity. Many Chrome OS systems also ship
> > > > > with an input_handler boost that powers up the GPU.
> > > > >
> > > > > This patch provides a small helper library that abstracts some of the
> > > > > input-subsystem details around picking which devices to listen to, and
> > > > > some other boilerplate. This will be used in the next patch to implement
> > > > > the first bullet: preemptive exit for panel self-refresh.
> > > > >
> > > > > Bits of this are adapted from code the Android and/or Chrome OS kernels
> > > > > have been carrying for a while.
> > > > >
> > > > > Signed-off-by: Brian Norris <briannorris@chromium.org>
> > > > > ---
> > > >
> > > > Thanks Simon for the CC.
> > > >
> > > > Hi Brian,
> > > >
> > > > while this feature in general makes sense and sounds good, to start
> > > > warming up display hardware early when something might start to happen,
> > > > this particular proposal has many problems from UAPI perspective (as it
> > > > has none). Comments below.
> > > >
> > > > Btw. if PSR is that slow to wake up from, how much do you actually gain
> > > > from this input event watching? I would imagine the improvement to not
> > > > be noticeable.
> > >
> > > Patch 2 has details. It's not really about precisely how slow PSR is,
> > > but how much foresight we can gain: in patch 2, I note that with my
> > > particular user space and system, I can start PSR-exit 50ms earlier than
> > > I would otherweise. (FWIW, this measurement is exactly the same it was
> > > with the original version written 4 years ago.)
> > >
> > > For how long PSR-exit takes: the measurements I'm able to do (via
> > > ftrace) show that drm_self_refresh_transition() takes between 35 and 55
> > > ms. That's noticeable at 60 fps. And quite conveniently, the input-boost
> > > manages to hide nearly 100% of that latency.
> > >
> > > Typical use cases where one notices PSR latency (and where this 35-55ms
> > > matters) involve simply moving a cursor; it's very noticeable when you
> > > have more than a few frames of latency to "get started".
> >
> > Hi Brian,
> >
> > that is very interesting, thanks.
> >
> > I would never have expected to have userspace take *that* long to
> > react. But, that sounds like it could be just your userspace software
> > stack.
>
> In the other subthread we're talking about making this more explicit.
> Maybe we need to combine this with a "I expect to take this many
> milliseconds to get the first frame out" value.
>
> That way compositors which take 50ms (which frankly is shocking slow) can
> set that, and kms can enable sr exit (since sr exit will actually help
> here). But other compositors which expect to get the first frame out in
> maybe 20 can spec that, and then the driver will not sr exit (because too
> high chances we'll just make shit slower), and instead will only boost
> render clocks.
>
> Thoughts?
I wonder if the compositor or the userspace stack can know how long it
usually takes to prepare the first KMS submission after a pause. I
guess it would need to measure that at runtime. Hmm, doable I guess,
sure. Input to output latency in general is interesting.
However, that sounds like a pretty vague API with the delay value. I
think it has a high risk of regressing into a boolean toggle by
userspace choosing an arbitrary number and then assuming the threshold
in the driver is always the same.
Thanks,
pq
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
WARNING: multiple messages have this Message-ID (diff)
From: Pekka Paalanen <ppaalanen@gmail.com>
To: Daniel Vetter <daniel@ffwll.ch>
Cc: Brian Norris <briannorris@chromium.org>,
Rob Clark <robdclark@chromium.org>,
Andrzej Hajda <andrzej.hajda@intel.com>,
Peter Hutterer <peter.hutterer@who-t.net>,
David Airlie <airlied@linux.ie>,
Dmitry Torokhov <dmitry.torokhov@gmail.com>,
linux-kernel@vger.kernel.org,
Doug Anderson <dianders@chromium.org>,
linux-rockchip@lists.infradead.org,
"Kristian H . Kristensen" <hoegsberg@google.com>,
dri-devel@lists.freedesktop.org,
Thomas Zimmermann <tzimmermann@suse.de>,
linux-input@vger.kernel.org
Subject: Re: [PATCH v2 1/2] drm/input_helper: Add new input-handling helper
Date: Mon, 22 Nov 2021 11:25:09 +0200 [thread overview]
Message-ID: <20211122112509.4d7e6ad3@eldfell> (raw)
In-Reply-To: <YZfJET55LjuW4BP+@phenom.ffwll.local>
[-- Attachment #1.1: Type: text/plain, Size: 5079 bytes --]
On Fri, 19 Nov 2021 16:56:01 +0100
Daniel Vetter <daniel@ffwll.ch> wrote:
> On Fri, Nov 19, 2021 at 12:38:41PM +0200, Pekka Paalanen wrote:
> > On Thu, 18 Nov 2021 17:46:10 -0800
> > Brian Norris <briannorris@chromium.org> wrote:
> >
> > > Hi Pekka,
> > >
> > > Thanks for the thoughts and review. I've tried to respond below:
> > >
> > > On Thu, Nov 18, 2021 at 12:39:28PM +0200, Pekka Paalanen wrote:
> > > > On Wed, 17 Nov 2021 14:48:40 -0800
> > > > Brian Norris <briannorris@chromium.org> wrote:
> > > >
> > > > > A variety of applications have found it useful to listen to
> > > > > user-initiated input events to make decisions within a DRM driver, given
> > > > > that input events are often the first sign that we're going to start
> > > > > doing latency-sensitive activities:
> > > > >
> > > > > * Panel self-refresh: software-directed self-refresh (e.g., with
> > > > > Rockchip eDP) is especially latency sensitive. In some cases, it can
> > > > > take 10s of milliseconds for a panel to exit self-refresh, which can
> > > > > be noticeable. Rockchip RK3399 Chrome OS systems have always shipped
> > > > > with an input_handler boost, that preemptively exits self-refresh
> > > > > whenever there is input activity.
> > > > >
> > > > > * GPU drivers: on GPU-accelerated desktop systems, we may need to
> > > > > render new frames immediately after user activity. Powering up the
> > > > > GPU can take enough time that it is worthwhile to start this process
> > > > > as soon as there is input activity. Many Chrome OS systems also ship
> > > > > with an input_handler boost that powers up the GPU.
> > > > >
> > > > > This patch provides a small helper library that abstracts some of the
> > > > > input-subsystem details around picking which devices to listen to, and
> > > > > some other boilerplate. This will be used in the next patch to implement
> > > > > the first bullet: preemptive exit for panel self-refresh.
> > > > >
> > > > > Bits of this are adapted from code the Android and/or Chrome OS kernels
> > > > > have been carrying for a while.
> > > > >
> > > > > Signed-off-by: Brian Norris <briannorris@chromium.org>
> > > > > ---
> > > >
> > > > Thanks Simon for the CC.
> > > >
> > > > Hi Brian,
> > > >
> > > > while this feature in general makes sense and sounds good, to start
> > > > warming up display hardware early when something might start to happen,
> > > > this particular proposal has many problems from UAPI perspective (as it
> > > > has none). Comments below.
> > > >
> > > > Btw. if PSR is that slow to wake up from, how much do you actually gain
> > > > from this input event watching? I would imagine the improvement to not
> > > > be noticeable.
> > >
> > > Patch 2 has details. It's not really about precisely how slow PSR is,
> > > but how much foresight we can gain: in patch 2, I note that with my
> > > particular user space and system, I can start PSR-exit 50ms earlier than
> > > I would otherweise. (FWIW, this measurement is exactly the same it was
> > > with the original version written 4 years ago.)
> > >
> > > For how long PSR-exit takes: the measurements I'm able to do (via
> > > ftrace) show that drm_self_refresh_transition() takes between 35 and 55
> > > ms. That's noticeable at 60 fps. And quite conveniently, the input-boost
> > > manages to hide nearly 100% of that latency.
> > >
> > > Typical use cases where one notices PSR latency (and where this 35-55ms
> > > matters) involve simply moving a cursor; it's very noticeable when you
> > > have more than a few frames of latency to "get started".
> >
> > Hi Brian,
> >
> > that is very interesting, thanks.
> >
> > I would never have expected to have userspace take *that* long to
> > react. But, that sounds like it could be just your userspace software
> > stack.
>
> In the other subthread we're talking about making this more explicit.
> Maybe we need to combine this with a "I expect to take this many
> milliseconds to get the first frame out" value.
>
> That way compositors which take 50ms (which frankly is shocking slow) can
> set that, and kms can enable sr exit (since sr exit will actually help
> here). But other compositors which expect to get the first frame out in
> maybe 20 can spec that, and then the driver will not sr exit (because too
> high chances we'll just make shit slower), and instead will only boost
> render clocks.
>
> Thoughts?
I wonder if the compositor or the userspace stack can know how long it
usually takes to prepare the first KMS submission after a pause. I
guess it would need to measure that at runtime. Hmm, doable I guess,
sure. Input to output latency in general is interesting.
However, that sounds like a pretty vague API with the delay value. I
think it has a high risk of regressing into a boolean toggle by
userspace choosing an arbitrary number and then assuming the threshold
in the driver is always the same.
Thanks,
pq
[-- Attachment #1.2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
[-- Attachment #2: Type: text/plain, Size: 170 bytes --]
_______________________________________________
Linux-rockchip mailing list
Linux-rockchip@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-rockchip
WARNING: multiple messages have this Message-ID (diff)
From: Pekka Paalanen <ppaalanen@gmail.com>
To: Daniel Vetter <daniel@ffwll.ch>
Cc: Rob Clark <robdclark@chromium.org>,
Dmitry Torokhov <dmitry.torokhov@gmail.com>,
Thomas Zimmermann <tzimmermann@suse.de>,
linux-rockchip@lists.infradead.org,
David Airlie <airlied@linux.ie>,
Brian Norris <briannorris@chromium.org>,
linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org,
Doug Anderson <dianders@chromium.org>,
Peter Hutterer <peter.hutterer@who-t.net>,
"Kristian H . Kristensen" <hoegsberg@google.com>,
Andrzej Hajda <andrzej.hajda@intel.com>,
linux-input@vger.kernel.org
Subject: Re: [PATCH v2 1/2] drm/input_helper: Add new input-handling helper
Date: Mon, 22 Nov 2021 11:25:09 +0200 [thread overview]
Message-ID: <20211122112509.4d7e6ad3@eldfell> (raw)
In-Reply-To: <YZfJET55LjuW4BP+@phenom.ffwll.local>
[-- Attachment #1: Type: text/plain, Size: 5079 bytes --]
On Fri, 19 Nov 2021 16:56:01 +0100
Daniel Vetter <daniel@ffwll.ch> wrote:
> On Fri, Nov 19, 2021 at 12:38:41PM +0200, Pekka Paalanen wrote:
> > On Thu, 18 Nov 2021 17:46:10 -0800
> > Brian Norris <briannorris@chromium.org> wrote:
> >
> > > Hi Pekka,
> > >
> > > Thanks for the thoughts and review. I've tried to respond below:
> > >
> > > On Thu, Nov 18, 2021 at 12:39:28PM +0200, Pekka Paalanen wrote:
> > > > On Wed, 17 Nov 2021 14:48:40 -0800
> > > > Brian Norris <briannorris@chromium.org> wrote:
> > > >
> > > > > A variety of applications have found it useful to listen to
> > > > > user-initiated input events to make decisions within a DRM driver, given
> > > > > that input events are often the first sign that we're going to start
> > > > > doing latency-sensitive activities:
> > > > >
> > > > > * Panel self-refresh: software-directed self-refresh (e.g., with
> > > > > Rockchip eDP) is especially latency sensitive. In some cases, it can
> > > > > take 10s of milliseconds for a panel to exit self-refresh, which can
> > > > > be noticeable. Rockchip RK3399 Chrome OS systems have always shipped
> > > > > with an input_handler boost, that preemptively exits self-refresh
> > > > > whenever there is input activity.
> > > > >
> > > > > * GPU drivers: on GPU-accelerated desktop systems, we may need to
> > > > > render new frames immediately after user activity. Powering up the
> > > > > GPU can take enough time that it is worthwhile to start this process
> > > > > as soon as there is input activity. Many Chrome OS systems also ship
> > > > > with an input_handler boost that powers up the GPU.
> > > > >
> > > > > This patch provides a small helper library that abstracts some of the
> > > > > input-subsystem details around picking which devices to listen to, and
> > > > > some other boilerplate. This will be used in the next patch to implement
> > > > > the first bullet: preemptive exit for panel self-refresh.
> > > > >
> > > > > Bits of this are adapted from code the Android and/or Chrome OS kernels
> > > > > have been carrying for a while.
> > > > >
> > > > > Signed-off-by: Brian Norris <briannorris@chromium.org>
> > > > > ---
> > > >
> > > > Thanks Simon for the CC.
> > > >
> > > > Hi Brian,
> > > >
> > > > while this feature in general makes sense and sounds good, to start
> > > > warming up display hardware early when something might start to happen,
> > > > this particular proposal has many problems from UAPI perspective (as it
> > > > has none). Comments below.
> > > >
> > > > Btw. if PSR is that slow to wake up from, how much do you actually gain
> > > > from this input event watching? I would imagine the improvement to not
> > > > be noticeable.
> > >
> > > Patch 2 has details. It's not really about precisely how slow PSR is,
> > > but how much foresight we can gain: in patch 2, I note that with my
> > > particular user space and system, I can start PSR-exit 50ms earlier than
> > > I would otherweise. (FWIW, this measurement is exactly the same it was
> > > with the original version written 4 years ago.)
> > >
> > > For how long PSR-exit takes: the measurements I'm able to do (via
> > > ftrace) show that drm_self_refresh_transition() takes between 35 and 55
> > > ms. That's noticeable at 60 fps. And quite conveniently, the input-boost
> > > manages to hide nearly 100% of that latency.
> > >
> > > Typical use cases where one notices PSR latency (and where this 35-55ms
> > > matters) involve simply moving a cursor; it's very noticeable when you
> > > have more than a few frames of latency to "get started".
> >
> > Hi Brian,
> >
> > that is very interesting, thanks.
> >
> > I would never have expected to have userspace take *that* long to
> > react. But, that sounds like it could be just your userspace software
> > stack.
>
> In the other subthread we're talking about making this more explicit.
> Maybe we need to combine this with a "I expect to take this many
> milliseconds to get the first frame out" value.
>
> That way compositors which take 50ms (which frankly is shocking slow) can
> set that, and kms can enable sr exit (since sr exit will actually help
> here). But other compositors which expect to get the first frame out in
> maybe 20 can spec that, and then the driver will not sr exit (because too
> high chances we'll just make shit slower), and instead will only boost
> render clocks.
>
> Thoughts?
I wonder if the compositor or the userspace stack can know how long it
usually takes to prepare the first KMS submission after a pause. I
guess it would need to measure that at runtime. Hmm, doable I guess,
sure. Input to output latency in general is interesting.
However, that sounds like a pretty vague API with the delay value. I
think it has a high risk of regressing into a boolean toggle by
userspace choosing an arbitrary number and then assuming the threshold
in the driver is always the same.
Thanks,
pq
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
next prev parent reply other threads:[~2021-11-22 9:25 UTC|newest]
Thread overview: 76+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-11-17 22:48 [PATCH v2 0/2] drm: Support input-boosted panel self-refresh exit Brian Norris
2021-11-17 22:48 ` Brian Norris
2021-11-17 22:48 ` Brian Norris
2021-11-17 22:48 ` [PATCH v2 1/2] drm/input_helper: Add new input-handling helper Brian Norris
2021-11-17 22:48 ` Brian Norris
2021-11-17 22:48 ` Brian Norris
2021-11-18 9:05 ` Daniel Vetter
2021-11-18 9:05 ` Daniel Vetter
2021-11-18 9:05 ` Daniel Vetter
2021-11-18 19:30 ` Brian Norris
2021-11-18 19:30 ` Brian Norris
2021-11-19 10:01 ` Daniel Vetter
2021-11-19 10:01 ` Daniel Vetter
2021-11-19 10:01 ` Daniel Vetter
2021-11-19 19:07 ` Brian Norris
2021-11-19 19:07 ` Brian Norris
2021-11-25 15:25 ` Daniel Vetter
2021-11-25 15:25 ` Daniel Vetter
2021-11-25 15:25 ` Daniel Vetter
2021-11-18 10:39 ` Pekka Paalanen
2021-11-18 10:39 ` Pekka Paalanen
2021-11-18 10:39 ` Pekka Paalanen
2021-11-18 23:30 ` Rob Clark
2021-11-18 23:30 ` Rob Clark
2021-11-18 23:30 ` Rob Clark
2021-11-19 9:54 ` Pekka Paalanen
2021-11-19 9:54 ` Pekka Paalanen
2021-11-19 9:54 ` Pekka Paalanen
2021-11-19 15:53 ` Daniel Vetter
2021-11-19 15:53 ` Daniel Vetter
2021-11-19 15:53 ` Daniel Vetter
2021-11-19 16:04 ` Simon Ser
2021-11-19 16:04 ` Simon Ser
2021-11-19 16:04 ` Simon Ser
2021-11-19 16:11 ` Daniel Vetter
2021-11-19 16:11 ` Daniel Vetter
2021-11-19 16:11 ` Daniel Vetter
2021-11-22 9:43 ` Pekka Paalanen
2021-11-22 9:43 ` Pekka Paalanen
2021-11-22 9:43 ` Pekka Paalanen
2021-11-25 15:30 ` Daniel Vetter
2021-11-25 15:30 ` Daniel Vetter
2021-11-25 15:30 ` Daniel Vetter
2021-11-19 16:44 ` Rob Clark
2021-11-19 16:44 ` Rob Clark
2021-11-19 16:44 ` Rob Clark
2021-11-19 16:50 ` Doug Anderson
2021-11-19 16:50 ` Doug Anderson
2021-11-19 16:50 ` Doug Anderson
2021-11-19 1:46 ` Brian Norris
2021-11-19 1:46 ` Brian Norris
2021-11-19 1:46 ` Brian Norris
2021-11-19 10:38 ` Pekka Paalanen
2021-11-19 10:38 ` Pekka Paalanen
2021-11-19 10:38 ` Pekka Paalanen
2021-11-19 15:56 ` Daniel Vetter
2021-11-19 15:56 ` Daniel Vetter
2021-11-19 15:56 ` Daniel Vetter
2021-11-22 9:25 ` Pekka Paalanen [this message]
2021-11-22 9:25 ` Pekka Paalanen
2021-11-22 9:25 ` Pekka Paalanen
2021-11-30 20:35 ` Brian Norris
2021-11-30 20:35 ` Brian Norris
2021-11-30 20:35 ` Brian Norris
2021-12-07 3:16 ` Peter Hutterer
2021-12-07 3:16 ` Peter Hutterer
2021-12-07 3:16 ` Peter Hutterer
2021-11-17 22:48 ` [PATCH v2 2/2] drm/self_refresh: Disable self-refresh on input events Brian Norris
2021-11-17 22:48 ` Brian Norris
2021-11-17 22:48 ` Brian Norris
2021-11-18 9:11 ` Daniel Vetter
2021-11-18 9:11 ` Daniel Vetter
2021-11-18 9:11 ` Daniel Vetter
2021-11-18 8:34 ` [PATCH v2 0/2] drm: Support input-boosted panel self-refresh exit Simon Ser
2021-11-18 8:34 ` Simon Ser
2021-11-18 8:34 ` Simon Ser
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=20211122112509.4d7e6ad3@eldfell \
--to=ppaalanen@gmail.com \
--cc=airlied@linux.ie \
--cc=andrzej.hajda@intel.com \
--cc=briannorris@chromium.org \
--cc=daniel@ffwll.ch \
--cc=dianders@chromium.org \
--cc=dmitry.torokhov@gmail.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=hoegsberg@google.com \
--cc=linux-input@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-rockchip@lists.infradead.org \
--cc=peter.hutterer@who-t.net \
--cc=robdclark@chromium.org \
--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 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.