blob: 594856f6fab75ade08f1e26349b6f504e16da16d [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 Ferris9ce28842018-10-25 12:11:39 -070024#define DRM_IOCTL_V3D_SUBMIT_CL DRM_IOWR(DRM_COMMAND_BASE + DRM_V3D_SUBMIT_CL, struct drm_v3d_submit_cl)
25#define DRM_IOCTL_V3D_WAIT_BO DRM_IOWR(DRM_COMMAND_BASE + DRM_V3D_WAIT_BO, struct drm_v3d_wait_bo)
26#define DRM_IOCTL_V3D_CREATE_BO DRM_IOWR(DRM_COMMAND_BASE + DRM_V3D_CREATE_BO, struct drm_v3d_create_bo)
27#define DRM_IOCTL_V3D_MMAP_BO DRM_IOWR(DRM_COMMAND_BASE + DRM_V3D_MMAP_BO, struct drm_v3d_mmap_bo)
28#define DRM_IOCTL_V3D_GET_PARAM DRM_IOWR(DRM_COMMAND_BASE + DRM_V3D_GET_PARAM, struct drm_v3d_get_param)
29#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 -080030#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 -070031#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 -070032#define DRM_IOCTL_V3D_PERFMON_CREATE DRM_IOWR(DRM_COMMAND_BASE + DRM_V3D_PERFMON_CREATE, struct drm_v3d_perfmon_create)
33#define DRM_IOCTL_V3D_PERFMON_DESTROY DRM_IOWR(DRM_COMMAND_BASE + DRM_V3D_PERFMON_DESTROY, struct drm_v3d_perfmon_destroy)
34#define DRM_IOCTL_V3D_PERFMON_GET_VALUES DRM_IOWR(DRM_COMMAND_BASE + DRM_V3D_PERFMON_GET_VALUES, struct drm_v3d_perfmon_get_values)
Christopher Ferrisd32ca142020-02-04 16:16:51 -080035#define DRM_V3D_SUBMIT_CL_FLUSH_CACHE 0x01
Christopher Ferrisa4792612022-01-10 13:51:15 -080036#define DRM_V3D_SUBMIT_EXTENSION 0x02
37struct drm_v3d_extension {
38 __u64 next;
39 __u32 id;
40#define DRM_V3D_EXT_ID_MULTI_SYNC 0x01
41 __u32 flags;
42};
43struct drm_v3d_sem {
44 __u32 handle;
45 __u32 flags;
46 __u64 point;
47 __u64 mbz[2];
48};
49enum v3d_queue {
50 V3D_BIN,
51 V3D_RENDER,
52 V3D_TFU,
53 V3D_CSD,
54 V3D_CACHE_CLEAN,
55};
56struct drm_v3d_multi_sync {
57 struct drm_v3d_extension base;
58 __u64 in_syncs;
59 __u64 out_syncs;
60 __u32 in_sync_count;
61 __u32 out_sync_count;
62 __u32 wait_stage;
63 __u32 pad;
64};
Christopher Ferris9ce28842018-10-25 12:11:39 -070065struct drm_v3d_submit_cl {
66 __u32 bcl_start;
67 __u32 bcl_end;
68 __u32 rcl_start;
69 __u32 rcl_end;
70 __u32 in_sync_bcl;
71 __u32 in_sync_rcl;
72 __u32 out_sync;
73 __u32 qma;
74 __u32 qms;
75 __u32 qts;
76 __u64 bo_handles;
77 __u32 bo_handle_count;
Christopher Ferrisd32ca142020-02-04 16:16:51 -080078 __u32 flags;
Christopher Ferris2abfa9e2021-11-01 16:26:06 -070079 __u32 perfmon_id;
80 __u32 pad;
Christopher Ferrisa4792612022-01-10 13:51:15 -080081 __u64 extensions;
Christopher Ferris9ce28842018-10-25 12:11:39 -070082};
83struct drm_v3d_wait_bo {
84 __u32 handle;
85 __u32 pad;
86 __u64 timeout_ns;
87};
88struct drm_v3d_create_bo {
89 __u32 size;
90 __u32 flags;
91 __u32 handle;
92 __u32 offset;
93};
94struct drm_v3d_mmap_bo {
95 __u32 handle;
96 __u32 flags;
97 __u64 offset;
98};
99enum drm_v3d_param {
100 DRM_V3D_PARAM_V3D_UIFCFG,
101 DRM_V3D_PARAM_V3D_HUB_IDENT1,
102 DRM_V3D_PARAM_V3D_HUB_IDENT2,
103 DRM_V3D_PARAM_V3D_HUB_IDENT3,
104 DRM_V3D_PARAM_V3D_CORE0_IDENT0,
105 DRM_V3D_PARAM_V3D_CORE0_IDENT1,
106 DRM_V3D_PARAM_V3D_CORE0_IDENT2,
Christopher Ferrisd842e432019-03-07 10:21:59 -0800107 DRM_V3D_PARAM_SUPPORTS_TFU,
Christopher Ferrisb8a95e22019-10-02 18:29:20 -0700108 DRM_V3D_PARAM_SUPPORTS_CSD,
Christopher Ferrisd32ca142020-02-04 16:16:51 -0800109 DRM_V3D_PARAM_SUPPORTS_CACHE_FLUSH,
Christopher Ferris2abfa9e2021-11-01 16:26:06 -0700110 DRM_V3D_PARAM_SUPPORTS_PERFMON,
Christopher Ferrisa4792612022-01-10 13:51:15 -0800111 DRM_V3D_PARAM_SUPPORTS_MULTISYNC_EXT,
Christopher Ferris9ce28842018-10-25 12:11:39 -0700112};
113struct drm_v3d_get_param {
114 __u32 param;
115 __u32 pad;
116 __u64 value;
117};
118struct drm_v3d_get_bo_offset {
119 __u32 handle;
120 __u32 offset;
121};
Christopher Ferrisd842e432019-03-07 10:21:59 -0800122struct drm_v3d_submit_tfu {
123 __u32 icfg;
124 __u32 iia;
125 __u32 iis;
126 __u32 ica;
127 __u32 iua;
128 __u32 ioa;
129 __u32 ios;
130 __u32 coef[4];
131 __u32 bo_handles[4];
132 __u32 in_sync;
133 __u32 out_sync;
Christopher Ferrisa4792612022-01-10 13:51:15 -0800134 __u32 flags;
135 __u64 extensions;
Christopher Ferrisd842e432019-03-07 10:21:59 -0800136};
Christopher Ferrisb8a95e22019-10-02 18:29:20 -0700137struct drm_v3d_submit_csd {
138 __u32 cfg[7];
139 __u32 coef[4];
140 __u64 bo_handles;
141 __u32 bo_handle_count;
142 __u32 in_sync;
143 __u32 out_sync;
Christopher Ferris2abfa9e2021-11-01 16:26:06 -0700144 __u32 perfmon_id;
Christopher Ferrisa4792612022-01-10 13:51:15 -0800145 __u64 extensions;
146 __u32 flags;
147 __u32 pad;
Christopher Ferris2abfa9e2021-11-01 16:26:06 -0700148};
149enum {
150 V3D_PERFCNT_FEP_VALID_PRIMTS_NO_PIXELS,
151 V3D_PERFCNT_FEP_VALID_PRIMS,
152 V3D_PERFCNT_FEP_EZ_NFCLIP_QUADS,
153 V3D_PERFCNT_FEP_VALID_QUADS,
154 V3D_PERFCNT_TLB_QUADS_STENCIL_FAIL,
155 V3D_PERFCNT_TLB_QUADS_STENCILZ_FAIL,
156 V3D_PERFCNT_TLB_QUADS_STENCILZ_PASS,
157 V3D_PERFCNT_TLB_QUADS_ZERO_COV,
158 V3D_PERFCNT_TLB_QUADS_NONZERO_COV,
159 V3D_PERFCNT_TLB_QUADS_WRITTEN,
160 V3D_PERFCNT_PTB_PRIM_VIEWPOINT_DISCARD,
161 V3D_PERFCNT_PTB_PRIM_CLIP,
162 V3D_PERFCNT_PTB_PRIM_REV,
163 V3D_PERFCNT_QPU_IDLE_CYCLES,
164 V3D_PERFCNT_QPU_ACTIVE_CYCLES_VERTEX_COORD_USER,
165 V3D_PERFCNT_QPU_ACTIVE_CYCLES_FRAG,
166 V3D_PERFCNT_QPU_CYCLES_VALID_INSTR,
167 V3D_PERFCNT_QPU_CYCLES_TMU_STALL,
168 V3D_PERFCNT_QPU_CYCLES_SCOREBOARD_STALL,
169 V3D_PERFCNT_QPU_CYCLES_VARYINGS_STALL,
170 V3D_PERFCNT_QPU_IC_HIT,
171 V3D_PERFCNT_QPU_IC_MISS,
172 V3D_PERFCNT_QPU_UC_HIT,
173 V3D_PERFCNT_QPU_UC_MISS,
174 V3D_PERFCNT_TMU_TCACHE_ACCESS,
175 V3D_PERFCNT_TMU_TCACHE_MISS,
176 V3D_PERFCNT_VPM_VDW_STALL,
177 V3D_PERFCNT_VPM_VCD_STALL,
178 V3D_PERFCNT_BIN_ACTIVE,
179 V3D_PERFCNT_RDR_ACTIVE,
180 V3D_PERFCNT_L2T_HITS,
181 V3D_PERFCNT_L2T_MISSES,
182 V3D_PERFCNT_CYCLE_COUNT,
183 V3D_PERFCNT_QPU_CYCLES_STALLED_VERTEX_COORD_USER,
184 V3D_PERFCNT_QPU_CYCLES_STALLED_FRAGMENT,
185 V3D_PERFCNT_PTB_PRIMS_BINNED,
186 V3D_PERFCNT_AXI_WRITES_WATCH_0,
187 V3D_PERFCNT_AXI_READS_WATCH_0,
188 V3D_PERFCNT_AXI_WRITE_STALLS_WATCH_0,
189 V3D_PERFCNT_AXI_READ_STALLS_WATCH_0,
190 V3D_PERFCNT_AXI_WRITE_BYTES_WATCH_0,
191 V3D_PERFCNT_AXI_READ_BYTES_WATCH_0,
192 V3D_PERFCNT_AXI_WRITES_WATCH_1,
193 V3D_PERFCNT_AXI_READS_WATCH_1,
194 V3D_PERFCNT_AXI_WRITE_STALLS_WATCH_1,
195 V3D_PERFCNT_AXI_READ_STALLS_WATCH_1,
196 V3D_PERFCNT_AXI_WRITE_BYTES_WATCH_1,
197 V3D_PERFCNT_AXI_READ_BYTES_WATCH_1,
198 V3D_PERFCNT_TLB_PARTIAL_QUADS,
199 V3D_PERFCNT_TMU_CONFIG_ACCESSES,
200 V3D_PERFCNT_L2T_NO_ID_STALL,
201 V3D_PERFCNT_L2T_COM_QUE_STALL,
202 V3D_PERFCNT_L2T_TMU_WRITES,
203 V3D_PERFCNT_TMU_ACTIVE_CYCLES,
204 V3D_PERFCNT_TMU_STALLED_CYCLES,
205 V3D_PERFCNT_CLE_ACTIVE,
206 V3D_PERFCNT_L2T_TMU_READS,
207 V3D_PERFCNT_L2T_CLE_READS,
208 V3D_PERFCNT_L2T_VCD_READS,
209 V3D_PERFCNT_L2T_TMUCFG_READS,
210 V3D_PERFCNT_L2T_SLC0_READS,
211 V3D_PERFCNT_L2T_SLC1_READS,
212 V3D_PERFCNT_L2T_SLC2_READS,
213 V3D_PERFCNT_L2T_TMU_W_MISSES,
214 V3D_PERFCNT_L2T_TMU_R_MISSES,
215 V3D_PERFCNT_L2T_CLE_MISSES,
216 V3D_PERFCNT_L2T_VCD_MISSES,
217 V3D_PERFCNT_L2T_TMUCFG_MISSES,
218 V3D_PERFCNT_L2T_SLC0_MISSES,
219 V3D_PERFCNT_L2T_SLC1_MISSES,
220 V3D_PERFCNT_L2T_SLC2_MISSES,
221 V3D_PERFCNT_CORE_MEM_WRITES,
222 V3D_PERFCNT_L2T_MEM_WRITES,
223 V3D_PERFCNT_PTB_MEM_WRITES,
224 V3D_PERFCNT_TLB_MEM_WRITES,
225 V3D_PERFCNT_CORE_MEM_READS,
226 V3D_PERFCNT_L2T_MEM_READS,
227 V3D_PERFCNT_PTB_MEM_READS,
228 V3D_PERFCNT_PSE_MEM_READS,
229 V3D_PERFCNT_TLB_MEM_READS,
230 V3D_PERFCNT_GMP_MEM_READS,
231 V3D_PERFCNT_PTB_W_MEM_WORDS,
232 V3D_PERFCNT_TLB_W_MEM_WORDS,
233 V3D_PERFCNT_PSE_R_MEM_WORDS,
234 V3D_PERFCNT_TLB_R_MEM_WORDS,
235 V3D_PERFCNT_TMU_MRU_HITS,
236 V3D_PERFCNT_COMPUTE_ACTIVE,
237 V3D_PERFCNT_NUM,
238};
239#define DRM_V3D_MAX_PERF_COUNTERS 32
240struct drm_v3d_perfmon_create {
241 __u32 id;
242 __u32 ncounters;
243 __u8 counters[DRM_V3D_MAX_PERF_COUNTERS];
244};
245struct drm_v3d_perfmon_destroy {
246 __u32 id;
247};
248struct drm_v3d_perfmon_get_values {
249 __u32 id;
250 __u32 pad;
251 __u64 values_ptr;
Christopher Ferrisb8a95e22019-10-02 18:29:20 -0700252};
Christopher Ferris9ce28842018-10-25 12:11:39 -0700253#ifdef __cplusplus
Christopher Ferris48fe0ae2019-01-10 15:59:33 -0800254}
Christopher Ferris9ce28842018-10-25 12:11:39 -0700255#endif
256#endif