From: Pekka Paalanen <ppaalanen@gmail.com>
To: "Kazlauskas, Nicholas" <nicholas.kazlauskas@amd.com>
Cc: "Leo Li" <sunpeng.li@amd.com>,
"Michel Dänzer" <michel@daenzer.net>,
amd-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org
Subject: Re: [PATCH] drm/amdgpu/dc: Require primary plane to be enabled whenever the CRTC is
Date: Mon, 24 Aug 2020 10:43:27 +0300 [thread overview]
Message-ID: <20200824104327.559503f7@eldfell> (raw)
In-Reply-To: <91391bb3-a855-1a29-2d2e-a31856c99946@daenzer.net>
[-- Attachment #1.1: Type: text/plain, Size: 3761 bytes --]
On Sat, 22 Aug 2020 11:59:26 +0200
Michel Dänzer <michel@daenzer.net> wrote:
> On 2020-08-21 8:07 p.m., Kazlauskas, Nicholas wrote:
> > On 2020-08-21 12:57 p.m., Michel Dänzer wrote:
> >> From: Michel Dänzer <mdaenzer@redhat.com>
> >>
> >> Don't check drm_crtc_state::active for this either, per its
> >> documentation in include/drm/drm_crtc.h:
> >>
> >> * Hence drivers must not consult @active in their various
> >> * &drm_mode_config_funcs.atomic_check callback to reject an atomic
> >> * commit.
> >>
> >> The atomic helpers disable the CRTC as needed for disabling the primary
> >> plane.
> >>
> >> This prevents at least the following problems if the primary plane gets
> >> disabled (e.g. due to destroying the FB assigned to the primary plane,
> >> as happens e.g. with mutter in Wayland mode):
> >>
> >> * Toggling CRTC active to 1 failed if the cursor plane was enabled
> >> (e.g. via legacy DPMS property & cursor ioctl).
> >> * Enabling the cursor plane failed, e.g. via the legacy cursor ioctl.
> >
> > We previously had the requirement that the primary plane must be enabled
> > but some userspace expects that they can enable just the overlay plane
> > without anything else.
> >
> > I think the chromuiumos atomictest validates that this works as well:
> >
> > So is DRM going forward then with the expectation that this is wrong
> > behavior from userspace?
> >
> > We require at least one plane to be enabled to display a cursor, but it
> > doesn't necessarily need to be the primary.
>
> It's a "pick your poison" situation:
>
> 1) Currently the checks are invalid (atomic_check must not decide based
> on drm_crtc_state::active), and it's easy for legacy KMS userspace to
> accidentally hit errors trying to enable/move the cursor or switch DPMS
> off → on.
>
> 2) Accurately rejecting only atomic states where the cursor plane is
> enabled but all other planes are off would break the KMS helper code,
> which can only deal with the "CRTC on & primary plane off is not
> allowed" case specifically.
>
> 3) This patch addresses 1) & 2) but may break existing atomic userspace
> which wants to enable an overlay plane while disabling the primary plane.
>
>
> I do think in principle atomic userspace is expected to handle case 3)
> and leave the primary plane enabled.
Hi,
my opinion as a userspace developer is that enabling a CRTC without a
primary plane has traditionally not worked, so userspace cannot *rely*
on it ever working. I think legacy KMS API does not even allow to
express that really, or has built-in assumptions that it doesn't work -
you can call the legacy cursor ioctls, they don't fail, but also the
CRTC remains off. Correct me if this is not true.
Atomic userspace OTOH is required to test the strange (and all!) cases
like this to see if they work or not, and carry on with a fallback if
they don't. Userspace that wants to use a CRTC without a primary plane
likely needs other CRTC properties as well, like background color.
I would guess that when two regressions conflict, the older userspace
would win. Hence legacy KMS using Mutter should keep working, while
atomic userspace is left with increased power consumption. Not using a
hardware cursor (Mutter) is much more easily an end-user visible
regression than slightly shorter battery life.
Atomic test commits are allowed to fail at any time for any reason and
something that previously worked can fail on the next frame or on the
next kernel, as far as I understand.
Sounds like the helpers you refer to are inadequate for your case.
Can't you fix the helpers in the long run and land this patch as an
immediate fix?
Thanks,
pq
[-- Attachment #1.2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
[-- Attachment #2: Type: text/plain, Size: 154 bytes --]
_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx
WARNING: multiple messages have this Message-ID (diff)
From: Pekka Paalanen <ppaalanen@gmail.com>
To: "Kazlauskas, Nicholas" <nicholas.kazlauskas@amd.com>
Cc: "Leo Li" <sunpeng.li@amd.com>,
"Michel Dänzer" <michel@daenzer.net>,
amd-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org
Subject: Re: [PATCH] drm/amdgpu/dc: Require primary plane to be enabled whenever the CRTC is
Date: Mon, 24 Aug 2020 10:43:27 +0300 [thread overview]
Message-ID: <20200824104327.559503f7@eldfell> (raw)
In-Reply-To: <91391bb3-a855-1a29-2d2e-a31856c99946@daenzer.net>
[-- Attachment #1.1: Type: text/plain, Size: 3761 bytes --]
On Sat, 22 Aug 2020 11:59:26 +0200
Michel Dänzer <michel@daenzer.net> wrote:
> On 2020-08-21 8:07 p.m., Kazlauskas, Nicholas wrote:
> > On 2020-08-21 12:57 p.m., Michel Dänzer wrote:
> >> From: Michel Dänzer <mdaenzer@redhat.com>
> >>
> >> Don't check drm_crtc_state::active for this either, per its
> >> documentation in include/drm/drm_crtc.h:
> >>
> >> * Hence drivers must not consult @active in their various
> >> * &drm_mode_config_funcs.atomic_check callback to reject an atomic
> >> * commit.
> >>
> >> The atomic helpers disable the CRTC as needed for disabling the primary
> >> plane.
> >>
> >> This prevents at least the following problems if the primary plane gets
> >> disabled (e.g. due to destroying the FB assigned to the primary plane,
> >> as happens e.g. with mutter in Wayland mode):
> >>
> >> * Toggling CRTC active to 1 failed if the cursor plane was enabled
> >> (e.g. via legacy DPMS property & cursor ioctl).
> >> * Enabling the cursor plane failed, e.g. via the legacy cursor ioctl.
> >
> > We previously had the requirement that the primary plane must be enabled
> > but some userspace expects that they can enable just the overlay plane
> > without anything else.
> >
> > I think the chromuiumos atomictest validates that this works as well:
> >
> > So is DRM going forward then with the expectation that this is wrong
> > behavior from userspace?
> >
> > We require at least one plane to be enabled to display a cursor, but it
> > doesn't necessarily need to be the primary.
>
> It's a "pick your poison" situation:
>
> 1) Currently the checks are invalid (atomic_check must not decide based
> on drm_crtc_state::active), and it's easy for legacy KMS userspace to
> accidentally hit errors trying to enable/move the cursor or switch DPMS
> off → on.
>
> 2) Accurately rejecting only atomic states where the cursor plane is
> enabled but all other planes are off would break the KMS helper code,
> which can only deal with the "CRTC on & primary plane off is not
> allowed" case specifically.
>
> 3) This patch addresses 1) & 2) but may break existing atomic userspace
> which wants to enable an overlay plane while disabling the primary plane.
>
>
> I do think in principle atomic userspace is expected to handle case 3)
> and leave the primary plane enabled.
Hi,
my opinion as a userspace developer is that enabling a CRTC without a
primary plane has traditionally not worked, so userspace cannot *rely*
on it ever working. I think legacy KMS API does not even allow to
express that really, or has built-in assumptions that it doesn't work -
you can call the legacy cursor ioctls, they don't fail, but also the
CRTC remains off. Correct me if this is not true.
Atomic userspace OTOH is required to test the strange (and all!) cases
like this to see if they work or not, and carry on with a fallback if
they don't. Userspace that wants to use a CRTC without a primary plane
likely needs other CRTC properties as well, like background color.
I would guess that when two regressions conflict, the older userspace
would win. Hence legacy KMS using Mutter should keep working, while
atomic userspace is left with increased power consumption. Not using a
hardware cursor (Mutter) is much more easily an end-user visible
regression than slightly shorter battery life.
Atomic test commits are allowed to fail at any time for any reason and
something that previously worked can fail on the next frame or on the
next kernel, as far as I understand.
Sounds like the helpers you refer to are inadequate for your case.
Can't you fix the helpers in the long run and land this patch as an
immediate fix?
Thanks,
pq
[-- Attachment #1.2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
[-- Attachment #2: Type: text/plain, Size: 160 bytes --]
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
next prev parent reply other threads:[~2020-08-24 7:43 UTC|newest]
Thread overview: 46+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-08-21 16:57 [PATCH] drm/amdgpu/dc: Require primary plane to be enabled whenever the CRTC is Michel Dänzer
2020-08-21 16:57 ` Michel Dänzer
2020-08-21 18:07 ` Kazlauskas, Nicholas
2020-08-21 18:07 ` Kazlauskas, Nicholas
2020-08-22 9:59 ` Michel Dänzer
2020-08-22 9:59 ` Michel Dänzer
2020-08-24 7:43 ` Pekka Paalanen [this message]
2020-08-24 7:43 ` Pekka Paalanen
2020-08-25 14:55 ` Michel Dänzer
2020-08-25 14:55 ` Michel Dänzer
2020-09-01 7:57 ` Daniel Vetter
2020-09-01 7:57 ` Daniel Vetter
2020-09-01 8:56 ` Michel Dänzer
2020-09-01 8:56 ` Michel Dänzer
2020-09-01 10:34 ` Daniel Vetter
2020-09-01 10:34 ` Daniel Vetter
2020-08-25 16:58 ` Kazlauskas, Nicholas
2020-08-25 16:58 ` Kazlauskas, Nicholas
2020-08-26 8:24 ` Pekka Paalanen
2020-08-26 8:24 ` Pekka Paalanen
2020-08-26 8:58 ` Michel Dänzer
2020-08-26 8:58 ` Michel Dänzer
2020-09-01 7:54 ` Daniel Vetter
2020-09-01 7:54 ` Daniel Vetter
2020-09-01 13:58 ` Harry Wentland
2020-09-01 13:58 ` Harry Wentland
2020-09-02 7:02 ` Daniel Vetter
2020-09-02 7:02 ` Daniel Vetter
2020-09-02 9:26 ` Michel Dänzer
2020-09-02 9:26 ` Michel Dänzer
2020-09-04 10:43 ` [PATCH v2] " Michel Dänzer
2020-09-04 10:43 ` Michel Dänzer
2020-09-07 7:57 ` Daniel Vetter
2020-09-07 7:57 ` Daniel Vetter
2020-09-14 7:52 ` Michel Dänzer
2020-09-14 7:52 ` Michel Dänzer
2020-09-14 14:37 ` Kazlauskas, Nicholas
2020-09-14 14:37 ` Kazlauskas, Nicholas
2020-09-14 15:22 ` Michel Dänzer
2020-09-14 15:22 ` Michel Dänzer
2020-09-14 15:33 ` Kazlauskas, Nicholas
2020-09-14 15:33 ` Kazlauskas, Nicholas
2020-09-14 15:44 ` Michel Dänzer
2020-09-14 15:44 ` Michel Dänzer
2020-09-15 21:00 ` Alex Deucher
2020-09-15 21:00 ` Alex Deucher
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=20200824104327.559503f7@eldfell \
--to=ppaalanen@gmail.com \
--cc=amd-gfx@lists.freedesktop.org \
--cc=dri-devel@lists.freedesktop.org \
--cc=michel@daenzer.net \
--cc=nicholas.kazlauskas@amd.com \
--cc=sunpeng.li@amd.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.