1f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#ifndef WAYLAND_DRM_H 2f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define WAYLAND_DRM_H 3f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 4f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include <wayland-server.h> 5f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 6f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#ifndef WL_DRM_FORMAT_ENUM 7f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define WL_DRM_FORMAT_ENUM 8f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgenum wl_drm_format { 9f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org WL_DRM_FORMAT_C8 = 0x20203843, 10f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org WL_DRM_FORMAT_RGB332 = 0x38424752, 11f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org WL_DRM_FORMAT_BGR233 = 0x38524742, 12f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org WL_DRM_FORMAT_XRGB4444 = 0x32315258, 13f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org WL_DRM_FORMAT_XBGR4444 = 0x32314258, 14f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org WL_DRM_FORMAT_RGBX4444 = 0x32315852, 15f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org WL_DRM_FORMAT_BGRX4444 = 0x32315842, 16f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org WL_DRM_FORMAT_ARGB4444 = 0x32315241, 17f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org WL_DRM_FORMAT_ABGR4444 = 0x32314241, 18f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org WL_DRM_FORMAT_RGBA4444 = 0x32314152, 19f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org WL_DRM_FORMAT_BGRA4444 = 0x32314142, 20f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org WL_DRM_FORMAT_XRGB1555 = 0x35315258, 21f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org WL_DRM_FORMAT_XBGR1555 = 0x35314258, 22f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org WL_DRM_FORMAT_RGBX5551 = 0x35315852, 23f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org WL_DRM_FORMAT_BGRX5551 = 0x35315842, 24f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org WL_DRM_FORMAT_ARGB1555 = 0x35315241, 25f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org WL_DRM_FORMAT_ABGR1555 = 0x35314241, 26f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org WL_DRM_FORMAT_RGBA5551 = 0x35314152, 27f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org WL_DRM_FORMAT_BGRA5551 = 0x35314142, 28f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org WL_DRM_FORMAT_RGB565 = 0x36314752, 29f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org WL_DRM_FORMAT_BGR565 = 0x36314742, 30f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org WL_DRM_FORMAT_RGB888 = 0x34324752, 31f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org WL_DRM_FORMAT_BGR888 = 0x34324742, 32f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org WL_DRM_FORMAT_XRGB8888 = 0x34325258, 33f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org WL_DRM_FORMAT_XBGR8888 = 0x34324258, 34f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org WL_DRM_FORMAT_RGBX8888 = 0x34325852, 35f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org WL_DRM_FORMAT_BGRX8888 = 0x34325842, 36f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org WL_DRM_FORMAT_ARGB8888 = 0x34325241, 37f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org WL_DRM_FORMAT_ABGR8888 = 0x34324241, 38f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org WL_DRM_FORMAT_RGBA8888 = 0x34324152, 39f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org WL_DRM_FORMAT_BGRA8888 = 0x34324142, 40f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org WL_DRM_FORMAT_XRGB2101010 = 0x30335258, 41f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org WL_DRM_FORMAT_XBGR2101010 = 0x30334258, 42f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org WL_DRM_FORMAT_RGBX1010102 = 0x30335852, 43f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org WL_DRM_FORMAT_BGRX1010102 = 0x30335842, 44f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org WL_DRM_FORMAT_ARGB2101010 = 0x30335241, 45f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org WL_DRM_FORMAT_ABGR2101010 = 0x30334241, 46f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org WL_DRM_FORMAT_RGBA1010102 = 0x30334152, 47f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org WL_DRM_FORMAT_BGRA1010102 = 0x30334142, 48f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org WL_DRM_FORMAT_YUYV = 0x56595559, 49f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org WL_DRM_FORMAT_YVYU = 0x55595659, 50f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org WL_DRM_FORMAT_UYVY = 0x59565955, 51f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org WL_DRM_FORMAT_VYUY = 0x59555956, 52f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org WL_DRM_FORMAT_AYUV = 0x56555941, 53f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org WL_DRM_FORMAT_NV12 = 0x3231564e, 54f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org WL_DRM_FORMAT_NV21 = 0x3132564e, 55f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org WL_DRM_FORMAT_NV16 = 0x3631564e, 56f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org WL_DRM_FORMAT_NV61 = 0x3136564e, 57f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org WL_DRM_FORMAT_YUV410 = 0x39565559, 58f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org WL_DRM_FORMAT_YVU410 = 0x39555659, 59f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org WL_DRM_FORMAT_YUV411 = 0x31315559, 60f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org WL_DRM_FORMAT_YVU411 = 0x31315659, 61f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org WL_DRM_FORMAT_YUV420 = 0x32315559, 62f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org WL_DRM_FORMAT_YVU420 = 0x32315659, 63f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org WL_DRM_FORMAT_YUV422 = 0x36315559, 64f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org WL_DRM_FORMAT_YVU422 = 0x36315659, 65f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org WL_DRM_FORMAT_YUV444 = 0x34325559, 66f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org WL_DRM_FORMAT_YVU444 = 0x34325659, 67f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org}; 68f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#endif /* WL_DRM_FORMAT_ENUM */ 69f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 70f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstruct wl_drm; 71f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 72f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstruct wl_drm_buffer { 73f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct wl_buffer buffer; 74f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct wl_drm *drm; 75f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org uint32_t format; 76f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org const void *driver_format; 77f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org int32_t offset[3]; 78f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org int32_t stride[3]; 79f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org void *driver_buffer; 80f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org}; 81f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 82f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstruct wayland_drm_callbacks { 83f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org int (*authenticate)(void *user_data, uint32_t id); 84f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 85f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org void (*reference_buffer)(void *user_data, uint32_t name, 86f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct wl_drm_buffer *buffer); 87f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 88f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org void (*release_buffer)(void *user_data, struct wl_drm_buffer *buffer); 89f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org}; 90f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 91f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstruct wl_drm * 92f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgwayland_drm_init(struct wl_display *display, char *device_name, 93f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct wayland_drm_callbacks *callbacks, void *user_data); 94f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 95f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgvoid 96f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgwayland_drm_uninit(struct wl_drm *drm); 97f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 98f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgint 99f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgwayland_buffer_is_drm(struct wl_buffer *buffer); 100f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 101f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orguint32_t 102f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgwayland_drm_buffer_get_format(struct wl_buffer *buffer_base); 103f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 104f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgvoid * 105f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgwayland_drm_buffer_get_buffer(struct wl_buffer *buffer); 106f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 107f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#endif 108