Path: blob/21.2-virgl/src/egl/wayland/wayland-drm/wayland-drm.h
4561 views
#ifndef WAYLAND_DRM_H1#define WAYLAND_DRM_H23#include <wayland-server.h>45struct wl_display;6struct wl_resource;7struct wl_drm_buffer;89struct wayland_drm_callbacks {10int (*authenticate)(void *user_data, uint32_t id);1112void (*reference_buffer)(void *user_data, uint32_t name, int fd,13struct wl_drm_buffer *buffer);1415void (*release_buffer)(void *user_data, struct wl_drm_buffer *buffer);1617bool (*is_format_supported)(void *user_data, uint32_t format);18};192021struct wl_drm {22struct wl_display *display;23struct wl_global *wl_drm_global;2425void *user_data;26char *device_name;27uint32_t flags;2829struct wayland_drm_callbacks callbacks;3031struct wl_buffer_interface buffer_interface;32};3334struct wl_drm_buffer {35struct wl_resource *resource;36struct wl_drm *drm;37int32_t width, height;38uint32_t format;39const void *driver_format;40int32_t offset[3];41int32_t stride[3];42void *driver_buffer;43};4445enum { WAYLAND_DRM_PRIME = 0x01 };4647static inline struct wl_drm_buffer *48wayland_drm_buffer_get(struct wl_drm *drm, struct wl_resource *resource)49{50if (resource == NULL)51return NULL;5253if (wl_resource_instance_of(resource, &wl_buffer_interface,54&drm->buffer_interface))55return wl_resource_get_user_data(resource);56else57return NULL;58}5960struct wl_drm *61wayland_drm_init(struct wl_display *display, char *device_name,62const struct wayland_drm_callbacks *callbacks, void *user_data,63uint32_t flags);6465void66wayland_drm_uninit(struct wl_drm *drm);6768#endif697071