122851890Sopenharmony_ci/*
222851890Sopenharmony_ci * This header was generated from the Linux kernel headers by update_headers.py,
322851890Sopenharmony_ci * to provide necessary information from kernel to userspace, such as constants,
422851890Sopenharmony_ci * structures, and macros, and thus, contains no copyrightable information.
522851890Sopenharmony_ci */
622851890Sopenharmony_ci#ifndef __VMWGFX_DRM_H__
722851890Sopenharmony_ci#define __VMWGFX_DRM_H__
822851890Sopenharmony_ci#include "drm.h"
922851890Sopenharmony_ci#if defined(__cplusplus)
1022851890Sopenharmony_ciextern "C" {
1122851890Sopenharmony_ci#endif
1222851890Sopenharmony_ci#define DRM_VMW_MAX_SURFACE_FACES 6
1322851890Sopenharmony_ci#define DRM_VMW_MAX_MIP_LEVELS 24
1422851890Sopenharmony_ci#define DRM_VMW_GET_PARAM            0
1522851890Sopenharmony_ci#define DRM_VMW_ALLOC_DMABUF         1
1622851890Sopenharmony_ci#define DRM_VMW_ALLOC_BO             1
1722851890Sopenharmony_ci#define DRM_VMW_UNREF_DMABUF         2
1822851890Sopenharmony_ci#define DRM_VMW_HANDLE_CLOSE         2
1922851890Sopenharmony_ci#define DRM_VMW_CURSOR_BYPASS        3
2022851890Sopenharmony_ci#define DRM_VMW_CONTROL_STREAM       4
2122851890Sopenharmony_ci#define DRM_VMW_CLAIM_STREAM         5
2222851890Sopenharmony_ci#define DRM_VMW_UNREF_STREAM         6
2322851890Sopenharmony_ci#define DRM_VMW_CREATE_CONTEXT       7
2422851890Sopenharmony_ci#define DRM_VMW_UNREF_CONTEXT        8
2522851890Sopenharmony_ci#define DRM_VMW_CREATE_SURFACE       9
2622851890Sopenharmony_ci#define DRM_VMW_UNREF_SURFACE        10
2722851890Sopenharmony_ci#define DRM_VMW_REF_SURFACE          11
2822851890Sopenharmony_ci#define DRM_VMW_EXECBUF              12
2922851890Sopenharmony_ci#define DRM_VMW_GET_3D_CAP           13
3022851890Sopenharmony_ci#define DRM_VMW_FENCE_WAIT           14
3122851890Sopenharmony_ci#define DRM_VMW_FENCE_SIGNALED       15
3222851890Sopenharmony_ci#define DRM_VMW_FENCE_UNREF          16
3322851890Sopenharmony_ci#define DRM_VMW_FENCE_EVENT          17
3422851890Sopenharmony_ci#define DRM_VMW_PRESENT              18
3522851890Sopenharmony_ci#define DRM_VMW_PRESENT_READBACK     19
3622851890Sopenharmony_ci#define DRM_VMW_UPDATE_LAYOUT        20
3722851890Sopenharmony_ci#define DRM_VMW_CREATE_SHADER        21
3822851890Sopenharmony_ci#define DRM_VMW_UNREF_SHADER         22
3922851890Sopenharmony_ci#define DRM_VMW_GB_SURFACE_CREATE    23
4022851890Sopenharmony_ci#define DRM_VMW_GB_SURFACE_REF       24
4122851890Sopenharmony_ci#define DRM_VMW_SYNCCPU              25
4222851890Sopenharmony_ci#define DRM_VMW_CREATE_EXTENDED_CONTEXT 26
4322851890Sopenharmony_ci#define DRM_VMW_GB_SURFACE_CREATE_EXT   27
4422851890Sopenharmony_ci#define DRM_VMW_GB_SURFACE_REF_EXT      28
4522851890Sopenharmony_ci#define DRM_VMW_PARAM_NUM_STREAMS      0
4622851890Sopenharmony_ci#define DRM_VMW_PARAM_NUM_FREE_STREAMS 1
4722851890Sopenharmony_ci#define DRM_VMW_PARAM_3D               2
4822851890Sopenharmony_ci#define DRM_VMW_PARAM_HW_CAPS          3
4922851890Sopenharmony_ci#define DRM_VMW_PARAM_FIFO_CAPS        4
5022851890Sopenharmony_ci#define DRM_VMW_PARAM_MAX_FB_SIZE      5
5122851890Sopenharmony_ci#define DRM_VMW_PARAM_FIFO_HW_VERSION  6
5222851890Sopenharmony_ci#define DRM_VMW_PARAM_MAX_SURF_MEMORY  7
5322851890Sopenharmony_ci#define DRM_VMW_PARAM_3D_CAPS_SIZE     8
5422851890Sopenharmony_ci#define DRM_VMW_PARAM_MAX_MOB_MEMORY   9
5522851890Sopenharmony_ci#define DRM_VMW_PARAM_MAX_MOB_SIZE     10
5622851890Sopenharmony_ci#define DRM_VMW_PARAM_SCREEN_TARGET    11
5722851890Sopenharmony_ci#define DRM_VMW_PARAM_DX               12
5822851890Sopenharmony_ci#define DRM_VMW_PARAM_HW_CAPS2         13
5922851890Sopenharmony_ci#define DRM_VMW_PARAM_SM4_1            14
6022851890Sopenharmony_cienum drm_vmw_handle_type {
6122851890Sopenharmony_ci	DRM_VMW_HANDLE_LEGACY = 0,
6222851890Sopenharmony_ci	DRM_VMW_HANDLE_PRIME = 1
6322851890Sopenharmony_ci};
6422851890Sopenharmony_cistruct drm_vmw_getparam_arg {
6522851890Sopenharmony_ci	__u64 value;
6622851890Sopenharmony_ci	__u32 param;
6722851890Sopenharmony_ci	__u32 pad64;
6822851890Sopenharmony_ci};
6922851890Sopenharmony_cistruct drm_vmw_context_arg {
7022851890Sopenharmony_ci	__s32 cid;
7122851890Sopenharmony_ci	__u32 pad64;
7222851890Sopenharmony_ci};
7322851890Sopenharmony_cistruct drm_vmw_surface_create_req {
7422851890Sopenharmony_ci	__u32 flags;
7522851890Sopenharmony_ci	__u32 format;
7622851890Sopenharmony_ci	__u32 mip_levels[DRM_VMW_MAX_SURFACE_FACES];
7722851890Sopenharmony_ci	__u64 size_addr;
7822851890Sopenharmony_ci	__s32 shareable;
7922851890Sopenharmony_ci	__s32 scanout;
8022851890Sopenharmony_ci};
8122851890Sopenharmony_cistruct drm_vmw_surface_arg {
8222851890Sopenharmony_ci	__s32 sid;
8322851890Sopenharmony_ci	enum drm_vmw_handle_type handle_type;
8422851890Sopenharmony_ci};
8522851890Sopenharmony_cistruct drm_vmw_size {
8622851890Sopenharmony_ci	__u32 width;
8722851890Sopenharmony_ci	__u32 height;
8822851890Sopenharmony_ci	__u32 depth;
8922851890Sopenharmony_ci	__u32 pad64;
9022851890Sopenharmony_ci};
9122851890Sopenharmony_ciunion drm_vmw_surface_create_arg {
9222851890Sopenharmony_ci	struct drm_vmw_surface_arg rep;
9322851890Sopenharmony_ci	struct drm_vmw_surface_create_req req;
9422851890Sopenharmony_ci};
9522851890Sopenharmony_ciunion drm_vmw_surface_reference_arg {
9622851890Sopenharmony_ci	struct drm_vmw_surface_create_req rep;
9722851890Sopenharmony_ci	struct drm_vmw_surface_arg req;
9822851890Sopenharmony_ci};
9922851890Sopenharmony_ci#define DRM_VMW_EXECBUF_VERSION 2
10022851890Sopenharmony_ci#define DRM_VMW_EXECBUF_FLAG_IMPORT_FENCE_FD (1 << 0)
10122851890Sopenharmony_ci#define DRM_VMW_EXECBUF_FLAG_EXPORT_FENCE_FD (1 << 1)
10222851890Sopenharmony_cistruct drm_vmw_execbuf_arg {
10322851890Sopenharmony_ci	__u64 commands;
10422851890Sopenharmony_ci	__u32 command_size;
10522851890Sopenharmony_ci	__u32 throttle_us;
10622851890Sopenharmony_ci	__u64 fence_rep;
10722851890Sopenharmony_ci	__u32 version;
10822851890Sopenharmony_ci	__u32 flags;
10922851890Sopenharmony_ci	__u32 context_handle;
11022851890Sopenharmony_ci	__s32 imported_fence_fd;
11122851890Sopenharmony_ci};
11222851890Sopenharmony_cistruct drm_vmw_fence_rep {
11322851890Sopenharmony_ci	__u32 handle;
11422851890Sopenharmony_ci	__u32 mask;
11522851890Sopenharmony_ci	__u32 seqno;
11622851890Sopenharmony_ci	__u32 passed_seqno;
11722851890Sopenharmony_ci	__s32 fd;
11822851890Sopenharmony_ci	__s32 error;
11922851890Sopenharmony_ci};
12022851890Sopenharmony_cistruct drm_vmw_alloc_bo_req {
12122851890Sopenharmony_ci	__u32 size;
12222851890Sopenharmony_ci	__u32 pad64;
12322851890Sopenharmony_ci};
12422851890Sopenharmony_ci#define drm_vmw_alloc_dmabuf_req drm_vmw_alloc_bo_req
12522851890Sopenharmony_cistruct drm_vmw_bo_rep {
12622851890Sopenharmony_ci	__u64 map_handle;
12722851890Sopenharmony_ci	__u32 handle;
12822851890Sopenharmony_ci	__u32 cur_gmr_id;
12922851890Sopenharmony_ci	__u32 cur_gmr_offset;
13022851890Sopenharmony_ci	__u32 pad64;
13122851890Sopenharmony_ci};
13222851890Sopenharmony_ci#define drm_vmw_dmabuf_rep drm_vmw_bo_rep
13322851890Sopenharmony_ciunion drm_vmw_alloc_bo_arg {
13422851890Sopenharmony_ci	struct drm_vmw_alloc_bo_req req;
13522851890Sopenharmony_ci	struct drm_vmw_bo_rep rep;
13622851890Sopenharmony_ci};
13722851890Sopenharmony_ci#define drm_vmw_alloc_dmabuf_arg drm_vmw_alloc_bo_arg
13822851890Sopenharmony_cistruct drm_vmw_rect {
13922851890Sopenharmony_ci	__s32 x;
14022851890Sopenharmony_ci	__s32 y;
14122851890Sopenharmony_ci	__u32 w;
14222851890Sopenharmony_ci	__u32 h;
14322851890Sopenharmony_ci};
14422851890Sopenharmony_cistruct drm_vmw_control_stream_arg {
14522851890Sopenharmony_ci	__u32 stream_id;
14622851890Sopenharmony_ci	__u32 enabled;
14722851890Sopenharmony_ci	__u32 flags;
14822851890Sopenharmony_ci	__u32 color_key;
14922851890Sopenharmony_ci	__u32 handle;
15022851890Sopenharmony_ci	__u32 offset;
15122851890Sopenharmony_ci	__s32 format;
15222851890Sopenharmony_ci	__u32 size;
15322851890Sopenharmony_ci	__u32 width;
15422851890Sopenharmony_ci	__u32 height;
15522851890Sopenharmony_ci	__u32 pitch[3];
15622851890Sopenharmony_ci	__u32 pad64;
15722851890Sopenharmony_ci	struct drm_vmw_rect src;
15822851890Sopenharmony_ci	struct drm_vmw_rect dst;
15922851890Sopenharmony_ci};
16022851890Sopenharmony_ci#define DRM_VMW_CURSOR_BYPASS_ALL    (1 << 0)
16122851890Sopenharmony_ci#define DRM_VMW_CURSOR_BYPASS_FLAGS       (1)
16222851890Sopenharmony_cistruct drm_vmw_cursor_bypass_arg {
16322851890Sopenharmony_ci	__u32 flags;
16422851890Sopenharmony_ci	__u32 crtc_id;
16522851890Sopenharmony_ci	__s32 xpos;
16622851890Sopenharmony_ci	__s32 ypos;
16722851890Sopenharmony_ci	__s32 xhot;
16822851890Sopenharmony_ci	__s32 yhot;
16922851890Sopenharmony_ci};
17022851890Sopenharmony_cistruct drm_vmw_stream_arg {
17122851890Sopenharmony_ci	__u32 stream_id;
17222851890Sopenharmony_ci	__u32 pad64;
17322851890Sopenharmony_ci};
17422851890Sopenharmony_cistruct drm_vmw_get_3d_cap_arg {
17522851890Sopenharmony_ci	__u64 buffer;
17622851890Sopenharmony_ci	__u32 max_size;
17722851890Sopenharmony_ci	__u32 pad64;
17822851890Sopenharmony_ci};
17922851890Sopenharmony_ci#define DRM_VMW_FENCE_FLAG_EXEC   (1 << 0)
18022851890Sopenharmony_ci#define DRM_VMW_FENCE_FLAG_QUERY  (1 << 1)
18122851890Sopenharmony_ci#define DRM_VMW_WAIT_OPTION_UNREF (1 << 0)
18222851890Sopenharmony_cistruct drm_vmw_fence_wait_arg {
18322851890Sopenharmony_ci	__u32 handle;
18422851890Sopenharmony_ci	__s32  cookie_valid;
18522851890Sopenharmony_ci	__u64 kernel_cookie;
18622851890Sopenharmony_ci	__u64 timeout_us;
18722851890Sopenharmony_ci	__s32 lazy;
18822851890Sopenharmony_ci	__s32 flags;
18922851890Sopenharmony_ci	__s32 wait_options;
19022851890Sopenharmony_ci	__s32 pad64;
19122851890Sopenharmony_ci};
19222851890Sopenharmony_cistruct drm_vmw_fence_signaled_arg {
19322851890Sopenharmony_ci	 __u32 handle;
19422851890Sopenharmony_ci	 __u32 flags;
19522851890Sopenharmony_ci	 __s32 signaled;
19622851890Sopenharmony_ci	 __u32 passed_seqno;
19722851890Sopenharmony_ci	 __u32 signaled_flags;
19822851890Sopenharmony_ci	 __u32 pad64;
19922851890Sopenharmony_ci};
20022851890Sopenharmony_cistruct drm_vmw_fence_arg {
20122851890Sopenharmony_ci	 __u32 handle;
20222851890Sopenharmony_ci	 __u32 pad64;
20322851890Sopenharmony_ci};
20422851890Sopenharmony_ci#define DRM_VMW_EVENT_FENCE_SIGNALED 0x80000000
20522851890Sopenharmony_cistruct drm_vmw_event_fence {
20622851890Sopenharmony_ci	struct drm_event base;
20722851890Sopenharmony_ci	__u64 user_data;
20822851890Sopenharmony_ci	__u32 tv_sec;
20922851890Sopenharmony_ci	__u32 tv_usec;
21022851890Sopenharmony_ci};
21122851890Sopenharmony_ci#define DRM_VMW_FE_FLAG_REQ_TIME (1 << 0)
21222851890Sopenharmony_cistruct drm_vmw_fence_event_arg {
21322851890Sopenharmony_ci	__u64 fence_rep;
21422851890Sopenharmony_ci	__u64 user_data;
21522851890Sopenharmony_ci	__u32 handle;
21622851890Sopenharmony_ci	__u32 flags;
21722851890Sopenharmony_ci};
21822851890Sopenharmony_cistruct drm_vmw_present_arg {
21922851890Sopenharmony_ci	__u32 fb_id;
22022851890Sopenharmony_ci	__u32 sid;
22122851890Sopenharmony_ci	__s32 dest_x;
22222851890Sopenharmony_ci	__s32 dest_y;
22322851890Sopenharmony_ci	__u64 clips_ptr;
22422851890Sopenharmony_ci	__u32 num_clips;
22522851890Sopenharmony_ci	__u32 pad64;
22622851890Sopenharmony_ci};
22722851890Sopenharmony_cistruct drm_vmw_present_readback_arg {
22822851890Sopenharmony_ci	 __u32 fb_id;
22922851890Sopenharmony_ci	 __u32 num_clips;
23022851890Sopenharmony_ci	 __u64 clips_ptr;
23122851890Sopenharmony_ci	 __u64 fence_rep;
23222851890Sopenharmony_ci};
23322851890Sopenharmony_cistruct drm_vmw_update_layout_arg {
23422851890Sopenharmony_ci	__u32 num_outputs;
23522851890Sopenharmony_ci	__u32 pad64;
23622851890Sopenharmony_ci	__u64 rects;
23722851890Sopenharmony_ci};
23822851890Sopenharmony_cienum drm_vmw_shader_type {
23922851890Sopenharmony_ci	drm_vmw_shader_type_vs = 0,
24022851890Sopenharmony_ci	drm_vmw_shader_type_ps,
24122851890Sopenharmony_ci};
24222851890Sopenharmony_cistruct drm_vmw_shader_create_arg {
24322851890Sopenharmony_ci	enum drm_vmw_shader_type shader_type;
24422851890Sopenharmony_ci	__u32 size;
24522851890Sopenharmony_ci	__u32 buffer_handle;
24622851890Sopenharmony_ci	__u32 shader_handle;
24722851890Sopenharmony_ci	__u64 offset;
24822851890Sopenharmony_ci};
24922851890Sopenharmony_cistruct drm_vmw_shader_arg {
25022851890Sopenharmony_ci	__u32 handle;
25122851890Sopenharmony_ci	__u32 pad64;
25222851890Sopenharmony_ci};
25322851890Sopenharmony_cienum drm_vmw_surface_flags {
25422851890Sopenharmony_ci	drm_vmw_surface_flag_shareable = (1 << 0),
25522851890Sopenharmony_ci	drm_vmw_surface_flag_scanout = (1 << 1),
25622851890Sopenharmony_ci	drm_vmw_surface_flag_create_buffer = (1 << 2)
25722851890Sopenharmony_ci};
25822851890Sopenharmony_cistruct drm_vmw_gb_surface_create_req {
25922851890Sopenharmony_ci	__u32 svga3d_flags;
26022851890Sopenharmony_ci	__u32 format;
26122851890Sopenharmony_ci	__u32 mip_levels;
26222851890Sopenharmony_ci	enum drm_vmw_surface_flags drm_surface_flags;
26322851890Sopenharmony_ci	__u32 multisample_count;
26422851890Sopenharmony_ci	__u32 autogen_filter;
26522851890Sopenharmony_ci	__u32 buffer_handle;
26622851890Sopenharmony_ci	__u32 array_size;
26722851890Sopenharmony_ci	struct drm_vmw_size base_size;
26822851890Sopenharmony_ci};
26922851890Sopenharmony_cistruct drm_vmw_gb_surface_create_rep {
27022851890Sopenharmony_ci	__u32 handle;
27122851890Sopenharmony_ci	__u32 backup_size;
27222851890Sopenharmony_ci	__u32 buffer_handle;
27322851890Sopenharmony_ci	__u32 buffer_size;
27422851890Sopenharmony_ci	__u64 buffer_map_handle;
27522851890Sopenharmony_ci};
27622851890Sopenharmony_ciunion drm_vmw_gb_surface_create_arg {
27722851890Sopenharmony_ci	struct drm_vmw_gb_surface_create_rep rep;
27822851890Sopenharmony_ci	struct drm_vmw_gb_surface_create_req req;
27922851890Sopenharmony_ci};
28022851890Sopenharmony_cistruct drm_vmw_gb_surface_ref_rep {
28122851890Sopenharmony_ci	struct drm_vmw_gb_surface_create_req creq;
28222851890Sopenharmony_ci	struct drm_vmw_gb_surface_create_rep crep;
28322851890Sopenharmony_ci};
28422851890Sopenharmony_ciunion drm_vmw_gb_surface_reference_arg {
28522851890Sopenharmony_ci	struct drm_vmw_gb_surface_ref_rep rep;
28622851890Sopenharmony_ci	struct drm_vmw_surface_arg req;
28722851890Sopenharmony_ci};
28822851890Sopenharmony_cienum drm_vmw_synccpu_flags {
28922851890Sopenharmony_ci	drm_vmw_synccpu_read = (1 << 0),
29022851890Sopenharmony_ci	drm_vmw_synccpu_write = (1 << 1),
29122851890Sopenharmony_ci	drm_vmw_synccpu_dontblock = (1 << 2),
29222851890Sopenharmony_ci	drm_vmw_synccpu_allow_cs = (1 << 3)
29322851890Sopenharmony_ci};
29422851890Sopenharmony_cienum drm_vmw_synccpu_op {
29522851890Sopenharmony_ci	drm_vmw_synccpu_grab,
29622851890Sopenharmony_ci	drm_vmw_synccpu_release
29722851890Sopenharmony_ci};
29822851890Sopenharmony_cistruct drm_vmw_synccpu_arg {
29922851890Sopenharmony_ci	enum drm_vmw_synccpu_op op;
30022851890Sopenharmony_ci	enum drm_vmw_synccpu_flags flags;
30122851890Sopenharmony_ci	__u32 handle;
30222851890Sopenharmony_ci	__u32 pad64;
30322851890Sopenharmony_ci};
30422851890Sopenharmony_cienum drm_vmw_extended_context {
30522851890Sopenharmony_ci	drm_vmw_context_legacy,
30622851890Sopenharmony_ci	drm_vmw_context_dx
30722851890Sopenharmony_ci};
30822851890Sopenharmony_ciunion drm_vmw_extended_context_arg {
30922851890Sopenharmony_ci	enum drm_vmw_extended_context req;
31022851890Sopenharmony_ci	struct drm_vmw_context_arg rep;
31122851890Sopenharmony_ci};
31222851890Sopenharmony_cistruct drm_vmw_handle_close_arg {
31322851890Sopenharmony_ci	__u32 handle;
31422851890Sopenharmony_ci	__u32 pad64;
31522851890Sopenharmony_ci};
31622851890Sopenharmony_ci#define drm_vmw_unref_dmabuf_arg drm_vmw_handle_close_arg
31722851890Sopenharmony_cienum drm_vmw_surface_version {
31822851890Sopenharmony_ci	drm_vmw_gb_surface_v1
31922851890Sopenharmony_ci};
32022851890Sopenharmony_cistruct drm_vmw_gb_surface_create_ext_req {
32122851890Sopenharmony_ci	struct drm_vmw_gb_surface_create_req base;
32222851890Sopenharmony_ci	enum drm_vmw_surface_version version;
32322851890Sopenharmony_ci	uint32_t svga3d_flags_upper_32_bits;
32422851890Sopenharmony_ci	SVGA3dMSPattern multisample_pattern;
32522851890Sopenharmony_ci	SVGA3dMSQualityLevel quality_level;
32622851890Sopenharmony_ci	uint64_t must_be_zero;
32722851890Sopenharmony_ci};
32822851890Sopenharmony_ciunion drm_vmw_gb_surface_create_ext_arg {
32922851890Sopenharmony_ci	struct drm_vmw_gb_surface_create_rep rep;
33022851890Sopenharmony_ci	struct drm_vmw_gb_surface_create_ext_req req;
33122851890Sopenharmony_ci};
33222851890Sopenharmony_cistruct drm_vmw_gb_surface_ref_ext_rep {
33322851890Sopenharmony_ci	struct drm_vmw_gb_surface_create_ext_req creq;
33422851890Sopenharmony_ci	struct drm_vmw_gb_surface_create_rep crep;
33522851890Sopenharmony_ci};
33622851890Sopenharmony_ciunion drm_vmw_gb_surface_reference_ext_arg {
33722851890Sopenharmony_ci	struct drm_vmw_gb_surface_ref_ext_rep rep;
33822851890Sopenharmony_ci	struct drm_vmw_surface_arg req;
33922851890Sopenharmony_ci};
34022851890Sopenharmony_ci#if defined(__cplusplus)
34122851890Sopenharmony_ci}
34222851890Sopenharmony_ci#endif
34322851890Sopenharmony_ci#endif
344