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