blob: b7aca21d1000f75ba604a3357bebd6b6237c68da [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 Ferris63fcca42024-09-26 01:12:10 +000025#define DRM_V3D_PERFMON_GET_COUNTER 0x0c
Christopher Ferris9ce28842018-10-25 12:11:39 -070026#define DRM_IOCTL_V3D_SUBMIT_CL DRM_IOWR(DRM_COMMAND_BASE + DRM_V3D_SUBMIT_CL, struct drm_v3d_submit_cl)
27#define DRM_IOCTL_V3D_WAIT_BO DRM_IOWR(DRM_COMMAND_BASE + DRM_V3D_WAIT_BO, struct drm_v3d_wait_bo)
28#define DRM_IOCTL_V3D_CREATE_BO DRM_IOWR(DRM_COMMAND_BASE + DRM_V3D_CREATE_BO, struct drm_v3d_create_bo)
29#define DRM_IOCTL_V3D_MMAP_BO DRM_IOWR(DRM_COMMAND_BASE + DRM_V3D_MMAP_BO, struct drm_v3d_mmap_bo)
30#define DRM_IOCTL_V3D_GET_PARAM DRM_IOWR(DRM_COMMAND_BASE + DRM_V3D_GET_PARAM, struct drm_v3d_get_param)
31#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 -080032#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 -070033#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 -070034#define DRM_IOCTL_V3D_PERFMON_CREATE DRM_IOWR(DRM_COMMAND_BASE + DRM_V3D_PERFMON_CREATE, struct drm_v3d_perfmon_create)
35#define DRM_IOCTL_V3D_PERFMON_DESTROY DRM_IOWR(DRM_COMMAND_BASE + DRM_V3D_PERFMON_DESTROY, struct drm_v3d_perfmon_destroy)
36#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 -070037#define DRM_IOCTL_V3D_SUBMIT_CPU DRM_IOW(DRM_COMMAND_BASE + DRM_V3D_SUBMIT_CPU, struct drm_v3d_submit_cpu)
Christopher Ferris63fcca42024-09-26 01:12:10 +000038#define DRM_IOCTL_V3D_PERFMON_GET_COUNTER DRM_IOWR(DRM_COMMAND_BASE + DRM_V3D_PERFMON_GET_COUNTER, struct drm_v3d_perfmon_get_counter)
Christopher Ferrisd32ca142020-02-04 16:16:51 -080039#define DRM_V3D_SUBMIT_CL_FLUSH_CACHE 0x01
Christopher Ferrisa4792612022-01-10 13:51:15 -080040#define DRM_V3D_SUBMIT_EXTENSION 0x02
41struct drm_v3d_extension {
42 __u64 next;
43 __u32 id;
44#define DRM_V3D_EXT_ID_MULTI_SYNC 0x01
Christopher Ferrisb830ddf2024-03-28 11:48:08 -070045#define DRM_V3D_EXT_ID_CPU_INDIRECT_CSD 0x02
46#define DRM_V3D_EXT_ID_CPU_TIMESTAMP_QUERY 0x03
47#define DRM_V3D_EXT_ID_CPU_RESET_TIMESTAMP_QUERY 0x04
48#define DRM_V3D_EXT_ID_CPU_COPY_TIMESTAMP_QUERY 0x05
49#define DRM_V3D_EXT_ID_CPU_RESET_PERFORMANCE_QUERY 0x06
50#define DRM_V3D_EXT_ID_CPU_COPY_PERFORMANCE_QUERY 0x07
Christopher Ferrisa4792612022-01-10 13:51:15 -080051 __u32 flags;
52};
53struct drm_v3d_sem {
54 __u32 handle;
55 __u32 flags;
56 __u64 point;
57 __u64 mbz[2];
58};
59enum v3d_queue {
60 V3D_BIN,
61 V3D_RENDER,
62 V3D_TFU,
63 V3D_CSD,
64 V3D_CACHE_CLEAN,
Christopher Ferrisb830ddf2024-03-28 11:48:08 -070065 V3D_CPU,
Christopher Ferrisa4792612022-01-10 13:51:15 -080066};
67struct drm_v3d_multi_sync {
68 struct drm_v3d_extension base;
69 __u64 in_syncs;
70 __u64 out_syncs;
71 __u32 in_sync_count;
72 __u32 out_sync_count;
73 __u32 wait_stage;
74 __u32 pad;
75};
Christopher Ferris9ce28842018-10-25 12:11:39 -070076struct drm_v3d_submit_cl {
77 __u32 bcl_start;
78 __u32 bcl_end;
79 __u32 rcl_start;
80 __u32 rcl_end;
81 __u32 in_sync_bcl;
82 __u32 in_sync_rcl;
83 __u32 out_sync;
84 __u32 qma;
85 __u32 qms;
86 __u32 qts;
87 __u64 bo_handles;
88 __u32 bo_handle_count;
Christopher Ferrisd32ca142020-02-04 16:16:51 -080089 __u32 flags;
Christopher Ferris2abfa9e2021-11-01 16:26:06 -070090 __u32 perfmon_id;
91 __u32 pad;
Christopher Ferrisa4792612022-01-10 13:51:15 -080092 __u64 extensions;
Christopher Ferris9ce28842018-10-25 12:11:39 -070093};
94struct drm_v3d_wait_bo {
95 __u32 handle;
96 __u32 pad;
97 __u64 timeout_ns;
98};
99struct drm_v3d_create_bo {
100 __u32 size;
101 __u32 flags;
102 __u32 handle;
103 __u32 offset;
104};
105struct drm_v3d_mmap_bo {
106 __u32 handle;
107 __u32 flags;
108 __u64 offset;
109};
110enum drm_v3d_param {
111 DRM_V3D_PARAM_V3D_UIFCFG,
112 DRM_V3D_PARAM_V3D_HUB_IDENT1,
113 DRM_V3D_PARAM_V3D_HUB_IDENT2,
114 DRM_V3D_PARAM_V3D_HUB_IDENT3,
115 DRM_V3D_PARAM_V3D_CORE0_IDENT0,
116 DRM_V3D_PARAM_V3D_CORE0_IDENT1,
117 DRM_V3D_PARAM_V3D_CORE0_IDENT2,
Christopher Ferrisd842e432019-03-07 10:21:59 -0800118 DRM_V3D_PARAM_SUPPORTS_TFU,
Christopher Ferrisb8a95e22019-10-02 18:29:20 -0700119 DRM_V3D_PARAM_SUPPORTS_CSD,
Christopher Ferrisd32ca142020-02-04 16:16:51 -0800120 DRM_V3D_PARAM_SUPPORTS_CACHE_FLUSH,
Christopher Ferris2abfa9e2021-11-01 16:26:06 -0700121 DRM_V3D_PARAM_SUPPORTS_PERFMON,
Christopher Ferrisa4792612022-01-10 13:51:15 -0800122 DRM_V3D_PARAM_SUPPORTS_MULTISYNC_EXT,
Christopher Ferrisb830ddf2024-03-28 11:48:08 -0700123 DRM_V3D_PARAM_SUPPORTS_CPU_QUEUE,
Christopher Ferris63fcca42024-09-26 01:12:10 +0000124 DRM_V3D_PARAM_MAX_PERF_COUNTERS,
Christopher Ferris9ce28842018-10-25 12:11:39 -0700125};
126struct drm_v3d_get_param {
127 __u32 param;
128 __u32 pad;
129 __u64 value;
130};
131struct drm_v3d_get_bo_offset {
132 __u32 handle;
133 __u32 offset;
134};
Christopher Ferrisd842e432019-03-07 10:21:59 -0800135struct drm_v3d_submit_tfu {
136 __u32 icfg;
137 __u32 iia;
138 __u32 iis;
139 __u32 ica;
140 __u32 iua;
141 __u32 ioa;
142 __u32 ios;
143 __u32 coef[4];
144 __u32 bo_handles[4];
145 __u32 in_sync;
146 __u32 out_sync;
Christopher Ferrisa4792612022-01-10 13:51:15 -0800147 __u32 flags;
148 __u64 extensions;
Christopher Ferrisb830ddf2024-03-28 11:48:08 -0700149 struct {
150 __u32 ioc;
151 __u32 pad;
152 } v71;
Christopher Ferrisd842e432019-03-07 10:21:59 -0800153};
Christopher Ferrisb8a95e22019-10-02 18:29:20 -0700154struct drm_v3d_submit_csd {
155 __u32 cfg[7];
156 __u32 coef[4];
157 __u64 bo_handles;
158 __u32 bo_handle_count;
159 __u32 in_sync;
160 __u32 out_sync;
Christopher Ferris2abfa9e2021-11-01 16:26:06 -0700161 __u32 perfmon_id;
Christopher Ferrisa4792612022-01-10 13:51:15 -0800162 __u64 extensions;
163 __u32 flags;
164 __u32 pad;
Christopher Ferris2abfa9e2021-11-01 16:26:06 -0700165};
Christopher Ferrisb830ddf2024-03-28 11:48:08 -0700166struct drm_v3d_indirect_csd {
167 struct drm_v3d_extension base;
168 struct drm_v3d_submit_csd submit;
169 __u32 indirect;
170 __u32 offset;
171 __u32 wg_size;
172 __u32 wg_uniform_offsets[3];
173};
174struct drm_v3d_timestamp_query {
175 struct drm_v3d_extension base;
176 __u64 offsets;
177 __u64 syncs;
178 __u32 count;
179 __u32 pad;
180};
181struct drm_v3d_reset_timestamp_query {
182 struct drm_v3d_extension base;
183 __u64 syncs;
184 __u32 offset;
185 __u32 count;
186};
187struct drm_v3d_copy_timestamp_query {
188 struct drm_v3d_extension base;
189 __u8 do_64bit;
190 __u8 do_partial;
191 __u8 availability_bit;
192 __u8 pad;
193 __u32 offset;
194 __u32 stride;
195 __u32 count;
196 __u64 offsets;
197 __u64 syncs;
198};
199struct drm_v3d_reset_performance_query {
200 struct drm_v3d_extension base;
201 __u64 syncs;
202 __u32 count;
203 __u32 nperfmons;
204 __u64 kperfmon_ids;
205};
206struct drm_v3d_copy_performance_query {
207 struct drm_v3d_extension base;
208 __u8 do_64bit;
209 __u8 do_partial;
210 __u8 availability_bit;
211 __u8 pad;
212 __u32 offset;
213 __u32 stride;
214 __u32 nperfmons;
215 __u32 ncounters;
216 __u32 count;
217 __u64 syncs;
218 __u64 kperfmon_ids;
219};
220struct drm_v3d_submit_cpu {
221 __u64 bo_handles;
222 __u32 bo_handle_count;
223 __u32 flags;
224 __u64 extensions;
225};
Christopher Ferris2abfa9e2021-11-01 16:26:06 -0700226enum {
227 V3D_PERFCNT_FEP_VALID_PRIMTS_NO_PIXELS,
228 V3D_PERFCNT_FEP_VALID_PRIMS,
229 V3D_PERFCNT_FEP_EZ_NFCLIP_QUADS,
230 V3D_PERFCNT_FEP_VALID_QUADS,
231 V3D_PERFCNT_TLB_QUADS_STENCIL_FAIL,
232 V3D_PERFCNT_TLB_QUADS_STENCILZ_FAIL,
233 V3D_PERFCNT_TLB_QUADS_STENCILZ_PASS,
234 V3D_PERFCNT_TLB_QUADS_ZERO_COV,
235 V3D_PERFCNT_TLB_QUADS_NONZERO_COV,
236 V3D_PERFCNT_TLB_QUADS_WRITTEN,
237 V3D_PERFCNT_PTB_PRIM_VIEWPOINT_DISCARD,
238 V3D_PERFCNT_PTB_PRIM_CLIP,
239 V3D_PERFCNT_PTB_PRIM_REV,
240 V3D_PERFCNT_QPU_IDLE_CYCLES,
241 V3D_PERFCNT_QPU_ACTIVE_CYCLES_VERTEX_COORD_USER,
242 V3D_PERFCNT_QPU_ACTIVE_CYCLES_FRAG,
243 V3D_PERFCNT_QPU_CYCLES_VALID_INSTR,
244 V3D_PERFCNT_QPU_CYCLES_TMU_STALL,
245 V3D_PERFCNT_QPU_CYCLES_SCOREBOARD_STALL,
246 V3D_PERFCNT_QPU_CYCLES_VARYINGS_STALL,
247 V3D_PERFCNT_QPU_IC_HIT,
248 V3D_PERFCNT_QPU_IC_MISS,
249 V3D_PERFCNT_QPU_UC_HIT,
250 V3D_PERFCNT_QPU_UC_MISS,
251 V3D_PERFCNT_TMU_TCACHE_ACCESS,
252 V3D_PERFCNT_TMU_TCACHE_MISS,
253 V3D_PERFCNT_VPM_VDW_STALL,
254 V3D_PERFCNT_VPM_VCD_STALL,
255 V3D_PERFCNT_BIN_ACTIVE,
256 V3D_PERFCNT_RDR_ACTIVE,
257 V3D_PERFCNT_L2T_HITS,
258 V3D_PERFCNT_L2T_MISSES,
259 V3D_PERFCNT_CYCLE_COUNT,
260 V3D_PERFCNT_QPU_CYCLES_STALLED_VERTEX_COORD_USER,
261 V3D_PERFCNT_QPU_CYCLES_STALLED_FRAGMENT,
262 V3D_PERFCNT_PTB_PRIMS_BINNED,
263 V3D_PERFCNT_AXI_WRITES_WATCH_0,
264 V3D_PERFCNT_AXI_READS_WATCH_0,
265 V3D_PERFCNT_AXI_WRITE_STALLS_WATCH_0,
266 V3D_PERFCNT_AXI_READ_STALLS_WATCH_0,
267 V3D_PERFCNT_AXI_WRITE_BYTES_WATCH_0,
268 V3D_PERFCNT_AXI_READ_BYTES_WATCH_0,
269 V3D_PERFCNT_AXI_WRITES_WATCH_1,
270 V3D_PERFCNT_AXI_READS_WATCH_1,
271 V3D_PERFCNT_AXI_WRITE_STALLS_WATCH_1,
272 V3D_PERFCNT_AXI_READ_STALLS_WATCH_1,
273 V3D_PERFCNT_AXI_WRITE_BYTES_WATCH_1,
274 V3D_PERFCNT_AXI_READ_BYTES_WATCH_1,
275 V3D_PERFCNT_TLB_PARTIAL_QUADS,
276 V3D_PERFCNT_TMU_CONFIG_ACCESSES,
277 V3D_PERFCNT_L2T_NO_ID_STALL,
278 V3D_PERFCNT_L2T_COM_QUE_STALL,
279 V3D_PERFCNT_L2T_TMU_WRITES,
280 V3D_PERFCNT_TMU_ACTIVE_CYCLES,
281 V3D_PERFCNT_TMU_STALLED_CYCLES,
282 V3D_PERFCNT_CLE_ACTIVE,
283 V3D_PERFCNT_L2T_TMU_READS,
284 V3D_PERFCNT_L2T_CLE_READS,
285 V3D_PERFCNT_L2T_VCD_READS,
286 V3D_PERFCNT_L2T_TMUCFG_READS,
287 V3D_PERFCNT_L2T_SLC0_READS,
288 V3D_PERFCNT_L2T_SLC1_READS,
289 V3D_PERFCNT_L2T_SLC2_READS,
290 V3D_PERFCNT_L2T_TMU_W_MISSES,
291 V3D_PERFCNT_L2T_TMU_R_MISSES,
292 V3D_PERFCNT_L2T_CLE_MISSES,
293 V3D_PERFCNT_L2T_VCD_MISSES,
294 V3D_PERFCNT_L2T_TMUCFG_MISSES,
295 V3D_PERFCNT_L2T_SLC0_MISSES,
296 V3D_PERFCNT_L2T_SLC1_MISSES,
297 V3D_PERFCNT_L2T_SLC2_MISSES,
298 V3D_PERFCNT_CORE_MEM_WRITES,
299 V3D_PERFCNT_L2T_MEM_WRITES,
300 V3D_PERFCNT_PTB_MEM_WRITES,
301 V3D_PERFCNT_TLB_MEM_WRITES,
302 V3D_PERFCNT_CORE_MEM_READS,
303 V3D_PERFCNT_L2T_MEM_READS,
304 V3D_PERFCNT_PTB_MEM_READS,
305 V3D_PERFCNT_PSE_MEM_READS,
306 V3D_PERFCNT_TLB_MEM_READS,
307 V3D_PERFCNT_GMP_MEM_READS,
308 V3D_PERFCNT_PTB_W_MEM_WORDS,
309 V3D_PERFCNT_TLB_W_MEM_WORDS,
310 V3D_PERFCNT_PSE_R_MEM_WORDS,
311 V3D_PERFCNT_TLB_R_MEM_WORDS,
312 V3D_PERFCNT_TMU_MRU_HITS,
313 V3D_PERFCNT_COMPUTE_ACTIVE,
314 V3D_PERFCNT_NUM,
315};
316#define DRM_V3D_MAX_PERF_COUNTERS 32
317struct drm_v3d_perfmon_create {
318 __u32 id;
319 __u32 ncounters;
320 __u8 counters[DRM_V3D_MAX_PERF_COUNTERS];
321};
322struct drm_v3d_perfmon_destroy {
323 __u32 id;
324};
325struct drm_v3d_perfmon_get_values {
326 __u32 id;
327 __u32 pad;
328 __u64 values_ptr;
Christopher Ferrisb8a95e22019-10-02 18:29:20 -0700329};
Christopher Ferris63fcca42024-09-26 01:12:10 +0000330#define DRM_V3D_PERFCNT_MAX_NAME 64
331#define DRM_V3D_PERFCNT_MAX_CATEGORY 32
332#define DRM_V3D_PERFCNT_MAX_DESCRIPTION 256
333struct drm_v3d_perfmon_get_counter {
334 __u8 counter;
335 __u8 name[DRM_V3D_PERFCNT_MAX_NAME];
336 __u8 category[DRM_V3D_PERFCNT_MAX_CATEGORY];
337 __u8 description[DRM_V3D_PERFCNT_MAX_DESCRIPTION];
338 __u8 reserved[7];
339};
Christopher Ferris9ce28842018-10-25 12:11:39 -0700340#ifdef __cplusplus
Christopher Ferris48fe0ae2019-01-10 15:59:33 -0800341}
Christopher Ferris9ce28842018-10-25 12:11:39 -0700342#endif
343#endif