blob: 4000fd3e678e39f274662eaa65293c1f49594671 [file] [log] [blame]
Elliott Hughes180edef2023-11-02 00:08:05 +00001/*
2 * This file is auto-generated. Modifications will be lost.
3 *
4 * See https://android.googlesource.com/platform/bionic/+/master/libc/kernel/
5 * for more information.
6 */
Christopher Ferris9ce28842018-10-25 12:11:39 -07007#ifndef _V3D_DRM_H_
8#define _V3D_DRM_H_
9#include "drm.h"
10#ifdef __cplusplus
Christopher Ferris48fe0ae2019-01-10 15:59:33 -080011extern "C" {
Christopher Ferris9ce28842018-10-25 12:11:39 -070012#endif
13#define DRM_V3D_SUBMIT_CL 0x00
14#define DRM_V3D_WAIT_BO 0x01
15#define DRM_V3D_CREATE_BO 0x02
16#define DRM_V3D_MMAP_BO 0x03
17#define DRM_V3D_GET_PARAM 0x04
18#define DRM_V3D_GET_BO_OFFSET 0x05
Christopher Ferrisd842e432019-03-07 10:21:59 -080019#define DRM_V3D_SUBMIT_TFU 0x06
Christopher Ferrisb8a95e22019-10-02 18:29:20 -070020#define DRM_V3D_SUBMIT_CSD 0x07
Christopher Ferris2abfa9e2021-11-01 16:26:06 -070021#define DRM_V3D_PERFMON_CREATE 0x08
22#define DRM_V3D_PERFMON_DESTROY 0x09
23#define DRM_V3D_PERFMON_GET_VALUES 0x0a
Christopher Ferrisb830ddf2024-03-28 11:48:08 -070024#define DRM_V3D_SUBMIT_CPU 0x0b
Christopher Ferris9ce28842018-10-25 12:11:39 -070025#define DRM_IOCTL_V3D_SUBMIT_CL DRM_IOWR(DRM_COMMAND_BASE + DRM_V3D_SUBMIT_CL, struct drm_v3d_submit_cl)
26#define DRM_IOCTL_V3D_WAIT_BO DRM_IOWR(DRM_COMMAND_BASE + DRM_V3D_WAIT_BO, struct drm_v3d_wait_bo)
27#define DRM_IOCTL_V3D_CREATE_BO DRM_IOWR(DRM_COMMAND_BASE + DRM_V3D_CREATE_BO, struct drm_v3d_create_bo)
28#define DRM_IOCTL_V3D_MMAP_BO DRM_IOWR(DRM_COMMAND_BASE + DRM_V3D_MMAP_BO, struct drm_v3d_mmap_bo)
29#define DRM_IOCTL_V3D_GET_PARAM DRM_IOWR(DRM_COMMAND_BASE + DRM_V3D_GET_PARAM, struct drm_v3d_get_param)
30#define DRM_IOCTL_V3D_GET_BO_OFFSET DRM_IOWR(DRM_COMMAND_BASE + DRM_V3D_GET_BO_OFFSET, struct drm_v3d_get_bo_offset)
Christopher Ferrisd842e432019-03-07 10:21:59 -080031#define DRM_IOCTL_V3D_SUBMIT_TFU DRM_IOW(DRM_COMMAND_BASE + DRM_V3D_SUBMIT_TFU, struct drm_v3d_submit_tfu)
Christopher Ferrisb8a95e22019-10-02 18:29:20 -070032#define DRM_IOCTL_V3D_SUBMIT_CSD DRM_IOW(DRM_COMMAND_BASE + DRM_V3D_SUBMIT_CSD, struct drm_v3d_submit_csd)
Christopher Ferris2abfa9e2021-11-01 16:26:06 -070033#define DRM_IOCTL_V3D_PERFMON_CREATE DRM_IOWR(DRM_COMMAND_BASE + DRM_V3D_PERFMON_CREATE, struct drm_v3d_perfmon_create)
34#define DRM_IOCTL_V3D_PERFMON_DESTROY DRM_IOWR(DRM_COMMAND_BASE + DRM_V3D_PERFMON_DESTROY, struct drm_v3d_perfmon_destroy)
35#define DRM_IOCTL_V3D_PERFMON_GET_VALUES DRM_IOWR(DRM_COMMAND_BASE + DRM_V3D_PERFMON_GET_VALUES, struct drm_v3d_perfmon_get_values)
Christopher Ferrisb830ddf2024-03-28 11:48:08 -070036#define DRM_IOCTL_V3D_SUBMIT_CPU DRM_IOW(DRM_COMMAND_BASE + DRM_V3D_SUBMIT_CPU, struct drm_v3d_submit_cpu)
Christopher Ferrisd32ca142020-02-04 16:16:51 -080037#define DRM_V3D_SUBMIT_CL_FLUSH_CACHE 0x01
Christopher Ferrisa4792612022-01-10 13:51:15 -080038#define DRM_V3D_SUBMIT_EXTENSION 0x02
39struct drm_v3d_extension {
40 __u64 next;
41 __u32 id;
42#define DRM_V3D_EXT_ID_MULTI_SYNC 0x01
Christopher Ferrisb830ddf2024-03-28 11:48:08 -070043#define DRM_V3D_EXT_ID_CPU_INDIRECT_CSD 0x02
44#define DRM_V3D_EXT_ID_CPU_TIMESTAMP_QUERY 0x03
45#define DRM_V3D_EXT_ID_CPU_RESET_TIMESTAMP_QUERY 0x04
46#define DRM_V3D_EXT_ID_CPU_COPY_TIMESTAMP_QUERY 0x05
47#define DRM_V3D_EXT_ID_CPU_RESET_PERFORMANCE_QUERY 0x06
48#define DRM_V3D_EXT_ID_CPU_COPY_PERFORMANCE_QUERY 0x07
Christopher Ferrisa4792612022-01-10 13:51:15 -080049 __u32 flags;
50};
51struct drm_v3d_sem {
52 __u32 handle;
53 __u32 flags;
54 __u64 point;
55 __u64 mbz[2];
56};
57enum v3d_queue {
58 V3D_BIN,
59 V3D_RENDER,
60 V3D_TFU,
61 V3D_CSD,
62 V3D_CACHE_CLEAN,
Christopher Ferrisb830ddf2024-03-28 11:48:08 -070063 V3D_CPU,
Christopher Ferrisa4792612022-01-10 13:51:15 -080064};
65struct drm_v3d_multi_sync {
66 struct drm_v3d_extension base;
67 __u64 in_syncs;
68 __u64 out_syncs;
69 __u32 in_sync_count;
70 __u32 out_sync_count;
71 __u32 wait_stage;
72 __u32 pad;
73};
Christopher Ferris9ce28842018-10-25 12:11:39 -070074struct drm_v3d_submit_cl {
75 __u32 bcl_start;
76 __u32 bcl_end;
77 __u32 rcl_start;
78 __u32 rcl_end;
79 __u32 in_sync_bcl;
80 __u32 in_sync_rcl;
81 __u32 out_sync;
82 __u32 qma;
83 __u32 qms;
84 __u32 qts;
85 __u64 bo_handles;
86 __u32 bo_handle_count;
Christopher Ferrisd32ca142020-02-04 16:16:51 -080087 __u32 flags;
Christopher Ferris2abfa9e2021-11-01 16:26:06 -070088 __u32 perfmon_id;
89 __u32 pad;
Christopher Ferrisa4792612022-01-10 13:51:15 -080090 __u64 extensions;
Christopher Ferris9ce28842018-10-25 12:11:39 -070091};
92struct drm_v3d_wait_bo {
93 __u32 handle;
94 __u32 pad;
95 __u64 timeout_ns;
96};
97struct drm_v3d_create_bo {
98 __u32 size;
99 __u32 flags;
100 __u32 handle;
101 __u32 offset;
102};
103struct drm_v3d_mmap_bo {
104 __u32 handle;
105 __u32 flags;
106 __u64 offset;
107};
108enum drm_v3d_param {
109 DRM_V3D_PARAM_V3D_UIFCFG,
110 DRM_V3D_PARAM_V3D_HUB_IDENT1,
111 DRM_V3D_PARAM_V3D_HUB_IDENT2,
112 DRM_V3D_PARAM_V3D_HUB_IDENT3,
113 DRM_V3D_PARAM_V3D_CORE0_IDENT0,
114 DRM_V3D_PARAM_V3D_CORE0_IDENT1,
115 DRM_V3D_PARAM_V3D_CORE0_IDENT2,
Christopher Ferrisd842e432019-03-07 10:21:59 -0800116 DRM_V3D_PARAM_SUPPORTS_TFU,
Christopher Ferrisb8a95e22019-10-02 18:29:20 -0700117 DRM_V3D_PARAM_SUPPORTS_CSD,
Christopher Ferrisd32ca142020-02-04 16:16:51 -0800118 DRM_V3D_PARAM_SUPPORTS_CACHE_FLUSH,
Christopher Ferris2abfa9e2021-11-01 16:26:06 -0700119 DRM_V3D_PARAM_SUPPORTS_PERFMON,
Christopher Ferrisa4792612022-01-10 13:51:15 -0800120 DRM_V3D_PARAM_SUPPORTS_MULTISYNC_EXT,
Christopher Ferrisb830ddf2024-03-28 11:48:08 -0700121 DRM_V3D_PARAM_SUPPORTS_CPU_QUEUE,
Christopher Ferris9ce28842018-10-25 12:11:39 -0700122};
123struct drm_v3d_get_param {
124 __u32 param;
125 __u32 pad;
126 __u64 value;
127};
128struct drm_v3d_get_bo_offset {
129 __u32 handle;
130 __u32 offset;
131};
Christopher Ferrisd842e432019-03-07 10:21:59 -0800132struct drm_v3d_submit_tfu {
133 __u32 icfg;
134 __u32 iia;
135 __u32 iis;
136 __u32 ica;
137 __u32 iua;
138 __u32 ioa;
139 __u32 ios;
140 __u32 coef[4];
141 __u32 bo_handles[4];
142 __u32 in_sync;
143 __u32 out_sync;
Christopher Ferrisa4792612022-01-10 13:51:15 -0800144 __u32 flags;
145 __u64 extensions;
Christopher Ferrisb830ddf2024-03-28 11:48:08 -0700146 struct {
147 __u32 ioc;
148 __u32 pad;
149 } v71;
Christopher Ferrisd842e432019-03-07 10:21:59 -0800150};
Christopher Ferrisb8a95e22019-10-02 18:29:20 -0700151struct drm_v3d_submit_csd {
152 __u32 cfg[7];
153 __u32 coef[4];
154 __u64 bo_handles;
155 __u32 bo_handle_count;
156 __u32 in_sync;
157 __u32 out_sync;
Christopher Ferris2abfa9e2021-11-01 16:26:06 -0700158 __u32 perfmon_id;
Christopher Ferrisa4792612022-01-10 13:51:15 -0800159 __u64 extensions;
160 __u32 flags;
161 __u32 pad;
Christopher Ferris2abfa9e2021-11-01 16:26:06 -0700162};
Christopher Ferrisb830ddf2024-03-28 11:48:08 -0700163struct drm_v3d_indirect_csd {
164 struct drm_v3d_extension base;
165 struct drm_v3d_submit_csd submit;
166 __u32 indirect;
167 __u32 offset;
168 __u32 wg_size;
169 __u32 wg_uniform_offsets[3];
170};
171struct drm_v3d_timestamp_query {
172 struct drm_v3d_extension base;
173 __u64 offsets;
174 __u64 syncs;
175 __u32 count;
176 __u32 pad;
177};
178struct drm_v3d_reset_timestamp_query {
179 struct drm_v3d_extension base;
180 __u64 syncs;
181 __u32 offset;
182 __u32 count;
183};
184struct drm_v3d_copy_timestamp_query {
185 struct drm_v3d_extension base;
186 __u8 do_64bit;
187 __u8 do_partial;
188 __u8 availability_bit;
189 __u8 pad;
190 __u32 offset;
191 __u32 stride;
192 __u32 count;
193 __u64 offsets;
194 __u64 syncs;
195};
196struct drm_v3d_reset_performance_query {
197 struct drm_v3d_extension base;
198 __u64 syncs;
199 __u32 count;
200 __u32 nperfmons;
201 __u64 kperfmon_ids;
202};
203struct drm_v3d_copy_performance_query {
204 struct drm_v3d_extension base;
205 __u8 do_64bit;
206 __u8 do_partial;
207 __u8 availability_bit;
208 __u8 pad;
209 __u32 offset;
210 __u32 stride;
211 __u32 nperfmons;
212 __u32 ncounters;
213 __u32 count;
214 __u64 syncs;
215 __u64 kperfmon_ids;
216};
217struct drm_v3d_submit_cpu {
218 __u64 bo_handles;
219 __u32 bo_handle_count;
220 __u32 flags;
221 __u64 extensions;
222};
Christopher Ferris2abfa9e2021-11-01 16:26:06 -0700223enum {
224 V3D_PERFCNT_FEP_VALID_PRIMTS_NO_PIXELS,
225 V3D_PERFCNT_FEP_VALID_PRIMS,
226 V3D_PERFCNT_FEP_EZ_NFCLIP_QUADS,
227 V3D_PERFCNT_FEP_VALID_QUADS,
228 V3D_PERFCNT_TLB_QUADS_STENCIL_FAIL,
229 V3D_PERFCNT_TLB_QUADS_STENCILZ_FAIL,
230 V3D_PERFCNT_TLB_QUADS_STENCILZ_PASS,
231 V3D_PERFCNT_TLB_QUADS_ZERO_COV,
232 V3D_PERFCNT_TLB_QUADS_NONZERO_COV,
233 V3D_PERFCNT_TLB_QUADS_WRITTEN,
234 V3D_PERFCNT_PTB_PRIM_VIEWPOINT_DISCARD,
235 V3D_PERFCNT_PTB_PRIM_CLIP,
236 V3D_PERFCNT_PTB_PRIM_REV,
237 V3D_PERFCNT_QPU_IDLE_CYCLES,
238 V3D_PERFCNT_QPU_ACTIVE_CYCLES_VERTEX_COORD_USER,
239 V3D_PERFCNT_QPU_ACTIVE_CYCLES_FRAG,
240 V3D_PERFCNT_QPU_CYCLES_VALID_INSTR,
241 V3D_PERFCNT_QPU_CYCLES_TMU_STALL,
242 V3D_PERFCNT_QPU_CYCLES_SCOREBOARD_STALL,
243 V3D_PERFCNT_QPU_CYCLES_VARYINGS_STALL,
244 V3D_PERFCNT_QPU_IC_HIT,
245 V3D_PERFCNT_QPU_IC_MISS,
246 V3D_PERFCNT_QPU_UC_HIT,
247 V3D_PERFCNT_QPU_UC_MISS,
248 V3D_PERFCNT_TMU_TCACHE_ACCESS,
249 V3D_PERFCNT_TMU_TCACHE_MISS,
250 V3D_PERFCNT_VPM_VDW_STALL,
251 V3D_PERFCNT_VPM_VCD_STALL,
252 V3D_PERFCNT_BIN_ACTIVE,
253 V3D_PERFCNT_RDR_ACTIVE,
254 V3D_PERFCNT_L2T_HITS,
255 V3D_PERFCNT_L2T_MISSES,
256 V3D_PERFCNT_CYCLE_COUNT,
257 V3D_PERFCNT_QPU_CYCLES_STALLED_VERTEX_COORD_USER,
258 V3D_PERFCNT_QPU_CYCLES_STALLED_FRAGMENT,
259 V3D_PERFCNT_PTB_PRIMS_BINNED,
260 V3D_PERFCNT_AXI_WRITES_WATCH_0,
261 V3D_PERFCNT_AXI_READS_WATCH_0,
262 V3D_PERFCNT_AXI_WRITE_STALLS_WATCH_0,
263 V3D_PERFCNT_AXI_READ_STALLS_WATCH_0,
264 V3D_PERFCNT_AXI_WRITE_BYTES_WATCH_0,
265 V3D_PERFCNT_AXI_READ_BYTES_WATCH_0,
266 V3D_PERFCNT_AXI_WRITES_WATCH_1,
267 V3D_PERFCNT_AXI_READS_WATCH_1,
268 V3D_PERFCNT_AXI_WRITE_STALLS_WATCH_1,
269 V3D_PERFCNT_AXI_READ_STALLS_WATCH_1,
270 V3D_PERFCNT_AXI_WRITE_BYTES_WATCH_1,
271 V3D_PERFCNT_AXI_READ_BYTES_WATCH_1,
272 V3D_PERFCNT_TLB_PARTIAL_QUADS,
273 V3D_PERFCNT_TMU_CONFIG_ACCESSES,
274 V3D_PERFCNT_L2T_NO_ID_STALL,
275 V3D_PERFCNT_L2T_COM_QUE_STALL,
276 V3D_PERFCNT_L2T_TMU_WRITES,
277 V3D_PERFCNT_TMU_ACTIVE_CYCLES,
278 V3D_PERFCNT_TMU_STALLED_CYCLES,
279 V3D_PERFCNT_CLE_ACTIVE,
280 V3D_PERFCNT_L2T_TMU_READS,
281 V3D_PERFCNT_L2T_CLE_READS,
282 V3D_PERFCNT_L2T_VCD_READS,
283 V3D_PERFCNT_L2T_TMUCFG_READS,
284 V3D_PERFCNT_L2T_SLC0_READS,
285 V3D_PERFCNT_L2T_SLC1_READS,
286 V3D_PERFCNT_L2T_SLC2_READS,
287 V3D_PERFCNT_L2T_TMU_W_MISSES,
288 V3D_PERFCNT_L2T_TMU_R_MISSES,
289 V3D_PERFCNT_L2T_CLE_MISSES,
290 V3D_PERFCNT_L2T_VCD_MISSES,
291 V3D_PERFCNT_L2T_TMUCFG_MISSES,
292 V3D_PERFCNT_L2T_SLC0_MISSES,
293 V3D_PERFCNT_L2T_SLC1_MISSES,
294 V3D_PERFCNT_L2T_SLC2_MISSES,
295 V3D_PERFCNT_CORE_MEM_WRITES,
296 V3D_PERFCNT_L2T_MEM_WRITES,
297 V3D_PERFCNT_PTB_MEM_WRITES,
298 V3D_PERFCNT_TLB_MEM_WRITES,
299 V3D_PERFCNT_CORE_MEM_READS,
300 V3D_PERFCNT_L2T_MEM_READS,
301 V3D_PERFCNT_PTB_MEM_READS,
302 V3D_PERFCNT_PSE_MEM_READS,
303 V3D_PERFCNT_TLB_MEM_READS,
304 V3D_PERFCNT_GMP_MEM_READS,
305 V3D_PERFCNT_PTB_W_MEM_WORDS,
306 V3D_PERFCNT_TLB_W_MEM_WORDS,
307 V3D_PERFCNT_PSE_R_MEM_WORDS,
308 V3D_PERFCNT_TLB_R_MEM_WORDS,
309 V3D_PERFCNT_TMU_MRU_HITS,
310 V3D_PERFCNT_COMPUTE_ACTIVE,
311 V3D_PERFCNT_NUM,
312};
313#define DRM_V3D_MAX_PERF_COUNTERS 32
314struct drm_v3d_perfmon_create {
315 __u32 id;
316 __u32 ncounters;
317 __u8 counters[DRM_V3D_MAX_PERF_COUNTERS];
318};
319struct drm_v3d_perfmon_destroy {
320 __u32 id;
321};
322struct drm_v3d_perfmon_get_values {
323 __u32 id;
324 __u32 pad;
325 __u64 values_ptr;
Christopher Ferrisb8a95e22019-10-02 18:29:20 -0700326};
Christopher Ferris9ce28842018-10-25 12:11:39 -0700327#ifdef __cplusplus
Christopher Ferris48fe0ae2019-01-10 15:59:33 -0800328}
Christopher Ferris9ce28842018-10-25 12:11:39 -0700329#endif
330#endif