Drop legacy tabbed-wayland/tabbed-windows binaries and their Makefile targets

This commit is contained in:
Andrew Hamilton 2026-08-09 12:16:14 +10:00
parent 49db6e9834
commit ea6fea80d7
9 changed files with 2 additions and 7532 deletions

View file

@ -1,11 +1,9 @@
SAN ?=
CFLAGS = -Wall -Wextra -std=c11 -g $(SAN)
SERVER_CFLAGS = $(CFLAGS) $(shell pkg-config --cflags gtk+-3.0 wayland-server xkbcommon)
SERVER_LIBS = $(shell pkg-config --libs gtk+-3.0 wayland-server xkbcommon) -lm $(SAN)
.PHONY: all clean
all: tabbed-wayland tabbed-windows tabbed-wlroots
all: tabbed-wlroots
xdg-shell-protocol.o: xdg-shell-protocol.c xdg-shell-server.h
$(CC) $(CFLAGS) -c -o $@ $<
@ -13,27 +11,6 @@ xdg-shell-protocol.o: xdg-shell-protocol.c xdg-shell-server.h
xdg-decoration-protocol.o: xdg-decoration-protocol.c xdg-decoration-client.h
$(CC) $(CFLAGS) -c -o $@ $<
linux-dmabuf-protocol.o: linux-dmabuf-protocol.c linux-dmabuf-server.h
$(CC) $(CFLAGS) -c -o $@ $<
wl-drm-protocol.o: wl-drm-protocol.c wl-drm-server.h
$(CC) $(CFLAGS) -c -o $@ $<
tabbed-wayland.o: tabbed-wayland.c xdg-shell-server.h
$(CC) $(SERVER_CFLAGS) -c -o $@ $<
tabbed-wayland: tabbed-wayland.o xdg-shell-protocol.o
$(CC) -o $@ $^ $(SERVER_LIBS)
WINDOWS_CFLAGS = $(CFLAGS) $(shell pkg-config --cflags wayland-server wayland-client wayland-egl xkbcommon egl) -I/usr/include/libdrm
WINDOWS_LIBS = $(shell pkg-config --libs wayland-server wayland-client wayland-egl xkbcommon) -lEGL -lGLESv2 $(SAN)
tabbed-windows.o: tabbed-windows.c xdg-shell-server.h xdg-shell-client.h linux-dmabuf-server.h wl-drm-server.h
$(CC) $(WINDOWS_CFLAGS) -c -o $@ $<
tabbed-windows: tabbed-windows.o xdg-shell-protocol.o linux-dmabuf-protocol.o wl-drm-protocol.o
$(CC) -o $@ $^ $(WINDOWS_LIBS)
WLR_CFLAGS = $(CFLAGS) -Iwlr-protocols $(shell pkg-config --cflags wlroots-0.19 wayland-server wayland-client wayland-egl xkbcommon egl) -DWLR_USE_UNSTABLE
WLR_LIBS = $(shell pkg-config --libs wlroots-0.19 wayland-server wayland-client wayland-egl xkbcommon) -lEGL -lGLESv2 $(SAN)
@ -44,4 +21,4 @@ tabbed-wlroots: tabbed-wlroots.o xdg-shell-protocol.o xdg-decoration-protocol.o
$(CC) -o $@ $^ $(WLR_LIBS)
clean:
rm -f *.o tabbed-wayland tabbed-windows tabbed-wlroots
rm -f *.o tabbed-wlroots

File diff suppressed because it is too large Load diff

View file

@ -1,110 +0,0 @@
/* Generated by wayland-scanner 1.24.0 */
/*
* Copyright © 2014, 2015 Collabora, Ltd.
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice (including the next
* paragraph) shall be included in all copies or substantial portions of the
* Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
* DEALINGS IN THE SOFTWARE.
*/
#include <stdbool.h>
#include <stdlib.h>
#include <stdint.h>
#include "wayland-util.h"
extern const struct wl_interface wl_buffer_interface;
extern const struct wl_interface wl_surface_interface;
extern const struct wl_interface zwp_linux_buffer_params_v1_interface;
extern const struct wl_interface zwp_linux_dmabuf_feedback_v1_interface;
static const struct wl_interface *linux_dmabuf_unstable_v1_types[] = {
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
&zwp_linux_buffer_params_v1_interface,
&zwp_linux_dmabuf_feedback_v1_interface,
&zwp_linux_dmabuf_feedback_v1_interface,
&wl_surface_interface,
&wl_buffer_interface,
NULL,
NULL,
NULL,
NULL,
&wl_buffer_interface,
};
static const struct wl_message zwp_linux_dmabuf_v1_requests[] = {
{ "destroy", "", linux_dmabuf_unstable_v1_types + 0 },
{ "create_params", "n", linux_dmabuf_unstable_v1_types + 6 },
{ "get_default_feedback", "4n", linux_dmabuf_unstable_v1_types + 7 },
{ "get_surface_feedback", "4no", linux_dmabuf_unstable_v1_types + 8 },
};
static const struct wl_message zwp_linux_dmabuf_v1_events[] = {
{ "format", "u", linux_dmabuf_unstable_v1_types + 0 },
{ "modifier", "3uuu", linux_dmabuf_unstable_v1_types + 0 },
};
WL_EXPORT const struct wl_interface zwp_linux_dmabuf_v1_interface = {
"zwp_linux_dmabuf_v1", 5,
4, zwp_linux_dmabuf_v1_requests,
2, zwp_linux_dmabuf_v1_events,
};
static const struct wl_message zwp_linux_buffer_params_v1_requests[] = {
{ "destroy", "", linux_dmabuf_unstable_v1_types + 0 },
{ "add", "huuuuu", linux_dmabuf_unstable_v1_types + 0 },
{ "create", "iiuu", linux_dmabuf_unstable_v1_types + 0 },
{ "create_immed", "2niiuu", linux_dmabuf_unstable_v1_types + 10 },
};
static const struct wl_message zwp_linux_buffer_params_v1_events[] = {
{ "created", "n", linux_dmabuf_unstable_v1_types + 15 },
{ "failed", "", linux_dmabuf_unstable_v1_types + 0 },
};
WL_EXPORT const struct wl_interface zwp_linux_buffer_params_v1_interface = {
"zwp_linux_buffer_params_v1", 5,
4, zwp_linux_buffer_params_v1_requests,
2, zwp_linux_buffer_params_v1_events,
};
static const struct wl_message zwp_linux_dmabuf_feedback_v1_requests[] = {
{ "destroy", "", linux_dmabuf_unstable_v1_types + 0 },
};
static const struct wl_message zwp_linux_dmabuf_feedback_v1_events[] = {
{ "done", "", linux_dmabuf_unstable_v1_types + 0 },
{ "format_table", "hu", linux_dmabuf_unstable_v1_types + 0 },
{ "main_device", "a", linux_dmabuf_unstable_v1_types + 0 },
{ "tranche_done", "", linux_dmabuf_unstable_v1_types + 0 },
{ "tranche_target_device", "a", linux_dmabuf_unstable_v1_types + 0 },
{ "tranche_formats", "a", linux_dmabuf_unstable_v1_types + 0 },
{ "tranche_flags", "u", linux_dmabuf_unstable_v1_types + 0 },
};
WL_EXPORT const struct wl_interface zwp_linux_dmabuf_feedback_v1_interface = {
"zwp_linux_dmabuf_feedback_v1", 5,
1, zwp_linux_dmabuf_feedback_v1_requests,
7, zwp_linux_dmabuf_feedback_v1_events,
};

View file

@ -1,918 +0,0 @@
/* Generated by wayland-scanner 1.24.0 */
#ifndef LINUX_DMABUF_V1_SERVER_PROTOCOL_H
#define LINUX_DMABUF_V1_SERVER_PROTOCOL_H
#include <stdint.h>
#include <stddef.h>
#include "wayland-server.h"
#ifdef __cplusplus
extern "C" {
#endif
struct wl_client;
struct wl_resource;
/**
* @page page_linux_dmabuf_v1 The linux_dmabuf_v1 protocol
* @section page_ifaces_linux_dmabuf_v1 Interfaces
* - @subpage page_iface_zwp_linux_dmabuf_v1 - factory for creating dmabuf-based wl_buffers
* - @subpage page_iface_zwp_linux_buffer_params_v1 - parameters for creating a dmabuf-based wl_buffer
* - @subpage page_iface_zwp_linux_dmabuf_feedback_v1 - dmabuf feedback
* @section page_copyright_linux_dmabuf_v1 Copyright
* <pre>
*
* Copyright © 2014, 2015 Collabora, Ltd.
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice (including the next
* paragraph) shall be included in all copies or substantial portions of the
* Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
* DEALINGS IN THE SOFTWARE.
* </pre>
*/
struct wl_buffer;
struct wl_surface;
struct zwp_linux_buffer_params_v1;
struct zwp_linux_dmabuf_feedback_v1;
struct zwp_linux_dmabuf_v1;
#ifndef ZWP_LINUX_DMABUF_V1_INTERFACE
#define ZWP_LINUX_DMABUF_V1_INTERFACE
/**
* @page page_iface_zwp_linux_dmabuf_v1 zwp_linux_dmabuf_v1
* @section page_iface_zwp_linux_dmabuf_v1_desc Description
*
* This interface offers ways to create generic dmabuf-based wl_buffers.
*
* For more information about dmabuf, see:
* https://www.kernel.org/doc/html/next/userspace-api/dma-buf-alloc-exchange.html
*
* Clients can use the get_surface_feedback request to get dmabuf feedback
* for a particular surface. If the client wants to retrieve feedback not
* tied to a surface, they can use the get_default_feedback request.
*
* 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.
*
* However, when the underlying graphics stack fails to deliver the
* promise, because of e.g. a device hot-unplug which raises internal
* errors, after the wl_buffer has been successfully created the
* compositor must not raise protocol errors to the client when dmabuf
* import later fails.
*
* To create a wl_buffer from one or more dmabufs, a client creates a
* zwp_linux_dmabuf_params_v1 object with a zwp_linux_dmabuf_v1.create_params
* request. All planes required by the intended format are added with
* the 'add' request. Finally, a 'create' or 'create_immed' request is
* issued, which has the following outcome depending on the import success.
*
* The 'create' request,
* - on success, triggers a 'created' event which provides the final
* wl_buffer to the client.
* - on failure, triggers a 'failed' event to convey that the server
* cannot use the dmabufs received from the client.
*
* For the 'create_immed' request,
* - on success, the server immediately imports the added dmabufs to
* create a wl_buffer. No event is sent from the server in this case.
* - on failure, the server can choose to either:
* - terminate the client by raising a fatal error.
* - mark the wl_buffer as failed, and send a 'failed' event to the
* client. If the client uses a failed wl_buffer as an argument to any
* request, the behaviour is compositor implementation-defined.
*
* For all DRM formats and unless specified in another protocol extension,
* pre-multiplied alpha is used for pixel values.
*
* Unless specified otherwise in another protocol extension, implicit
* synchronization is used. In other words, compositors and clients must
* wait and signal fences implicitly passed via the DMA-BUF's reservation
* mechanism.
* @section page_iface_zwp_linux_dmabuf_v1_api API
* See @ref iface_zwp_linux_dmabuf_v1.
*/
/**
* @defgroup iface_zwp_linux_dmabuf_v1 The zwp_linux_dmabuf_v1 interface
*
* This interface offers ways to create generic dmabuf-based wl_buffers.
*
* For more information about dmabuf, see:
* https://www.kernel.org/doc/html/next/userspace-api/dma-buf-alloc-exchange.html
*
* Clients can use the get_surface_feedback request to get dmabuf feedback
* for a particular surface. If the client wants to retrieve feedback not
* tied to a surface, they can use the get_default_feedback request.
*
* 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.
*
* However, when the underlying graphics stack fails to deliver the
* promise, because of e.g. a device hot-unplug which raises internal
* errors, after the wl_buffer has been successfully created the
* compositor must not raise protocol errors to the client when dmabuf
* import later fails.
*
* To create a wl_buffer from one or more dmabufs, a client creates a
* zwp_linux_dmabuf_params_v1 object with a zwp_linux_dmabuf_v1.create_params
* request. All planes required by the intended format are added with
* the 'add' request. Finally, a 'create' or 'create_immed' request is
* issued, which has the following outcome depending on the import success.
*
* The 'create' request,
* - on success, triggers a 'created' event which provides the final
* wl_buffer to the client.
* - on failure, triggers a 'failed' event to convey that the server
* cannot use the dmabufs received from the client.
*
* For the 'create_immed' request,
* - on success, the server immediately imports the added dmabufs to
* create a wl_buffer. No event is sent from the server in this case.
* - on failure, the server can choose to either:
* - terminate the client by raising a fatal error.
* - mark the wl_buffer as failed, and send a 'failed' event to the
* client. If the client uses a failed wl_buffer as an argument to any
* request, the behaviour is compositor implementation-defined.
*
* For all DRM formats and unless specified in another protocol extension,
* pre-multiplied alpha is used for pixel values.
*
* Unless specified otherwise in another protocol extension, implicit
* synchronization is used. In other words, compositors and clients must
* wait and signal fences implicitly passed via the DMA-BUF's reservation
* mechanism.
*/
extern const struct wl_interface zwp_linux_dmabuf_v1_interface;
#endif
#ifndef ZWP_LINUX_BUFFER_PARAMS_V1_INTERFACE
#define ZWP_LINUX_BUFFER_PARAMS_V1_INTERFACE
/**
* @page page_iface_zwp_linux_buffer_params_v1 zwp_linux_buffer_params_v1
* @section page_iface_zwp_linux_buffer_params_v1_desc Description
*
* 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, an '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 only be set once; subsequent
* calls with a plane index which has already been set will result in a
* plane_set error being generated.
* @section page_iface_zwp_linux_buffer_params_v1_api API
* See @ref iface_zwp_linux_buffer_params_v1.
*/
/**
* @defgroup iface_zwp_linux_buffer_params_v1 The zwp_linux_buffer_params_v1 interface
*
* 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, an '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 only be set once; subsequent
* calls with a plane index which has already been set will result in a
* plane_set error being generated.
*/
extern const struct wl_interface zwp_linux_buffer_params_v1_interface;
#endif
#ifndef ZWP_LINUX_DMABUF_FEEDBACK_V1_INTERFACE
#define ZWP_LINUX_DMABUF_FEEDBACK_V1_INTERFACE
/**
* @page page_iface_zwp_linux_dmabuf_feedback_v1 zwp_linux_dmabuf_feedback_v1
* @section page_iface_zwp_linux_dmabuf_feedback_v1_desc Description
*
* This object advertises dmabuf parameters feedback. This includes the
* preferred devices and the supported formats/modifiers.
*
* The parameters are sent once when this object is created and whenever they
* change. The done event is always sent once after all parameters have been
* sent. When a single parameter changes, all parameters are re-sent by the
* compositor.
*
* Compositors can re-send the parameters when the current client buffer
* allocations are sub-optimal. Compositors should not re-send the
* parameters if re-allocating the buffers would not result in a more optimal
* configuration. In particular, compositors should avoid sending the exact
* same parameters multiple times in a row.
*
* The tranche_target_device and tranche_formats events are grouped by
* tranches of preference. For each tranche, a tranche_target_device, one
* tranche_flags and one or more tranche_formats events are sent, followed
* by a tranche_done event finishing the list. The tranches are sent in
* descending order of preference. All formats and modifiers in the same
* tranche have the same preference.
*
* To send parameters, the compositor sends one main_device event, tranches
* (each consisting of one tranche_target_device event, one tranche_flags
* event, tranche_formats events and then a tranche_done event), then one
* done event.
* @section page_iface_zwp_linux_dmabuf_feedback_v1_api API
* See @ref iface_zwp_linux_dmabuf_feedback_v1.
*/
/**
* @defgroup iface_zwp_linux_dmabuf_feedback_v1 The zwp_linux_dmabuf_feedback_v1 interface
*
* This object advertises dmabuf parameters feedback. This includes the
* preferred devices and the supported formats/modifiers.
*
* The parameters are sent once when this object is created and whenever they
* change. The done event is always sent once after all parameters have been
* sent. When a single parameter changes, all parameters are re-sent by the
* compositor.
*
* Compositors can re-send the parameters when the current client buffer
* allocations are sub-optimal. Compositors should not re-send the
* parameters if re-allocating the buffers would not result in a more optimal
* configuration. In particular, compositors should avoid sending the exact
* same parameters multiple times in a row.
*
* The tranche_target_device and tranche_formats events are grouped by
* tranches of preference. For each tranche, a tranche_target_device, one
* tranche_flags and one or more tranche_formats events are sent, followed
* by a tranche_done event finishing the list. The tranches are sent in
* descending order of preference. All formats and modifiers in the same
* tranche have the same preference.
*
* To send parameters, the compositor sends one main_device event, tranches
* (each consisting of one tranche_target_device event, one tranche_flags
* event, tranche_formats events and then a tranche_done event), then one
* done event.
*/
extern const struct wl_interface zwp_linux_dmabuf_feedback_v1_interface;
#endif
/**
* @ingroup iface_zwp_linux_dmabuf_v1
* @struct zwp_linux_dmabuf_v1_interface
*/
struct zwp_linux_dmabuf_v1_interface {
/**
* unbind the factory
*
* Objects created through this interface, especially wl_buffers,
* will remain valid.
*/
void (*destroy)(struct wl_client *client,
struct wl_resource *resource);
/**
* 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 a 'created' or
* 'failed' event has been received.
* @param params_id the new temporary
*/
void (*create_params)(struct wl_client *client,
struct wl_resource *resource,
uint32_t params_id);
/**
* get default feedback
*
* This request creates a new wp_linux_dmabuf_feedback object not
* bound to a particular surface. This object will deliver feedback
* about dmabuf parameters to use if the client doesn't support
* per-surface feedback (see get_surface_feedback).
* @since 4
*/
void (*get_default_feedback)(struct wl_client *client,
struct wl_resource *resource,
uint32_t id);
/**
* get feedback for a surface
*
* This request creates a new wp_linux_dmabuf_feedback object for
* the specified wl_surface. This object will deliver feedback
* about dmabuf parameters to use for buffers attached to this
* surface.
*
* If the surface is destroyed before the wp_linux_dmabuf_feedback
* object, the feedback object becomes inert.
* @since 4
*/
void (*get_surface_feedback)(struct wl_client *client,
struct wl_resource *resource,
uint32_t id,
struct wl_resource *surface);
};
#define ZWP_LINUX_DMABUF_V1_FORMAT 0
#define ZWP_LINUX_DMABUF_V1_MODIFIER 1
/**
* @ingroup iface_zwp_linux_dmabuf_v1
*/
#define ZWP_LINUX_DMABUF_V1_FORMAT_SINCE_VERSION 1
/**
* @ingroup iface_zwp_linux_dmabuf_v1
*/
#define ZWP_LINUX_DMABUF_V1_MODIFIER_SINCE_VERSION 3
/**
* @ingroup iface_zwp_linux_dmabuf_v1
*/
#define ZWP_LINUX_DMABUF_V1_DESTROY_SINCE_VERSION 1
/**
* @ingroup iface_zwp_linux_dmabuf_v1
*/
#define ZWP_LINUX_DMABUF_V1_CREATE_PARAMS_SINCE_VERSION 1
/**
* @ingroup iface_zwp_linux_dmabuf_v1
*/
#define ZWP_LINUX_DMABUF_V1_GET_DEFAULT_FEEDBACK_SINCE_VERSION 4
/**
* @ingroup iface_zwp_linux_dmabuf_v1
*/
#define ZWP_LINUX_DMABUF_V1_GET_SURFACE_FEEDBACK_SINCE_VERSION 4
/**
* @ingroup iface_zwp_linux_dmabuf_v1
* Sends an format event to the client owning the resource.
* @param resource_ The client's resource
* @param format DRM_FORMAT code
*/
static inline void
zwp_linux_dmabuf_v1_send_format(struct wl_resource *resource_, uint32_t format)
{
wl_resource_post_event(resource_, ZWP_LINUX_DMABUF_V1_FORMAT, format);
}
/**
* @ingroup iface_zwp_linux_dmabuf_v1
* Sends an modifier event to the client owning the resource.
* @param resource_ The client's resource
* @param format DRM_FORMAT code
* @param modifier_hi high 32 bits of layout modifier
* @param modifier_lo low 32 bits of layout modifier
*/
static inline void
zwp_linux_dmabuf_v1_send_modifier(struct wl_resource *resource_, uint32_t format, uint32_t modifier_hi, uint32_t modifier_lo)
{
wl_resource_post_event(resource_, ZWP_LINUX_DMABUF_V1_MODIFIER, format, modifier_hi, modifier_lo);
}
#ifndef ZWP_LINUX_BUFFER_PARAMS_V1_ERROR_ENUM
#define ZWP_LINUX_BUFFER_PARAMS_V1_ERROR_ENUM
enum zwp_linux_buffer_params_v1_error {
/**
* the dmabuf_batch object has already been used to create a wl_buffer
*/
ZWP_LINUX_BUFFER_PARAMS_V1_ERROR_ALREADY_USED = 0,
/**
* plane index out of bounds
*/
ZWP_LINUX_BUFFER_PARAMS_V1_ERROR_PLANE_IDX = 1,
/**
* the plane index was already set
*/
ZWP_LINUX_BUFFER_PARAMS_V1_ERROR_PLANE_SET = 2,
/**
* missing or too many planes to create a buffer
*/
ZWP_LINUX_BUFFER_PARAMS_V1_ERROR_INCOMPLETE = 3,
/**
* format not supported
*/
ZWP_LINUX_BUFFER_PARAMS_V1_ERROR_INVALID_FORMAT = 4,
/**
* invalid width or height
*/
ZWP_LINUX_BUFFER_PARAMS_V1_ERROR_INVALID_DIMENSIONS = 5,
/**
* offset + stride * height goes out of dmabuf bounds
*/
ZWP_LINUX_BUFFER_PARAMS_V1_ERROR_OUT_OF_BOUNDS = 6,
/**
* invalid wl_buffer resulted from importing dmabufs via the create_immed request on given buffer_params
*/
ZWP_LINUX_BUFFER_PARAMS_V1_ERROR_INVALID_WL_BUFFER = 7,
};
#endif /* ZWP_LINUX_BUFFER_PARAMS_V1_ERROR_ENUM */
#ifndef ZWP_LINUX_BUFFER_PARAMS_V1_ERROR_ENUM_IS_VALID
#define ZWP_LINUX_BUFFER_PARAMS_V1_ERROR_ENUM_IS_VALID
/**
* @ingroup iface_zwp_linux_buffer_params_v1
* Validate a zwp_linux_buffer_params_v1 error value.
*
* @return true on success, false on error.
* @ref zwp_linux_buffer_params_v1_error
*/
static inline bool
zwp_linux_buffer_params_v1_error_is_valid(uint32_t value, uint32_t version) {
switch (value) {
case ZWP_LINUX_BUFFER_PARAMS_V1_ERROR_ALREADY_USED:
return version >= 1;
case ZWP_LINUX_BUFFER_PARAMS_V1_ERROR_PLANE_IDX:
return version >= 1;
case ZWP_LINUX_BUFFER_PARAMS_V1_ERROR_PLANE_SET:
return version >= 1;
case ZWP_LINUX_BUFFER_PARAMS_V1_ERROR_INCOMPLETE:
return version >= 1;
case ZWP_LINUX_BUFFER_PARAMS_V1_ERROR_INVALID_FORMAT:
return version >= 1;
case ZWP_LINUX_BUFFER_PARAMS_V1_ERROR_INVALID_DIMENSIONS:
return version >= 1;
case ZWP_LINUX_BUFFER_PARAMS_V1_ERROR_OUT_OF_BOUNDS:
return version >= 1;
case ZWP_LINUX_BUFFER_PARAMS_V1_ERROR_INVALID_WL_BUFFER:
return version >= 1;
default:
return false;
}
}
#endif /* ZWP_LINUX_BUFFER_PARAMS_V1_ERROR_ENUM_IS_VALID */
#ifndef ZWP_LINUX_BUFFER_PARAMS_V1_FLAGS_ENUM
#define ZWP_LINUX_BUFFER_PARAMS_V1_FLAGS_ENUM
enum zwp_linux_buffer_params_v1_flags {
/**
* contents are y-inverted
*/
ZWP_LINUX_BUFFER_PARAMS_V1_FLAGS_Y_INVERT = 1,
/**
* content is interlaced
*/
ZWP_LINUX_BUFFER_PARAMS_V1_FLAGS_INTERLACED = 2,
/**
* bottom field first
*/
ZWP_LINUX_BUFFER_PARAMS_V1_FLAGS_BOTTOM_FIRST = 4,
};
#endif /* ZWP_LINUX_BUFFER_PARAMS_V1_FLAGS_ENUM */
#ifndef ZWP_LINUX_BUFFER_PARAMS_V1_FLAGS_ENUM_IS_VALID
#define ZWP_LINUX_BUFFER_PARAMS_V1_FLAGS_ENUM_IS_VALID
/**
* @ingroup iface_zwp_linux_buffer_params_v1
* Validate a zwp_linux_buffer_params_v1 flags value.
*
* @return true on success, false on error.
* @ref zwp_linux_buffer_params_v1_flags
*/
static inline bool
zwp_linux_buffer_params_v1_flags_is_valid(uint32_t value, uint32_t version) {
uint32_t valid = 0;
if (version >= 1)
valid |= ZWP_LINUX_BUFFER_PARAMS_V1_FLAGS_Y_INVERT;
if (version >= 1)
valid |= ZWP_LINUX_BUFFER_PARAMS_V1_FLAGS_INTERLACED;
if (version >= 1)
valid |= ZWP_LINUX_BUFFER_PARAMS_V1_FLAGS_BOTTOM_FIRST;
return (value & ~valid) == 0;
}
#endif /* ZWP_LINUX_BUFFER_PARAMS_V1_FLAGS_ENUM_IS_VALID */
/**
* @ingroup iface_zwp_linux_buffer_params_v1
* @struct zwp_linux_buffer_params_v1_interface
*/
struct zwp_linux_buffer_params_v1_interface {
/**
* delete this object, used or not
*
* Cleans up the temporary data sent to the server for
* dmabuf-based wl_buffer creation.
*/
void (*destroy)(struct wl_client *client,
struct wl_resource *resource);
/**
* add a dmabuf to the temporary set
*
* This request adds one dmabuf to the set in this
* zwp_linux_buffer_params_v1.
*
* 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.
*
* Starting from version 4, the invalid_format protocol error is
* sent if the format + modifier pair was not advertised as
* supported.
*
* Starting from version 5, the invalid_format protocol error is
* sent if all planes don't use the same modifier.
*
* 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.
* @param fd dmabuf fd
* @param plane_idx plane index
* @param offset offset in bytes
* @param stride stride in bytes
* @param modifier_hi high 32 bits of layout modifier
* @param modifier_lo low 32 bits of layout modifier
*/
void (*add)(struct wl_client *client,
struct wl_resource *resource,
int32_t fd,
uint32_t plane_idx,
uint32_t offset,
uint32_t stride,
uint32_t modifier_hi,
uint32_t modifier_lo);
/**
* 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 a '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.
* @param width base plane width in pixels
* @param height base plane height in pixels
* @param format DRM_FORMAT code
* @param flags see enum flags
*/
void (*create)(struct wl_client *client,
struct wl_resource *resource,
int32_t width,
int32_t height,
uint32_t format,
uint32_t flags);
/**
* immediately create a wl_buffer from the given dmabufs
*
* This asks for immediate creation of a wl_buffer by importing
* the added dmabufs.
*
* In case of import success, no event is sent from the server, and
* the wl_buffer is ready to be used by the client.
*
* Upon import failure, either of the following may happen, as seen
* fit by the implementation: - the client is terminated with one
* of the following fatal protocol errors: - INCOMPLETE,
* INVALID_FORMAT, INVALID_DIMENSIONS, OUT_OF_BOUNDS, in case of
* argument errors such as mismatch between the number of planes
* and the format, bad format, non-positive width or height, or bad
* offset or stride. - INVALID_WL_BUFFER, in case the cause for
* failure is unknown or platform specific. - the server creates an
* invalid wl_buffer, marks it as failed and sends a 'failed' event
* to the client. The result of using this invalid wl_buffer as an
* argument in any request by the client is defined by the
* compositor implementation.
*
* This takes the same arguments as a 'create' request, and obeys
* the same restrictions.
* @param buffer_id id for the newly created wl_buffer
* @param width base plane width in pixels
* @param height base plane height in pixels
* @param format DRM_FORMAT code
* @param flags see enum flags
* @since 2
*/
void (*create_immed)(struct wl_client *client,
struct wl_resource *resource,
uint32_t buffer_id,
int32_t width,
int32_t height,
uint32_t format,
uint32_t flags);
};
#define ZWP_LINUX_BUFFER_PARAMS_V1_CREATED 0
#define ZWP_LINUX_BUFFER_PARAMS_V1_FAILED 1
/**
* @ingroup iface_zwp_linux_buffer_params_v1
*/
#define ZWP_LINUX_BUFFER_PARAMS_V1_CREATED_SINCE_VERSION 1
/**
* @ingroup iface_zwp_linux_buffer_params_v1
*/
#define ZWP_LINUX_BUFFER_PARAMS_V1_FAILED_SINCE_VERSION 1
/**
* @ingroup iface_zwp_linux_buffer_params_v1
*/
#define ZWP_LINUX_BUFFER_PARAMS_V1_DESTROY_SINCE_VERSION 1
/**
* @ingroup iface_zwp_linux_buffer_params_v1
*/
#define ZWP_LINUX_BUFFER_PARAMS_V1_ADD_SINCE_VERSION 1
/**
* @ingroup iface_zwp_linux_buffer_params_v1
*/
#define ZWP_LINUX_BUFFER_PARAMS_V1_CREATE_SINCE_VERSION 1
/**
* @ingroup iface_zwp_linux_buffer_params_v1
*/
#define ZWP_LINUX_BUFFER_PARAMS_V1_CREATE_IMMED_SINCE_VERSION 2
/**
* @ingroup iface_zwp_linux_buffer_params_v1
* Sends an created event to the client owning the resource.
* @param resource_ The client's resource
* @param buffer the newly created wl_buffer
*/
static inline void
zwp_linux_buffer_params_v1_send_created(struct wl_resource *resource_, struct wl_resource *buffer)
{
wl_resource_post_event(resource_, ZWP_LINUX_BUFFER_PARAMS_V1_CREATED, buffer);
}
/**
* @ingroup iface_zwp_linux_buffer_params_v1
* Sends an failed event to the client owning the resource.
* @param resource_ The client's resource
*/
static inline void
zwp_linux_buffer_params_v1_send_failed(struct wl_resource *resource_)
{
wl_resource_post_event(resource_, ZWP_LINUX_BUFFER_PARAMS_V1_FAILED);
}
#ifndef ZWP_LINUX_DMABUF_FEEDBACK_V1_TRANCHE_FLAGS_ENUM
#define ZWP_LINUX_DMABUF_FEEDBACK_V1_TRANCHE_FLAGS_ENUM
enum zwp_linux_dmabuf_feedback_v1_tranche_flags {
/**
* direct scan-out tranche
*/
ZWP_LINUX_DMABUF_FEEDBACK_V1_TRANCHE_FLAGS_SCANOUT = 1,
};
#endif /* ZWP_LINUX_DMABUF_FEEDBACK_V1_TRANCHE_FLAGS_ENUM */
#ifndef ZWP_LINUX_DMABUF_FEEDBACK_V1_TRANCHE_FLAGS_ENUM_IS_VALID
#define ZWP_LINUX_DMABUF_FEEDBACK_V1_TRANCHE_FLAGS_ENUM_IS_VALID
/**
* @ingroup iface_zwp_linux_dmabuf_feedback_v1
* Validate a zwp_linux_dmabuf_feedback_v1 tranche_flags value.
*
* @return true on success, false on error.
* @ref zwp_linux_dmabuf_feedback_v1_tranche_flags
*/
static inline bool
zwp_linux_dmabuf_feedback_v1_tranche_flags_is_valid(uint32_t value, uint32_t version) {
uint32_t valid = 0;
if (version >= 1)
valid |= ZWP_LINUX_DMABUF_FEEDBACK_V1_TRANCHE_FLAGS_SCANOUT;
return (value & ~valid) == 0;
}
#endif /* ZWP_LINUX_DMABUF_FEEDBACK_V1_TRANCHE_FLAGS_ENUM_IS_VALID */
/**
* @ingroup iface_zwp_linux_dmabuf_feedback_v1
* @struct zwp_linux_dmabuf_feedback_v1_interface
*/
struct zwp_linux_dmabuf_feedback_v1_interface {
/**
* destroy the feedback object
*
* Using this request a client can tell the server that it is not
* going to use the wp_linux_dmabuf_feedback object anymore.
*/
void (*destroy)(struct wl_client *client,
struct wl_resource *resource);
};
#define ZWP_LINUX_DMABUF_FEEDBACK_V1_DONE 0
#define ZWP_LINUX_DMABUF_FEEDBACK_V1_FORMAT_TABLE 1
#define ZWP_LINUX_DMABUF_FEEDBACK_V1_MAIN_DEVICE 2
#define ZWP_LINUX_DMABUF_FEEDBACK_V1_TRANCHE_DONE 3
#define ZWP_LINUX_DMABUF_FEEDBACK_V1_TRANCHE_TARGET_DEVICE 4
#define ZWP_LINUX_DMABUF_FEEDBACK_V1_TRANCHE_FORMATS 5
#define ZWP_LINUX_DMABUF_FEEDBACK_V1_TRANCHE_FLAGS 6
/**
* @ingroup iface_zwp_linux_dmabuf_feedback_v1
*/
#define ZWP_LINUX_DMABUF_FEEDBACK_V1_DONE_SINCE_VERSION 1
/**
* @ingroup iface_zwp_linux_dmabuf_feedback_v1
*/
#define ZWP_LINUX_DMABUF_FEEDBACK_V1_FORMAT_TABLE_SINCE_VERSION 1
/**
* @ingroup iface_zwp_linux_dmabuf_feedback_v1
*/
#define ZWP_LINUX_DMABUF_FEEDBACK_V1_MAIN_DEVICE_SINCE_VERSION 1
/**
* @ingroup iface_zwp_linux_dmabuf_feedback_v1
*/
#define ZWP_LINUX_DMABUF_FEEDBACK_V1_TRANCHE_DONE_SINCE_VERSION 1
/**
* @ingroup iface_zwp_linux_dmabuf_feedback_v1
*/
#define ZWP_LINUX_DMABUF_FEEDBACK_V1_TRANCHE_TARGET_DEVICE_SINCE_VERSION 1
/**
* @ingroup iface_zwp_linux_dmabuf_feedback_v1
*/
#define ZWP_LINUX_DMABUF_FEEDBACK_V1_TRANCHE_FORMATS_SINCE_VERSION 1
/**
* @ingroup iface_zwp_linux_dmabuf_feedback_v1
*/
#define ZWP_LINUX_DMABUF_FEEDBACK_V1_TRANCHE_FLAGS_SINCE_VERSION 1
/**
* @ingroup iface_zwp_linux_dmabuf_feedback_v1
*/
#define ZWP_LINUX_DMABUF_FEEDBACK_V1_DESTROY_SINCE_VERSION 1
/**
* @ingroup iface_zwp_linux_dmabuf_feedback_v1
* Sends an done event to the client owning the resource.
* @param resource_ The client's resource
*/
static inline void
zwp_linux_dmabuf_feedback_v1_send_done(struct wl_resource *resource_)
{
wl_resource_post_event(resource_, ZWP_LINUX_DMABUF_FEEDBACK_V1_DONE);
}
/**
* @ingroup iface_zwp_linux_dmabuf_feedback_v1
* Sends an format_table event to the client owning the resource.
* @param resource_ The client's resource
* @param fd table file descriptor
* @param size table size, in bytes
*/
static inline void
zwp_linux_dmabuf_feedback_v1_send_format_table(struct wl_resource *resource_, int32_t fd, uint32_t size)
{
wl_resource_post_event(resource_, ZWP_LINUX_DMABUF_FEEDBACK_V1_FORMAT_TABLE, fd, size);
}
/**
* @ingroup iface_zwp_linux_dmabuf_feedback_v1
* Sends an main_device event to the client owning the resource.
* @param resource_ The client's resource
* @param device device dev_t value
*/
static inline void
zwp_linux_dmabuf_feedback_v1_send_main_device(struct wl_resource *resource_, struct wl_array *device)
{
wl_resource_post_event(resource_, ZWP_LINUX_DMABUF_FEEDBACK_V1_MAIN_DEVICE, device);
}
/**
* @ingroup iface_zwp_linux_dmabuf_feedback_v1
* Sends an tranche_done event to the client owning the resource.
* @param resource_ The client's resource
*/
static inline void
zwp_linux_dmabuf_feedback_v1_send_tranche_done(struct wl_resource *resource_)
{
wl_resource_post_event(resource_, ZWP_LINUX_DMABUF_FEEDBACK_V1_TRANCHE_DONE);
}
/**
* @ingroup iface_zwp_linux_dmabuf_feedback_v1
* Sends an tranche_target_device event to the client owning the resource.
* @param resource_ The client's resource
* @param device device dev_t value
*/
static inline void
zwp_linux_dmabuf_feedback_v1_send_tranche_target_device(struct wl_resource *resource_, struct wl_array *device)
{
wl_resource_post_event(resource_, ZWP_LINUX_DMABUF_FEEDBACK_V1_TRANCHE_TARGET_DEVICE, device);
}
/**
* @ingroup iface_zwp_linux_dmabuf_feedback_v1
* Sends an tranche_formats event to the client owning the resource.
* @param resource_ The client's resource
* @param indices array of 16-bit indexes
*/
static inline void
zwp_linux_dmabuf_feedback_v1_send_tranche_formats(struct wl_resource *resource_, struct wl_array *indices)
{
wl_resource_post_event(resource_, ZWP_LINUX_DMABUF_FEEDBACK_V1_TRANCHE_FORMATS, indices);
}
/**
* @ingroup iface_zwp_linux_dmabuf_feedback_v1
* Sends an tranche_flags event to the client owning the resource.
* @param resource_ The client's resource
* @param flags tranche flags
*/
static inline void
zwp_linux_dmabuf_feedback_v1_send_tranche_flags(struct wl_resource *resource_, uint32_t flags)
{
wl_resource_post_event(resource_, ZWP_LINUX_DMABUF_FEEDBACK_V1_TRANCHE_FLAGS, flags);
}
#ifdef __cplusplus
}
#endif
#endif

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -1,100 +0,0 @@
/* Generated by wayland-scanner 1.24.0 */
/*
* Copyright © 2008-2011 Kristian Høgsberg
* Copyright © 2010-2011 Intel Corporation
* Copyright © 2012-2013 Collabora, Ltd.
*
* Permission is hereby granted, free of charge, to any person
* obtaining a copy of this software and associated documentation files
* (the "Software"), to deal in the Software without restriction,
* including without limitation the rights to use, copy, modify, merge,
* publish, distribute, sublicense, and/or sell copies of the Software,
* and to permit persons to whom the Software is furnished to do so,
* subject to the following conditions:
*
* The above copyright notice and this permission notice (including the
* next paragraph) shall be included in all copies or substantial
* portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
* BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
* ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*/
#include <stdbool.h>
#include <stdlib.h>
#include <stdint.h>
#include "wayland-util.h"
#ifndef __has_attribute
# define __has_attribute(x) 0 /* Compatibility with non-clang compilers. */
#endif
#if (__has_attribute(visibility) || defined(__GNUC__) && __GNUC__ >= 4)
#define WL_PRIVATE __attribute__ ((visibility("hidden")))
#else
#define WL_PRIVATE
#endif
extern const struct wl_interface wl_buffer_interface;
static const struct wl_interface *wl_drm_types[] = {
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
&wl_buffer_interface,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
&wl_buffer_interface,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
&wl_buffer_interface,
};
static const struct wl_message wl_drm_requests[] = {
{ "authenticate", "u", wl_drm_types + 0 },
{ "create_buffer", "uiiuun", wl_drm_types + 2 },
{ "create_planar_buffer", "uiiuiiiiiin", wl_drm_types + 8 },
{ "create_prime_buffer", "uhiiuiiiiiin", wl_drm_types + 19 },
};
static const struct wl_message wl_drm_events[] = {
{ "device", "hs", wl_drm_types + 0 },
{ "format", "u", wl_drm_types + 0 },
{ "authenticated", "", wl_drm_types + 0 },
{ "capabilities", "u", wl_drm_types + 0 },
};
WL_PRIVATE const struct wl_interface wl_drm_interface = {
"wl_drm", 2,
4, wl_drm_requests,
4, wl_drm_events,
};

View file

@ -1,434 +0,0 @@
/* Generated by wayland-scanner 1.24.0 */
#ifndef WL_DRM_SERVER_PROTOCOL_H
#define WL_DRM_SERVER_PROTOCOL_H
#include <stdint.h>
#include <stddef.h>
#include "wayland-server.h"
#ifdef __cplusplus
extern "C" {
#endif
struct wl_client;
struct wl_resource;
/**
* @page page_wl_drm The wl_drm protocol
* @section page_ifaces_wl_drm Interfaces
* - @subpage page_iface_wl_drm - Protocol for using DRM buffers
* @section page_copyright_wl_drm Copyright
* <pre>
*
* Copyright © 2008-2011 Kristian Høgsberg
* Copyright © 2010-2011 Intel Corporation
* Copyright © 2012-2013 Collabora, Ltd.
*
* Permission is hereby granted, free of charge, to any person
* obtaining a copy of this software and associated documentation files
* (the "Software"), to deal in the Software without restriction,
* including without limitation the rights to use, copy, modify, merge,
* publish, distribute, sublicense, and/or sell copies of the Software,
* and to permit persons to whom the Software is furnished to do so,
* subject to the following conditions:
*
* The above copyright notice and this permission notice (including the
* next paragraph) shall be included in all copies or substantial
* portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
* BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
* ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
* </pre>
*/
struct wl_buffer;
struct wl_drm;
#ifndef WL_DRM_INTERFACE
#define WL_DRM_INTERFACE
/**
* @page page_iface_wl_drm wl_drm
* @section page_iface_wl_drm_desc Description
*
* This protocol is used to create buffers that are backed by DRM
* buffers.
*
* This protocol is deprecated and not intended for new clients.
* @section page_iface_wl_drm_api API
* See @ref iface_wl_drm.
*/
/**
* @defgroup iface_wl_drm The wl_drm interface
*
* This protocol is used to create buffers that are backed by DRM
* buffers.
*
* This protocol is deprecated and not intended for new clients.
*/
extern const struct wl_interface wl_drm_interface;
#endif
#ifndef WL_DRM_ERROR_ENUM
#define WL_DRM_ERROR_ENUM
/**
* @ingroup iface_wl_drm
* wl_drm error values
*
* These errors can be emitted in response to wl_drm requests.
*/
enum wl_drm_error {
WL_DRM_ERROR_AUTHENTICATE_FAIL = 0,
WL_DRM_ERROR_INVALID_FORMAT = 1,
WL_DRM_ERROR_INVALID_NAME = 2,
};
#endif /* WL_DRM_ERROR_ENUM */
#ifndef WL_DRM_ERROR_ENUM_IS_VALID
#define WL_DRM_ERROR_ENUM_IS_VALID
/**
* @ingroup iface_wl_drm
* Validate a wl_drm error value.
*
* @return true on success, false on error.
* @ref wl_drm_error
*/
static inline bool
wl_drm_error_is_valid(uint32_t value, uint32_t version) {
switch (value) {
case WL_DRM_ERROR_AUTHENTICATE_FAIL:
return version >= 1;
case WL_DRM_ERROR_INVALID_FORMAT:
return version >= 1;
case WL_DRM_ERROR_INVALID_NAME:
return version >= 1;
default:
return false;
}
}
#endif /* WL_DRM_ERROR_ENUM_IS_VALID */
#ifndef WL_DRM_FORMAT_ENUM
#define WL_DRM_FORMAT_ENUM
/**
* @ingroup iface_wl_drm
* DRM format values
*
* DRM formats are defined by the DRM_FORMAT_* macros in
* drm_fourcc.h. A list of formats is also available at:
* https://dri.freedesktop.org/docs/drm/graphics/drm-fourcc.html
*/
enum wl_drm_format {
WL_DRM_FORMAT_C8 = 0x20203843,
WL_DRM_FORMAT_RGB332 = 0x38424752,
WL_DRM_FORMAT_BGR233 = 0x38524742,
WL_DRM_FORMAT_XRGB2101010 = 0x30335258,
WL_DRM_FORMAT_XBGR2101010 = 0x30334258,
WL_DRM_FORMAT_RGB565 = 0x36314752,
WL_DRM_FORMAT_BGR565 = 0x36314742,
WL_DRM_FORMAT_ABGR2101010 = 0x30334241,
WL_DRM_FORMAT_ARGB2101010 = 0x30335241,
WL_DRM_FORMAT_YUYV = 0x56595559,
WL_DRM_FORMAT_ARGB8888 = 0x34325241,
WL_DRM_FORMAT_XRGB8888 = 0x34325258,
WL_DRM_FORMAT_RGB888 = 0x34324752,
WL_DRM_FORMAT_BGR888 = 0x34324742,
WL_DRM_FORMAT_YV12 = 0x32315659,
WL_DRM_FORMAT_NV12 = 0x3231564e,
WL_DRM_FORMAT_NV21 = 0x3132564e,
WL_DRM_FORMAT_NV16 = 0x3631564e,
WL_DRM_FORMAT_NV61 = 0x3136564e,
WL_DRM_FORMAT_YU12 = 0x32315559,
WL_DRM_FORMAT_AYUV = 0x56555941,
WL_DRM_FORMAT_ARGB4444 = 0x32315241,
WL_DRM_FORMAT_RGBA4444 = 0x32315247,
WL_DRM_FORMAT_ABGR4444 = 0x32314241,
WL_DRM_FORMAT_XBGR4444 = 0x32314258,
WL_DRM_FORMAT_BGRA4444 = 0x32314247,
WL_DRM_FORMAT_ARGB1555 = 0x35315241,
WL_DRM_FORMAT_RGBA5551 = 0x35315547,
WL_DRM_FORMAT_ABGR1555 = 0x35314241,
WL_DRM_FORMAT_BGRA5551 = 0x35314247,
WL_DRM_FORMAT_ARGB8565 = 0x36355241,
WL_DRM_FORMAT_BGRA8565 = 0x36355242,
};
#endif /* WL_DRM_FORMAT_ENUM */
#ifndef WL_DRM_FORMAT_ENUM_IS_VALID
#define WL_DRM_FORMAT_ENUM_IS_VALID
/**
* @ingroup iface_wl_drm
* Validate a wl_drm format value.
*
* @return true on success, false on error.
* @ref wl_drm_format
*/
static inline bool
wl_drm_format_is_valid(uint32_t value, uint32_t version) {
switch (value) {
case WL_DRM_FORMAT_C8:
return version >= 1;
case WL_DRM_FORMAT_RGB332:
return version >= 1;
case WL_DRM_FORMAT_BGR233:
return version >= 1;
case WL_DRM_FORMAT_XRGB2101010:
return version >= 1;
case WL_DRM_FORMAT_XBGR2101010:
return version >= 1;
case WL_DRM_FORMAT_RGB565:
return version >= 1;
case WL_DRM_FORMAT_BGR565:
return version >= 1;
case WL_DRM_FORMAT_ABGR2101010:
return version >= 1;
case WL_DRM_FORMAT_ARGB2101010:
return version >= 1;
case WL_DRM_FORMAT_YUYV:
return version >= 1;
case WL_DRM_FORMAT_ARGB8888:
return version >= 1;
case WL_DRM_FORMAT_XRGB8888:
return version >= 1;
case WL_DRM_FORMAT_RGB888:
return version >= 1;
case WL_DRM_FORMAT_BGR888:
return version >= 1;
case WL_DRM_FORMAT_YV12:
return version >= 1;
case WL_DRM_FORMAT_NV12:
return version >= 1;
case WL_DRM_FORMAT_NV21:
return version >= 1;
case WL_DRM_FORMAT_NV16:
return version >= 1;
case WL_DRM_FORMAT_NV61:
return version >= 1;
case WL_DRM_FORMAT_YU12:
return version >= 1;
case WL_DRM_FORMAT_AYUV:
return version >= 1;
case WL_DRM_FORMAT_ARGB4444:
return version >= 1;
case WL_DRM_FORMAT_RGBA4444:
return version >= 1;
case WL_DRM_FORMAT_ABGR4444:
return version >= 1;
case WL_DRM_FORMAT_XBGR4444:
return version >= 1;
case WL_DRM_FORMAT_BGRA4444:
return version >= 1;
case WL_DRM_FORMAT_ARGB1555:
return version >= 1;
case WL_DRM_FORMAT_RGBA5551:
return version >= 1;
case WL_DRM_FORMAT_ABGR1555:
return version >= 1;
case WL_DRM_FORMAT_BGRA5551:
return version >= 1;
case WL_DRM_FORMAT_ARGB8565:
return version >= 1;
case WL_DRM_FORMAT_BGRA8565:
return version >= 1;
default:
return false;
}
}
#endif /* WL_DRM_FORMAT_ENUM_IS_VALID */
#ifndef WL_DRM_CAPABILITY_ENUM
#define WL_DRM_CAPABILITY_ENUM
/**
* @ingroup iface_wl_drm
* wl_drm capability bitmask
*
* Bitmask of capabilities.
*/
enum wl_drm_capability {
WL_DRM_CAPABILITY_PRIME = 1,
};
#endif /* WL_DRM_CAPABILITY_ENUM */
#ifndef WL_DRM_CAPABILITY_ENUM_IS_VALID
#define WL_DRM_CAPABILITY_ENUM_IS_VALID
/**
* @ingroup iface_wl_drm
* Validate a wl_drm capability value.
*
* @return true on success, false on error.
* @ref wl_drm_capability
*/
static inline bool
wl_drm_capability_is_valid(uint32_t value, uint32_t version) {
switch (value) {
case WL_DRM_CAPABILITY_PRIME:
return version >= 1;
default:
return false;
}
}
#endif /* WL_DRM_CAPABILITY_ENUM_IS_VALID */
/**
* @ingroup iface_wl_drm
* @struct wl_drm_interface
*/
struct wl_drm_interface {
/**
* Authenticate the DRM device
*
* This request authenticates the DRM device. The device name is
* sent with the device event.
*/
void (*authenticate)(struct wl_client *client,
struct wl_resource *resource,
uint32_t name);
/**
* Create a drm buffer object
*
* This request creates a wl_buffer object backed by a DRM
* buffer. The DRM buffer is created by the server.
*/
void (*create_buffer)(struct wl_client *client,
struct wl_resource *resource,
uint32_t name,
int32_t width,
int32_t height,
uint32_t stride,
uint32_t format,
uint32_t id);
/**
* Create a planar drm buffer object
*
* This request creates a wl_buffer object backed by a DRM
* buffer. The DRM buffer is created by the server. The buffer has
* multiple planes.
*/
void (*create_planar_buffer)(struct wl_client *client,
struct wl_resource *resource,
uint32_t name,
int32_t width,
int32_t height,
uint32_t format,
int32_t offset0,
int32_t stride0,
int32_t offset1,
int32_t stride1,
int32_t offset2,
int32_t stride2,
uint32_t id);
/**
* Create a buffer from a DMA-BUF file descriptor
*
* This request creates a wl_buffer object backed by a DMA-BUF
* file descriptor. The buffer can have one, two or three planes.
*/
void (*create_prime_buffer)(struct wl_client *client,
struct wl_resource *resource,
uint32_t name,
int32_t fd,
int32_t width,
int32_t height,
uint32_t format,
int32_t offset0,
int32_t stride0,
int32_t offset1,
int32_t stride1,
int32_t offset2,
int32_t stride2,
uint32_t id);
};
#define WL_DRM_DEVICE 0
#define WL_DRM_FORMAT 1
#define WL_DRM_AUTHENTICATED 2
#define WL_DRM_CAPABILITIES 3
/**
* @ingroup iface_wl_drm
*/
#define WL_DRM_DEVICE_SINCE_VERSION 1
/**
* @ingroup iface_wl_drm
*/
#define WL_DRM_FORMAT_SINCE_VERSION 1
/**
* @ingroup iface_wl_drm
*/
#define WL_DRM_AUTHENTICATED_SINCE_VERSION 1
/**
* @ingroup iface_wl_drm
*/
#define WL_DRM_CAPABILITIES_SINCE_VERSION 1
/**
* @ingroup iface_wl_drm
*/
#define WL_DRM_AUTHENTICATE_SINCE_VERSION 1
/**
* @ingroup iface_wl_drm
*/
#define WL_DRM_CREATE_BUFFER_SINCE_VERSION 1
/**
* @ingroup iface_wl_drm
*/
#define WL_DRM_CREATE_PLANAR_BUFFER_SINCE_VERSION 1
/**
* @ingroup iface_wl_drm
*/
#define WL_DRM_CREATE_PRIME_BUFFER_SINCE_VERSION 1
/**
* @ingroup iface_wl_drm
* Sends an device event to the client owning the resource.
* @param resource_ The client's resource
*/
static inline void
wl_drm_send_device(struct wl_resource *resource_, int32_t fd, const char *name)
{
wl_resource_post_event(resource_, WL_DRM_DEVICE, fd, name);
}
/**
* @ingroup iface_wl_drm
* Sends an format event to the client owning the resource.
* @param resource_ The client's resource
*/
static inline void
wl_drm_send_format(struct wl_resource *resource_, uint32_t format)
{
wl_resource_post_event(resource_, WL_DRM_FORMAT, format);
}
/**
* @ingroup iface_wl_drm
* Sends an authenticated event to the client owning the resource.
* @param resource_ The client's resource
*/
static inline void
wl_drm_send_authenticated(struct wl_resource *resource_)
{
wl_resource_post_event(resource_, WL_DRM_AUTHENTICATED);
}
/**
* @ingroup iface_wl_drm
* Sends an capabilities event to the client owning the resource.
* @param resource_ The client's resource
*/
static inline void
wl_drm_send_capabilities(struct wl_resource *resource_, uint32_t value)
{
wl_resource_post_event(resource_, WL_DRM_CAPABILITIES, value);
}
#ifdef __cplusplus
}
#endif
#endif

View file

@ -1,184 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<protocol name="wl_drm">
<copyright>
Copyright © 2008-2011 Kristian Høgsberg
Copyright © 2010-2011 Intel Corporation
Copyright © 2012-2013 Collabora, Ltd.
Permission is hereby granted, free of charge, to any person
obtaining a copy of this software and associated documentation files
(the "Software"), to deal in the Software without restriction,
including without limitation the rights to use, copy, modify, merge,
publish, distribute, sublicense, and/or sell copies of the Software,
and to permit persons to whom the Software is furnished to do so,
subject to the following conditions:
The above copyright notice and this permission notice (including the
next paragraph) shall be included in all copies or substantial
portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
</copyright>
<interface name="wl_drm" version="2">
<description summary="Protocol for using DRM buffers">
This protocol is used to create buffers that are backed by DRM
buffers.
This protocol is deprecated and not intended for new clients.
</description>
<enum name="error">
<description summary="wl_drm error values">
These errors can be emitted in response to wl_drm requests.
</description>
<entry name="authenticate_fail" value="0"/>
<entry name="invalid_format" value="1"/>
<entry name="invalid_name" value="2"/>
</enum>
<enum name="format">
<description summary="DRM format values">
DRM formats are defined by the DRM_FORMAT_* macros in
drm_fourcc.h. A list of formats is also available at:
https://dri.freedesktop.org/docs/drm/graphics/drm-fourcc.html
</description>
<entry name="c8" value="0x20203843"/>
<entry name="rgb332" value="0x38424752"/>
<entry name="bgr233" value="0x38524742"/>
<entry name="xrgb2101010" value="0x30335258"/>
<entry name="xbgr2101010" value="0x30334258"/>
<entry name="rgb565" value="0x36314752"/>
<entry name="bgr565" value="0x36314742"/>
<entry name="abgr2101010" value="0x30334241"/>
<entry name="argb2101010" value="0x30335241"/>
<entry name="yuyv" value="0x56595559"/>
<entry name="argb8888" value="0x34325241"/>
<entry name="xrgb8888" value="0x34325258"/>
<entry name="rgb888" value="0x34324752"/>
<entry name="bgr888" value="0x34324742"/>
<entry name="yv12" value="0x32315659"/>
<entry name="nv12" value="0x3231564e"/>
<entry name="nv21" value="0x3132564e"/>
<entry name="nv16" value="0x3631564e"/>
<entry name="nv61" value="0x3136564e"/>
<entry name="yu12" value="0x32315559"/>
<entry name="ayuv" value="0x56555941"/>
<entry name="argb4444" value="0x32315241"/>
<entry name="rgba4444" value="0x32315247"/>
<entry name="abgr4444" value="0x32314241"/>
<entry name="xbgr4444" value="0x32314258"/>
<entry name="bgra4444" value="0x32314247"/>
<entry name="argb1555" value="0x35315241"/>
<entry name="rgba5551" value="0x35315547"/>
<entry name="abgr1555" value="0x35314241"/>
<entry name="bgra5551" value="0x35314247"/>
<entry name="argb8565" value="0x36355241"/>
<entry name="bgra8565" value="0x36355242"/>
</enum>
<request name="authenticate">
<description summary="Authenticate the DRM device">
This request authenticates the DRM device. The device name is
sent with the device event.
</description>
<arg name="name" type="uint"/>
</request>
<request name="create_buffer">
<description summary="Create a drm buffer object">
This request creates a wl_buffer object backed by a DRM buffer.
The DRM buffer is created by the server.
</description>
<arg name="name" type="uint"/>
<arg name="width" type="int"/>
<arg name="height" type="int"/>
<arg name="stride" type="uint"/>
<arg name="format" type="uint"/>
<arg name="id" type="new_id" interface="wl_buffer"/>
</request>
<request name="create_planar_buffer">
<description summary="Create a planar drm buffer object">
This request creates a wl_buffer object backed by a DRM buffer.
The DRM buffer is created by the server. The buffer has
multiple planes.
</description>
<arg name="name" type="uint"/>
<arg name="width" type="int"/>
<arg name="height" type="int"/>
<arg name="format" type="uint"/>
<arg name="offset0" type="int"/>
<arg name="stride0" type="int"/>
<arg name="offset1" type="int"/>
<arg name="stride1" type="int"/>
<arg name="offset2" type="int"/>
<arg name="stride2" type="int"/>
<arg name="id" type="new_id" interface="wl_buffer"/>
</request>
<request name="create_prime_buffer">
<description summary="Create a buffer from a DMA-BUF file descriptor">
This request creates a wl_buffer object backed by a DMA-BUF file
descriptor. The buffer can have one, two or three planes.
</description>
<arg name="name" type="uint"/>
<arg name="fd" type="fd"/>
<arg name="width" type="int"/>
<arg name="height" type="int"/>
<arg name="format" type="uint"/>
<arg name="offset0" type="int"/>
<arg name="stride0" type="int"/>
<arg name="offset1" type="int"/>
<arg name="stride1" type="int"/>
<arg name="offset2" type="int"/>
<arg name="stride2" type="int"/>
<arg name="id" type="new_id" interface="wl_buffer"/>
</request>
<event name="device">
<description summary="DRM device fd and name">
This event advertises the DRM device file descriptor and name.
It is sent to the client when it binds to the wl_drm interface.
</description>
<arg name="fd" type="fd"/>
<arg name="name" type="string"/>
</event>
<event name="format">
<description summary="DRM format">
This event advertises a DRM format. It is sent to the client
when it binds to the wl_drm interface.
</description>
<arg name="format" type="uint"/>
</event>
<event name="authenticated">
<description summary="Authenticated event">
This event is sent after a successful wl_drm.authenticate
request.
</description>
</event>
<enum name="capability">
<description summary="wl_drm capability bitmask">
Bitmask of capabilities.
</description>
<entry name="prime" value="1"/>
</enum>
<event name="capabilities">
<description summary="Capabilities event">
This event advertises the capabilities of the DRM device.
</description>
<arg name="value" type="uint"/>
</event>
</interface>
</protocol>