1*4882a593Smuzhiyun<?xml version="1.0" encoding="UTF-8"?> 2*4882a593Smuzhiyun<protocol name="drm"> 3*4882a593Smuzhiyun 4*4882a593Smuzhiyun <copyright> 5*4882a593Smuzhiyun Copyright © 2008-2011 Kristian Høgsberg 6*4882a593Smuzhiyun Copyright © 2010-2011 Intel Corporation 7*4882a593Smuzhiyun 8*4882a593Smuzhiyun Permission to use, copy, modify, distribute, and sell this 9*4882a593Smuzhiyun software and its documentation for any purpose is hereby granted 10*4882a593Smuzhiyun without fee, provided that\n the above copyright notice appear in 11*4882a593Smuzhiyun all copies and that both that copyright notice and this permission 12*4882a593Smuzhiyun notice appear in supporting documentation, and that the name of 13*4882a593Smuzhiyun the copyright holders not be used in advertising or publicity 14*4882a593Smuzhiyun pertaining to distribution of the software without specific, 15*4882a593Smuzhiyun written prior permission. The copyright holders make no 16*4882a593Smuzhiyun representations about the suitability of this software for any 17*4882a593Smuzhiyun purpose. It is provided "as is" without express or implied 18*4882a593Smuzhiyun warranty. 19*4882a593Smuzhiyun 20*4882a593Smuzhiyun THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS 21*4882a593Smuzhiyun SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND 22*4882a593Smuzhiyun FITNESS, IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY 23*4882a593Smuzhiyun SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 24*4882a593Smuzhiyun WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN 25*4882a593Smuzhiyun AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, 26*4882a593Smuzhiyun ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF 27*4882a593Smuzhiyun THIS SOFTWARE. 28*4882a593Smuzhiyun </copyright> 29*4882a593Smuzhiyun 30*4882a593Smuzhiyun <!-- drm support. This object is created by the server and published 31*4882a593Smuzhiyun using the display's global event. --> 32*4882a593Smuzhiyun <interface name="wl_drm" version="2"> 33*4882a593Smuzhiyun <enum name="error"> 34*4882a593Smuzhiyun <entry name="authenticate_fail" value="0"/> 35*4882a593Smuzhiyun <entry name="invalid_format" value="1"/> 36*4882a593Smuzhiyun <entry name="invalid_name" value="2"/> 37*4882a593Smuzhiyun </enum> 38*4882a593Smuzhiyun 39*4882a593Smuzhiyun <enum name="format"> 40*4882a593Smuzhiyun <!-- The drm format codes match the #defines in drm_fourcc.h. 41*4882a593Smuzhiyun The formats actually supported by the compositor will be 42*4882a593Smuzhiyun reported by the format event. --> 43*4882a593Smuzhiyun <entry name="c8" value="0x20203843"/> 44*4882a593Smuzhiyun <entry name="rgb332" value="0x38424752"/> 45*4882a593Smuzhiyun <entry name="bgr233" value="0x38524742"/> 46*4882a593Smuzhiyun <entry name="xrgb4444" value="0x32315258"/> 47*4882a593Smuzhiyun <entry name="xbgr4444" value="0x32314258"/> 48*4882a593Smuzhiyun <entry name="rgbx4444" value="0x32315852"/> 49*4882a593Smuzhiyun <entry name="bgrx4444" value="0x32315842"/> 50*4882a593Smuzhiyun <entry name="argb4444" value="0x32315241"/> 51*4882a593Smuzhiyun <entry name="abgr4444" value="0x32314241"/> 52*4882a593Smuzhiyun <entry name="rgba4444" value="0x32314152"/> 53*4882a593Smuzhiyun <entry name="bgra4444" value="0x32314142"/> 54*4882a593Smuzhiyun <entry name="xrgb1555" value="0x35315258"/> 55*4882a593Smuzhiyun <entry name="xbgr1555" value="0x35314258"/> 56*4882a593Smuzhiyun <entry name="rgbx5551" value="0x35315852"/> 57*4882a593Smuzhiyun <entry name="bgrx5551" value="0x35315842"/> 58*4882a593Smuzhiyun <entry name="argb1555" value="0x35315241"/> 59*4882a593Smuzhiyun <entry name="abgr1555" value="0x35314241"/> 60*4882a593Smuzhiyun <entry name="rgba5551" value="0x35314152"/> 61*4882a593Smuzhiyun <entry name="bgra5551" value="0x35314142"/> 62*4882a593Smuzhiyun <entry name="rgb565" value="0x36314752"/> 63*4882a593Smuzhiyun <entry name="bgr565" value="0x36314742"/> 64*4882a593Smuzhiyun <entry name="rgb888" value="0x34324752"/> 65*4882a593Smuzhiyun <entry name="bgr888" value="0x34324742"/> 66*4882a593Smuzhiyun <entry name="xrgb8888" value="0x34325258"/> 67*4882a593Smuzhiyun <entry name="xbgr8888" value="0x34324258"/> 68*4882a593Smuzhiyun <entry name="rgbx8888" value="0x34325852"/> 69*4882a593Smuzhiyun <entry name="bgrx8888" value="0x34325842"/> 70*4882a593Smuzhiyun <entry name="argb8888" value="0x34325241"/> 71*4882a593Smuzhiyun <entry name="abgr8888" value="0x34324241"/> 72*4882a593Smuzhiyun <entry name="rgba8888" value="0x34324152"/> 73*4882a593Smuzhiyun <entry name="bgra8888" value="0x34324142"/> 74*4882a593Smuzhiyun <entry name="xrgb2101010" value="0x30335258"/> 75*4882a593Smuzhiyun <entry name="xbgr2101010" value="0x30334258"/> 76*4882a593Smuzhiyun <entry name="rgbx1010102" value="0x30335852"/> 77*4882a593Smuzhiyun <entry name="bgrx1010102" value="0x30335842"/> 78*4882a593Smuzhiyun <entry name="argb2101010" value="0x30335241"/> 79*4882a593Smuzhiyun <entry name="abgr2101010" value="0x30334241"/> 80*4882a593Smuzhiyun <entry name="rgba1010102" value="0x30334152"/> 81*4882a593Smuzhiyun <entry name="bgra1010102" value="0x30334142"/> 82*4882a593Smuzhiyun <entry name="yuyv" value="0x56595559"/> 83*4882a593Smuzhiyun <entry name="yvyu" value="0x55595659"/> 84*4882a593Smuzhiyun <entry name="uyvy" value="0x59565955"/> 85*4882a593Smuzhiyun <entry name="vyuy" value="0x59555956"/> 86*4882a593Smuzhiyun <entry name="ayuv" value="0x56555941"/> 87*4882a593Smuzhiyun <entry name="nv12" value="0x3231564e"/> 88*4882a593Smuzhiyun <entry name="nv21" value="0x3132564e"/> 89*4882a593Smuzhiyun <entry name="nv16" value="0x3631564e"/> 90*4882a593Smuzhiyun <entry name="nv61" value="0x3136564e"/> 91*4882a593Smuzhiyun <entry name="yuv410" value="0x39565559"/> 92*4882a593Smuzhiyun <entry name="yvu410" value="0x39555659"/> 93*4882a593Smuzhiyun <entry name="yuv411" value="0x31315559"/> 94*4882a593Smuzhiyun <entry name="yvu411" value="0x31315659"/> 95*4882a593Smuzhiyun <entry name="yuv420" value="0x32315559"/> 96*4882a593Smuzhiyun <entry name="yvu420" value="0x32315659"/> 97*4882a593Smuzhiyun <entry name="yuv422" value="0x36315559"/> 98*4882a593Smuzhiyun <entry name="yvu422" value="0x36315659"/> 99*4882a593Smuzhiyun <entry name="yuv444" value="0x34325559"/> 100*4882a593Smuzhiyun <entry name="yvu444" value="0x34325659"/> 101*4882a593Smuzhiyun </enum> 102*4882a593Smuzhiyun 103*4882a593Smuzhiyun <!-- Call this request with the magic received from drmGetMagic(). 104*4882a593Smuzhiyun It will be passed on to the drmAuthMagic() or 105*4882a593Smuzhiyun DRIAuthConnection() call. This authentication must be 106*4882a593Smuzhiyun completed before create_buffer could be used. --> 107*4882a593Smuzhiyun <request name="authenticate"> 108*4882a593Smuzhiyun <arg name="id" type="uint"/> 109*4882a593Smuzhiyun </request> 110*4882a593Smuzhiyun 111*4882a593Smuzhiyun <!-- Create a wayland buffer for the named DRM buffer. The DRM 112*4882a593Smuzhiyun surface must have a name using the flink ioctl --> 113*4882a593Smuzhiyun <request name="create_buffer"> 114*4882a593Smuzhiyun <arg name="id" type="new_id" interface="wl_buffer"/> 115*4882a593Smuzhiyun <arg name="name" type="uint"/> 116*4882a593Smuzhiyun <arg name="width" type="int"/> 117*4882a593Smuzhiyun <arg name="height" type="int"/> 118*4882a593Smuzhiyun <arg name="stride" type="uint"/> 119*4882a593Smuzhiyun <arg name="format" type="uint"/> 120*4882a593Smuzhiyun </request> 121*4882a593Smuzhiyun 122*4882a593Smuzhiyun <!-- Create a wayland buffer for the named DRM buffer. The DRM 123*4882a593Smuzhiyun surface must have a name using the flink ioctl --> 124*4882a593Smuzhiyun <request name="create_planar_buffer"> 125*4882a593Smuzhiyun <arg name="id" type="new_id" interface="wl_buffer"/> 126*4882a593Smuzhiyun <arg name="name" type="uint"/> 127*4882a593Smuzhiyun <arg name="width" type="int"/> 128*4882a593Smuzhiyun <arg name="height" type="int"/> 129*4882a593Smuzhiyun <arg name="format" type="uint"/> 130*4882a593Smuzhiyun <arg name="offset0" type="int"/> 131*4882a593Smuzhiyun <arg name="stride0" type="int"/> 132*4882a593Smuzhiyun <arg name="offset1" type="int"/> 133*4882a593Smuzhiyun <arg name="stride1" type="int"/> 134*4882a593Smuzhiyun <arg name="offset2" type="int"/> 135*4882a593Smuzhiyun <arg name="stride2" type="int"/> 136*4882a593Smuzhiyun </request> 137*4882a593Smuzhiyun 138*4882a593Smuzhiyun <!-- Notification of the path of the drm device which is used by 139*4882a593Smuzhiyun the server. The client should use this device for creating 140*4882a593Smuzhiyun local buffers. Only buffers created from this device should 141*4882a593Smuzhiyun be be passed to the server using this drm object's 142*4882a593Smuzhiyun create_buffer request. --> 143*4882a593Smuzhiyun <event name="device"> 144*4882a593Smuzhiyun <arg name="name" type="string"/> 145*4882a593Smuzhiyun </event> 146*4882a593Smuzhiyun 147*4882a593Smuzhiyun <event name="format"> 148*4882a593Smuzhiyun <arg name="format" type="uint"/> 149*4882a593Smuzhiyun </event> 150*4882a593Smuzhiyun 151*4882a593Smuzhiyun <!-- Raised if the authenticate request succeeded --> 152*4882a593Smuzhiyun <event name="authenticated"/> 153*4882a593Smuzhiyun 154*4882a593Smuzhiyun <enum name="capability" since="2"> 155*4882a593Smuzhiyun <description summary="wl_drm capability bitmask"> 156*4882a593Smuzhiyun Bitmask of capabilities. 157*4882a593Smuzhiyun </description> 158*4882a593Smuzhiyun <entry name="prime" value="1" summary="wl_drm prime available"/> 159*4882a593Smuzhiyun </enum> 160*4882a593Smuzhiyun 161*4882a593Smuzhiyun <event name="capabilities"> 162*4882a593Smuzhiyun <arg name="value" type="uint"/> 163*4882a593Smuzhiyun </event> 164*4882a593Smuzhiyun 165*4882a593Smuzhiyun <!-- Version 2 additions --> 166*4882a593Smuzhiyun 167*4882a593Smuzhiyun <!-- Create a wayland buffer for the prime fd. Use for regular and planar 168*4882a593Smuzhiyun buffers. Pass 0 for offset and stride for unused planes. --> 169*4882a593Smuzhiyun <request name="create_prime_buffer" since="2"> 170*4882a593Smuzhiyun <arg name="id" type="new_id" interface="wl_buffer"/> 171*4882a593Smuzhiyun <arg name="name" type="fd"/> 172*4882a593Smuzhiyun <arg name="width" type="int"/> 173*4882a593Smuzhiyun <arg name="height" type="int"/> 174*4882a593Smuzhiyun <arg name="format" type="uint"/> 175*4882a593Smuzhiyun <arg name="offset0" type="int"/> 176*4882a593Smuzhiyun <arg name="stride0" type="int"/> 177*4882a593Smuzhiyun <arg name="offset1" type="int"/> 178*4882a593Smuzhiyun <arg name="stride1" type="int"/> 179*4882a593Smuzhiyun <arg name="offset2" type="int"/> 180*4882a593Smuzhiyun <arg name="stride2" type="int"/> 181*4882a593Smuzhiyun </request> 182*4882a593Smuzhiyun 183*4882a593Smuzhiyun </interface> 184*4882a593Smuzhiyun 185*4882a593Smuzhiyun</protocol> 186