[PATCH weston v2 2/9] Use linux-dmabuf protocol from wayland-protocols

Jonas Ådahl jadahl at gmail.com
Tue Nov 17 00:00:28 PST 2015


Signed-off-by: Jonas Ådahl <jadahl at gmail.com>
Reviewed-by: Mariusz Ceier <mceier+wayland at gmail.com>
Acked-by: Pekka Paalanen <pekka.paalanen at collabora.co.uk>
---
 Makefile.am               |  13 +--
 clients/simple-dmabuf.c   |  60 +++++-----
 protocol/linux-dmabuf.xml | 274 ----------------------------------------------
 src/gl-renderer.c         |   6 +-
 src/linux-dmabuf.c        |  48 ++++----
 5 files changed, 63 insertions(+), 338 deletions(-)
 delete mode 100644 protocol/linux-dmabuf.xml

diff --git a/Makefile.am b/Makefile.am
index 2524591..9f7cc9d 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -127,8 +127,8 @@ nodist_weston_SOURCES =					\
 	protocol/presentation_timing-server-protocol.h	\
 	protocol/scaler-protocol.c			\
 	protocol/scaler-server-protocol.h		\
-	protocol/linux-dmabuf-protocol.c		\
-	protocol/linux-dmabuf-server-protocol.h
+	protocol/linux-dmabuf-unstable-v1-protocol.c	\
+	protocol/linux-dmabuf-unstable-v1-server-protocol.h
 
 BUILT_SOURCES += $(nodist_weston_SOURCES)
 
@@ -533,11 +533,11 @@ nodist_weston_simple_dmabuf_SOURCES =		\
 	protocol/xdg-shell-client-protocol.h	\
 	protocol/fullscreen-shell-unstable-v1-protocol.c	\
 	protocol/fullscreen-shell-unstable-v1-client-protocol.h \
-	protocol/linux-dmabuf-protocol.c \
-	protocol/linux-dmabuf-client-protocol.h
+	protocol/linux-dmabuf-unstable-v1-protocol.c \
+	protocol/linux-dmabuf-unstable-v1-client-protocol.h
 weston_simple_dmabuf_CFLAGS = $(AM_CFLAGS) $(SIMPLE_DMABUF_CLIENT_CFLAGS)
 weston_simple_dmabuf_LDADD = $(SIMPLE_DMABUF_CLIENT_LIBS) libshared.la
-BUILT_SOURCES += protocol/linux-dmabuf-client-protocol.h
+BUILT_SOURCES += protocol/linux-dmabuf-unstable-v1-client-protocol.h
 endif
 
 noinst_LTLIBRARIES += libtoytoolkit.la
@@ -1351,8 +1351,7 @@ EXTRA_DIST +=					\
 	protocol/presentation_timing.xml	\
 	protocol/scaler.xml			\
 	protocol/ivi-application.xml		\
-	protocol/ivi-hmi-controller.xml		\
-	protocol/linux-dmabuf.xml
+	protocol/ivi-hmi-controller.xml
 
 #
 # manual test modules in tests subdirectory
diff --git a/clients/simple-dmabuf.c b/clients/simple-dmabuf.c
index 354af7b..1751dc4 100644
--- a/clients/simple-dmabuf.c
+++ b/clients/simple-dmabuf.c
@@ -42,7 +42,7 @@
 #include <wayland-client.h>
 #include "xdg-shell-client-protocol.h"
 #include "fullscreen-shell-unstable-v1-client-protocol.h"
-#include "linux-dmabuf-client-protocol.h"
+#include "linux-dmabuf-unstable-v1-client-protocol.h"
 
 struct display {
 	struct wl_display *display;
@@ -50,7 +50,7 @@ struct display {
 	struct wl_compositor *compositor;
 	struct xdg_shell *shell;
 	struct zwp_fullscreen_shell_v1 *fshell;
-	struct zlinux_dmabuf *dmabuf;
+	struct zwp_linux_dmabuf_v1 *dmabuf;
 	int xrgb8888_format_found;
 };
 
@@ -187,7 +187,7 @@ unmap_bo(struct buffer *my_buf)
 
 static void
 create_succeeded(void *data,
-		 struct zlinux_buffer_params *params,
+		 struct zwp_linux_buffer_params_v1 *params,
 		 struct wl_buffer *new_buffer)
 {
 	struct buffer *buffer = data;
@@ -195,22 +195,22 @@ create_succeeded(void *data,
 	buffer->buffer = new_buffer;
 	wl_buffer_add_listener(buffer->buffer, &buffer_listener, buffer);
 
-	zlinux_buffer_params_destroy(params);
+	zwp_linux_buffer_params_v1_destroy(params);
 }
 
 static void
-create_failed(void *data, struct zlinux_buffer_params *params)
+create_failed(void *data, struct zwp_linux_buffer_params_v1 *params)
 {
 	struct buffer *buffer = data;
 
 	buffer->buffer = NULL;
 
-	zlinux_buffer_params_destroy(params);
+	zwp_linux_buffer_params_v1_destroy(params);
 
-	fprintf(stderr, "Error: zlinux_buffer_params.create failed.\n");
+	fprintf(stderr, "Error: zwp_linux_buffer_params.create failed.\n");
 }
 
-static const struct zlinux_buffer_params_listener params_listener = {
+static const struct zwp_linux_buffer_params_v1_listener params_listener = {
 	create_succeeded,
 	create_failed
 };
@@ -219,7 +219,7 @@ static int
 create_dmabuf_buffer(struct display *display, struct buffer *buffer,
 		     int width, int height)
 {
-	struct zlinux_buffer_params *params;
+	struct zwp_linux_buffer_params_v1 *params;
 	uint64_t modifier;
 	uint32_t flags;
 
@@ -259,20 +259,20 @@ create_dmabuf_buffer(struct display *display, struct buffer *buffer,
 	modifier = 0;
 	flags = 0;
 
-	params = zlinux_dmabuf_create_params(display->dmabuf);
-	zlinux_buffer_params_add(params,
-				 buffer->dmabuf_fd,
-				 0, /* plane_idx */
-				 0, /* offset */
-				 buffer->stride,
-				 modifier >> 32,
-				 modifier & 0xffffffff);
-	zlinux_buffer_params_add_listener(params, &params_listener, buffer);
-	zlinux_buffer_params_create(params,
-				    buffer->width,
-				    buffer->height,
-				    DRM_FORMAT_XRGB8888,
-				    flags);
+	params = zwp_linux_dmabuf_v1_create_params(display->dmabuf);
+	zwp_linux_buffer_params_v1_add(params,
+				       buffer->dmabuf_fd,
+				       0, /* plane_idx */
+				       0, /* offset */
+				       buffer->stride,
+				       modifier >> 32,
+				       modifier & 0xffffffff);
+	zwp_linux_buffer_params_v1_add_listener(params, &params_listener, buffer);
+	zwp_linux_buffer_params_v1_create(params,
+					  buffer->width,
+					  buffer->height,
+					  DRM_FORMAT_XRGB8888,
+					  flags);
 
 	/* params is destroyed by the event handlers */
 
@@ -430,7 +430,7 @@ static const struct wl_callback_listener frame_listener = {
 };
 
 static void
-dmabuf_format(void *data, struct zlinux_dmabuf *zlinux_dmabuf, uint32_t format)
+dmabuf_format(void *data, struct zwp_linux_dmabuf_v1 *zwp_linux_dmabuf, uint32_t format)
 {
 	struct display *d = data;
 
@@ -438,7 +438,7 @@ dmabuf_format(void *data, struct zlinux_dmabuf *zlinux_dmabuf, uint32_t format)
 		d->xrgb8888_format_found = 1;
 }
 
-static const struct zlinux_dmabuf_listener dmabuf_listener = {
+static const struct zwp_linux_dmabuf_v1_listener dmabuf_listener = {
 	dmabuf_format
 };
 
@@ -476,10 +476,10 @@ registry_handle_global(void *data, struct wl_registry *registry,
 	} else if (strcmp(interface, "zwp_fullscreen_shell_v1") == 0) {
 		d->fshell = wl_registry_bind(registry,
 					     id, &zwp_fullscreen_shell_v1_interface, 1);
-	} else if (strcmp(interface, "zlinux_dmabuf") == 0) {
+	} else if (strcmp(interface, "zwp_linux_dmabuf_v1") == 0) {
 		d->dmabuf = wl_registry_bind(registry,
-					     id, &zlinux_dmabuf_interface, 1);
-		zlinux_dmabuf_add_listener(d->dmabuf, &dmabuf_listener, d);
+					     id, &zwp_linux_dmabuf_v1_interface, 1);
+		zwp_linux_dmabuf_v1_add_listener(d->dmabuf, &dmabuf_listener, d);
 	}
 }
 
@@ -515,7 +515,7 @@ create_display(void)
 				 &registry_listener, display);
 	wl_display_roundtrip(display->display);
 	if (display->dmabuf == NULL) {
-		fprintf(stderr, "No zlinux_dmabuf global\n");
+		fprintf(stderr, "No zwp_linux_dmabuf global\n");
 		exit(1);
 	}
 
@@ -533,7 +533,7 @@ static void
 destroy_display(struct display *display)
 {
 	if (display->dmabuf)
-		zlinux_dmabuf_destroy(display->dmabuf);
+		zwp_linux_dmabuf_v1_destroy(display->dmabuf);
 
 	if (display->shell)
 		xdg_shell_destroy(display->shell);
diff --git a/protocol/linux-dmabuf.xml b/protocol/linux-dmabuf.xml
deleted file mode 100644
index 0382be6..0000000
--- a/protocol/linux-dmabuf.xml
+++ /dev/null
@@ -1,274 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<protocol name="linux_dmabuf">
-
-  <copyright>
-    Copyright © 2014, 2015 Collabora, Ltd.
-
-    Permission to use, copy, modify, distribute, and sell this
-    software and its documentation for any purpose is hereby granted
-    without fee, provided that the above copyright notice appear in
-    all copies and that both that copyright notice and this permission
-    notice appear in supporting documentation, and that the name of
-    the copyright holders not be used in advertising or publicity
-    pertaining to distribution of the software without specific,
-    written prior permission.  The copyright holders make no
-    representations about the suitability of this software for any
-    purpose.  It is provided "as is" without express or implied
-    warranty.
-
-    THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS
-    SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
-    FITNESS, IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY
-    SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
-    WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN
-    AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-    ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
-    THIS SOFTWARE.
-  </copyright>
-
-  <interface name="zlinux_dmabuf" version="1">
-    <description summary="factory for creating dmabuf-based wl_buffers">
-      Following the interfaces from:
-      https://www.khronos.org/registry/egl/extensions/EXT/EGL_EXT_image_dma_buf_import.txt
-      and the Linux DRM sub-system's AddFb2 ioctl.
-
-      This interface offers a way to create generic dmabuf-based
-      wl_buffers. Immediately after a client binds to this interface,
-      the set of supported formats is sent with 'format' events.
-
-      The following are required from clients:
-
-      - Clients must ensure that either all data in the dma-buf is
-        coherent for all subsequent read access or that coherency is
-        correctly handled by the underlying kernel-side dma-buf
-        implementation.
-
-      - Don't make any more attachments after sending the buffer to the
-        compositor. Making more attachments later increases the risk of
-        the compositor not being able to use (re-import) an existing
-        dmabuf-based wl_buffer.
-
-      The underlying graphics stack must ensure the following:
-
-      - The dmabuf file descriptors relayed to the server will stay valid
-        for the whole lifetime of the wl_buffer. This means the server may
-        at any time use those fds to import the dmabuf into any kernel
-        sub-system that might accept it.
-
-      To create a wl_buffer from one or more dmabufs, a client creates a
-      zlinux_dmabuf_params object with zlinux_dmabuf.create_params
-      request. All planes required by the intended format are added with
-      the 'add' request. Finally, 'create' request is issued. The server
-      will reply with either 'created' event which provides the final
-      wl_buffer or 'failed' event saying that it cannot use the dmabufs
-      provided.
-    </description>
-
-    <request name="destroy" type="destructor">
-      <description summary="unbind the factory">
-        Objects created through this interface, especially wl_buffers, will
-        remain valid.
-      </description>
-    </request>
-
-    <request name="create_params">
-      <description summary="create a temporary object for buffer parameters">
-        This temporary object is used to collect multiple dmabuf handles into
-        a single batch to create a wl_buffer. It can only be used once and
-        should be destroyed after an 'created' or 'failed' event has been
-        received.
-      </description>
-      <arg name="params_id" type="new_id" interface="zlinux_buffer_params"
-           summary="the new temporary"/>
-    </request>
-
-    <event name="format">
-      <description summary="supported buffer format">
-        This event advertises one buffer format that the server supports.
-        All the supported formats are advertised once when the client
-        binds to this interface. A roundtrip after binding guarantees,
-        that the client has received all supported formats.
-
-        For the definition of the format codes, see create request.
-
-        XXX: Can a compositor ever enumerate them?
-      </description>
-      <arg name="format" type="uint" summary="DRM_FORMAT code"/>
-    </event>
-
-  </interface>
-
-  <interface name="zlinux_buffer_params" version="1">
-    <description summary="parameters for creating a dmabuf-based wl_buffer">
-      This temporary object is a collection of dmabufs and other
-      parameters that together form a single logical buffer. The temporary
-      object may eventually create one wl_buffer unless cancelled by
-      destroying it before requesting 'create'.
-
-      Single-planar formats only require one dmabuf, however
-      multi-planar formats may require more than one dmabuf. For all
-      formats, 'add' request must be called once per plane (even if the
-      underlying dmabuf fd is identical).
-
-      You must use consecutive plane indices ('plane_idx' argument for 'add')
-      from zero to the number of planes used by the drm_fourcc format code.
-      All planes required by the format must be given exactly once, but can
-      be given in any order. Each plane index can be set only once.
-    </description>
-
-    <enum name="error">
-      <entry name="already_used" value="0"
-             summary="the dmabuf_batch object has already been used to create a wl_buffer"/>
-
-      <entry name="plane_idx" value="1"
-             summary="plane index out of bounds"/>
-
-      <entry name="plane_set" value="2"
-             summary="the plane index was already set"/>
-
-      <entry name="incomplete" value="3"
-             summary="missing or too many planes to create a buffer"/>
-
-      <entry name="invalid_format" value="4"
-             summary="format not supported"/>
-
-      <entry name="invalid_dimensions" value="5"
-             summary="invalid width or height"/>
-
-      <entry name="out_of_bounds" value="6"
-             summary="offset + stride * height goes out of dmabuf bounds"/>
-    </enum>
-
-    <request name="destroy" type="destructor">
-      <description summary="delete this object, used or not">
-        Cleans up the temporary data sent to the server for dmabuf-based
-        wl_buffer creation.
-      </description>
-    </request>
-
-    <request name="add">
-      <description summary="add a dmabuf to the temporary set">
-        This request adds one dmabuf to the set in this zlinux_buffer_params.
-
-        The 64-bit unsigned value combined from modifier_hi and modifier_lo
-        is the dmabuf layout modifier. DRM AddFB2 ioctl calls this the
-        fb modifier, which is defined in drm_mode.h of Linux UAPI.
-        This is an opaque token. Drivers use this token to express tiling,
-        compression, etc. driver-specific modifications to the base format
-        defined by the DRM fourcc code.
-
-        This request raises the PLANE_IDX error if plane_idx is too large.
-        The error PLANE_SET is raised if attempting to set a plane that
-        was already set.
-      </description>
-
-      <arg name="fd" type="fd" summary="dmabuf fd"/>
-      <arg name="plane_idx" type="uint" summary="plane index"/>
-      <arg name="offset" type="uint" summary="offset in bytes"/>
-      <arg name="stride" type="uint" summary="stride in bytes"/>
-      <arg name="modifier_hi" type="uint"
-           summary="high 32 bits of layout modifier"/>
-      <arg name="modifier_lo" type="uint"
-           summary="low 32 bits of layout modifier"/>
-    </request>
-
-    <enum name="flags">
-      <entry name="y_invert" value="1" summary="contents are y-inverted"/>
-      <entry name="interlaced" value="2" summary="content is interlaced"/>
-      <entry name="bottom_first" value="4" summary="bottom field first"/>
-    </enum>
-
-    <request name="create">
-      <description summary="create a wl_buffer from the given dmabufs">
-        This asks for creation of a wl_buffer from the added dmabuf
-        buffers. The wl_buffer is not created immediately but returned via
-        the 'created' event if the dmabuf sharing succeeds. The sharing
-        may fail at runtime for reasons a client cannot predict, in
-        which case the 'failed' event is triggered.
-
-        The 'format' argument is a DRM_FORMAT code, as defined by the
-        libdrm's drm_fourcc.h. The Linux kernel's DRM sub-system is the
-        authoritative source on how the format codes should work.
-
-        The 'flags' is a bitfield of the flags defined in enum "flags".
-        'y_invert' means the that the image needs to be y-flipped.
-
-        Flag 'interlaced' means that the frame in the buffer is not
-        progressive as usual, but interlaced. An interlaced buffer as
-        supported here must always contain both top and bottom fields.
-        The top field always begins on the first pixel row. The temporal
-        ordering between the two fields is top field first, unless
-        'bottom_first' is specified. It is undefined whether 'bottom_first'
-        is ignored if 'interlaced' is not set.
-
-        This protocol does not convey any information about field rate,
-        duration, or timing, other than the relative ordering between the
-        two fields in one buffer. A compositor may have to estimate the
-        intended field rate from the incoming buffer rate. It is undefined
-        whether the time of receiving wl_surface.commit with a new buffer
-        attached, applying the wl_surface state, wl_surface.frame callback
-        trigger, presentation, or any other point in the compositor cycle
-        is used to measure the frame or field times. There is no support
-        for detecting missed or late frames/fields/buffers either, and
-        there is no support whatsoever for cooperating with interlaced
-        compositor output.
-
-        The composited image quality resulting from the use of interlaced
-        buffers is explicitly undefined. A compositor may use elaborate
-        hardware features or software to deinterlace and create progressive
-        output frames from a sequence of interlaced input buffers, or it
-        may produce substandard image quality. However, compositors that
-        cannot guarantee reasonable image quality in all cases are recommended
-        to just reject all interlaced buffers.
-
-        Any argument errors, including non-positive width or height,
-        mismatch between the number of planes and the format, bad
-        format, bad offset or stride, may be indicated by fatal protocol
-        errors: INCOMPLETE, INVALID_FORMAT, INVALID_DIMENSIONS,
-        OUT_OF_BOUNDS.
-
-        Dmabuf import errors in the server that are not obvious client
-        bugs are returned via the 'failed' event as non-fatal. This
-        allows attempting dmabuf sharing and falling back in the client
-        if it fails.
-
-        This request can be sent only once in the object's lifetime, after
-        which the only legal request is destroy. This object should be
-        destroyed after issuing 'create' request. Attempting to use this
-        object after issuing 'create' raises ALREADY_USED protocol error.
-
-        It is not mandatory to issue 'create'. If a client wants to
-        cancel the buffer creation, it can just destroy this object.
-      </description>
-      <arg name="width" type="int" summary="base plane width in pixels"/>
-      <arg name="height" type="int" summary="base plane height in pixels"/>
-      <arg name="format" type="uint" summary="DRM_FORMAT code"/>
-      <arg name="flags" type="uint" summary="see enum flags"/>
-    </request>
-
-    <event name="created">
-      <description summary="buffer creation succeeded">
-        This event indicates that the attempted buffer creation was
-        successful. It provides the new wl_buffer referencing the dmabuf(s).
-
-        Upon receiving this event, the client should destroy the
-        zlinux_dmabuf_params object.
-      </description>
-      <arg name="buffer" type="new_id" interface="wl_buffer"
-           summary="the newly created wl_buffer"/>
-    </event>
-
-    <event name="failed">
-      <description summary="buffer creation failed">
-        This event indicates that the attempted buffer creation has
-        failed. It usually means that one of the dmabuf constraints
-        has not been fulfilled.
-
-        Upon receiving this event, the client should destroy the
-        zlinux_buffer_params object.
-      </description>
-    </event>
-
-  </interface>
-
-</protocol>
diff --git a/src/gl-renderer.c b/src/gl-renderer.c
index d7231f4..079cc34 100644
--- a/src/gl-renderer.c
+++ b/src/gl-renderer.c
@@ -41,7 +41,7 @@
 #include "gl-renderer.h"
 #include "vertex-clipping.h"
 #include "linux-dmabuf.h"
-#include "linux-dmabuf-server-protocol.h"
+#include "linux-dmabuf-unstable-v1-server-protocol.h"
 
 #include "shared/helpers.h"
 #include "weston-egl-ext.h"
@@ -1514,7 +1514,7 @@ gl_renderer_import_dmabuf(struct weston_compositor *ec,
 	}
 
 	/* reject all flags we do not recognize or handle */
-	if (dmabuf->flags & ~ZLINUX_BUFFER_PARAMS_FLAGS_Y_INVERT)
+	if (dmabuf->flags & ~ZWP_LINUX_BUFFER_PARAMS_V1_FLAGS_Y_INVERT)
 		return false;
 
 	image = import_dmabuf(gr, dmabuf);
@@ -1563,7 +1563,7 @@ gl_renderer_attach_dmabuf(struct weston_surface *surface,
 	buffer->width = dmabuf->width;
 	buffer->height = dmabuf->height;
 	buffer->y_inverted =
-		!!(dmabuf->flags & ZLINUX_BUFFER_PARAMS_FLAGS_Y_INVERT);
+		!!(dmabuf->flags & ZWP_LINUX_BUFFER_PARAMS_V1_FLAGS_Y_INVERT);
 
 	for (i = 0; i < gs->num_images; i++)
 		egl_image_unref(gs->images[i]);
diff --git a/src/linux-dmabuf.c b/src/linux-dmabuf.c
index 90c9757..53768bf 100644
--- a/src/linux-dmabuf.c
+++ b/src/linux-dmabuf.c
@@ -28,7 +28,7 @@
 
 #include "compositor.h"
 #include "linux-dmabuf.h"
-#include "linux-dmabuf-server-protocol.h"
+#include "linux-dmabuf-unstable-v1-server-protocol.h"
 
 static void
 linux_dmabuf_buffer_destroy(struct linux_dmabuf_buffer *buffer)
@@ -78,7 +78,7 @@ params_add(struct wl_client *client,
 	buffer = wl_resource_get_user_data(params_resource);
 	if (!buffer) {
 		wl_resource_post_error(params_resource,
-			ZLINUX_BUFFER_PARAMS_ERROR_ALREADY_USED,
+			ZWP_LINUX_BUFFER_PARAMS_V1_ERROR_ALREADY_USED,
 			"params was already used to create a wl_buffer");
 		close(name_fd);
 		return;
@@ -89,7 +89,7 @@ params_add(struct wl_client *client,
 
 	if (plane_idx >= MAX_DMABUF_PLANES) {
 		wl_resource_post_error(params_resource,
-			ZLINUX_BUFFER_PARAMS_ERROR_PLANE_IDX,
+			ZWP_LINUX_BUFFER_PARAMS_V1_ERROR_PLANE_IDX,
 			"plane index %u is too high", plane_idx);
 		close(name_fd);
 		return;
@@ -97,7 +97,7 @@ params_add(struct wl_client *client,
 
 	if (buffer->dmabuf_fd[plane_idx] != -1) {
 		wl_resource_post_error(params_resource,
-			ZLINUX_BUFFER_PARAMS_ERROR_PLANE_SET,
+			ZWP_LINUX_BUFFER_PARAMS_V1_ERROR_PLANE_SET,
 			"a dmabuf has already been added for plane %u",
 			plane_idx);
 		close(name_fd);
@@ -153,7 +153,7 @@ params_create(struct wl_client *client,
 
 	if (!buffer) {
 		wl_resource_post_error(params_resource,
-			ZLINUX_BUFFER_PARAMS_ERROR_ALREADY_USED,
+			ZWP_LINUX_BUFFER_PARAMS_V1_ERROR_ALREADY_USED,
 			"params was already used to create a wl_buffer");
 		return;
 	}
@@ -169,7 +169,7 @@ params_create(struct wl_client *client,
 
 	if (!buffer->n_planes) {
 		wl_resource_post_error(params_resource,
-			ZLINUX_BUFFER_PARAMS_ERROR_INCOMPLETE,
+			ZWP_LINUX_BUFFER_PARAMS_V1_ERROR_INCOMPLETE,
 			"no dmabuf has been added to the params");
 		goto err_out;
 	}
@@ -178,7 +178,7 @@ params_create(struct wl_client *client,
 	for (i = 0; i < buffer->n_planes; i++) {
 		if (buffer->dmabuf_fd[i] == -1) {
 			wl_resource_post_error(params_resource,
-				ZLINUX_BUFFER_PARAMS_ERROR_INCOMPLETE,
+				ZWP_LINUX_BUFFER_PARAMS_V1_ERROR_INCOMPLETE,
 				"no dmabuf has been added for plane %i", i);
 			goto err_out;
 		}
@@ -191,7 +191,7 @@ params_create(struct wl_client *client,
 
 	if (width < 1 || height < 1) {
 		wl_resource_post_error(params_resource,
-			ZLINUX_BUFFER_PARAMS_ERROR_INVALID_DIMENSIONS,
+			ZWP_LINUX_BUFFER_PARAMS_V1_ERROR_INVALID_DIMENSIONS,
 			"invalid width %d or height %d", width, height);
 		goto err_out;
 	}
@@ -201,7 +201,7 @@ params_create(struct wl_client *client,
 
 		if ((uint64_t) buffer->offset[i] + buffer->stride[i] > UINT32_MAX) {
 			wl_resource_post_error(params_resource,
-				ZLINUX_BUFFER_PARAMS_ERROR_OUT_OF_BOUNDS,
+				ZWP_LINUX_BUFFER_PARAMS_V1_ERROR_OUT_OF_BOUNDS,
 				"size overflow for plane %i", i);
 			goto err_out;
 		}
@@ -210,7 +210,7 @@ params_create(struct wl_client *client,
 		   (uint64_t) buffer->offset[i] +
 		   (uint64_t) buffer->stride[i] * height > UINT32_MAX) {
 			wl_resource_post_error(params_resource,
-				ZLINUX_BUFFER_PARAMS_ERROR_OUT_OF_BOUNDS,
+				ZWP_LINUX_BUFFER_PARAMS_V1_ERROR_OUT_OF_BOUNDS,
 				"size overflow for plane %i", i);
 			goto err_out;
 		}
@@ -223,7 +223,7 @@ params_create(struct wl_client *client,
 
 		if (buffer->offset[i] >= size) {
 			wl_resource_post_error(params_resource,
-				ZLINUX_BUFFER_PARAMS_ERROR_OUT_OF_BOUNDS,
+				ZWP_LINUX_BUFFER_PARAMS_V1_ERROR_OUT_OF_BOUNDS,
 				"invalid offset %i for plane %i",
 				buffer->offset[i], i);
 			goto err_out;
@@ -231,7 +231,7 @@ params_create(struct wl_client *client,
 
 		if (buffer->offset[i] + buffer->stride[i] > size) {
 			wl_resource_post_error(params_resource,
-				ZLINUX_BUFFER_PARAMS_ERROR_OUT_OF_BOUNDS,
+				ZWP_LINUX_BUFFER_PARAMS_V1_ERROR_OUT_OF_BOUNDS,
 				"invalid stride %i for plane %i",
 				buffer->stride[i], i);
 			goto err_out;
@@ -242,7 +242,7 @@ params_create(struct wl_client *client,
 		if (i == 0 &&
 		    buffer->offset[i] + buffer->stride[i] * height > size) {
 			wl_resource_post_error(params_resource,
-				ZLINUX_BUFFER_PARAMS_ERROR_OUT_OF_BOUNDS,
+				ZWP_LINUX_BUFFER_PARAMS_V1_ERROR_OUT_OF_BOUNDS,
 				"invalid buffer stride or height for plane %i", i);
 			goto err_out;
 		}
@@ -269,8 +269,8 @@ params_create(struct wl_client *client,
 				       &linux_dmabuf_buffer_implementation,
 				       buffer, destroy_linux_dmabuf_wl_buffer);
 
-	zlinux_buffer_params_send_created(params_resource,
-					  buffer->buffer_resource);
+	zwp_linux_buffer_params_v1_send_created(params_resource,
+						buffer->buffer_resource);
 
 	return;
 
@@ -279,14 +279,14 @@ err_buffer:
 		buffer->user_data_destroy_func(buffer);
 
 err_failed:
-	zlinux_buffer_params_send_failed(params_resource);
+	zwp_linux_buffer_params_v1_send_failed(params_resource);
 
 err_out:
 	linux_dmabuf_buffer_destroy(buffer);
 }
 
-static const struct zlinux_buffer_params_interface
-zlinux_buffer_params_implementation = {
+static const struct zwp_linux_buffer_params_v1_interface
+zwp_linux_buffer_params_implementation = {
 	params_destroy,
 	params_add,
 	params_create
@@ -321,13 +321,13 @@ linux_dmabuf_create_params(struct wl_client *client,
 	buffer->compositor = compositor;
 	buffer->params_resource =
 		wl_resource_create(client,
-				   &zlinux_buffer_params_interface,
+				   &zwp_linux_buffer_params_v1_interface,
 				   version, params_id);
 	if (!buffer->params_resource)
 		goto err_dealloc;
 
 	wl_resource_set_implementation(buffer->params_resource,
-				       &zlinux_buffer_params_implementation,
+				       &zwp_linux_buffer_params_implementation,
 				       buffer, destroy_params);
 
 	return;
@@ -411,7 +411,7 @@ linux_dmabuf_buffer_get_user_data(struct linux_dmabuf_buffer *buffer)
 	return buffer->user_data;
 }
 
-static const struct zlinux_dmabuf_interface linux_dmabuf_implementation = {
+static const struct zwp_linux_dmabuf_v1_interface linux_dmabuf_implementation = {
 	linux_dmabuf_destroy,
 	linux_dmabuf_create_params
 };
@@ -423,7 +423,7 @@ bind_linux_dmabuf(struct wl_client *client,
 	struct weston_compositor *compositor = data;
 	struct wl_resource *resource;
 
-	resource = wl_resource_create(client, &zlinux_dmabuf_interface,
+	resource = wl_resource_create(client, &zwp_linux_dmabuf_v1_interface,
 				      version, id);
 	if (resource == NULL) {
 		wl_client_post_no_memory(client);
@@ -440,7 +440,7 @@ bind_linux_dmabuf(struct wl_client *client,
 
 /** Advertise linux_dmabuf support
  *
- * Calling this initializes the zlinux_dmabuf protocol support, so that
+ * Calling this initializes the zwp_linux_dmabuf protocol support, so that
  * the interface will be advertised to clients. Essentially it creates a
  * global. Do not call this function multiple times in the compositor's
  * lifetime. There is no way to deinit explicitly, globals will be reaped
@@ -453,7 +453,7 @@ WL_EXPORT int
 linux_dmabuf_setup(struct weston_compositor *compositor)
 {
 	if (!wl_global_create(compositor->wl_display,
-			      &zlinux_dmabuf_interface, 1,
+			      &zwp_linux_dmabuf_v1_interface, 1,
 			      compositor, bind_linux_dmabuf))
 		return -1;
 
-- 
2.4.3



More information about the wayland-devel mailing list