[PATCH 0/7] Generic dmabuf protocol RFCv1

Louis-Francis Ratté-Boulianne lfrb at collabora.com
Fri Dec 12 13:51:01 PST 2014

This serie of patches by Pekka and George contains an experimental
implementation of "zlinux_dmabuf" protocol.

See these links for more information about the design and failed previous


This protocol allows clients to wrap a dmabuf into a wl_buffer, and push that
into the compositor for display. The compositor then uses GBM to import that
wl_buffer as a bo for compositing with GL (via EGLImage) or direct scanout as a
DRM FB object.

Note that a round-trip is needed when creating the buffer because there is no
way to communicate all dmabuf constraints from the compositor to a client
before-hand. They are simply too complicated and changing to be described in
a Wayland protocol extension. In fact, there are existing APIs like EGL (the
dmabuf import extension) that are based on trial-and-error rather than knowing
the constraints before-hand.

However, the protocol design is far far away from complete. Even the kernel
developers are still discussing, how cross-device support for dmabufs should
work, and what is the proper information split between the kernel and the user
space. How do you communicate, or even describe, things like tiling formats.

But, we should start from somewhere, and this patch is pushing the user space
part forward a bit.

The extension is especially useful for video players and this pipeline has been
demonstrated to work with GStreamer:


George Kiagiadakis (1):
  clients: add simple-dmabuf client

Pekka Paalanen (6):
  protocol: add linux_dmabuf extension RFCv1
  dmabuf: implement linux_dmabuf extension
  gl-renderer: add dmabuf import
  compositor-x11: init linux_dmabuf support
  compositor-drm: init linux_dmabuf support
  compositor-drm: dmabuf GBM import

 .gitignore                |   1 +
 Makefile.am               |  24 +-
 clients/simple-dmabuf.c   | 578 ++++++++++++++++++++++++++++++++++++++++++++++
 configure.ac              |   9 +
 protocol/linux-dmabuf.xml | 224 ++++++++++++++++++
 src/compositor-drm.c      |  31 ++-
 src/compositor-x11.c      |   5 +
 src/gl-renderer.c         | 103 +++++++++
 src/linux-dmabuf.c        | 322 ++++++++++++++++++++++++++
 src/linux-dmabuf.h        |  45 ++++
 10 files changed, 1336 insertions(+), 6 deletions(-)
 create mode 100644 clients/simple-dmabuf.c
 create mode 100644 protocol/linux-dmabuf.xml
 create mode 100644 src/linux-dmabuf.c
 create mode 100644 src/linux-dmabuf.h


More information about the wayland-devel mailing list