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