[PATCH] drm: drivers may provide multiple primary planes per CRTC

Simon Ser contact at emersion.fr
Sun Dec 6 15:24:29 UTC 2020


Sorry, I think I lost track of this thread at some point and forgot
about it. That said…

On Friday, August 7th, 2020 at 3:06 PM, Daniel Vetter <daniel at ffwll.ch> wrote:

> On Fri, Aug 07, 2020 at 12:38:02PM +0300, Pekka Paalanen wrote:
> > On Fri, 7 Aug 2020 11:07:06 +0200
> > Daniel Vetter <daniel at ffwll.ch> wrote:
> >
> > > On Thu, Aug 06, 2020 at 10:33:31AM +0000, Simon Ser wrote:
> > > > Some drivers may expose primary planes compatible with multiple CRTCs.
> > > > Make this clear in the docs: the current wording may be misunderstood as
> > > > "exactly one primary plane per CRTC".
> > > >
> > > > Signed-off-by: Simon Ser <contact at emersion.fr>
> > > > Cc: Daniel Vetter <daniel at ffwll.ch>
> > > > ---
> > > >  drivers/gpu/drm/drm_plane.c | 4 ++--
> > > >  1 file changed, 2 insertions(+), 2 deletions(-)
> > > >
> > > > diff --git a/drivers/gpu/drm/drm_plane.c b/drivers/gpu/drm/drm_plane.c
> > > > index b7b90b3a2e38..108a922e8c23 100644
> > > > --- a/drivers/gpu/drm/drm_plane.c
> > > > +++ b/drivers/gpu/drm/drm_plane.c
> > > > @@ -49,8 +49,8 @@
> > > >   * &struct drm_plane (possibly as part of a larger structure) and registers it
> > > >   * with a call to drm_universal_plane_init().
> > > >   *
> > > > - * Cursor and overlay planes are optional. All drivers should provide one
> > > > - * primary plane per CRTC to avoid surprising userspace too much. See enum
> > > > + * Cursor and overlay planes are optional. All drivers should provide at least
> > > > + * one primary plane per CRTC to avoid surprising userspace too much. See enum
> > >
> > > I think that's even more confusing, since this reads like there could be
> > > multiple primary planes for a specific CRTC. That's not the case, there'
> > > only one pointer going from drm_crtc->primary to a drm_plane in the
> > > kernel.
> >
> > There could be multiple primary planes *usable* for a specific CRTC but
> > just one used at a time, right?
>
> I'm not sure what you mean here, the crtc->primary link is invariant over
> the lifetime of a driver load. You can't pick a different one, that's set
> at driver init before drm_dev_register (and hence before userspace ever
> sees anything).

OK. I'm personally not very interested in documenting legacy bits, so I'll skip
that. I'm mainly interested here in making it clear possible_crtcs for a
primary plane can have more than one bit set. Because of the paragraph in the
current docs, some user-space developers have understood "more than one bit set
in possible_crtcs for a primary plane is a kernel bug".

I'll send a v2 that makes it clear these pointers are for legacy uAPI.


More information about the dri-devel mailing list