Use linux-dmabuf protocol from wayland-protocols
Signed-off-by: Jonas Ådahl <jadahl@gmail.com> Reviewed-by: Mariusz Ceier <mceier+wayland@gmail.com> Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
This commit is contained in:
committed by
Pekka Paalanen
parent
496adb3bb3
commit
57e48f023c
+3
-3
@@ -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]);
|
||||
|
||||
+24
-24
@@ -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;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user