1655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng/****************************************************************************
2655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng ****************************************************************************
3655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng ***
4655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng ***   This header was automatically generated from a Linux kernel header
5655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng ***   of the same name, to make information necessary for userspace to
6655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng ***   call into the kernel available to libc.  It contains only constants,
7655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng ***   structures, and macros generated from the original header, and thus,
8655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng ***   contains no copyrightable information.
9655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng ***
10655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng ***   To edit the content of this header, modify the corresponding
11655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng ***   source file (e.g. under external/kernel-headers/original/) then
12655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng ***   run bionic/libc/kernel/tools/update_all.py
13655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng ***
14655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng ***   Any manual change here will be lost the next time this script will
15655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng ***   be run. You've been warned!
16655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng ***
17655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng ****************************************************************************
18655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng ****************************************************************************/
19655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#ifndef __VMWGFX_DRM_H__
20655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define __VMWGFX_DRM_H__
21106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris#include "drm.h"
22106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris#ifdef __cplusplus
23106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris#endif
24106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris#define DRM_VMW_MAX_SURFACE_FACES 6
2538062f954c637861348dd8078cefb73554e6f12cChristopher Ferris#define DRM_VMW_MAX_MIP_LEVELS 24
26655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define DRM_VMW_GET_PARAM 0
27655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define DRM_VMW_ALLOC_DMABUF 1
28655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define DRM_VMW_UNREF_DMABUF 2
29525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferris#define DRM_VMW_HANDLE_CLOSE 2
3038062f954c637861348dd8078cefb73554e6f12cChristopher Ferris#define DRM_VMW_CURSOR_BYPASS 3
31655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define DRM_VMW_CONTROL_STREAM 4
32655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define DRM_VMW_CLAIM_STREAM 5
33655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define DRM_VMW_UNREF_STREAM 6
3438062f954c637861348dd8078cefb73554e6f12cChristopher Ferris#define DRM_VMW_CREATE_CONTEXT 7
35655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define DRM_VMW_UNREF_CONTEXT 8
36655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define DRM_VMW_CREATE_SURFACE 9
37655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define DRM_VMW_UNREF_SURFACE 10
3838062f954c637861348dd8078cefb73554e6f12cChristopher Ferris#define DRM_VMW_REF_SURFACE 11
39655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define DRM_VMW_EXECBUF 12
40655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define DRM_VMW_GET_3D_CAP 13
41655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define DRM_VMW_FENCE_WAIT 14
4238062f954c637861348dd8078cefb73554e6f12cChristopher Ferris#define DRM_VMW_FENCE_SIGNALED 15
43655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define DRM_VMW_FENCE_UNREF 16
44655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define DRM_VMW_FENCE_EVENT 17
45655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define DRM_VMW_PRESENT 18
4638062f954c637861348dd8078cefb73554e6f12cChristopher Ferris#define DRM_VMW_PRESENT_READBACK 19
47655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define DRM_VMW_UPDATE_LAYOUT 20
4838062f954c637861348dd8078cefb73554e6f12cChristopher Ferris#define DRM_VMW_CREATE_SHADER 21
4938062f954c637861348dd8078cefb73554e6f12cChristopher Ferris#define DRM_VMW_UNREF_SHADER 22
5038062f954c637861348dd8078cefb73554e6f12cChristopher Ferris#define DRM_VMW_GB_SURFACE_CREATE 23
5138062f954c637861348dd8078cefb73554e6f12cChristopher Ferris#define DRM_VMW_GB_SURFACE_REF 24
5238062f954c637861348dd8078cefb73554e6f12cChristopher Ferris#define DRM_VMW_SYNCCPU 25
5305d08e9716b5974d6ed08973f44930804890b902Christopher Ferris#define DRM_VMW_CREATE_EXTENDED_CONTEXT 26
5405d08e9716b5974d6ed08973f44930804890b902Christopher Ferris#define DRM_VMW_PARAM_NUM_STREAMS 0
55655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define DRM_VMW_PARAM_NUM_FREE_STREAMS 1
56655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define DRM_VMW_PARAM_3D 2
57655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define DRM_VMW_PARAM_HW_CAPS 3
5805d08e9716b5974d6ed08973f44930804890b902Christopher Ferris#define DRM_VMW_PARAM_FIFO_CAPS 4
59655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define DRM_VMW_PARAM_MAX_FB_SIZE 5
60655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define DRM_VMW_PARAM_FIFO_HW_VERSION 6
6138062f954c637861348dd8078cefb73554e6f12cChristopher Ferris#define DRM_VMW_PARAM_MAX_SURF_MEMORY 7
6205d08e9716b5974d6ed08973f44930804890b902Christopher Ferris#define DRM_VMW_PARAM_3D_CAPS_SIZE 8
6338062f954c637861348dd8078cefb73554e6f12cChristopher Ferris#define DRM_VMW_PARAM_MAX_MOB_MEMORY 9
6438062f954c637861348dd8078cefb73554e6f12cChristopher Ferris#define DRM_VMW_PARAM_MAX_MOB_SIZE 10
6505d08e9716b5974d6ed08973f44930804890b902Christopher Ferris#define DRM_VMW_PARAM_SCREEN_TARGET 11
6605d08e9716b5974d6ed08973f44930804890b902Christopher Ferris#define DRM_VMW_PARAM_DX 12
67ba8d4f460b51161eb82cf1006cb34a3cc1389f47Christopher Ferrisenum drm_vmw_handle_type {
68d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  DRM_VMW_HANDLE_LEGACY = 0,
69d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  DRM_VMW_HANDLE_PRIME = 1
70ba8d4f460b51161eb82cf1006cb34a3cc1389f47Christopher Ferris};
71655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengstruct drm_vmw_getparam_arg {
72106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris  __u64 value;
73106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris  __u32 param;
74106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris  __u32 pad64;
75655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng};
76106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferrisstruct drm_vmw_context_arg {
77106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris  __s32 cid;
78106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris  __u32 pad64;
79655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng};
80106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferrisstruct drm_vmw_surface_create_req {
81106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris  __u32 flags;
82106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris  __u32 format;
83106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris  __u32 mip_levels[DRM_VMW_MAX_SURFACE_FACES];
84106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris  __u64 size_addr;
85106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris  __s32 shareable;
86106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris  __s32 scanout;
87655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng};
88106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferrisstruct drm_vmw_surface_arg {
89106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris  __s32 sid;
90d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  enum drm_vmw_handle_type handle_type;
91655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng};
92655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengstruct drm_vmw_size {
93106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris  __u32 width;
94106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris  __u32 height;
95106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris  __u32 depth;
96106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris  __u32 pad64;
97655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng};
98655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengunion drm_vmw_surface_create_arg {
99d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  struct drm_vmw_surface_arg rep;
100d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  struct drm_vmw_surface_create_req req;
101655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng};
102655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengunion drm_vmw_surface_reference_arg {
103d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  struct drm_vmw_surface_create_req rep;
104d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  struct drm_vmw_surface_arg req;
105655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng};
10605d08e9716b5974d6ed08973f44930804890b902Christopher Ferris#define DRM_VMW_EXECBUF_VERSION 2
1071308ad3ab33294c3abfd96da12b6df58b381ce52Christopher Ferris#define DRM_VMW_EXECBUF_FLAG_IMPORT_FENCE_FD (1 << 0)
1081308ad3ab33294c3abfd96da12b6df58b381ce52Christopher Ferris#define DRM_VMW_EXECBUF_FLAG_EXPORT_FENCE_FD (1 << 1)
109655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengstruct drm_vmw_execbuf_arg {
110106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris  __u64 commands;
111106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris  __u32 command_size;
112106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris  __u32 throttle_us;
113106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris  __u64 fence_rep;
114106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris  __u32 version;
115106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris  __u32 flags;
116106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris  __u32 context_handle;
1171308ad3ab33294c3abfd96da12b6df58b381ce52Christopher Ferris  __s32 imported_fence_fd;
118655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng};
119655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengstruct drm_vmw_fence_rep {
120106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris  __u32 handle;
121106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris  __u32 mask;
122106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris  __u32 seqno;
123106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris  __u32 passed_seqno;
1241308ad3ab33294c3abfd96da12b6df58b381ce52Christopher Ferris  __s32 fd;
125106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris  __s32 error;
126655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng};
127655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengstruct drm_vmw_alloc_dmabuf_req {
128106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris  __u32 size;
129106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris  __u32 pad64;
130655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng};
131655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengstruct drm_vmw_dmabuf_rep {
132106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris  __u64 map_handle;
133106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris  __u32 handle;
134106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris  __u32 cur_gmr_id;
135106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris  __u32 cur_gmr_offset;
136106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris  __u32 pad64;
137655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng};
138655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengunion drm_vmw_alloc_dmabuf_arg {
139d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  struct drm_vmw_alloc_dmabuf_req req;
14005d08e9716b5974d6ed08973f44930804890b902Christopher Ferris  struct drm_vmw_dmabuf_rep rep;
141655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng};
142106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferrisstruct drm_vmw_unref_dmabuf_arg {
143106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris  __u32 handle;
144106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris  __u32 pad64;
145655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng};
146655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengstruct drm_vmw_rect {
147106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris  __s32 x;
148106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris  __s32 y;
149106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris  __u32 w;
150106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris  __u32 h;
151655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng};
15205d08e9716b5974d6ed08973f44930804890b902Christopher Ferrisstruct drm_vmw_control_stream_arg {
153106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris  __u32 stream_id;
154106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris  __u32 enabled;
155106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris  __u32 flags;
156106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris  __u32 color_key;
157106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris  __u32 handle;
158106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris  __u32 offset;
159106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris  __s32 format;
160106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris  __u32 size;
161106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris  __u32 width;
162106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris  __u32 height;
163106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris  __u32 pitch[3];
164106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris  __u32 pad64;
165d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  struct drm_vmw_rect src;
166d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  struct drm_vmw_rect dst;
167655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng};
16805d08e9716b5974d6ed08973f44930804890b902Christopher Ferris#define DRM_VMW_CURSOR_BYPASS_ALL (1 << 0)
169655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define DRM_VMW_CURSOR_BYPASS_FLAGS (1)
170106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferrisstruct drm_vmw_cursor_bypass_arg {
171106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris  __u32 flags;
172106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris  __u32 crtc_id;
173106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris  __s32 xpos;
174106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris  __s32 ypos;
175106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris  __s32 xhot;
176106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris  __s32 yhot;
177655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng};
178106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferrisstruct drm_vmw_stream_arg {
179106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris  __u32 stream_id;
180106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris  __u32 pad64;
181655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng};
182655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengstruct drm_vmw_get_3d_cap_arg {
183106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris  __u64 buffer;
184106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris  __u32 max_size;
185106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris  __u32 pad64;
186655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng};
187655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define DRM_VMW_FENCE_FLAG_EXEC (1 << 0)
18805d08e9716b5974d6ed08973f44930804890b902Christopher Ferris#define DRM_VMW_FENCE_FLAG_QUERY (1 << 1)
189655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define DRM_VMW_WAIT_OPTION_UNREF (1 << 0)
190655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengstruct drm_vmw_fence_wait_arg {
191106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris  __u32 handle;
192106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris  __s32 cookie_valid;
193106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris  __u64 kernel_cookie;
194106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris  __u64 timeout_us;
195106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris  __s32 lazy;
196106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris  __s32 flags;
197106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris  __s32 wait_options;
198106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris  __s32 pad64;
199655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng};
20005d08e9716b5974d6ed08973f44930804890b902Christopher Ferrisstruct drm_vmw_fence_signaled_arg {
201106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris  __u32 handle;
202106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris  __u32 flags;
203106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris  __s32 signaled;
204106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris  __u32 passed_seqno;
205106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris  __u32 signaled_flags;
206106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris  __u32 pad64;
207655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng};
208106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferrisstruct drm_vmw_fence_arg {
209106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris  __u32 handle;
210106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris  __u32 pad64;
211106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris};
21205d08e9716b5974d6ed08973f44930804890b902Christopher Ferris#define DRM_VMW_EVENT_FENCE_SIGNALED 0x80000000
213655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengstruct drm_vmw_event_fence {
214d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  struct drm_event base;
215106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris  __u64 user_data;
216106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris  __u32 tv_sec;
217106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris  __u32 tv_usec;
218655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng};
219655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define DRM_VMW_FE_FLAG_REQ_TIME (1 << 0)
22005d08e9716b5974d6ed08973f44930804890b902Christopher Ferrisstruct drm_vmw_fence_event_arg {
221106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris  __u64 fence_rep;
222106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris  __u64 user_data;
223106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris  __u32 handle;
224106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris  __u32 flags;
225655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng};
226655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengstruct drm_vmw_present_arg {
227106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris  __u32 fb_id;
228106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris  __u32 sid;
229106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris  __s32 dest_x;
230106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris  __s32 dest_y;
231106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris  __u64 clips_ptr;
232106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris  __u32 num_clips;
233106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris  __u32 pad64;
234655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng};
235655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengstruct drm_vmw_present_readback_arg {
236106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris  __u32 fb_id;
237106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris  __u32 num_clips;
238106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris  __u64 clips_ptr;
239106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris  __u64 fence_rep;
24005d08e9716b5974d6ed08973f44930804890b902Christopher Ferris};
241655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengstruct drm_vmw_update_layout_arg {
242106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris  __u32 num_outputs;
243106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris  __u32 pad64;
244106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris  __u64 rects;
24538062f954c637861348dd8078cefb73554e6f12cChristopher Ferris};
24638062f954c637861348dd8078cefb73554e6f12cChristopher Ferrisenum drm_vmw_shader_type {
247d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  drm_vmw_shader_type_vs = 0,
24805d08e9716b5974d6ed08973f44930804890b902Christopher Ferris  drm_vmw_shader_type_ps,
24938062f954c637861348dd8078cefb73554e6f12cChristopher Ferris};
25038062f954c637861348dd8078cefb73554e6f12cChristopher Ferrisstruct drm_vmw_shader_create_arg {
251d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  enum drm_vmw_shader_type shader_type;
252106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris  __u32 size;
253106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris  __u32 buffer_handle;
254106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris  __u32 shader_handle;
255106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris  __u64 offset;
25638062f954c637861348dd8078cefb73554e6f12cChristopher Ferris};
25738062f954c637861348dd8078cefb73554e6f12cChristopher Ferrisstruct drm_vmw_shader_arg {
258106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris  __u32 handle;
259106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris  __u32 pad64;
26038062f954c637861348dd8078cefb73554e6f12cChristopher Ferris};
26138062f954c637861348dd8078cefb73554e6f12cChristopher Ferrisenum drm_vmw_surface_flags {
262d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  drm_vmw_surface_flag_shareable = (1 << 0),
263d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  drm_vmw_surface_flag_scanout = (1 << 1),
264d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  drm_vmw_surface_flag_create_buffer = (1 << 2)
26538062f954c637861348dd8078cefb73554e6f12cChristopher Ferris};
26638062f954c637861348dd8078cefb73554e6f12cChristopher Ferrisstruct drm_vmw_gb_surface_create_req {
267106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris  __u32 svga3d_flags;
268106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris  __u32 format;
269106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris  __u32 mip_levels;
270d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  enum drm_vmw_surface_flags drm_surface_flags;
271106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris  __u32 multisample_count;
272106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris  __u32 autogen_filter;
273106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris  __u32 buffer_handle;
274106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris  __u32 array_size;
275d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  struct drm_vmw_size base_size;
27638062f954c637861348dd8078cefb73554e6f12cChristopher Ferris};
27738062f954c637861348dd8078cefb73554e6f12cChristopher Ferrisstruct drm_vmw_gb_surface_create_rep {
278106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris  __u32 handle;
279106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris  __u32 backup_size;
280106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris  __u32 buffer_handle;
281106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris  __u32 buffer_size;
282106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris  __u64 buffer_map_handle;
283106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris};
28438062f954c637861348dd8078cefb73554e6f12cChristopher Ferrisunion drm_vmw_gb_surface_create_arg {
285d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  struct drm_vmw_gb_surface_create_rep rep;
286d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  struct drm_vmw_gb_surface_create_req req;
28738062f954c637861348dd8078cefb73554e6f12cChristopher Ferris};
28838062f954c637861348dd8078cefb73554e6f12cChristopher Ferrisstruct drm_vmw_gb_surface_ref_rep {
289d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  struct drm_vmw_gb_surface_create_req creq;
290d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  struct drm_vmw_gb_surface_create_rep crep;
29138062f954c637861348dd8078cefb73554e6f12cChristopher Ferris};
29238062f954c637861348dd8078cefb73554e6f12cChristopher Ferrisunion drm_vmw_gb_surface_reference_arg {
293d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  struct drm_vmw_gb_surface_ref_rep rep;
294d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  struct drm_vmw_surface_arg req;
29538062f954c637861348dd8078cefb73554e6f12cChristopher Ferris};
29638062f954c637861348dd8078cefb73554e6f12cChristopher Ferrisenum drm_vmw_synccpu_flags {
297d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  drm_vmw_synccpu_read = (1 << 0),
298d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  drm_vmw_synccpu_write = (1 << 1),
299d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  drm_vmw_synccpu_dontblock = (1 << 2),
300d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  drm_vmw_synccpu_allow_cs = (1 << 3)
30138062f954c637861348dd8078cefb73554e6f12cChristopher Ferris};
30238062f954c637861348dd8078cefb73554e6f12cChristopher Ferrisenum drm_vmw_synccpu_op {
303d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  drm_vmw_synccpu_grab,
304d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  drm_vmw_synccpu_release
30538062f954c637861348dd8078cefb73554e6f12cChristopher Ferris};
30638062f954c637861348dd8078cefb73554e6f12cChristopher Ferrisstruct drm_vmw_synccpu_arg {
307d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  enum drm_vmw_synccpu_op op;
308d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  enum drm_vmw_synccpu_flags flags;
309106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris  __u32 handle;
310106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris  __u32 pad64;
311106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris};
31205d08e9716b5974d6ed08973f44930804890b902Christopher Ferrisenum drm_vmw_extended_context {
31305d08e9716b5974d6ed08973f44930804890b902Christopher Ferris  drm_vmw_context_legacy,
31405d08e9716b5974d6ed08973f44930804890b902Christopher Ferris  drm_vmw_context_dx
31505d08e9716b5974d6ed08973f44930804890b902Christopher Ferris};
31605d08e9716b5974d6ed08973f44930804890b902Christopher Ferrisunion drm_vmw_extended_context_arg {
31705d08e9716b5974d6ed08973f44930804890b902Christopher Ferris  enum drm_vmw_extended_context req;
31805d08e9716b5974d6ed08973f44930804890b902Christopher Ferris  struct drm_vmw_context_arg rep;
31905d08e9716b5974d6ed08973f44930804890b902Christopher Ferris};
320525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferrisstruct drm_vmw_handle_close_arg {
321525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferris  __u32 handle;
322525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferris  __u32 pad64;
323525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferris};
324106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris#ifdef __cplusplus
325106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris#endif
32638062f954c637861348dd8078cefb73554e6f12cChristopher Ferris#endif
327