[PATCH] linux-dmabuf: clarify DRM_FORMAT_MOD_INVALID

Chia-I Wu olvaffe at gmail.com
Tue Apr 16 17:04:18 UTC 2019

On Tue, Apr 16, 2019 at 2:52 AM Pekka Paalanen <ppaalanen at gmail.com> wrote:
> On Fri, 12 Apr 2019 10:50:49 -0700
> Chia-I Wu <olvaffe at gmail.com> wrote:
> > Moving the discussion to this patch...
> >
> > This patch clarifies how implicit modifier can be supported, modelling
> > after Weston's behavior.  I can see three options
> >
> >  1. DRM_FORMAT_MOD_INVALID means implicit modifier, and is always allowed
> > in buffer creation
> >  2. DRM_FORMAT_MOD_INVALID means implicit modifier, and a modifier event of
> > the value must be sent to indicate buffer creation with implicit modifier
> > is allowed
> >  3. DRM_FORMAT_MOD_INVALID is invalid and there is no implicit modifier
> > support
> >
> > This patch picks option 1.
> >
> > Option 3 makes legacy support impossible, and in turn makes wl_drm
> > deprecation take longer.
> >
> > I've been thinking about moving away from implicit modifier as well so
> > option 2 might be a good compromise.  The protocol is also more consistent
> > in that one can create a buffer with a format/modifier pair only when the
> > pair is advertised via the modifier event.
> Hi,
> yes, allowing to use only combinations of format and modifier that were
> advertised would be nice. We should probably do that when we break the
> protocol ABI the next time if that was not already the case. Until
> then, if compositors have possibly accepted DRM_FORMAT_MOD_INVALID
> without explicitly advertising it, we probably cannot make that illegal
> at the protocol level. This would need a TODO note in the protocol spec
> so we remember to do it during stabilization the latest.
Mutter does not advertise DRM_FORMAT_MOD_INVALID.  When a client
creates a buffer with DRM_FORMAT_MOD_INVALID, Mutter passes the
modifier to EGL and let EGL fail the buffer creation.

Weston always accepts DRM_FORMAT_MOD_INVALID however.  It strips the
modifier out so that the drivers do not see the modifier.

Neither Mesa nor XWayland creates buffers with DRM_FORMAT_MOD_INVALID.
They both fall back to wl_drm when the modifier is
DRM_FORMAT_MOD_INVALID.  I guess not a lot of clients, if any, rely on
weston's behavior.

> A compositor can also refuse a dmabuf creation for any reason by
> sending the "failed" event instead of "created". If we did allow
> DRM_FORMAT_MOD_INVALID in the protocol temporarily, but drivers/GBM/EGL
> don't allow the implicit modifier, no problem from protocol
> perspective. The "create_immed" request is specifically outside of
> validity considerations, we do not have to care about breaking that.
> Option 1 we can certainly do right now. Option 2 I'd have to do some
> research to see if it makes current practices illegal. Option 3 is
> possible with a protocol ABI break, if all drivers and Mesa agree it
> can be done. All of these options are fine with me with these
> conditions.
I will send out v2 to do option 2.
> Thanks,
> pq

More information about the wayland-devel mailing list