• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright 2024 The ChromiumOS Authors
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 use std::os::raw::c_void;
6 
7 pub const VIRTGPU_KUMQUAT_PARAM_3D_FEATURES: u64 = 1;
8 pub const VIRTGPU_KUMQUAT_PARAM_CAPSET_QUERY_FIX: u64 = 2;
9 #[allow(unused)]
10 pub const VIRTGPU_KUMQUAT_PARAM_RESOURCE_BLOB: u64 = 3;
11 #[allow(unused)]
12 pub const VIRTGPU_KUMQUAT_PARAM_HOST_VISIBLE: u64 = 4;
13 #[allow(unused)]
14 pub const VIRTGPU_KUMQUAT_PARAM_CROSS_DEVICE: u64 = 5;
15 pub const VIRTGPU_KUMQUAT_PARAM_CONTEXT_INIT: u64 = 6;
16 pub const VIRTGPU_KUMQUAT_PARAM_SUPPORTED_CAPSET_IDS: u64 = 7;
17 pub const VIRTGPU_KUMQUAT_PARAM_EXPLICIT_DEBUG_NAME: u64 = 8;
18 pub const VIRTGPU_KUMQUAT_PARAM_FENCE_PASSING: u64 = 9;
19 
20 #[allow(unused)]
21 pub const VIRTGPU_KUMQUAT_EXECBUF_FENCE_FD_IN: u32 = 0x01;
22 #[allow(unused)]
23 pub const VIRTGPU_KUMQUAT_EXECBUF_FENCE_FD_OUT: u32 = 0x02;
24 #[allow(unused)]
25 pub const VIRTGPU_KUMQUAT_EXECBUF_RING_IDX: u32 = 0x04;
26 #[allow(unused)]
27 pub const VIRTGPU_KUMQUAT_EXECBUF_SHAREABLE_IN: u32 = 0x08;
28 pub const VIRTGPU_KUMQUAT_EXECBUF_SHAREABLE_OUT: u32 = 0x10;
29 
30 #[allow(unused)]
31 pub const VIRTGPU_KUMQUAT_CONTEXT_PARAM_CAPSET_ID: u64 = 0x01;
32 #[allow(unused)]
33 pub const VIRTGPU_KUMQUAT_CONTEXT_PARAM_NUM_RINGS: u64 = 0x02;
34 #[allow(unused)]
35 pub const VIRTGPU_KUMQUAT_CONTEXT_PARAM_POLL_RING_MASK: u64 = 0x03;
36 
37 pub const VIRTGPU_KUMQUAT_EMULATED_EXPORT: u32 = 0x01;
38 pub const VIRTGPU_KUMQUAT_PAGE_SIZE: usize = 4096;
39 
40 #[repr(C)]
41 #[derive(Copy, Clone, Debug)]
42 pub struct VirtGpuParam {
43     pub param: u64,
44     pub value: u64,
45 }
46 
47 #[repr(C)]
48 #[derive(Copy, Clone, Debug)]
49 pub struct VirtGpuGetCaps {
50     pub cap_set_id: u32,
51     pub cap_set_ver: u32,
52     pub addr: u64,
53     pub size: u32,
54     pub pad: u32,
55 }
56 
57 #[repr(C)]
58 #[derive(Copy, Clone, Debug)]
59 pub struct VirtGpuContextInit {
60     pub num_params: u32,
61     pub pad: u32,
62     pub ctx_set_params: u64,
63 }
64 
65 #[repr(C)]
66 #[derive(Copy, Clone, Debug)]
67 pub struct VirtGpuResourceCreate3D {
68     pub target: u32,
69     pub format: u32,
70     pub bind: u32,
71     pub width: u32,
72     pub height: u32,
73     pub depth: u32,
74     pub array_size: u32,
75     pub last_level: u32,
76     pub nr_samples: u32,
77     pub flags: u32,
78     pub bo_handle: u32,
79     pub res_handle: u32,
80     pub size: u32,
81     pub stride: u32,
82 }
83 
84 #[repr(C)]
85 #[derive(Copy, Clone, Debug)]
86 pub struct VirtGpuBox {
87     pub x: u32,
88     pub y: u32,
89     pub z: u32,
90     pub w: u32,
91     pub h: u32,
92     pub d: u32,
93 }
94 
95 #[repr(C)]
96 #[derive(Copy, Clone, Debug)]
97 pub struct VirtGpuTransfer {
98     pub bo_handle: u32,
99     pub _box: VirtGpuBox,
100     pub level: u32,
101     pub offset: u64,
102     pub stride: u32,
103     pub layer_stride: u32,
104 }
105 
106 #[repr(C)]
107 #[derive(Copy, Clone, Debug)]
108 pub struct VirtGpuResourceCreateBlob {
109     pub blob_mem: u32,
110     pub blob_flags: u32,
111     pub bo_handle: u32,
112     pub res_handle: u32,
113     pub size: u64,
114     pub pad: u32,
115     pub cmd_size: u32,
116     pub cmd: u64,
117     pub blob_id: u64,
118 }
119 
120 #[repr(C)]
121 #[derive(Copy, Clone, Debug)]
122 pub struct VirtGpuResourceUnref {
123     pub bo_handle: u32,
124     pub pad: u32,
125 }
126 
127 #[repr(C)]
128 #[derive(Copy, Clone, Debug)]
129 pub struct VirtGpuExecBuffer {
130     pub flags: u32,
131     pub size: u32,
132     pub command: u64,
133     pub bo_handles: u64,
134     pub num_bo_handles: u32,
135     pub fence_handle: i64,
136     pub ring_idx: u32,
137     pub syncobj_stride: u32,
138     pub num_in_syncobjs: u32,
139     pub num_out_syncobjs: u32,
140     pub in_syncobjs: u64,
141     pub out_syncobjs: u64,
142 }
143 
144 #[repr(C)]
145 #[derive(Copy, Clone, Debug)]
146 pub struct VirtGpuWait {
147     pub bo_handle: u32,
148     pub flags: u32,
149 }
150 
151 #[repr(C)]
152 #[derive(Copy, Clone, Debug)]
153 pub struct VirtGpuResourceMap {
154     pub bo_handle: u32,
155     pub ptr: *mut c_void,
156     pub size: u64,
157 }
158 
159 #[repr(C)]
160 #[derive(Copy, Clone, Debug)]
161 pub struct VirtGpuResourceExport {
162     pub bo_handle: u32,
163     pub flags: u32,
164     pub os_handle: i64,
165     pub handle_type: u32,
166 }
167 
168 #[repr(C)]
169 #[derive(Copy, Clone, Debug)]
170 pub struct VirtGpuResourceImport {
171     pub os_handle: i64,
172     pub handle_type: u32,
173     pub bo_handle: u32,
174     pub res_handle: u32,
175     pub size: u64,
176 }
177