wayland-drm: Add protocol to create planar buffers
[profile/ivi/mesa.git] / src / egl / wayland / wayland-drm / wayland-drm.h
1 #ifndef WAYLAND_DRM_H
2 #define WAYLAND_DRM_H
3
4 #include "egldisplay.h"
5 #include "eglimage.h"
6
7 #include <wayland-server.h>
8 #include "wayland-drm-server-protocol.h"
9
10 struct wl_drm;
11
12 struct wl_drm_buffer {
13         struct wl_buffer buffer;
14         struct wl_drm *drm;
15         uint32_t format;
16         uint32_t driver_format;
17         int32_t offset[3];
18         int32_t stride[3];
19         void *driver_buffer;
20 };
21
22 struct wayland_drm_callbacks {
23         int (*authenticate)(void *user_data, uint32_t id);
24
25         void (*reference_buffer)(void *user_data, uint32_t name,
26                                  struct wl_drm_buffer *buffer);
27
28         void (*release_buffer)(void *user_data, struct wl_drm_buffer *buffer);
29 };
30
31 struct wl_drm *
32 wayland_drm_init(struct wl_display *display, char *device_name,
33                  struct wayland_drm_callbacks *callbacks, void *user_data);
34
35 void
36 wayland_drm_uninit(struct wl_drm *drm);
37
38 int
39 wayland_buffer_is_drm(struct wl_buffer *buffer);
40
41 uint32_t
42 wayland_drm_buffer_get_format(struct wl_buffer *buffer_base);
43
44 void *
45 wayland_drm_buffer_get_buffer(struct wl_buffer *buffer);
46
47 #endif