Hi,
I'm adding more people to CC who have commented on Wayland dmabuf attempts before and might be interested.
If you want to keep updated without monitoring wayland-devel@, you could subscribe to https://bugs.freedesktop.org/show_bug.cgi?id=83881
Thanks, pq
On Fri, 12 Dec 2014 16:51:01 -0500 Louis-Francis Ratté-Boulianne lfrb@collabora.com wrote:
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 attempts:
http://lists.freedesktop.org/archives/wayland-devel/2014-June/015362.html https://bugs.freedesktop.org/show_bug.cgi?id=83881
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:
http://cgit.collabora.com/git/user/gkiagia/gst-plugins-bad.git/commit/?h=int...
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
linaro-mm-sig@lists.linaro.org