1*4882a593Smuzhiyun /* 2*4882a593Smuzhiyun * Virtio GPU Device 3*4882a593Smuzhiyun * 4*4882a593Smuzhiyun * Copyright Red Hat, Inc. 2013-2014 5*4882a593Smuzhiyun * 6*4882a593Smuzhiyun * Authors: 7*4882a593Smuzhiyun * Dave Airlie <airlied@redhat.com> 8*4882a593Smuzhiyun * Gerd Hoffmann <kraxel@redhat.com> 9*4882a593Smuzhiyun * 10*4882a593Smuzhiyun * This header is BSD licensed so anyone can use the definitions 11*4882a593Smuzhiyun * to implement compatible drivers/servers: 12*4882a593Smuzhiyun * 13*4882a593Smuzhiyun * Redistribution and use in source and binary forms, with or without 14*4882a593Smuzhiyun * modification, are permitted provided that the following conditions 15*4882a593Smuzhiyun * are met: 16*4882a593Smuzhiyun * 1. Redistributions of source code must retain the above copyright 17*4882a593Smuzhiyun * notice, this list of conditions and the following disclaimer. 18*4882a593Smuzhiyun * 2. Redistributions in binary form must reproduce the above copyright 19*4882a593Smuzhiyun * notice, this list of conditions and the following disclaimer in the 20*4882a593Smuzhiyun * documentation and/or other materials provided with the distribution. 21*4882a593Smuzhiyun * 3. Neither the name of IBM nor the names of its contributors 22*4882a593Smuzhiyun * may be used to endorse or promote products derived from this software 23*4882a593Smuzhiyun * without specific prior written permission. 24*4882a593Smuzhiyun * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 25*4882a593Smuzhiyun * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 26*4882a593Smuzhiyun * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 27*4882a593Smuzhiyun * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL IBM OR 28*4882a593Smuzhiyun * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 29*4882a593Smuzhiyun * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 30*4882a593Smuzhiyun * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF 31*4882a593Smuzhiyun * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 32*4882a593Smuzhiyun * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 33*4882a593Smuzhiyun * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT 34*4882a593Smuzhiyun * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 35*4882a593Smuzhiyun * SUCH DAMAGE. 36*4882a593Smuzhiyun */ 37*4882a593Smuzhiyun 38*4882a593Smuzhiyun #ifndef VIRTIO_GPU_HW_H 39*4882a593Smuzhiyun #define VIRTIO_GPU_HW_H 40*4882a593Smuzhiyun 41*4882a593Smuzhiyun #include <linux/types.h> 42*4882a593Smuzhiyun 43*4882a593Smuzhiyun /* 44*4882a593Smuzhiyun * VIRTIO_GPU_CMD_CTX_* 45*4882a593Smuzhiyun * VIRTIO_GPU_CMD_*_3D 46*4882a593Smuzhiyun */ 47*4882a593Smuzhiyun #define VIRTIO_GPU_F_VIRGL 0 48*4882a593Smuzhiyun 49*4882a593Smuzhiyun /* 50*4882a593Smuzhiyun * VIRTIO_GPU_CMD_GET_EDID 51*4882a593Smuzhiyun */ 52*4882a593Smuzhiyun #define VIRTIO_GPU_F_EDID 1 53*4882a593Smuzhiyun /* 54*4882a593Smuzhiyun * VIRTIO_GPU_CMD_RESOURCE_ASSIGN_UUID 55*4882a593Smuzhiyun */ 56*4882a593Smuzhiyun #define VIRTIO_GPU_F_RESOURCE_UUID 2 57*4882a593Smuzhiyun 58*4882a593Smuzhiyun enum virtio_gpu_ctrl_type { 59*4882a593Smuzhiyun VIRTIO_GPU_UNDEFINED = 0, 60*4882a593Smuzhiyun 61*4882a593Smuzhiyun /* 2d commands */ 62*4882a593Smuzhiyun VIRTIO_GPU_CMD_GET_DISPLAY_INFO = 0x0100, 63*4882a593Smuzhiyun VIRTIO_GPU_CMD_RESOURCE_CREATE_2D, 64*4882a593Smuzhiyun VIRTIO_GPU_CMD_RESOURCE_UNREF, 65*4882a593Smuzhiyun VIRTIO_GPU_CMD_SET_SCANOUT, 66*4882a593Smuzhiyun VIRTIO_GPU_CMD_RESOURCE_FLUSH, 67*4882a593Smuzhiyun VIRTIO_GPU_CMD_TRANSFER_TO_HOST_2D, 68*4882a593Smuzhiyun VIRTIO_GPU_CMD_RESOURCE_ATTACH_BACKING, 69*4882a593Smuzhiyun VIRTIO_GPU_CMD_RESOURCE_DETACH_BACKING, 70*4882a593Smuzhiyun VIRTIO_GPU_CMD_GET_CAPSET_INFO, 71*4882a593Smuzhiyun VIRTIO_GPU_CMD_GET_CAPSET, 72*4882a593Smuzhiyun VIRTIO_GPU_CMD_GET_EDID, 73*4882a593Smuzhiyun VIRTIO_GPU_CMD_RESOURCE_ASSIGN_UUID, 74*4882a593Smuzhiyun 75*4882a593Smuzhiyun /* 3d commands */ 76*4882a593Smuzhiyun VIRTIO_GPU_CMD_CTX_CREATE = 0x0200, 77*4882a593Smuzhiyun VIRTIO_GPU_CMD_CTX_DESTROY, 78*4882a593Smuzhiyun VIRTIO_GPU_CMD_CTX_ATTACH_RESOURCE, 79*4882a593Smuzhiyun VIRTIO_GPU_CMD_CTX_DETACH_RESOURCE, 80*4882a593Smuzhiyun VIRTIO_GPU_CMD_RESOURCE_CREATE_3D, 81*4882a593Smuzhiyun VIRTIO_GPU_CMD_TRANSFER_TO_HOST_3D, 82*4882a593Smuzhiyun VIRTIO_GPU_CMD_TRANSFER_FROM_HOST_3D, 83*4882a593Smuzhiyun VIRTIO_GPU_CMD_SUBMIT_3D, 84*4882a593Smuzhiyun 85*4882a593Smuzhiyun /* cursor commands */ 86*4882a593Smuzhiyun VIRTIO_GPU_CMD_UPDATE_CURSOR = 0x0300, 87*4882a593Smuzhiyun VIRTIO_GPU_CMD_MOVE_CURSOR, 88*4882a593Smuzhiyun 89*4882a593Smuzhiyun /* success responses */ 90*4882a593Smuzhiyun VIRTIO_GPU_RESP_OK_NODATA = 0x1100, 91*4882a593Smuzhiyun VIRTIO_GPU_RESP_OK_DISPLAY_INFO, 92*4882a593Smuzhiyun VIRTIO_GPU_RESP_OK_CAPSET_INFO, 93*4882a593Smuzhiyun VIRTIO_GPU_RESP_OK_CAPSET, 94*4882a593Smuzhiyun VIRTIO_GPU_RESP_OK_EDID, 95*4882a593Smuzhiyun VIRTIO_GPU_RESP_OK_RESOURCE_UUID, 96*4882a593Smuzhiyun 97*4882a593Smuzhiyun /* error responses */ 98*4882a593Smuzhiyun VIRTIO_GPU_RESP_ERR_UNSPEC = 0x1200, 99*4882a593Smuzhiyun VIRTIO_GPU_RESP_ERR_OUT_OF_MEMORY, 100*4882a593Smuzhiyun VIRTIO_GPU_RESP_ERR_INVALID_SCANOUT_ID, 101*4882a593Smuzhiyun VIRTIO_GPU_RESP_ERR_INVALID_RESOURCE_ID, 102*4882a593Smuzhiyun VIRTIO_GPU_RESP_ERR_INVALID_CONTEXT_ID, 103*4882a593Smuzhiyun VIRTIO_GPU_RESP_ERR_INVALID_PARAMETER, 104*4882a593Smuzhiyun }; 105*4882a593Smuzhiyun 106*4882a593Smuzhiyun #define VIRTIO_GPU_FLAG_FENCE (1 << 0) 107*4882a593Smuzhiyun 108*4882a593Smuzhiyun struct virtio_gpu_ctrl_hdr { 109*4882a593Smuzhiyun __le32 type; 110*4882a593Smuzhiyun __le32 flags; 111*4882a593Smuzhiyun __le64 fence_id; 112*4882a593Smuzhiyun __le32 ctx_id; 113*4882a593Smuzhiyun __le32 padding; 114*4882a593Smuzhiyun }; 115*4882a593Smuzhiyun 116*4882a593Smuzhiyun /* data passed in the cursor vq */ 117*4882a593Smuzhiyun 118*4882a593Smuzhiyun struct virtio_gpu_cursor_pos { 119*4882a593Smuzhiyun __le32 scanout_id; 120*4882a593Smuzhiyun __le32 x; 121*4882a593Smuzhiyun __le32 y; 122*4882a593Smuzhiyun __le32 padding; 123*4882a593Smuzhiyun }; 124*4882a593Smuzhiyun 125*4882a593Smuzhiyun /* VIRTIO_GPU_CMD_UPDATE_CURSOR, VIRTIO_GPU_CMD_MOVE_CURSOR */ 126*4882a593Smuzhiyun struct virtio_gpu_update_cursor { 127*4882a593Smuzhiyun struct virtio_gpu_ctrl_hdr hdr; 128*4882a593Smuzhiyun struct virtio_gpu_cursor_pos pos; /* update & move */ 129*4882a593Smuzhiyun __le32 resource_id; /* update only */ 130*4882a593Smuzhiyun __le32 hot_x; /* update only */ 131*4882a593Smuzhiyun __le32 hot_y; /* update only */ 132*4882a593Smuzhiyun __le32 padding; 133*4882a593Smuzhiyun }; 134*4882a593Smuzhiyun 135*4882a593Smuzhiyun /* data passed in the control vq, 2d related */ 136*4882a593Smuzhiyun 137*4882a593Smuzhiyun struct virtio_gpu_rect { 138*4882a593Smuzhiyun __le32 x; 139*4882a593Smuzhiyun __le32 y; 140*4882a593Smuzhiyun __le32 width; 141*4882a593Smuzhiyun __le32 height; 142*4882a593Smuzhiyun }; 143*4882a593Smuzhiyun 144*4882a593Smuzhiyun /* VIRTIO_GPU_CMD_RESOURCE_UNREF */ 145*4882a593Smuzhiyun struct virtio_gpu_resource_unref { 146*4882a593Smuzhiyun struct virtio_gpu_ctrl_hdr hdr; 147*4882a593Smuzhiyun __le32 resource_id; 148*4882a593Smuzhiyun __le32 padding; 149*4882a593Smuzhiyun }; 150*4882a593Smuzhiyun 151*4882a593Smuzhiyun /* VIRTIO_GPU_CMD_RESOURCE_CREATE_2D: create a 2d resource with a format */ 152*4882a593Smuzhiyun struct virtio_gpu_resource_create_2d { 153*4882a593Smuzhiyun struct virtio_gpu_ctrl_hdr hdr; 154*4882a593Smuzhiyun __le32 resource_id; 155*4882a593Smuzhiyun __le32 format; 156*4882a593Smuzhiyun __le32 width; 157*4882a593Smuzhiyun __le32 height; 158*4882a593Smuzhiyun }; 159*4882a593Smuzhiyun 160*4882a593Smuzhiyun /* VIRTIO_GPU_CMD_SET_SCANOUT */ 161*4882a593Smuzhiyun struct virtio_gpu_set_scanout { 162*4882a593Smuzhiyun struct virtio_gpu_ctrl_hdr hdr; 163*4882a593Smuzhiyun struct virtio_gpu_rect r; 164*4882a593Smuzhiyun __le32 scanout_id; 165*4882a593Smuzhiyun __le32 resource_id; 166*4882a593Smuzhiyun }; 167*4882a593Smuzhiyun 168*4882a593Smuzhiyun /* VIRTIO_GPU_CMD_RESOURCE_FLUSH */ 169*4882a593Smuzhiyun struct virtio_gpu_resource_flush { 170*4882a593Smuzhiyun struct virtio_gpu_ctrl_hdr hdr; 171*4882a593Smuzhiyun struct virtio_gpu_rect r; 172*4882a593Smuzhiyun __le32 resource_id; 173*4882a593Smuzhiyun __le32 padding; 174*4882a593Smuzhiyun }; 175*4882a593Smuzhiyun 176*4882a593Smuzhiyun /* VIRTIO_GPU_CMD_TRANSFER_TO_HOST_2D: simple transfer to_host */ 177*4882a593Smuzhiyun struct virtio_gpu_transfer_to_host_2d { 178*4882a593Smuzhiyun struct virtio_gpu_ctrl_hdr hdr; 179*4882a593Smuzhiyun struct virtio_gpu_rect r; 180*4882a593Smuzhiyun __le64 offset; 181*4882a593Smuzhiyun __le32 resource_id; 182*4882a593Smuzhiyun __le32 padding; 183*4882a593Smuzhiyun }; 184*4882a593Smuzhiyun 185*4882a593Smuzhiyun struct virtio_gpu_mem_entry { 186*4882a593Smuzhiyun __le64 addr; 187*4882a593Smuzhiyun __le32 length; 188*4882a593Smuzhiyun __le32 padding; 189*4882a593Smuzhiyun }; 190*4882a593Smuzhiyun 191*4882a593Smuzhiyun /* VIRTIO_GPU_CMD_RESOURCE_ATTACH_BACKING */ 192*4882a593Smuzhiyun struct virtio_gpu_resource_attach_backing { 193*4882a593Smuzhiyun struct virtio_gpu_ctrl_hdr hdr; 194*4882a593Smuzhiyun __le32 resource_id; 195*4882a593Smuzhiyun __le32 nr_entries; 196*4882a593Smuzhiyun }; 197*4882a593Smuzhiyun 198*4882a593Smuzhiyun /* VIRTIO_GPU_CMD_RESOURCE_DETACH_BACKING */ 199*4882a593Smuzhiyun struct virtio_gpu_resource_detach_backing { 200*4882a593Smuzhiyun struct virtio_gpu_ctrl_hdr hdr; 201*4882a593Smuzhiyun __le32 resource_id; 202*4882a593Smuzhiyun __le32 padding; 203*4882a593Smuzhiyun }; 204*4882a593Smuzhiyun 205*4882a593Smuzhiyun /* VIRTIO_GPU_RESP_OK_DISPLAY_INFO */ 206*4882a593Smuzhiyun #define VIRTIO_GPU_MAX_SCANOUTS 16 207*4882a593Smuzhiyun struct virtio_gpu_resp_display_info { 208*4882a593Smuzhiyun struct virtio_gpu_ctrl_hdr hdr; 209*4882a593Smuzhiyun struct virtio_gpu_display_one { 210*4882a593Smuzhiyun struct virtio_gpu_rect r; 211*4882a593Smuzhiyun __le32 enabled; 212*4882a593Smuzhiyun __le32 flags; 213*4882a593Smuzhiyun } pmodes[VIRTIO_GPU_MAX_SCANOUTS]; 214*4882a593Smuzhiyun }; 215*4882a593Smuzhiyun 216*4882a593Smuzhiyun /* data passed in the control vq, 3d related */ 217*4882a593Smuzhiyun 218*4882a593Smuzhiyun struct virtio_gpu_box { 219*4882a593Smuzhiyun __le32 x, y, z; 220*4882a593Smuzhiyun __le32 w, h, d; 221*4882a593Smuzhiyun }; 222*4882a593Smuzhiyun 223*4882a593Smuzhiyun /* VIRTIO_GPU_CMD_TRANSFER_TO_HOST_3D, VIRTIO_GPU_CMD_TRANSFER_FROM_HOST_3D */ 224*4882a593Smuzhiyun struct virtio_gpu_transfer_host_3d { 225*4882a593Smuzhiyun struct virtio_gpu_ctrl_hdr hdr; 226*4882a593Smuzhiyun struct virtio_gpu_box box; 227*4882a593Smuzhiyun __le64 offset; 228*4882a593Smuzhiyun __le32 resource_id; 229*4882a593Smuzhiyun __le32 level; 230*4882a593Smuzhiyun __le32 stride; 231*4882a593Smuzhiyun __le32 layer_stride; 232*4882a593Smuzhiyun }; 233*4882a593Smuzhiyun 234*4882a593Smuzhiyun /* VIRTIO_GPU_CMD_RESOURCE_CREATE_3D */ 235*4882a593Smuzhiyun #define VIRTIO_GPU_RESOURCE_FLAG_Y_0_TOP (1 << 0) 236*4882a593Smuzhiyun struct virtio_gpu_resource_create_3d { 237*4882a593Smuzhiyun struct virtio_gpu_ctrl_hdr hdr; 238*4882a593Smuzhiyun __le32 resource_id; 239*4882a593Smuzhiyun __le32 target; 240*4882a593Smuzhiyun __le32 format; 241*4882a593Smuzhiyun __le32 bind; 242*4882a593Smuzhiyun __le32 width; 243*4882a593Smuzhiyun __le32 height; 244*4882a593Smuzhiyun __le32 depth; 245*4882a593Smuzhiyun __le32 array_size; 246*4882a593Smuzhiyun __le32 last_level; 247*4882a593Smuzhiyun __le32 nr_samples; 248*4882a593Smuzhiyun __le32 flags; 249*4882a593Smuzhiyun __le32 padding; 250*4882a593Smuzhiyun }; 251*4882a593Smuzhiyun 252*4882a593Smuzhiyun /* VIRTIO_GPU_CMD_CTX_CREATE */ 253*4882a593Smuzhiyun struct virtio_gpu_ctx_create { 254*4882a593Smuzhiyun struct virtio_gpu_ctrl_hdr hdr; 255*4882a593Smuzhiyun __le32 nlen; 256*4882a593Smuzhiyun __le32 padding; 257*4882a593Smuzhiyun char debug_name[64]; 258*4882a593Smuzhiyun }; 259*4882a593Smuzhiyun 260*4882a593Smuzhiyun /* VIRTIO_GPU_CMD_CTX_DESTROY */ 261*4882a593Smuzhiyun struct virtio_gpu_ctx_destroy { 262*4882a593Smuzhiyun struct virtio_gpu_ctrl_hdr hdr; 263*4882a593Smuzhiyun }; 264*4882a593Smuzhiyun 265*4882a593Smuzhiyun /* VIRTIO_GPU_CMD_CTX_ATTACH_RESOURCE, VIRTIO_GPU_CMD_CTX_DETACH_RESOURCE */ 266*4882a593Smuzhiyun struct virtio_gpu_ctx_resource { 267*4882a593Smuzhiyun struct virtio_gpu_ctrl_hdr hdr; 268*4882a593Smuzhiyun __le32 resource_id; 269*4882a593Smuzhiyun __le32 padding; 270*4882a593Smuzhiyun }; 271*4882a593Smuzhiyun 272*4882a593Smuzhiyun /* VIRTIO_GPU_CMD_SUBMIT_3D */ 273*4882a593Smuzhiyun struct virtio_gpu_cmd_submit { 274*4882a593Smuzhiyun struct virtio_gpu_ctrl_hdr hdr; 275*4882a593Smuzhiyun __le32 size; 276*4882a593Smuzhiyun __le32 padding; 277*4882a593Smuzhiyun }; 278*4882a593Smuzhiyun 279*4882a593Smuzhiyun #define VIRTIO_GPU_CAPSET_VIRGL 1 280*4882a593Smuzhiyun #define VIRTIO_GPU_CAPSET_VIRGL2 2 281*4882a593Smuzhiyun 282*4882a593Smuzhiyun /* VIRTIO_GPU_CMD_GET_CAPSET_INFO */ 283*4882a593Smuzhiyun struct virtio_gpu_get_capset_info { 284*4882a593Smuzhiyun struct virtio_gpu_ctrl_hdr hdr; 285*4882a593Smuzhiyun __le32 capset_index; 286*4882a593Smuzhiyun __le32 padding; 287*4882a593Smuzhiyun }; 288*4882a593Smuzhiyun 289*4882a593Smuzhiyun /* VIRTIO_GPU_RESP_OK_CAPSET_INFO */ 290*4882a593Smuzhiyun struct virtio_gpu_resp_capset_info { 291*4882a593Smuzhiyun struct virtio_gpu_ctrl_hdr hdr; 292*4882a593Smuzhiyun __le32 capset_id; 293*4882a593Smuzhiyun __le32 capset_max_version; 294*4882a593Smuzhiyun __le32 capset_max_size; 295*4882a593Smuzhiyun __le32 padding; 296*4882a593Smuzhiyun }; 297*4882a593Smuzhiyun 298*4882a593Smuzhiyun /* VIRTIO_GPU_CMD_GET_CAPSET */ 299*4882a593Smuzhiyun struct virtio_gpu_get_capset { 300*4882a593Smuzhiyun struct virtio_gpu_ctrl_hdr hdr; 301*4882a593Smuzhiyun __le32 capset_id; 302*4882a593Smuzhiyun __le32 capset_version; 303*4882a593Smuzhiyun }; 304*4882a593Smuzhiyun 305*4882a593Smuzhiyun /* VIRTIO_GPU_RESP_OK_CAPSET */ 306*4882a593Smuzhiyun struct virtio_gpu_resp_capset { 307*4882a593Smuzhiyun struct virtio_gpu_ctrl_hdr hdr; 308*4882a593Smuzhiyun __u8 capset_data[]; 309*4882a593Smuzhiyun }; 310*4882a593Smuzhiyun 311*4882a593Smuzhiyun /* VIRTIO_GPU_CMD_GET_EDID */ 312*4882a593Smuzhiyun struct virtio_gpu_cmd_get_edid { 313*4882a593Smuzhiyun struct virtio_gpu_ctrl_hdr hdr; 314*4882a593Smuzhiyun __le32 scanout; 315*4882a593Smuzhiyun __le32 padding; 316*4882a593Smuzhiyun }; 317*4882a593Smuzhiyun 318*4882a593Smuzhiyun /* VIRTIO_GPU_RESP_OK_EDID */ 319*4882a593Smuzhiyun struct virtio_gpu_resp_edid { 320*4882a593Smuzhiyun struct virtio_gpu_ctrl_hdr hdr; 321*4882a593Smuzhiyun __le32 size; 322*4882a593Smuzhiyun __le32 padding; 323*4882a593Smuzhiyun __u8 edid[1024]; 324*4882a593Smuzhiyun }; 325*4882a593Smuzhiyun 326*4882a593Smuzhiyun #define VIRTIO_GPU_EVENT_DISPLAY (1 << 0) 327*4882a593Smuzhiyun 328*4882a593Smuzhiyun struct virtio_gpu_config { 329*4882a593Smuzhiyun __le32 events_read; 330*4882a593Smuzhiyun __le32 events_clear; 331*4882a593Smuzhiyun __le32 num_scanouts; 332*4882a593Smuzhiyun __le32 num_capsets; 333*4882a593Smuzhiyun }; 334*4882a593Smuzhiyun 335*4882a593Smuzhiyun /* simple formats for fbcon/X use */ 336*4882a593Smuzhiyun enum virtio_gpu_formats { 337*4882a593Smuzhiyun VIRTIO_GPU_FORMAT_B8G8R8A8_UNORM = 1, 338*4882a593Smuzhiyun VIRTIO_GPU_FORMAT_B8G8R8X8_UNORM = 2, 339*4882a593Smuzhiyun VIRTIO_GPU_FORMAT_A8R8G8B8_UNORM = 3, 340*4882a593Smuzhiyun VIRTIO_GPU_FORMAT_X8R8G8B8_UNORM = 4, 341*4882a593Smuzhiyun 342*4882a593Smuzhiyun VIRTIO_GPU_FORMAT_R8G8B8A8_UNORM = 67, 343*4882a593Smuzhiyun VIRTIO_GPU_FORMAT_X8B8G8R8_UNORM = 68, 344*4882a593Smuzhiyun 345*4882a593Smuzhiyun VIRTIO_GPU_FORMAT_A8B8G8R8_UNORM = 121, 346*4882a593Smuzhiyun VIRTIO_GPU_FORMAT_R8G8B8X8_UNORM = 134, 347*4882a593Smuzhiyun }; 348*4882a593Smuzhiyun 349*4882a593Smuzhiyun /* VIRTIO_GPU_CMD_RESOURCE_ASSIGN_UUID */ 350*4882a593Smuzhiyun struct virtio_gpu_resource_assign_uuid { 351*4882a593Smuzhiyun struct virtio_gpu_ctrl_hdr hdr; 352*4882a593Smuzhiyun __le32 resource_id; 353*4882a593Smuzhiyun __le32 padding; 354*4882a593Smuzhiyun }; 355*4882a593Smuzhiyun 356*4882a593Smuzhiyun /* VIRTIO_GPU_RESP_OK_RESOURCE_UUID */ 357*4882a593Smuzhiyun struct virtio_gpu_resp_resource_uuid { 358*4882a593Smuzhiyun struct virtio_gpu_ctrl_hdr hdr; 359*4882a593Smuzhiyun __u8 uuid[16]; 360*4882a593Smuzhiyun }; 361*4882a593Smuzhiyun 362*4882a593Smuzhiyun #endif 363