1 /**************************************************************************** 2 **************************************************************************** 3 *** 4 *** This header was automatically generated from a Linux kernel header 5 *** of the same name, to make information necessary for userspace to 6 *** call into the kernel available to libc. It contains only constants, 7 *** structures, and macros generated from the original header, and thus, 8 *** contains no copyrightable information. 9 *** 10 *** To edit the content of this header, modify the corresponding 11 *** source file (e.g. under external/kernel-headers/original/) then 12 *** run bionic/libc/kernel/tools/update_all.py 13 *** 14 *** Any manual change here will be lost the next time this script will 15 *** be run. You've been warned! 16 *** 17 **************************************************************************** 18 ****************************************************************************/ 19 #ifndef __VMWGFX_DRM_H__ 20 #define __VMWGFX_DRM_H__ 21 #include "drm.h" 22 #ifdef __cplusplus 23 #endif 24 #define DRM_VMW_MAX_SURFACE_FACES 6 25 #define DRM_VMW_MAX_MIP_LEVELS 24 26 #define DRM_VMW_GET_PARAM 0 27 #define DRM_VMW_ALLOC_DMABUF 1 28 #define DRM_VMW_UNREF_DMABUF 2 29 #define DRM_VMW_CURSOR_BYPASS 3 30 #define DRM_VMW_CONTROL_STREAM 4 31 #define DRM_VMW_CLAIM_STREAM 5 32 #define DRM_VMW_UNREF_STREAM 6 33 #define DRM_VMW_CREATE_CONTEXT 7 34 #define DRM_VMW_UNREF_CONTEXT 8 35 #define DRM_VMW_CREATE_SURFACE 9 36 #define DRM_VMW_UNREF_SURFACE 10 37 #define DRM_VMW_REF_SURFACE 11 38 #define DRM_VMW_EXECBUF 12 39 #define DRM_VMW_GET_3D_CAP 13 40 #define DRM_VMW_FENCE_WAIT 14 41 #define DRM_VMW_FENCE_SIGNALED 15 42 #define DRM_VMW_FENCE_UNREF 16 43 #define DRM_VMW_FENCE_EVENT 17 44 #define DRM_VMW_PRESENT 18 45 #define DRM_VMW_PRESENT_READBACK 19 46 #define DRM_VMW_UPDATE_LAYOUT 20 47 #define DRM_VMW_CREATE_SHADER 21 48 #define DRM_VMW_UNREF_SHADER 22 49 #define DRM_VMW_GB_SURFACE_CREATE 23 50 #define DRM_VMW_GB_SURFACE_REF 24 51 #define DRM_VMW_SYNCCPU 25 52 #define DRM_VMW_CREATE_EXTENDED_CONTEXT 26 53 #define DRM_VMW_PARAM_NUM_STREAMS 0 54 #define DRM_VMW_PARAM_NUM_FREE_STREAMS 1 55 #define DRM_VMW_PARAM_3D 2 56 #define DRM_VMW_PARAM_HW_CAPS 3 57 #define DRM_VMW_PARAM_FIFO_CAPS 4 58 #define DRM_VMW_PARAM_MAX_FB_SIZE 5 59 #define DRM_VMW_PARAM_FIFO_HW_VERSION 6 60 #define DRM_VMW_PARAM_MAX_SURF_MEMORY 7 61 #define DRM_VMW_PARAM_3D_CAPS_SIZE 8 62 #define DRM_VMW_PARAM_MAX_MOB_MEMORY 9 63 #define DRM_VMW_PARAM_MAX_MOB_SIZE 10 64 #define DRM_VMW_PARAM_SCREEN_TARGET 11 65 #define DRM_VMW_PARAM_DX 12 66 enum drm_vmw_handle_type { 67 DRM_VMW_HANDLE_LEGACY = 0, 68 DRM_VMW_HANDLE_PRIME = 1 69 }; 70 struct drm_vmw_getparam_arg { 71 __u64 value; 72 __u32 param; 73 __u32 pad64; 74 }; 75 struct drm_vmw_context_arg { 76 __s32 cid; 77 __u32 pad64; 78 }; 79 struct drm_vmw_surface_create_req { 80 __u32 flags; 81 __u32 format; 82 __u32 mip_levels[DRM_VMW_MAX_SURFACE_FACES]; 83 __u64 size_addr; 84 __s32 shareable; 85 __s32 scanout; 86 }; 87 struct drm_vmw_surface_arg { 88 __s32 sid; 89 enum drm_vmw_handle_type handle_type; 90 }; 91 struct drm_vmw_size { 92 __u32 width; 93 __u32 height; 94 __u32 depth; 95 __u32 pad64; 96 }; 97 union drm_vmw_surface_create_arg { 98 struct drm_vmw_surface_arg rep; 99 struct drm_vmw_surface_create_req req; 100 }; 101 union drm_vmw_surface_reference_arg { 102 struct drm_vmw_surface_create_req rep; 103 struct drm_vmw_surface_arg req; 104 }; 105 #define DRM_VMW_EXECBUF_VERSION 2 106 struct drm_vmw_execbuf_arg { 107 __u64 commands; 108 __u32 command_size; 109 __u32 throttle_us; 110 __u64 fence_rep; 111 __u32 version; 112 __u32 flags; 113 __u32 context_handle; 114 __u32 pad64; 115 }; 116 struct drm_vmw_fence_rep { 117 __u32 handle; 118 __u32 mask; 119 __u32 seqno; 120 __u32 passed_seqno; 121 __u32 pad64; 122 __s32 error; 123 }; 124 struct drm_vmw_alloc_dmabuf_req { 125 __u32 size; 126 __u32 pad64; 127 }; 128 struct drm_vmw_dmabuf_rep { 129 __u64 map_handle; 130 __u32 handle; 131 __u32 cur_gmr_id; 132 __u32 cur_gmr_offset; 133 __u32 pad64; 134 }; 135 union drm_vmw_alloc_dmabuf_arg { 136 struct drm_vmw_alloc_dmabuf_req req; 137 struct drm_vmw_dmabuf_rep rep; 138 }; 139 struct drm_vmw_unref_dmabuf_arg { 140 __u32 handle; 141 __u32 pad64; 142 }; 143 struct drm_vmw_rect { 144 __s32 x; 145 __s32 y; 146 __u32 w; 147 __u32 h; 148 }; 149 struct drm_vmw_control_stream_arg { 150 __u32 stream_id; 151 __u32 enabled; 152 __u32 flags; 153 __u32 color_key; 154 __u32 handle; 155 __u32 offset; 156 __s32 format; 157 __u32 size; 158 __u32 width; 159 __u32 height; 160 __u32 pitch[3]; 161 __u32 pad64; 162 struct drm_vmw_rect src; 163 struct drm_vmw_rect dst; 164 }; 165 #define DRM_VMW_CURSOR_BYPASS_ALL (1 << 0) 166 #define DRM_VMW_CURSOR_BYPASS_FLAGS (1) 167 struct drm_vmw_cursor_bypass_arg { 168 __u32 flags; 169 __u32 crtc_id; 170 __s32 xpos; 171 __s32 ypos; 172 __s32 xhot; 173 __s32 yhot; 174 }; 175 struct drm_vmw_stream_arg { 176 __u32 stream_id; 177 __u32 pad64; 178 }; 179 struct drm_vmw_get_3d_cap_arg { 180 __u64 buffer; 181 __u32 max_size; 182 __u32 pad64; 183 }; 184 #define DRM_VMW_FENCE_FLAG_EXEC (1 << 0) 185 #define DRM_VMW_FENCE_FLAG_QUERY (1 << 1) 186 #define DRM_VMW_WAIT_OPTION_UNREF (1 << 0) 187 struct drm_vmw_fence_wait_arg { 188 __u32 handle; 189 __s32 cookie_valid; 190 __u64 kernel_cookie; 191 __u64 timeout_us; 192 __s32 lazy; 193 __s32 flags; 194 __s32 wait_options; 195 __s32 pad64; 196 }; 197 struct drm_vmw_fence_signaled_arg { 198 __u32 handle; 199 __u32 flags; 200 __s32 signaled; 201 __u32 passed_seqno; 202 __u32 signaled_flags; 203 __u32 pad64; 204 }; 205 struct drm_vmw_fence_arg { 206 __u32 handle; 207 __u32 pad64; 208 }; 209 #define DRM_VMW_EVENT_FENCE_SIGNALED 0x80000000 210 struct drm_vmw_event_fence { 211 struct drm_event base; 212 __u64 user_data; 213 __u32 tv_sec; 214 __u32 tv_usec; 215 }; 216 #define DRM_VMW_FE_FLAG_REQ_TIME (1 << 0) 217 struct drm_vmw_fence_event_arg { 218 __u64 fence_rep; 219 __u64 user_data; 220 __u32 handle; 221 __u32 flags; 222 }; 223 struct drm_vmw_present_arg { 224 __u32 fb_id; 225 __u32 sid; 226 __s32 dest_x; 227 __s32 dest_y; 228 __u64 clips_ptr; 229 __u32 num_clips; 230 __u32 pad64; 231 }; 232 struct drm_vmw_present_readback_arg { 233 __u32 fb_id; 234 __u32 num_clips; 235 __u64 clips_ptr; 236 __u64 fence_rep; 237 }; 238 struct drm_vmw_update_layout_arg { 239 __u32 num_outputs; 240 __u32 pad64; 241 __u64 rects; 242 }; 243 enum drm_vmw_shader_type { 244 drm_vmw_shader_type_vs = 0, 245 drm_vmw_shader_type_ps, 246 }; 247 struct drm_vmw_shader_create_arg { 248 enum drm_vmw_shader_type shader_type; 249 __u32 size; 250 __u32 buffer_handle; 251 __u32 shader_handle; 252 __u64 offset; 253 }; 254 struct drm_vmw_shader_arg { 255 __u32 handle; 256 __u32 pad64; 257 }; 258 enum drm_vmw_surface_flags { 259 drm_vmw_surface_flag_shareable = (1 << 0), 260 drm_vmw_surface_flag_scanout = (1 << 1), 261 drm_vmw_surface_flag_create_buffer = (1 << 2) 262 }; 263 struct drm_vmw_gb_surface_create_req { 264 __u32 svga3d_flags; 265 __u32 format; 266 __u32 mip_levels; 267 enum drm_vmw_surface_flags drm_surface_flags; 268 __u32 multisample_count; 269 __u32 autogen_filter; 270 __u32 buffer_handle; 271 __u32 array_size; 272 struct drm_vmw_size base_size; 273 }; 274 struct drm_vmw_gb_surface_create_rep { 275 __u32 handle; 276 __u32 backup_size; 277 __u32 buffer_handle; 278 __u32 buffer_size; 279 __u64 buffer_map_handle; 280 }; 281 union drm_vmw_gb_surface_create_arg { 282 struct drm_vmw_gb_surface_create_rep rep; 283 struct drm_vmw_gb_surface_create_req req; 284 }; 285 struct drm_vmw_gb_surface_ref_rep { 286 struct drm_vmw_gb_surface_create_req creq; 287 struct drm_vmw_gb_surface_create_rep crep; 288 }; 289 union drm_vmw_gb_surface_reference_arg { 290 struct drm_vmw_gb_surface_ref_rep rep; 291 struct drm_vmw_surface_arg req; 292 }; 293 enum drm_vmw_synccpu_flags { 294 drm_vmw_synccpu_read = (1 << 0), 295 drm_vmw_synccpu_write = (1 << 1), 296 drm_vmw_synccpu_dontblock = (1 << 2), 297 drm_vmw_synccpu_allow_cs = (1 << 3) 298 }; 299 enum drm_vmw_synccpu_op { 300 drm_vmw_synccpu_grab, 301 drm_vmw_synccpu_release 302 }; 303 struct drm_vmw_synccpu_arg { 304 enum drm_vmw_synccpu_op op; 305 enum drm_vmw_synccpu_flags flags; 306 __u32 handle; 307 __u32 pad64; 308 }; 309 enum drm_vmw_extended_context { 310 drm_vmw_context_legacy, 311 drm_vmw_context_dx 312 }; 313 union drm_vmw_extended_context_arg { 314 enum drm_vmw_extended_context req; 315 struct drm_vmw_context_arg rep; 316 }; 317 #ifdef __cplusplus 318 #endif 319 #endif 320