1409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan/* 2409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan * Copyright © 2008-2011 Kristian Høgsberg 3409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan * Copyright © 2010-2011 Intel Corporation 4409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan * 5409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan * Permission to use, copy, modify, distribute, and sell this 6409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan * software and its documentation for any purpose is hereby granted 7409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan * without fee, provided that\n the above copyright notice appear in 8409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan * all copies and that both that copyright notice and this permission 9409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan * notice appear in supporting documentation, and that the name of 10409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan * the copyright holders not be used in advertising or publicity 11409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan * pertaining to distribution of the software without specific, 12409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan * written prior permission. The copyright holders make no 13409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan * representations about the suitability of this software for any 14409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan * purpose. It is provided "as is" without express or implied 15409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan * warranty. 16409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan * 17409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS 18409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND 19409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan * FITNESS, IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY 20409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 21409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN 22409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, 23409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF 24409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan * THIS SOFTWARE. 25409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan */ 26409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan 27409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan#ifndef DRM_CLIENT_PROTOCOL_H 28409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan#define DRM_CLIENT_PROTOCOL_H 29409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan 30409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan#ifdef __cplusplus 31409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuanextern "C" { 32409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan#endif 33409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan 34409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan#include <stdint.h> 35409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan#include <stddef.h> 36409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan#include "wayland-client.h" 37409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan 38409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuanstruct wl_client; 39409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuanstruct wl_resource; 40409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan 41409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuanstruct wl_drm; 42409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan 43409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuanextern const struct wl_interface wl_drm_interface; 44409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan 45409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan#ifndef WL_DRM_ERROR_ENUM 46409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan#define WL_DRM_ERROR_ENUM 47409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuanenum wl_drm_error { 48409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan WL_DRM_ERROR_AUTHENTICATE_FAIL = 0, 49409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan WL_DRM_ERROR_INVALID_FORMAT = 1, 50409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan WL_DRM_ERROR_INVALID_NAME = 2, 51409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan}; 52409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan#endif /* WL_DRM_ERROR_ENUM */ 53409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan 54409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan#ifndef WL_DRM_FORMAT_ENUM 55409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan#define WL_DRM_FORMAT_ENUM 56409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuanenum wl_drm_format { 57409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan WL_DRM_FORMAT_C8 = 0x20203843, 58409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan WL_DRM_FORMAT_RGB332 = 0x38424752, 59409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan WL_DRM_FORMAT_BGR233 = 0x38524742, 60409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan WL_DRM_FORMAT_XRGB4444 = 0x32315258, 61409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan WL_DRM_FORMAT_XBGR4444 = 0x32314258, 62409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan WL_DRM_FORMAT_RGBX4444 = 0x32315852, 63409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan WL_DRM_FORMAT_BGRX4444 = 0x32315842, 64409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan WL_DRM_FORMAT_ARGB4444 = 0x32315241, 65409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan WL_DRM_FORMAT_ABGR4444 = 0x32314241, 66409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan WL_DRM_FORMAT_RGBA4444 = 0x32314152, 67409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan WL_DRM_FORMAT_BGRA4444 = 0x32314142, 68409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan WL_DRM_FORMAT_XRGB1555 = 0x35315258, 69409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan WL_DRM_FORMAT_XBGR1555 = 0x35314258, 70409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan WL_DRM_FORMAT_RGBX5551 = 0x35315852, 71409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan WL_DRM_FORMAT_BGRX5551 = 0x35315842, 72409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan WL_DRM_FORMAT_ARGB1555 = 0x35315241, 73409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan WL_DRM_FORMAT_ABGR1555 = 0x35314241, 74409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan WL_DRM_FORMAT_RGBA5551 = 0x35314152, 75409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan WL_DRM_FORMAT_BGRA5551 = 0x35314142, 76409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan WL_DRM_FORMAT_RGB565 = 0x36314752, 77409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan WL_DRM_FORMAT_BGR565 = 0x36314742, 78409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan WL_DRM_FORMAT_RGB888 = 0x34324752, 79409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan WL_DRM_FORMAT_BGR888 = 0x34324742, 80409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan WL_DRM_FORMAT_XRGB8888 = 0x34325258, 81409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan WL_DRM_FORMAT_XBGR8888 = 0x34324258, 82409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan WL_DRM_FORMAT_RGBX8888 = 0x34325852, 83409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan WL_DRM_FORMAT_BGRX8888 = 0x34325842, 84409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan WL_DRM_FORMAT_ARGB8888 = 0x34325241, 85409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan WL_DRM_FORMAT_ABGR8888 = 0x34324241, 86409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan WL_DRM_FORMAT_RGBA8888 = 0x34324152, 87409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan WL_DRM_FORMAT_BGRA8888 = 0x34324142, 88409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan WL_DRM_FORMAT_XRGB2101010 = 0x30335258, 89409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan WL_DRM_FORMAT_XBGR2101010 = 0x30334258, 90409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan WL_DRM_FORMAT_RGBX1010102 = 0x30335852, 91409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan WL_DRM_FORMAT_BGRX1010102 = 0x30335842, 92409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan WL_DRM_FORMAT_ARGB2101010 = 0x30335241, 93409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan WL_DRM_FORMAT_ABGR2101010 = 0x30334241, 94409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan WL_DRM_FORMAT_RGBA1010102 = 0x30334152, 95409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan WL_DRM_FORMAT_BGRA1010102 = 0x30334142, 96409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan WL_DRM_FORMAT_YUYV = 0x56595559, 97409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan WL_DRM_FORMAT_YVYU = 0x55595659, 98409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan WL_DRM_FORMAT_UYVY = 0x59565955, 99409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan WL_DRM_FORMAT_VYUY = 0x59555956, 100409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan WL_DRM_FORMAT_AYUV = 0x56555941, 101409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan WL_DRM_FORMAT_NV12 = 0x3231564e, 102409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan WL_DRM_FORMAT_NV21 = 0x3132564e, 103409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan WL_DRM_FORMAT_NV16 = 0x3631564e, 104409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan WL_DRM_FORMAT_NV61 = 0x3136564e, 105409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan WL_DRM_FORMAT_YUV410 = 0x39565559, 106409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan WL_DRM_FORMAT_YVU410 = 0x39555659, 107409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan WL_DRM_FORMAT_YUV411 = 0x31315559, 108409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan WL_DRM_FORMAT_YVU411 = 0x31315659, 109409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan WL_DRM_FORMAT_YUV420 = 0x32315559, 110409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan WL_DRM_FORMAT_YVU420 = 0x32315659, 111409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan WL_DRM_FORMAT_YUV422 = 0x36315559, 112409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan WL_DRM_FORMAT_YVU422 = 0x36315659, 113409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan WL_DRM_FORMAT_YUV444 = 0x34325559, 114409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan WL_DRM_FORMAT_YVU444 = 0x34325659, 115409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan}; 116409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan#endif /* WL_DRM_FORMAT_ENUM */ 117409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan 118409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuanstruct wl_drm_listener { 119409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan /** 120409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan * device - device 121409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan * @name: name 122409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan */ 123409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan void (*device)(void *data, 124409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan struct wl_drm *wl_drm, 125409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan const char *name); 126409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan /** 127409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan * format - format 128409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan * @format: format 129409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan */ 130409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan void (*format)(void *data, 131409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan struct wl_drm *wl_drm, 132409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan uint32_t format); 133409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan /** 134409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan * authenticated - authenticated 135409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan */ 136409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan void (*authenticated)(void *data, 137409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan struct wl_drm *wl_drm); 138409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan}; 139409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan 140409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuanstatic inline int 141409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuanwl_drm_add_listener(struct wl_drm *wl_drm, 142409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan const struct wl_drm_listener *listener, void *data) 143409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan{ 144409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan return wl_proxy_add_listener((struct wl_proxy *) wl_drm, 145409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan (void (**)(void)) listener, data); 146409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan} 147409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan 148409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan#define WL_DRM_AUTHENTICATE 0 149409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan#define WL_DRM_CREATE_BUFFER 1 150409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan#define WL_DRM_CREATE_PLANAR_BUFFER 2 151409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan 152409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuanstatic inline void 153409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuanwl_drm_set_user_data(struct wl_drm *wl_drm, void *user_data) 154409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan{ 155409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan wl_proxy_set_user_data((struct wl_proxy *) wl_drm, user_data); 156409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan} 157409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan 158409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuanstatic inline void * 159409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuanwl_drm_get_user_data(struct wl_drm *wl_drm) 160409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan{ 161409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan return wl_proxy_get_user_data((struct wl_proxy *) wl_drm); 162409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan} 163409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan 164409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuanstatic inline void 165409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuanwl_drm_destroy(struct wl_drm *wl_drm) 166409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan{ 167409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan wl_proxy_destroy((struct wl_proxy *) wl_drm); 168409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan} 169409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan 170409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuanstatic inline void 171409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuanwl_drm_authenticate(struct wl_drm *wl_drm, uint32_t id) 172409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan{ 173409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan wl_proxy_marshal((struct wl_proxy *) wl_drm, 174409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan WL_DRM_AUTHENTICATE, id); 175409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan} 176409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan 177409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuanstatic inline struct wl_buffer * 178409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuanwl_drm_create_buffer(struct wl_drm *wl_drm, uint32_t name, int32_t width, int32_t height, uint32_t stride, uint32_t format) 179409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan{ 180409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan struct wl_proxy *id; 181409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan 182409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan id = wl_proxy_create((struct wl_proxy *) wl_drm, 183409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan &wl_buffer_interface); 184409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan if (!id) 185409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan return NULL; 186409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan 187409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan wl_proxy_marshal((struct wl_proxy *) wl_drm, 188409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan WL_DRM_CREATE_BUFFER, id, name, width, height, stride, format); 189409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan 190409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan return (struct wl_buffer *) id; 191409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan} 192409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan 193409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuanstatic inline struct wl_buffer * 194409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuanwl_drm_create_planar_buffer(struct wl_drm *wl_drm, 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) 195409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan{ 196409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan struct wl_proxy *id; 197409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan 198409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan id = wl_proxy_create((struct wl_proxy *) wl_drm, 199409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan &wl_buffer_interface); 200409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan if (!id) 201409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan return NULL; 202409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan 203409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan wl_proxy_marshal((struct wl_proxy *) wl_drm, 204409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan WL_DRM_CREATE_PLANAR_BUFFER, id, name, width, height, format, offset0, stride0, offset1, stride1, offset2, stride2); 205409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan 206409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan return (struct wl_buffer *) id; 207409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan} 208409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan 209409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan#ifdef __cplusplus 210409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan} 211409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan#endif 212409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan 213409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan#endif 214