freedreno/a6xx: VSC "STRM_ARRAY_PITCH" is "STRM_LIMIT"
[mesa.git] / src / freedreno / registers / a6xx.xml
1 <?xml version="1.0" encoding="UTF-8"?>
2 <database xmlns="http://nouveau.freedesktop.org/"
3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4 xsi:schemaLocation="http://nouveau.freedesktop.org/ rules-ng.xsd">
5 <import file="freedreno_copyright.xml"/>
6 <import file="adreno/adreno_common.xml"/>
7 <import file="adreno/adreno_pm4.xml"/>
8
9 <!-- these might be same as a5xx -->
10 <enum name="a6xx_tile_mode">
11 <value name="TILE6_LINEAR" value="0"/>
12 <value name="TILE6_2" value="2"/>
13 <value name="TILE6_3" value="3"/>
14 </enum>
15
16 <enum name="a6xx_format">
17 <value value="0x02" name="FMT6_A8_UNORM"/>
18 <value value="0x03" name="FMT6_8_UNORM"/>
19 <value value="0x04" name="FMT6_8_SNORM"/>
20 <value value="0x05" name="FMT6_8_UINT"/>
21 <value value="0x06" name="FMT6_8_SINT"/>
22
23 <value value="0x08" name="FMT6_4_4_4_4_UNORM"/>
24 <value value="0x0a" name="FMT6_5_5_5_1_UNORM"/>
25 <value value="0x0c" name="FMT6_1_5_5_5_UNORM"/> <!-- read only -->
26 <value value="0x0e" name="FMT6_5_6_5_UNORM"/>
27
28 <value value="0x0f" name="FMT6_8_8_UNORM"/>
29 <value value="0x10" name="FMT6_8_8_SNORM"/>
30 <value value="0x11" name="FMT6_8_8_UINT"/>
31 <value value="0x12" name="FMT6_8_8_SINT"/>
32 <value value="0x13" name="FMT6_L8_A8_UNORM"/>
33
34 <value value="0x15" name="FMT6_16_UNORM"/>
35 <value value="0x16" name="FMT6_16_SNORM"/>
36 <value value="0x17" name="FMT6_16_FLOAT"/>
37 <value value="0x18" name="FMT6_16_UINT"/>
38 <value value="0x19" name="FMT6_16_SINT"/>
39
40 <value value="0x21" name="FMT6_8_8_8_UNORM"/>
41 <value value="0x22" name="FMT6_8_8_8_SNORM"/>
42 <value value="0x23" name="FMT6_8_8_8_UINT"/>
43 <value value="0x24" name="FMT6_8_8_8_SINT"/>
44
45 <value value="0x30" name="FMT6_8_8_8_8_UNORM"/>
46 <value value="0x31" name="FMT6_8_8_8_X8_UNORM"/> <!-- samples 1 for alpha -->
47 <value value="0x32" name="FMT6_8_8_8_8_SNORM"/>
48 <value value="0x33" name="FMT6_8_8_8_8_UINT"/>
49 <value value="0x34" name="FMT6_8_8_8_8_SINT"/>
50
51 <value value="0x35" name="FMT6_9_9_9_E5_FLOAT"/>
52
53 <value value="0x36" name="FMT6_10_10_10_2_UNORM"/>
54 <value value="0x37" name="FMT6_10_10_10_2_UNORM_DEST"/>
55 <value value="0x39" name="FMT6_10_10_10_2_SNORM"/>
56 <value value="0x3a" name="FMT6_10_10_10_2_UINT"/>
57 <value value="0x3b" name="FMT6_10_10_10_2_SINT"/>
58
59 <value value="0x42" name="FMT6_11_11_10_FLOAT"/>
60
61 <value value="0x43" name="FMT6_16_16_UNORM"/>
62 <value value="0x44" name="FMT6_16_16_SNORM"/>
63 <value value="0x45" name="FMT6_16_16_FLOAT"/>
64 <value value="0x46" name="FMT6_16_16_UINT"/>
65 <value value="0x47" name="FMT6_16_16_SINT"/>
66
67 <value value="0x48" name="FMT6_32_UNORM"/>
68 <value value="0x49" name="FMT6_32_SNORM"/>
69 <value value="0x4a" name="FMT6_32_FLOAT"/>
70 <value value="0x4b" name="FMT6_32_UINT"/>
71 <value value="0x4c" name="FMT6_32_SINT"/>
72 <value value="0x4d" name="FMT6_32_FIXED"/>
73
74 <value value="0x58" name="FMT6_16_16_16_UNORM"/>
75 <value value="0x59" name="FMT6_16_16_16_SNORM"/>
76 <value value="0x5a" name="FMT6_16_16_16_FLOAT"/>
77 <value value="0x5b" name="FMT6_16_16_16_UINT"/>
78 <value value="0x5c" name="FMT6_16_16_16_SINT"/>
79
80 <value value="0x60" name="FMT6_16_16_16_16_UNORM"/>
81 <value value="0x61" name="FMT6_16_16_16_16_SNORM"/>
82 <value value="0x62" name="FMT6_16_16_16_16_FLOAT"/>
83 <value value="0x63" name="FMT6_16_16_16_16_UINT"/>
84 <value value="0x64" name="FMT6_16_16_16_16_SINT"/>
85
86 <value value="0x65" name="FMT6_32_32_UNORM"/>
87 <value value="0x66" name="FMT6_32_32_SNORM"/>
88 <value value="0x67" name="FMT6_32_32_FLOAT"/>
89 <value value="0x68" name="FMT6_32_32_UINT"/>
90 <value value="0x69" name="FMT6_32_32_SINT"/>
91 <value value="0x6a" name="FMT6_32_32_FIXED"/>
92
93 <value value="0x70" name="FMT6_32_32_32_UNORM"/>
94 <value value="0x71" name="FMT6_32_32_32_SNORM"/>
95 <value value="0x72" name="FMT6_32_32_32_UINT"/>
96 <value value="0x73" name="FMT6_32_32_32_SINT"/>
97 <value value="0x74" name="FMT6_32_32_32_FLOAT"/>
98 <value value="0x75" name="FMT6_32_32_32_FIXED"/>
99
100 <value value="0x80" name="FMT6_32_32_32_32_UNORM"/>
101 <value value="0x81" name="FMT6_32_32_32_32_SNORM"/>
102 <value value="0x82" name="FMT6_32_32_32_32_FLOAT"/>
103 <value value="0x83" name="FMT6_32_32_32_32_UINT"/>
104 <value value="0x84" name="FMT6_32_32_32_32_SINT"/>
105 <value value="0x85" name="FMT6_32_32_32_32_FIXED"/>
106
107 <value value="0x8c" name="FMT6_G8R8B8R8_422_UNORM"/>
108 <value value="0x8d" name="FMT6_R8G8R8B8_422_UNORM"/>
109 <value value="0x8e" name="FMT6_R8_G8B8_2PLANE_420_UNORM"/>
110 <value value="0x90" name="FMT6_R8_G8_B8_3PLANE_420_UNORM"/>
111
112 <value value="0x91" name="FMT6_Z24_UNORM_S8_UINT_AS_R8G8B8A8"/>
113
114 <!-- used with the Y plane of FMT6_R8_G8B8_2PLANE_420_UNORM
115 which has different UBWC compression from regular 8_UNORM format -->
116 <value value="0x94" name="FMT6_8_PLANE_UNORM"/>
117
118 <value value="0xa0" name="FMT6_Z24_UNORM_S8_UINT"/>
119
120 <value value="0xab" name="FMT6_ETC2_RG11_UNORM"/>
121 <value value="0xac" name="FMT6_ETC2_RG11_SNORM"/>
122 <value value="0xad" name="FMT6_ETC2_R11_UNORM"/>
123 <value value="0xae" name="FMT6_ETC2_R11_SNORM"/>
124 <value value="0xaf" name="FMT6_ETC1"/>
125 <value value="0xb0" name="FMT6_ETC2_RGB8"/>
126 <value value="0xb1" name="FMT6_ETC2_RGBA8"/>
127 <value value="0xb2" name="FMT6_ETC2_RGB8A1"/>
128 <value value="0xb3" name="FMT6_DXT1"/>
129 <value value="0xb4" name="FMT6_DXT3"/>
130 <value value="0xb5" name="FMT6_DXT5"/>
131 <value value="0xb7" name="FMT6_RGTC1_UNORM"/>
132 <value value="0xb8" name="FMT6_RGTC1_SNORM"/>
133 <value value="0xbb" name="FMT6_RGTC2_UNORM"/>
134 <value value="0xbc" name="FMT6_RGTC2_SNORM"/>
135 <value value="0xbe" name="FMT6_BPTC_UFLOAT"/>
136 <value value="0xbf" name="FMT6_BPTC_FLOAT"/>
137 <value value="0xc0" name="FMT6_BPTC"/>
138 <value value="0xc1" name="FMT6_ASTC_4x4"/>
139 <value value="0xc2" name="FMT6_ASTC_5x4"/>
140 <value value="0xc3" name="FMT6_ASTC_5x5"/>
141 <value value="0xc4" name="FMT6_ASTC_6x5"/>
142 <value value="0xc5" name="FMT6_ASTC_6x6"/>
143 <value value="0xc6" name="FMT6_ASTC_8x5"/>
144 <value value="0xc7" name="FMT6_ASTC_8x6"/>
145 <value value="0xc8" name="FMT6_ASTC_8x8"/>
146 <value value="0xc9" name="FMT6_ASTC_10x5"/>
147 <value value="0xca" name="FMT6_ASTC_10x6"/>
148 <value value="0xcb" name="FMT6_ASTC_10x8"/>
149 <value value="0xcc" name="FMT6_ASTC_10x10"/>
150 <value value="0xcd" name="FMT6_ASTC_12x10"/>
151 <value value="0xce" name="FMT6_ASTC_12x12"/>
152
153 <!-- same as X8Z24_UNORM but for sampling stencil (integer, 2nd channel) -->
154 <value value="0xea" name="FMT6_S8Z24_UINT"/>
155
156 <!-- Not a hw enum, used internally in driver -->
157 <value value="0xff" name="FMT6_NONE"/>
158
159 </enum>
160
161 <!-- probably same as a5xx -->
162 <enum name="a6xx_depth_format">
163 <value name="DEPTH6_NONE" value="0"/>
164 <value name="DEPTH6_16" value="1"/>
165 <value name="DEPTH6_24_8" value="2"/>
166 <value name="DEPTH6_32" value="4"/>
167 </enum>
168
169 <bitset name="a6x_cp_protect" inline="yes">
170 <bitfield name="BASE_ADDR" low="0" high="17"/>
171 <bitfield name="MASK_LEN" low="18" high="30"/>
172 <bitfield name="READ" pos="31"/>
173 </bitset>
174
175 <enum name="a6xx_shader_id">
176 <value value="0x9" name="A6XX_TP0_TMO_DATA"/>
177 <value value="0xa" name="A6XX_TP0_SMO_DATA"/>
178 <value value="0xb" name="A6XX_TP0_MIPMAP_BASE_DATA"/>
179 <value value="0x19" name="A6XX_TP1_TMO_DATA"/>
180 <value value="0x1a" name="A6XX_TP1_SMO_DATA"/>
181 <value value="0x1b" name="A6XX_TP1_MIPMAP_BASE_DATA"/>
182 <value value="0x29" name="A6XX_SP_INST_DATA"/>
183 <value value="0x2a" name="A6XX_SP_LB_0_DATA"/>
184 <value value="0x2b" name="A6XX_SP_LB_1_DATA"/>
185 <value value="0x2c" name="A6XX_SP_LB_2_DATA"/>
186 <value value="0x2d" name="A6XX_SP_LB_3_DATA"/>
187 <value value="0x2e" name="A6XX_SP_LB_4_DATA"/>
188 <value value="0x2f" name="A6XX_SP_LB_5_DATA"/>
189 <value value="0x30" name="A6XX_SP_CB_BINDLESS_DATA"/>
190 <value value="0x31" name="A6XX_SP_CB_LEGACY_DATA"/>
191 <value value="0x32" name="A6XX_SP_UAV_DATA"/>
192 <value value="0x33" name="A6XX_SP_INST_TAG"/>
193 <value value="0x34" name="A6XX_SP_CB_BINDLESS_TAG"/>
194 <value value="0x35" name="A6XX_SP_TMO_UMO_TAG"/>
195 <value value="0x36" name="A6XX_SP_SMO_TAG"/>
196 <value value="0x37" name="A6XX_SP_STATE_DATA"/>
197 <value value="0x49" name="A6XX_HLSQ_CHUNK_CVS_RAM"/>
198 <value value="0x4a" name="A6XX_HLSQ_CHUNK_CPS_RAM"/>
199 <value value="0x4b" name="A6XX_HLSQ_CHUNK_CVS_RAM_TAG"/>
200 <value value="0x4c" name="A6XX_HLSQ_CHUNK_CPS_RAM_TAG"/>
201 <value value="0x4d" name="A6XX_HLSQ_ICB_CVS_CB_BASE_TAG"/>
202 <value value="0x4e" name="A6XX_HLSQ_ICB_CPS_CB_BASE_TAG"/>
203 <value value="0x50" name="A6XX_HLSQ_CVS_MISC_RAM"/>
204 <value value="0x51" name="A6XX_HLSQ_CPS_MISC_RAM"/>
205 <value value="0x52" name="A6XX_HLSQ_INST_RAM"/>
206 <value value="0x53" name="A6XX_HLSQ_GFX_CVS_CONST_RAM"/>
207 <value value="0x54" name="A6XX_HLSQ_GFX_CPS_CONST_RAM"/>
208 <value value="0x55" name="A6XX_HLSQ_CVS_MISC_RAM_TAG"/>
209 <value value="0x56" name="A6XX_HLSQ_CPS_MISC_RAM_TAG"/>
210 <value value="0x57" name="A6XX_HLSQ_INST_RAM_TAG"/>
211 <value value="0x58" name="A6XX_HLSQ_GFX_CVS_CONST_RAM_TAG"/>
212 <value value="0x59" name="A6XX_HLSQ_GFX_CPS_CONST_RAM_TAG"/>
213 <value value="0x5a" name="A6XX_HLSQ_PWR_REST_RAM"/>
214 <value value="0x5b" name="A6XX_HLSQ_PWR_REST_TAG"/>
215 <value value="0x60" name="A6XX_HLSQ_DATAPATH_META"/>
216 <value value="0x61" name="A6XX_HLSQ_FRONTEND_META"/>
217 <value value="0x62" name="A6XX_HLSQ_INDIRECT_META"/>
218 <value value="0x63" name="A6XX_HLSQ_BACKEND_META"/>
219 </enum>
220
221 <enum name="a6xx_debugbus_id">
222 <value value="0x1" name="A6XX_DBGBUS_CP"/>
223 <value value="0x2" name="A6XX_DBGBUS_RBBM"/>
224 <value value="0x3" name="A6XX_DBGBUS_VBIF"/>
225 <value value="0x4" name="A6XX_DBGBUS_HLSQ"/>
226 <value value="0x5" name="A6XX_DBGBUS_UCHE"/>
227 <value value="0x6" name="A6XX_DBGBUS_DPM"/>
228 <value value="0x7" name="A6XX_DBGBUS_TESS"/>
229 <value value="0x8" name="A6XX_DBGBUS_PC"/>
230 <value value="0x9" name="A6XX_DBGBUS_VFDP"/>
231 <value value="0xa" name="A6XX_DBGBUS_VPC"/>
232 <value value="0xb" name="A6XX_DBGBUS_TSE"/>
233 <value value="0xc" name="A6XX_DBGBUS_RAS"/>
234 <value value="0xd" name="A6XX_DBGBUS_VSC"/>
235 <value value="0xe" name="A6XX_DBGBUS_COM"/>
236 <value value="0x10" name="A6XX_DBGBUS_LRZ"/>
237 <value value="0x11" name="A6XX_DBGBUS_A2D"/>
238 <value value="0x12" name="A6XX_DBGBUS_CCUFCHE"/>
239 <value value="0x13" name="A6XX_DBGBUS_GMU_CX"/>
240 <value value="0x14" name="A6XX_DBGBUS_RBP"/>
241 <value value="0x15" name="A6XX_DBGBUS_DCS"/>
242 <value value="0x16" name="A6XX_DBGBUS_DBGC"/>
243 <value value="0x17" name="A6XX_DBGBUS_CX"/>
244 <value value="0x18" name="A6XX_DBGBUS_GMU_GX"/>
245 <value value="0x19" name="A6XX_DBGBUS_TPFCHE"/>
246 <value value="0x1a" name="A6XX_DBGBUS_GBIF_GX"/>
247 <value value="0x1d" name="A6XX_DBGBUS_GPC"/>
248 <value value="0x1e" name="A6XX_DBGBUS_LARC"/>
249 <value value="0x1f" name="A6XX_DBGBUS_HLSQ_SPTP"/>
250 <value value="0x20" name="A6XX_DBGBUS_RB_0"/>
251 <value value="0x21" name="A6XX_DBGBUS_RB_1"/>
252 <value value="0x24" name="A6XX_DBGBUS_UCHE_WRAPPER"/>
253 <value value="0x28" name="A6XX_DBGBUS_CCU_0"/>
254 <value value="0x29" name="A6XX_DBGBUS_CCU_1"/>
255 <value value="0x38" name="A6XX_DBGBUS_VFD_0"/>
256 <value value="0x39" name="A6XX_DBGBUS_VFD_1"/>
257 <value value="0x3a" name="A6XX_DBGBUS_VFD_2"/>
258 <value value="0x3b" name="A6XX_DBGBUS_VFD_3"/>
259 <value value="0x40" name="A6XX_DBGBUS_SP_0"/>
260 <value value="0x41" name="A6XX_DBGBUS_SP_1"/>
261 <value value="0x48" name="A6XX_DBGBUS_TPL1_0"/>
262 <value value="0x49" name="A6XX_DBGBUS_TPL1_1"/>
263 <value value="0x4a" name="A6XX_DBGBUS_TPL1_2"/>
264 <value value="0x4b" name="A6XX_DBGBUS_TPL1_3"/>
265 </enum>
266
267 <enum name="a6xx_cp_perfcounter_select">
268 <value value="0" name="PERF_CP_ALWAYS_COUNT"/>
269 <value value="1" name="PERF_CP_BUSY_GFX_CORE_IDLE"/>
270 <value value="2" name="PERF_CP_BUSY_CYCLES"/>
271 <value value="3" name="PERF_CP_NUM_PREEMPTIONS"/>
272 <value value="4" name="PERF_CP_PREEMPTION_REACTION_DELAY"/>
273 <value value="5" name="PERF_CP_PREEMPTION_SWITCH_OUT_TIME"/>
274 <value value="6" name="PERF_CP_PREEMPTION_SWITCH_IN_TIME"/>
275 <value value="7" name="PERF_CP_DEAD_DRAWS_IN_BIN_RENDER"/>
276 <value value="8" name="PERF_CP_PREDICATED_DRAWS_KILLED"/>
277 <value value="9" name="PERF_CP_MODE_SWITCH"/>
278 <value value="10" name="PERF_CP_ZPASS_DONE"/>
279 <value value="11" name="PERF_CP_CONTEXT_DONE"/>
280 <value value="12" name="PERF_CP_CACHE_FLUSH"/>
281 <value value="13" name="PERF_CP_LONG_PREEMPTIONS"/>
282 <value value="14" name="PERF_CP_SQE_I_CACHE_STARVE"/>
283 <value value="15" name="PERF_CP_SQE_IDLE"/>
284 <value value="16" name="PERF_CP_SQE_PM4_STARVE_RB_IB"/>
285 <value value="17" name="PERF_CP_SQE_PM4_STARVE_SDS"/>
286 <value value="18" name="PERF_CP_SQE_MRB_STARVE"/>
287 <value value="19" name="PERF_CP_SQE_RRB_STARVE"/>
288 <value value="20" name="PERF_CP_SQE_VSD_STARVE"/>
289 <value value="21" name="PERF_CP_VSD_DECODE_STARVE"/>
290 <value value="22" name="PERF_CP_SQE_PIPE_OUT_STALL"/>
291 <value value="23" name="PERF_CP_SQE_SYNC_STALL"/>
292 <value value="24" name="PERF_CP_SQE_PM4_WFI_STALL"/>
293 <value value="25" name="PERF_CP_SQE_SYS_WFI_STALL"/>
294 <value value="26" name="PERF_CP_SQE_T4_EXEC"/>
295 <value value="27" name="PERF_CP_SQE_LOAD_STATE_EXEC"/>
296 <value value="28" name="PERF_CP_SQE_SAVE_SDS_STATE"/>
297 <value value="29" name="PERF_CP_SQE_DRAW_EXEC"/>
298 <value value="30" name="PERF_CP_SQE_CTXT_REG_BUNCH_EXEC"/>
299 <value value="31" name="PERF_CP_SQE_EXEC_PROFILED"/>
300 <value value="32" name="PERF_CP_MEMORY_POOL_EMPTY"/>
301 <value value="33" name="PERF_CP_MEMORY_POOL_SYNC_STALL"/>
302 <value value="34" name="PERF_CP_MEMORY_POOL_ABOVE_THRESH"/>
303 <value value="35" name="PERF_CP_AHB_WR_STALL_PRE_DRAWS"/>
304 <value value="36" name="PERF_CP_AHB_STALL_SQE_GMU"/>
305 <value value="37" name="PERF_CP_AHB_STALL_SQE_WR_OTHER"/>
306 <value value="38" name="PERF_CP_AHB_STALL_SQE_RD_OTHER"/>
307 <value value="39" name="PERF_CP_CLUSTER0_EMPTY"/>
308 <value value="40" name="PERF_CP_CLUSTER1_EMPTY"/>
309 <value value="41" name="PERF_CP_CLUSTER2_EMPTY"/>
310 <value value="42" name="PERF_CP_CLUSTER3_EMPTY"/>
311 <value value="43" name="PERF_CP_CLUSTER4_EMPTY"/>
312 <value value="44" name="PERF_CP_CLUSTER5_EMPTY"/>
313 <value value="45" name="PERF_CP_PM4_DATA"/>
314 <value value="46" name="PERF_CP_PM4_HEADERS"/>
315 <value value="47" name="PERF_CP_VBIF_READ_BEATS"/>
316 <value value="48" name="PERF_CP_VBIF_WRITE_BEATS"/>
317 <value value="49" name="PERF_CP_SQE_INSTR_COUNTER"/>
318 </enum>
319
320 <enum name="a6xx_rbbm_perfcounter_select">
321 <value value="0" name="PERF_RBBM_ALWAYS_COUNT"/>
322 <value value="1" name="PERF_RBBM_ALWAYS_ON"/>
323 <value value="2" name="PERF_RBBM_TSE_BUSY"/>
324 <value value="3" name="PERF_RBBM_RAS_BUSY"/>
325 <value value="4" name="PERF_RBBM_PC_DCALL_BUSY"/>
326 <value value="5" name="PERF_RBBM_PC_VSD_BUSY"/>
327 <value value="6" name="PERF_RBBM_STATUS_MASKED"/>
328 <value value="7" name="PERF_RBBM_COM_BUSY"/>
329 <value value="8" name="PERF_RBBM_DCOM_BUSY"/>
330 <value value="9" name="PERF_RBBM_VBIF_BUSY"/>
331 <value value="10" name="PERF_RBBM_VSC_BUSY"/>
332 <value value="11" name="PERF_RBBM_TESS_BUSY"/>
333 <value value="12" name="PERF_RBBM_UCHE_BUSY"/>
334 <value value="13" name="PERF_RBBM_HLSQ_BUSY"/>
335 </enum>
336
337 <enum name="a6xx_pc_perfcounter_select">
338 <value value="0" name="PERF_PC_BUSY_CYCLES"/>
339 <value value="1" name="PERF_PC_WORKING_CYCLES"/>
340 <value value="2" name="PERF_PC_STALL_CYCLES_VFD"/>
341 <value value="3" name="PERF_PC_STALL_CYCLES_TSE"/>
342 <value value="4" name="PERF_PC_STALL_CYCLES_VPC"/>
343 <value value="5" name="PERF_PC_STALL_CYCLES_UCHE"/>
344 <value value="6" name="PERF_PC_STALL_CYCLES_TESS"/>
345 <value value="7" name="PERF_PC_STALL_CYCLES_TSE_ONLY"/>
346 <value value="8" name="PERF_PC_STALL_CYCLES_VPC_ONLY"/>
347 <value value="9" name="PERF_PC_PASS1_TF_STALL_CYCLES"/>
348 <value value="10" name="PERF_PC_STARVE_CYCLES_FOR_INDEX"/>
349 <value value="11" name="PERF_PC_STARVE_CYCLES_FOR_TESS_FACTOR"/>
350 <value value="12" name="PERF_PC_STARVE_CYCLES_FOR_VIZ_STREAM"/>
351 <value value="13" name="PERF_PC_STARVE_CYCLES_FOR_POSITION"/>
352 <value value="14" name="PERF_PC_STARVE_CYCLES_DI"/>
353 <value value="15" name="PERF_PC_VIS_STREAMS_LOADED"/>
354 <value value="16" name="PERF_PC_INSTANCES"/>
355 <value value="17" name="PERF_PC_VPC_PRIMITIVES"/>
356 <value value="18" name="PERF_PC_DEAD_PRIM"/>
357 <value value="19" name="PERF_PC_LIVE_PRIM"/>
358 <value value="20" name="PERF_PC_VERTEX_HITS"/>
359 <value value="21" name="PERF_PC_IA_VERTICES"/>
360 <value value="22" name="PERF_PC_IA_PRIMITIVES"/>
361 <value value="23" name="PERF_PC_GS_PRIMITIVES"/>
362 <value value="24" name="PERF_PC_HS_INVOCATIONS"/>
363 <value value="25" name="PERF_PC_DS_INVOCATIONS"/>
364 <value value="26" name="PERF_PC_VS_INVOCATIONS"/>
365 <value value="27" name="PERF_PC_GS_INVOCATIONS"/>
366 <value value="28" name="PERF_PC_DS_PRIMITIVES"/>
367 <value value="29" name="PERF_PC_VPC_POS_DATA_TRANSACTION"/>
368 <value value="30" name="PERF_PC_3D_DRAWCALLS"/>
369 <value value="31" name="PERF_PC_2D_DRAWCALLS"/>
370 <value value="32" name="PERF_PC_NON_DRAWCALL_GLOBAL_EVENTS"/>
371 <value value="33" name="PERF_TESS_BUSY_CYCLES"/>
372 <value value="34" name="PERF_TESS_WORKING_CYCLES"/>
373 <value value="35" name="PERF_TESS_STALL_CYCLES_PC"/>
374 <value value="36" name="PERF_TESS_STARVE_CYCLES_PC"/>
375 <value value="37" name="PERF_PC_TSE_TRANSACTION"/>
376 <value value="38" name="PERF_PC_TSE_VERTEX"/>
377 <value value="39" name="PERF_PC_TESS_PC_UV_TRANS"/>
378 <value value="40" name="PERF_PC_TESS_PC_UV_PATCHES"/>
379 <value value="41" name="PERF_PC_TESS_FACTOR_TRANS"/>
380 </enum>
381
382 <enum name="a6xx_vfd_perfcounter_select">
383 <value value="0" name="PERF_VFD_BUSY_CYCLES"/>
384 <value value="1" name="PERF_VFD_STALL_CYCLES_UCHE"/>
385 <value value="2" name="PERF_VFD_STALL_CYCLES_VPC_ALLOC"/>
386 <value value="3" name="PERF_VFD_STALL_CYCLES_SP_INFO"/>
387 <value value="4" name="PERF_VFD_STALL_CYCLES_SP_ATTR"/>
388 <value value="5" name="PERF_VFD_STARVE_CYCLES_UCHE"/>
389 <value value="6" name="PERF_VFD_RBUFFER_FULL"/>
390 <value value="7" name="PERF_VFD_ATTR_INFO_FIFO_FULL"/>
391 <value value="8" name="PERF_VFD_DECODED_ATTRIBUTE_BYTES"/>
392 <value value="9" name="PERF_VFD_NUM_ATTRIBUTES"/>
393 <value value="10" name="PERF_VFD_UPPER_SHADER_FIBERS"/>
394 <value value="11" name="PERF_VFD_LOWER_SHADER_FIBERS"/>
395 <value value="12" name="PERF_VFD_MODE_0_FIBERS"/>
396 <value value="13" name="PERF_VFD_MODE_1_FIBERS"/>
397 <value value="14" name="PERF_VFD_MODE_2_FIBERS"/>
398 <value value="15" name="PERF_VFD_MODE_3_FIBERS"/>
399 <value value="16" name="PERF_VFD_MODE_4_FIBERS"/>
400 <value value="17" name="PERF_VFD_TOTAL_VERTICES"/>
401 <value value="18" name="PERF_VFDP_STALL_CYCLES_VFD"/>
402 <value value="19" name="PERF_VFDP_STALL_CYCLES_VFD_INDEX"/>
403 <value value="20" name="PERF_VFDP_STALL_CYCLES_VFD_PROG"/>
404 <value value="21" name="PERF_VFDP_STARVE_CYCLES_PC"/>
405 <value value="22" name="PERF_VFDP_VS_STAGE_WAVES"/>
406 </enum>
407
408 <enum name="a6xx_hlsq_perfcounter_select">
409 <value value="0" name="PERF_HLSQ_BUSY_CYCLES"/>
410 <value value="1" name="PERF_HLSQ_STALL_CYCLES_UCHE"/>
411 <value value="2" name="PERF_HLSQ_STALL_CYCLES_SP_STATE"/>
412 <value value="3" name="PERF_HLSQ_STALL_CYCLES_SP_FS_STAGE"/>
413 <value value="4" name="PERF_HLSQ_UCHE_LATENCY_CYCLES"/>
414 <value value="5" name="PERF_HLSQ_UCHE_LATENCY_COUNT"/>
415 <value value="6" name="PERF_HLSQ_FS_STAGE_1X_WAVES"/>
416 <value value="7" name="PERF_HLSQ_FS_STAGE_2X_WAVES"/>
417 <value value="8" name="PERF_HLSQ_QUADS"/>
418 <value value="9" name="PERF_HLSQ_CS_INVOCATIONS"/>
419 <value value="10" name="PERF_HLSQ_COMPUTE_DRAWCALLS"/>
420 <value value="11" name="PERF_HLSQ_FS_DATA_WAIT_PROGRAMMING"/>
421 <value value="12" name="PERF_HLSQ_DUAL_FS_PROG_ACTIVE"/>
422 <value value="13" name="PERF_HLSQ_DUAL_VS_PROG_ACTIVE"/>
423 <value value="14" name="PERF_HLSQ_FS_BATCH_COUNT_ZERO"/>
424 <value value="15" name="PERF_HLSQ_VS_BATCH_COUNT_ZERO"/>
425 <value value="16" name="PERF_HLSQ_WAVE_PENDING_NO_QUAD"/>
426 <value value="17" name="PERF_HLSQ_WAVE_PENDING_NO_PRIM_BASE"/>
427 <value value="18" name="PERF_HLSQ_STALL_CYCLES_VPC"/>
428 <value value="19" name="PERF_HLSQ_PIXELS"/>
429 <value value="20" name="PERF_HLSQ_DRAW_MODE_SWITCH_VSFS_SYNC"/>
430 </enum>
431
432 <enum name="a6xx_vpc_perfcounter_select">
433 <value value="0" name="PERF_VPC_BUSY_CYCLES"/>
434 <value value="1" name="PERF_VPC_WORKING_CYCLES"/>
435 <value value="2" name="PERF_VPC_STALL_CYCLES_UCHE"/>
436 <value value="3" name="PERF_VPC_STALL_CYCLES_VFD_WACK"/>
437 <value value="4" name="PERF_VPC_STALL_CYCLES_HLSQ_PRIM_ALLOC"/>
438 <value value="5" name="PERF_VPC_STALL_CYCLES_PC"/>
439 <value value="6" name="PERF_VPC_STALL_CYCLES_SP_LM"/>
440 <value value="7" name="PERF_VPC_STARVE_CYCLES_SP"/>
441 <value value="8" name="PERF_VPC_STARVE_CYCLES_LRZ"/>
442 <value value="9" name="PERF_VPC_PC_PRIMITIVES"/>
443 <value value="10" name="PERF_VPC_SP_COMPONENTS"/>
444 <value value="11" name="PERF_VPC_STALL_CYCLES_VPCRAM_POS"/>
445 <value value="12" name="PERF_VPC_LRZ_ASSIGN_PRIMITIVES"/>
446 <value value="13" name="PERF_VPC_RB_VISIBLE_PRIMITIVES"/>
447 <value value="14" name="PERF_VPC_LM_TRANSACTION"/>
448 <value value="15" name="PERF_VPC_STREAMOUT_TRANSACTION"/>
449 <value value="16" name="PERF_VPC_VS_BUSY_CYCLES"/>
450 <value value="17" name="PERF_VPC_PS_BUSY_CYCLES"/>
451 <value value="18" name="PERF_VPC_VS_WORKING_CYCLES"/>
452 <value value="19" name="PERF_VPC_PS_WORKING_CYCLES"/>
453 <value value="20" name="PERF_VPC_STARVE_CYCLES_RB"/>
454 <value value="21" name="PERF_VPC_NUM_VPCRAM_READ_POS"/>
455 <value value="22" name="PERF_VPC_WIT_FULL_CYCLES"/>
456 <value value="23" name="PERF_VPC_VPCRAM_FULL_CYCLES"/>
457 <value value="24" name="PERF_VPC_LM_FULL_WAIT_FOR_INTP_END"/>
458 <value value="25" name="PERF_VPC_NUM_VPCRAM_WRITE"/>
459 <value value="26" name="PERF_VPC_NUM_VPCRAM_READ_SO"/>
460 <value value="27" name="PERF_VPC_NUM_ATTR_REQ_LM"/>
461 </enum>
462
463 <enum name="a6xx_tse_perfcounter_select">
464 <value value="0" name="PERF_TSE_BUSY_CYCLES"/>
465 <value value="1" name="PERF_TSE_CLIPPING_CYCLES"/>
466 <value value="2" name="PERF_TSE_STALL_CYCLES_RAS"/>
467 <value value="3" name="PERF_TSE_STALL_CYCLES_LRZ_BARYPLANE"/>
468 <value value="4" name="PERF_TSE_STALL_CYCLES_LRZ_ZPLANE"/>
469 <value value="5" name="PERF_TSE_STARVE_CYCLES_PC"/>
470 <value value="6" name="PERF_TSE_INPUT_PRIM"/>
471 <value value="7" name="PERF_TSE_INPUT_NULL_PRIM"/>
472 <value value="8" name="PERF_TSE_TRIVAL_REJ_PRIM"/>
473 <value value="9" name="PERF_TSE_CLIPPED_PRIM"/>
474 <value value="10" name="PERF_TSE_ZERO_AREA_PRIM"/>
475 <value value="11" name="PERF_TSE_FACENESS_CULLED_PRIM"/>
476 <value value="12" name="PERF_TSE_ZERO_PIXEL_PRIM"/>
477 <value value="13" name="PERF_TSE_OUTPUT_NULL_PRIM"/>
478 <value value="14" name="PERF_TSE_OUTPUT_VISIBLE_PRIM"/>
479 <value value="15" name="PERF_TSE_CINVOCATION"/>
480 <value value="16" name="PERF_TSE_CPRIMITIVES"/>
481 <value value="17" name="PERF_TSE_2D_INPUT_PRIM"/>
482 <value value="18" name="PERF_TSE_2D_ALIVE_CYCLES"/>
483 <value value="19" name="PERF_TSE_CLIP_PLANES"/>
484 </enum>
485
486 <enum name="a6xx_ras_perfcounter_select">
487 <value value="0" name="PERF_RAS_BUSY_CYCLES"/>
488 <value value="1" name="PERF_RAS_SUPERTILE_ACTIVE_CYCLES"/>
489 <value value="2" name="PERF_RAS_STALL_CYCLES_LRZ"/>
490 <value value="3" name="PERF_RAS_STARVE_CYCLES_TSE"/>
491 <value value="4" name="PERF_RAS_SUPER_TILES"/>
492 <value value="5" name="PERF_RAS_8X4_TILES"/>
493 <value value="6" name="PERF_RAS_MASKGEN_ACTIVE"/>
494 <value value="7" name="PERF_RAS_FULLY_COVERED_SUPER_TILES"/>
495 <value value="8" name="PERF_RAS_FULLY_COVERED_8X4_TILES"/>
496 <value value="9" name="PERF_RAS_PRIM_KILLED_INVISILBE"/>
497 <value value="10" name="PERF_RAS_SUPERTILE_GEN_ACTIVE_CYCLES"/>
498 <value value="11" name="PERF_RAS_LRZ_INTF_WORKING_CYCLES"/>
499 <value value="12" name="PERF_RAS_BLOCKS"/>
500 </enum>
501
502 <enum name="a6xx_uche_perfcounter_select">
503 <value value="0" name="PERF_UCHE_BUSY_CYCLES"/>
504 <value value="1" name="PERF_UCHE_STALL_CYCLES_ARBITER"/>
505 <value value="2" name="PERF_UCHE_VBIF_LATENCY_CYCLES"/>
506 <value value="3" name="PERF_UCHE_VBIF_LATENCY_SAMPLES"/>
507 <value value="4" name="PERF_UCHE_VBIF_READ_BEATS_TP"/>
508 <value value="5" name="PERF_UCHE_VBIF_READ_BEATS_VFD"/>
509 <value value="6" name="PERF_UCHE_VBIF_READ_BEATS_HLSQ"/>
510 <value value="7" name="PERF_UCHE_VBIF_READ_BEATS_LRZ"/>
511 <value value="8" name="PERF_UCHE_VBIF_READ_BEATS_SP"/>
512 <value value="9" name="PERF_UCHE_READ_REQUESTS_TP"/>
513 <value value="10" name="PERF_UCHE_READ_REQUESTS_VFD"/>
514 <value value="11" name="PERF_UCHE_READ_REQUESTS_HLSQ"/>
515 <value value="12" name="PERF_UCHE_READ_REQUESTS_LRZ"/>
516 <value value="13" name="PERF_UCHE_READ_REQUESTS_SP"/>
517 <value value="14" name="PERF_UCHE_WRITE_REQUESTS_LRZ"/>
518 <value value="15" name="PERF_UCHE_WRITE_REQUESTS_SP"/>
519 <value value="16" name="PERF_UCHE_WRITE_REQUESTS_VPC"/>
520 <value value="17" name="PERF_UCHE_WRITE_REQUESTS_VSC"/>
521 <value value="18" name="PERF_UCHE_EVICTS"/>
522 <value value="19" name="PERF_UCHE_BANK_REQ0"/>
523 <value value="20" name="PERF_UCHE_BANK_REQ1"/>
524 <value value="21" name="PERF_UCHE_BANK_REQ2"/>
525 <value value="22" name="PERF_UCHE_BANK_REQ3"/>
526 <value value="23" name="PERF_UCHE_BANK_REQ4"/>
527 <value value="24" name="PERF_UCHE_BANK_REQ5"/>
528 <value value="25" name="PERF_UCHE_BANK_REQ6"/>
529 <value value="26" name="PERF_UCHE_BANK_REQ7"/>
530 <value value="27" name="PERF_UCHE_VBIF_READ_BEATS_CH0"/>
531 <value value="28" name="PERF_UCHE_VBIF_READ_BEATS_CH1"/>
532 <value value="29" name="PERF_UCHE_GMEM_READ_BEATS"/>
533 <value value="30" name="PERF_UCHE_TPH_REF_FULL"/>
534 <value value="31" name="PERF_UCHE_TPH_VICTIM_FULL"/>
535 <value value="32" name="PERF_UCHE_TPH_EXT_FULL"/>
536 <value value="33" name="PERF_UCHE_VBIF_STALL_WRITE_DATA"/>
537 <value value="34" name="PERF_UCHE_DCMP_LATENCY_SAMPLES"/>
538 <value value="35" name="PERF_UCHE_DCMP_LATENCY_CYCLES"/>
539 <value value="36" name="PERF_UCHE_VBIF_READ_BEATS_PC"/>
540 <value value="37" name="PERF_UCHE_READ_REQUESTS_PC"/>
541 <value value="38" name="PERF_UCHE_RAM_READ_REQ"/>
542 <value value="39" name="PERF_UCHE_RAM_WRITE_REQ"/>
543 </enum>
544
545 <enum name="a6xx_tp_perfcounter_select">
546 <value value="0" name="PERF_TP_BUSY_CYCLES"/>
547 <value value="1" name="PERF_TP_STALL_CYCLES_UCHE"/>
548 <value value="2" name="PERF_TP_LATENCY_CYCLES"/>
549 <value value="3" name="PERF_TP_LATENCY_TRANS"/>
550 <value value="4" name="PERF_TP_FLAG_CACHE_REQUEST_SAMPLES"/>
551 <value value="5" name="PERF_TP_FLAG_CACHE_REQUEST_LATENCY"/>
552 <value value="6" name="PERF_TP_L1_CACHELINE_REQUESTS"/>
553 <value value="7" name="PERF_TP_L1_CACHELINE_MISSES"/>
554 <value value="8" name="PERF_TP_SP_TP_TRANS"/>
555 <value value="9" name="PERF_TP_TP_SP_TRANS"/>
556 <value value="10" name="PERF_TP_OUTPUT_PIXELS"/>
557 <value value="11" name="PERF_TP_FILTER_WORKLOAD_16BIT"/>
558 <value value="12" name="PERF_TP_FILTER_WORKLOAD_32BIT"/>
559 <value value="13" name="PERF_TP_QUADS_RECEIVED"/>
560 <value value="14" name="PERF_TP_QUADS_OFFSET"/>
561 <value value="15" name="PERF_TP_QUADS_SHADOW"/>
562 <value value="16" name="PERF_TP_QUADS_ARRAY"/>
563 <value value="17" name="PERF_TP_QUADS_GRADIENT"/>
564 <value value="18" name="PERF_TP_QUADS_1D"/>
565 <value value="19" name="PERF_TP_QUADS_2D"/>
566 <value value="20" name="PERF_TP_QUADS_BUFFER"/>
567 <value value="21" name="PERF_TP_QUADS_3D"/>
568 <value value="22" name="PERF_TP_QUADS_CUBE"/>
569 <value value="23" name="PERF_TP_DIVERGENT_QUADS_RECEIVED"/>
570 <value value="24" name="PERF_TP_PRT_NON_RESIDENT_EVENTS"/>
571 <value value="25" name="PERF_TP_OUTPUT_PIXELS_POINT"/>
572 <value value="26" name="PERF_TP_OUTPUT_PIXELS_BILINEAR"/>
573 <value value="27" name="PERF_TP_OUTPUT_PIXELS_MIP"/>
574 <value value="28" name="PERF_TP_OUTPUT_PIXELS_ANISO"/>
575 <value value="29" name="PERF_TP_OUTPUT_PIXELS_ZERO_LOD"/>
576 <value value="30" name="PERF_TP_FLAG_CACHE_REQUESTS"/>
577 <value value="31" name="PERF_TP_FLAG_CACHE_MISSES"/>
578 <value value="32" name="PERF_TP_L1_5_L2_REQUESTS"/>
579 <value value="33" name="PERF_TP_2D_OUTPUT_PIXELS"/>
580 <value value="34" name="PERF_TP_2D_OUTPUT_PIXELS_POINT"/>
581 <value value="35" name="PERF_TP_2D_OUTPUT_PIXELS_BILINEAR"/>
582 <value value="36" name="PERF_TP_2D_FILTER_WORKLOAD_16BIT"/>
583 <value value="37" name="PERF_TP_2D_FILTER_WORKLOAD_32BIT"/>
584 <value value="38" name="PERF_TP_TPA2TPC_TRANS"/>
585 <value value="39" name="PERF_TP_L1_MISSES_ASTC_1TILE"/>
586 <value value="40" name="PERF_TP_L1_MISSES_ASTC_2TILE"/>
587 <value value="41" name="PERF_TP_L1_MISSES_ASTC_4TILE"/>
588 <value value="42" name="PERF_TP_L1_5_L2_COMPRESS_REQS"/>
589 <value value="43" name="PERF_TP_L1_5_L2_COMPRESS_MISS"/>
590 <value value="44" name="PERF_TP_L1_BANK_CONFLICT"/>
591 <value value="45" name="PERF_TP_L1_5_MISS_LATENCY_CYCLES"/>
592 <value value="46" name="PERF_TP_L1_5_MISS_LATENCY_TRANS"/>
593 <value value="47" name="PERF_TP_QUADS_CONSTANT_MULTIPLIED"/>
594 <value value="48" name="PERF_TP_FRONTEND_WORKING_CYCLES"/>
595 <value value="49" name="PERF_TP_L1_TAG_WORKING_CYCLES"/>
596 <value value="50" name="PERF_TP_L1_DATA_WRITE_WORKING_CYCLES"/>
597 <value value="51" name="PERF_TP_PRE_L1_DECOM_WORKING_CYCLES"/>
598 <value value="52" name="PERF_TP_BACKEND_WORKING_CYCLES"/>
599 <value value="53" name="PERF_TP_FLAG_CACHE_WORKING_CYCLES"/>
600 <value value="54" name="PERF_TP_L1_5_CACHE_WORKING_CYCLES"/>
601 <value value="55" name="PERF_TP_STARVE_CYCLES_SP"/>
602 <value value="56" name="PERF_TP_STARVE_CYCLES_UCHE"/>
603 </enum>
604
605 <enum name="a6xx_sp_perfcounter_select">
606 <value value="0" name="PERF_SP_BUSY_CYCLES"/>
607 <value value="1" name="PERF_SP_ALU_WORKING_CYCLES"/>
608 <value value="2" name="PERF_SP_EFU_WORKING_CYCLES"/>
609 <value value="3" name="PERF_SP_STALL_CYCLES_VPC"/>
610 <value value="4" name="PERF_SP_STALL_CYCLES_TP"/>
611 <value value="5" name="PERF_SP_STALL_CYCLES_UCHE"/>
612 <value value="6" name="PERF_SP_STALL_CYCLES_RB"/>
613 <value value="7" name="PERF_SP_NON_EXECUTION_CYCLES"/>
614 <value value="8" name="PERF_SP_WAVE_CONTEXTS"/>
615 <value value="9" name="PERF_SP_WAVE_CONTEXT_CYCLES"/>
616 <value value="10" name="PERF_SP_FS_STAGE_WAVE_CYCLES"/>
617 <value value="11" name="PERF_SP_FS_STAGE_WAVE_SAMPLES"/>
618 <value value="12" name="PERF_SP_VS_STAGE_WAVE_CYCLES"/>
619 <value value="13" name="PERF_SP_VS_STAGE_WAVE_SAMPLES"/>
620 <value value="14" name="PERF_SP_FS_STAGE_DURATION_CYCLES"/>
621 <value value="15" name="PERF_SP_VS_STAGE_DURATION_CYCLES"/>
622 <value value="16" name="PERF_SP_WAVE_CTRL_CYCLES"/>
623 <value value="17" name="PERF_SP_WAVE_LOAD_CYCLES"/>
624 <value value="18" name="PERF_SP_WAVE_EMIT_CYCLES"/>
625 <value value="19" name="PERF_SP_WAVE_NOP_CYCLES"/>
626 <value value="20" name="PERF_SP_WAVE_WAIT_CYCLES"/>
627 <value value="21" name="PERF_SP_WAVE_FETCH_CYCLES"/>
628 <value value="22" name="PERF_SP_WAVE_IDLE_CYCLES"/>
629 <value value="23" name="PERF_SP_WAVE_END_CYCLES"/>
630 <value value="24" name="PERF_SP_WAVE_LONG_SYNC_CYCLES"/>
631 <value value="25" name="PERF_SP_WAVE_SHORT_SYNC_CYCLES"/>
632 <value value="26" name="PERF_SP_WAVE_JOIN_CYCLES"/>
633 <value value="27" name="PERF_SP_LM_LOAD_INSTRUCTIONS"/>
634 <value value="28" name="PERF_SP_LM_STORE_INSTRUCTIONS"/>
635 <value value="29" name="PERF_SP_LM_ATOMICS"/>
636 <value value="30" name="PERF_SP_GM_LOAD_INSTRUCTIONS"/>
637 <value value="31" name="PERF_SP_GM_STORE_INSTRUCTIONS"/>
638 <value value="32" name="PERF_SP_GM_ATOMICS"/>
639 <value value="33" name="PERF_SP_VS_STAGE_TEX_INSTRUCTIONS"/>
640 <value value="34" name="PERF_SP_VS_STAGE_EFU_INSTRUCTIONS"/>
641 <value value="35" name="PERF_SP_VS_STAGE_FULL_ALU_INSTRUCTIONS"/>
642 <value value="36" name="PERF_SP_VS_STAGE_HALF_ALU_INSTRUCTIONS"/>
643 <value value="37" name="PERF_SP_FS_STAGE_TEX_INSTRUCTIONS"/>
644 <value value="38" name="PERF_SP_FS_STAGE_CFLOW_INSTRUCTIONS"/>
645 <value value="39" name="PERF_SP_FS_STAGE_EFU_INSTRUCTIONS"/>
646 <value value="40" name="PERF_SP_FS_STAGE_FULL_ALU_INSTRUCTIONS"/>
647 <value value="41" name="PERF_SP_FS_STAGE_HALF_ALU_INSTRUCTIONS"/>
648 <value value="42" name="PERF_SP_FS_STAGE_BARY_INSTRUCTIONS"/>
649 <value value="43" name="PERF_SP_VS_INSTRUCTIONS"/>
650 <value value="44" name="PERF_SP_FS_INSTRUCTIONS"/>
651 <value value="45" name="PERF_SP_ADDR_LOCK_COUNT"/>
652 <value value="46" name="PERF_SP_UCHE_READ_TRANS"/>
653 <value value="47" name="PERF_SP_UCHE_WRITE_TRANS"/>
654 <value value="48" name="PERF_SP_EXPORT_VPC_TRANS"/>
655 <value value="49" name="PERF_SP_EXPORT_RB_TRANS"/>
656 <value value="50" name="PERF_SP_PIXELS_KILLED"/>
657 <value value="51" name="PERF_SP_ICL1_REQUESTS"/>
658 <value value="52" name="PERF_SP_ICL1_MISSES"/>
659 <value value="53" name="PERF_SP_HS_INSTRUCTIONS"/>
660 <value value="54" name="PERF_SP_DS_INSTRUCTIONS"/>
661 <value value="55" name="PERF_SP_GS_INSTRUCTIONS"/>
662 <value value="56" name="PERF_SP_CS_INSTRUCTIONS"/>
663 <value value="57" name="PERF_SP_GPR_READ"/>
664 <value value="58" name="PERF_SP_GPR_WRITE"/>
665 <value value="59" name="PERF_SP_FS_STAGE_HALF_EFU_INSTRUCTIONS"/>
666 <value value="60" name="PERF_SP_VS_STAGE_HALF_EFU_INSTRUCTIONS"/>
667 <value value="61" name="PERF_SP_LM_BANK_CONFLICTS"/>
668 <value value="62" name="PERF_SP_TEX_CONTROL_WORKING_CYCLES"/>
669 <value value="63" name="PERF_SP_LOAD_CONTROL_WORKING_CYCLES"/>
670 <value value="64" name="PERF_SP_FLOW_CONTROL_WORKING_CYCLES"/>
671 <value value="65" name="PERF_SP_LM_WORKING_CYCLES"/>
672 <value value="66" name="PERF_SP_DISPATCHER_WORKING_CYCLES"/>
673 <value value="67" name="PERF_SP_SEQUENCER_WORKING_CYCLES"/>
674 <value value="68" name="PERF_SP_LOW_EFFICIENCY_STARVED_BY_TP"/>
675 <value value="69" name="PERF_SP_STARVE_CYCLES_HLSQ"/>
676 <value value="70" name="PERF_SP_NON_EXECUTION_LS_CYCLES"/>
677 <value value="71" name="PERF_SP_WORKING_EU"/>
678 <value value="72" name="PERF_SP_ANY_EU_WORKING"/>
679 <value value="73" name="PERF_SP_WORKING_EU_FS_STAGE"/>
680 <value value="74" name="PERF_SP_ANY_EU_WORKING_FS_STAGE"/>
681 <value value="75" name="PERF_SP_WORKING_EU_VS_STAGE"/>
682 <value value="76" name="PERF_SP_ANY_EU_WORKING_VS_STAGE"/>
683 <value value="77" name="PERF_SP_WORKING_EU_CS_STAGE"/>
684 <value value="78" name="PERF_SP_ANY_EU_WORKING_CS_STAGE"/>
685 <value value="79" name="PERF_SP_GPR_READ_PREFETCH"/>
686 <value value="80" name="PERF_SP_GPR_READ_CONFLICT"/>
687 <value value="81" name="PERF_SP_GPR_WRITE_CONFLICT"/>
688 <value value="82" name="PERF_SP_GM_LOAD_LATENCY_CYCLES"/>
689 <value value="83" name="PERF_SP_GM_LOAD_LATENCY_SAMPLES"/>
690 <value value="84" name="PERF_SP_EXECUTABLE_WAVES"/>
691 </enum>
692
693 <enum name="a6xx_rb_perfcounter_select">
694 <value value="0" name="PERF_RB_BUSY_CYCLES"/>
695 <value value="1" name="PERF_RB_STALL_CYCLES_HLSQ"/>
696 <value value="2" name="PERF_RB_STALL_CYCLES_FIFO0_FULL"/>
697 <value value="3" name="PERF_RB_STALL_CYCLES_FIFO1_FULL"/>
698 <value value="4" name="PERF_RB_STALL_CYCLES_FIFO2_FULL"/>
699 <value value="5" name="PERF_RB_STARVE_CYCLES_SP"/>
700 <value value="6" name="PERF_RB_STARVE_CYCLES_LRZ_TILE"/>
701 <value value="7" name="PERF_RB_STARVE_CYCLES_CCU"/>
702 <value value="8" name="PERF_RB_STARVE_CYCLES_Z_PLANE"/>
703 <value value="9" name="PERF_RB_STARVE_CYCLES_BARY_PLANE"/>
704 <value value="10" name="PERF_RB_Z_WORKLOAD"/>
705 <value value="11" name="PERF_RB_HLSQ_ACTIVE"/>
706 <value value="12" name="PERF_RB_Z_READ"/>
707 <value value="13" name="PERF_RB_Z_WRITE"/>
708 <value value="14" name="PERF_RB_C_READ"/>
709 <value value="15" name="PERF_RB_C_WRITE"/>
710 <value value="16" name="PERF_RB_TOTAL_PASS"/>
711 <value value="17" name="PERF_RB_Z_PASS"/>
712 <value value="18" name="PERF_RB_Z_FAIL"/>
713 <value value="19" name="PERF_RB_S_FAIL"/>
714 <value value="20" name="PERF_RB_BLENDED_FXP_COMPONENTS"/>
715 <value value="21" name="PERF_RB_BLENDED_FP16_COMPONENTS"/>
716 <value value="22" name="PERF_RB_PS_INVOCATIONS"/>
717 <value value="23" name="PERF_RB_2D_ALIVE_CYCLES"/>
718 <value value="24" name="PERF_RB_2D_STALL_CYCLES_A2D"/>
719 <value value="25" name="PERF_RB_2D_STARVE_CYCLES_SRC"/>
720 <value value="26" name="PERF_RB_2D_STARVE_CYCLES_SP"/>
721 <value value="27" name="PERF_RB_2D_STARVE_CYCLES_DST"/>
722 <value value="28" name="PERF_RB_2D_VALID_PIXELS"/>
723 <value value="29" name="PERF_RB_3D_PIXELS"/>
724 <value value="30" name="PERF_RB_BLENDER_WORKING_CYCLES"/>
725 <value value="31" name="PERF_RB_ZPROC_WORKING_CYCLES"/>
726 <value value="32" name="PERF_RB_CPROC_WORKING_CYCLES"/>
727 <value value="33" name="PERF_RB_SAMPLER_WORKING_CYCLES"/>
728 <value value="34" name="PERF_RB_STALL_CYCLES_CCU_COLOR_READ"/>
729 <value value="35" name="PERF_RB_STALL_CYCLES_CCU_COLOR_WRITE"/>
730 <value value="36" name="PERF_RB_STALL_CYCLES_CCU_DEPTH_READ"/>
731 <value value="37" name="PERF_RB_STALL_CYCLES_CCU_DEPTH_WRITE"/>
732 <value value="38" name="PERF_RB_STALL_CYCLES_VPC"/>
733 <value value="39" name="PERF_RB_2D_INPUT_TRANS"/>
734 <value value="40" name="PERF_RB_2D_OUTPUT_RB_DST_TRANS"/>
735 <value value="41" name="PERF_RB_2D_OUTPUT_RB_SRC_TRANS"/>
736 <value value="42" name="PERF_RB_BLENDED_FP32_COMPONENTS"/>
737 <value value="43" name="PERF_RB_COLOR_PIX_TILES"/>
738 <value value="44" name="PERF_RB_STALL_CYCLES_CCU"/>
739 <value value="45" name="PERF_RB_EARLY_Z_ARB3_GRANT"/>
740 <value value="46" name="PERF_RB_LATE_Z_ARB3_GRANT"/>
741 <value value="47" name="PERF_RB_EARLY_Z_SKIP_GRANT"/>
742 </enum>
743
744 <enum name="a6xx_vsc_perfcounter_select">
745 <value value="0" name="PERF_VSC_BUSY_CYCLES"/>
746 <value value="1" name="PERF_VSC_WORKING_CYCLES"/>
747 <value value="2" name="PERF_VSC_STALL_CYCLES_UCHE"/>
748 <value value="3" name="PERF_VSC_EOT_NUM"/>
749 <value value="4" name="PERF_VSC_INPUT_TILES"/>
750 </enum>
751
752 <enum name="a6xx_ccu_perfcounter_select">
753 <value value="0" name="PERF_CCU_BUSY_CYCLES"/>
754 <value value="1" name="PERF_CCU_STALL_CYCLES_RB_DEPTH_RETURN"/>
755 <value value="2" name="PERF_CCU_STALL_CYCLES_RB_COLOR_RETURN"/>
756 <value value="3" name="PERF_CCU_STARVE_CYCLES_FLAG_RETURN"/>
757 <value value="4" name="PERF_CCU_DEPTH_BLOCKS"/>
758 <value value="5" name="PERF_CCU_COLOR_BLOCKS"/>
759 <value value="6" name="PERF_CCU_DEPTH_BLOCK_HIT"/>
760 <value value="7" name="PERF_CCU_COLOR_BLOCK_HIT"/>
761 <value value="8" name="PERF_CCU_PARTIAL_BLOCK_READ"/>
762 <value value="9" name="PERF_CCU_GMEM_READ"/>
763 <value value="10" name="PERF_CCU_GMEM_WRITE"/>
764 <value value="11" name="PERF_CCU_DEPTH_READ_FLAG0_COUNT"/>
765 <value value="12" name="PERF_CCU_DEPTH_READ_FLAG1_COUNT"/>
766 <value value="13" name="PERF_CCU_DEPTH_READ_FLAG2_COUNT"/>
767 <value value="14" name="PERF_CCU_DEPTH_READ_FLAG3_COUNT"/>
768 <value value="15" name="PERF_CCU_DEPTH_READ_FLAG4_COUNT"/>
769 <value value="16" name="PERF_CCU_DEPTH_READ_FLAG5_COUNT"/>
770 <value value="17" name="PERF_CCU_DEPTH_READ_FLAG6_COUNT"/>
771 <value value="18" name="PERF_CCU_DEPTH_READ_FLAG8_COUNT"/>
772 <value value="19" name="PERF_CCU_COLOR_READ_FLAG0_COUNT"/>
773 <value value="20" name="PERF_CCU_COLOR_READ_FLAG1_COUNT"/>
774 <value value="21" name="PERF_CCU_COLOR_READ_FLAG2_COUNT"/>
775 <value value="22" name="PERF_CCU_COLOR_READ_FLAG3_COUNT"/>
776 <value value="23" name="PERF_CCU_COLOR_READ_FLAG4_COUNT"/>
777 <value value="24" name="PERF_CCU_COLOR_READ_FLAG5_COUNT"/>
778 <value value="25" name="PERF_CCU_COLOR_READ_FLAG6_COUNT"/>
779 <value value="26" name="PERF_CCU_COLOR_READ_FLAG8_COUNT"/>
780 <value value="27" name="PERF_CCU_2D_RD_REQ"/>
781 <value value="28" name="PERF_CCU_2D_WR_REQ"/>
782 </enum>
783
784 <enum name="a6xx_lrz_perfcounter_select">
785 <value value="0" name="PERF_LRZ_BUSY_CYCLES"/>
786 <value value="1" name="PERF_LRZ_STARVE_CYCLES_RAS"/>
787 <value value="2" name="PERF_LRZ_STALL_CYCLES_RB"/>
788 <value value="3" name="PERF_LRZ_STALL_CYCLES_VSC"/>
789 <value value="4" name="PERF_LRZ_STALL_CYCLES_VPC"/>
790 <value value="5" name="PERF_LRZ_STALL_CYCLES_FLAG_PREFETCH"/>
791 <value value="6" name="PERF_LRZ_STALL_CYCLES_UCHE"/>
792 <value value="7" name="PERF_LRZ_LRZ_READ"/>
793 <value value="8" name="PERF_LRZ_LRZ_WRITE"/>
794 <value value="9" name="PERF_LRZ_READ_LATENCY"/>
795 <value value="10" name="PERF_LRZ_MERGE_CACHE_UPDATING"/>
796 <value value="11" name="PERF_LRZ_PRIM_KILLED_BY_MASKGEN"/>
797 <value value="12" name="PERF_LRZ_PRIM_KILLED_BY_LRZ"/>
798 <value value="13" name="PERF_LRZ_VISIBLE_PRIM_AFTER_LRZ"/>
799 <value value="14" name="PERF_LRZ_FULL_8X8_TILES"/>
800 <value value="15" name="PERF_LRZ_PARTIAL_8X8_TILES"/>
801 <value value="16" name="PERF_LRZ_TILE_KILLED"/>
802 <value value="17" name="PERF_LRZ_TOTAL_PIXEL"/>
803 <value value="18" name="PERF_LRZ_VISIBLE_PIXEL_AFTER_LRZ"/>
804 <value value="19" name="PERF_LRZ_FULLY_COVERED_TILES"/>
805 <value value="20" name="PERF_LRZ_PARTIAL_COVERED_TILES"/>
806 <value value="21" name="PERF_LRZ_FEEDBACK_ACCEPT"/>
807 <value value="22" name="PERF_LRZ_FEEDBACK_DISCARD"/>
808 <value value="23" name="PERF_LRZ_FEEDBACK_STALL"/>
809 <value value="24" name="PERF_LRZ_STALL_CYCLES_RB_ZPLANE"/>
810 <value value="25" name="PERF_LRZ_STALL_CYCLES_RB_BPLANE"/>
811 <value value="26" name="PERF_LRZ_STALL_CYCLES_VC"/>
812 <value value="27" name="PERF_LRZ_RAS_MASK_TRANS"/>
813 </enum>
814
815 <enum name="a6xx_cmp_perfcounter_select">
816 <value value="0" name="PERF_CMPDECMP_STALL_CYCLES_ARB"/>
817 <value value="1" name="PERF_CMPDECMP_VBIF_LATENCY_CYCLES"/>
818 <value value="2" name="PERF_CMPDECMP_VBIF_LATENCY_SAMPLES"/>
819 <value value="3" name="PERF_CMPDECMP_VBIF_READ_DATA_CCU"/>
820 <value value="4" name="PERF_CMPDECMP_VBIF_WRITE_DATA_CCU"/>
821 <value value="5" name="PERF_CMPDECMP_VBIF_READ_REQUEST"/>
822 <value value="6" name="PERF_CMPDECMP_VBIF_WRITE_REQUEST"/>
823 <value value="7" name="PERF_CMPDECMP_VBIF_READ_DATA"/>
824 <value value="8" name="PERF_CMPDECMP_VBIF_WRITE_DATA"/>
825 <value value="9" name="PERF_CMPDECMP_FLAG_FETCH_CYCLES"/>
826 <value value="10" name="PERF_CMPDECMP_FLAG_FETCH_SAMPLES"/>
827 <value value="11" name="PERF_CMPDECMP_DEPTH_WRITE_FLAG1_COUNT"/>
828 <value value="12" name="PERF_CMPDECMP_DEPTH_WRITE_FLAG2_COUNT"/>
829 <value value="13" name="PERF_CMPDECMP_DEPTH_WRITE_FLAG3_COUNT"/>
830 <value value="14" name="PERF_CMPDECMP_DEPTH_WRITE_FLAG4_COUNT"/>
831 <value value="15" name="PERF_CMPDECMP_DEPTH_WRITE_FLAG5_COUNT"/>
832 <value value="16" name="PERF_CMPDECMP_DEPTH_WRITE_FLAG6_COUNT"/>
833 <value value="17" name="PERF_CMPDECMP_DEPTH_WRITE_FLAG8_COUNT"/>
834 <value value="18" name="PERF_CMPDECMP_COLOR_WRITE_FLAG1_COUNT"/>
835 <value value="19" name="PERF_CMPDECMP_COLOR_WRITE_FLAG2_COUNT"/>
836 <value value="20" name="PERF_CMPDECMP_COLOR_WRITE_FLAG3_COUNT"/>
837 <value value="21" name="PERF_CMPDECMP_COLOR_WRITE_FLAG4_COUNT"/>
838 <value value="22" name="PERF_CMPDECMP_COLOR_WRITE_FLAG5_COUNT"/>
839 <value value="23" name="PERF_CMPDECMP_COLOR_WRITE_FLAG6_COUNT"/>
840 <value value="24" name="PERF_CMPDECMP_COLOR_WRITE_FLAG8_COUNT"/>
841 <value value="25" name="PERF_CMPDECMP_2D_STALL_CYCLES_VBIF_REQ"/>
842 <value value="26" name="PERF_CMPDECMP_2D_STALL_CYCLES_VBIF_WR"/>
843 <value value="27" name="PERF_CMPDECMP_2D_STALL_CYCLES_VBIF_RETURN"/>
844 <value value="28" name="PERF_CMPDECMP_2D_RD_DATA"/>
845 <value value="29" name="PERF_CMPDECMP_2D_WR_DATA"/>
846 <value value="30" name="PERF_CMPDECMP_VBIF_READ_DATA_UCHE_CH0"/>
847 <value value="31" name="PERF_CMPDECMP_VBIF_READ_DATA_UCHE_CH1"/>
848 <value value="32" name="PERF_CMPDECMP_2D_OUTPUT_TRANS"/>
849 <value value="33" name="PERF_CMPDECMP_VBIF_WRITE_DATA_UCHE"/>
850 <value value="34" name="PERF_CMPDECMP_DEPTH_WRITE_FLAG0_COUNT"/>
851 <value value="35" name="PERF_CMPDECMP_COLOR_WRITE_FLAG0_COUNT"/>
852 <value value="36" name="PERF_CMPDECMP_COLOR_WRITE_FLAGALPHA_COUNT"/>
853 <value value="37" name="PERF_CMPDECMP_2D_BUSY_CYCLES"/>
854 <value value="38" name="PERF_CMPDECMP_2D_REORDER_STARVE_CYCLES"/>
855 <value value="39" name="PERF_CMPDECMP_2D_PIXELS"/>
856 </enum>
857
858 <!--
859 Used in a6xx_2d_blit_cntl.. the value mostly seems to correlate to the
860 component type/size, so I think it relates to internal format used for
861 blending? The one exception is that 16b unorm and 32b float use the
862 same value... maybe 16b unorm is uncommon enough that it was just easier
863 to upconvert to 32b float internally?
864
865 8b unorm: 10 (sometimes 0, is the high bit part of something else?)
866 16b unorm: 4
867
868 32b int: 7
869 16b int: 6
870 8b int: 5
871
872 32b float: 4
873 16b float: 3
874 -->
875 <enum name="a6xx_2d_ifmt">
876 <value value="0x10" name="R2D_UNORM8"/>
877 <value value="0x7" name="R2D_INT32"/>
878 <value value="0x6" name="R2D_INT16"/>
879 <value value="0x5" name="R2D_INT8"/>
880 <value value="0x4" name="R2D_FLOAT32"/>
881 <value value="0x3" name="R2D_FLOAT16"/>
882 <value value="0x1" name="R2D_UNORM8_SRGB"/>
883 <value value="0x0" name="R2D_RAW"/>
884 </enum>
885
886 <enum name="a6xx_ztest_mode">
887 <doc>Allow early z-test and early-lrz (if applicable)</doc>
888 <value value="0x0" name="A6XX_EARLY_Z"/>
889 <doc>Disable early z-test and early-lrz test (if applicable)</doc>
890 <value value="0x1" name="A6XX_LATE_Z"/>
891 <doc>
892 A special mode that allows early-lrz test but disables
893 early-z test. Which might sound a bit funny, since
894 lrz-test happens before z-test. But as long as a couple
895 conditions are maintained this allows using lrz-test in
896 cases where fragment shader has kill/discard:
897
898 1) Disable lrz-write in cases where it is uncertain during
899 binning pass that a fragment will pass. Ie. if frag
900 shader has-kill, writes-z, or alpha/stencil test is
901 enabled. (For correctness, lrz-write must be disabled
902 when blend is enabled.) This is analogous to how a
903 z-prepass works.
904
905 2) Disable lrz-write and test if a depth-test direction
906 reversal is detected. Due to condition (1), the contents
907 of the lrz buffer are a conservative estimation of the
908 depth buffer during the draw pass. Meaning that geometry
909 that we know for certain will not be visible will not pass
910 lrz-test. But geometry which may be (or contributes to
911 blend) will pass the lrz-test.
912
913 This allows us to keep early-lrz-test in cases where the frag
914 shader does not write-z (ie. we know the z-value before FS)
915 and does not have side-effects (image/ssbo writes, etc), but
916 does have kill/discard. Which turns out to be a common
917 enough case that it is useful to keep early-lrz test against
918 the conservative lrz buffer to discard fragments that we
919 know will definitely not be visible.
920 </doc>
921 <value value="0x2" name="A6XX_EARLY_LRZ_LATE_Z"/>
922 </enum>
923
924 <domain name="A6XX" width="32">
925 <bitset name="A6XX_RBBM_INT_0_MASK" inline="yes">
926 <bitfield name="RBBM_GPU_IDLE" pos="0"/>
927 <bitfield name="CP_AHB_ERROR" pos="1"/>
928 <bitfield name="RBBM_ATB_ASYNCFIFO_OVERFLOW" pos="6"/>
929 <bitfield name="RBBM_GPC_ERROR" pos="7"/>
930 <bitfield name="CP_SW" pos="8"/>
931 <bitfield name="CP_HW_ERROR" pos="9"/>
932 <bitfield name="CP_CCU_FLUSH_DEPTH_TS" pos="10"/>
933 <bitfield name="CP_CCU_FLUSH_COLOR_TS" pos="11"/>
934 <bitfield name="CP_CCU_RESOLVE_TS" pos="12"/>
935 <bitfield name="CP_IB2" pos="13"/>
936 <bitfield name="CP_IB1" pos="14"/>
937 <bitfield name="CP_RB" pos="15"/>
938 <bitfield name="CP_RB_DONE_TS" pos="17"/>
939 <bitfield name="CP_WT_DONE_TS" pos="18"/>
940 <bitfield name="CP_CACHE_FLUSH_TS" pos="20"/>
941 <bitfield name="RBBM_ATB_BUS_OVERFLOW" pos="22"/>
942 <bitfield name="RBBM_HANG_DETECT" pos="23"/>
943 <bitfield name="UCHE_OOB_ACCESS" pos="24"/>
944 <bitfield name="UCHE_TRAP_INTR" pos="25"/>
945 <bitfield name="DEBBUS_INTR_0" pos="26"/>
946 <bitfield name="DEBBUS_INTR_1" pos="27"/>
947 <bitfield name="ISDB_CPU_IRQ" pos="30"/>
948 <bitfield name="ISDB_UNDER_DEBUG" pos="31"/>
949 </bitset>
950
951 <bitset name="A6XX_CP_INT">
952 <bitfield name="CP_OPCODE_ERROR" pos="0"/>
953 <bitfield name="CP_UCODE_ERROR" pos="1"/>
954 <bitfield name="CP_HW_FAULT_ERROR" pos="2"/>
955 <bitfield name="CP_REGISTER_PROTECTION_ERROR" pos="4"/>
956 <bitfield name="CP_AHB_ERROR" pos="5"/>
957 <bitfield name="CP_VSD_PARITY_ERROR" pos="6"/>
958 <bitfield name="CP_ILLEGAL_INSTR_ERROR" pos="7"/>
959 </bitset>
960
961 <reg32 offset="0x0800" name="CP_RB_BASE"/>
962 <reg32 offset="0x0801" name="CP_RB_BASE_HI"/>
963 <reg32 offset="0x0802" name="CP_RB_CNTL"/>
964 <reg32 offset="0x0804" name="CP_RB_RPTR_ADDR_LO"/>
965 <reg32 offset="0x0805" name="CP_RB_RPTR_ADDR_HI"/>
966 <reg32 offset="0x0806" name="CP_RB_RPTR"/>
967 <reg32 offset="0x0807" name="CP_RB_WPTR"/>
968 <reg32 offset="0x0808" name="CP_SQE_CNTL"/>
969 <reg32 offset="0x0812" name="CP_CP2GMU_STATUS">
970 <bitfield name="IFPC" pos="0" type="boolean"/>
971 </reg32>
972 <reg32 offset="0x0821" name="CP_HW_FAULT"/>
973 <reg32 offset="0x0823" name="CP_INTERRUPT_STATUS"/>
974 <reg32 offset="0x0824" name="CP_PROTECT_STATUS"/>
975 <reg32 offset="0x0830" name="CP_SQE_INSTR_BASE_LO"/>
976 <reg32 offset="0x0831" name="CP_SQE_INSTR_BASE_HI"/>
977 <reg32 offset="0x0840" name="CP_MISC_CNTL"/>
978 <reg32 offset="0x0844" name="CP_APRIV_CNTL"/>
979 <!-- all the threshold values seem to be in units of quad-dwords: -->
980 <reg32 offset="0x08C1" name="CP_ROQ_THRESHOLDS_1">
981 <doc>
982 b0..7 seems to contain the size of buffered by not yet processed
983 RB level cmdstream.. it's possible that it is a low threshold
984 and b8..15 is a high threshold?
985
986 b16..23 identifies where IB1 data starts (and RB data ends?)
987
988 b24..31 identifies where IB2 data starts (and IB1 data ends)
989 </doc>
990 <bitfield name="RB_LO" low="0" high="7" shr="2"/>
991 <bitfield name="RB_HI" low="8" high="15" shr="2"/>
992 <bitfield name="IB1_START" low="16" high="23" shr="2"/>
993 <bitfield name="IB2_START" low="24" high="31" shr="2"/>
994 </reg32>
995 <reg32 offset="0x08C2" name="CP_ROQ_THRESHOLDS_2">
996 <doc>
997 low bits identify where CP_SET_DRAW_STATE stateobj
998 processing starts (and IB2 data ends). I'm guessing
999 b8 is part of this since (from downstream kgsl):
1000
1001 /* ROQ sizes are twice as big on a640/a680 than on a630 */
1002 if (adreno_is_a640(adreno_dev) || adreno_is_a680(adreno_dev)) {
1003 kgsl_regwrite(device, A6XX_CP_ROQ_THRESHOLDS_2, 0x02000140);
1004 kgsl_regwrite(device, A6XX_CP_ROQ_THRESHOLDS_1, 0x8040362C);
1005 } ...
1006 </doc>
1007 <bitfield name="SDS_START" low="0" high="8" shr="2"/>
1008 <!-- total ROQ size: -->
1009 <bitfield name="ROQ_SIZE" low="16" high="31" shr="2"/>
1010 </reg32>
1011 <reg32 offset="0x08C3" name="CP_MEM_POOL_SIZE"/>
1012 <reg32 offset="0x0841" name="CP_CHICKEN_DBG"/>
1013 <reg32 offset="0x0842" name="CP_ADDR_MODE_CNTL"/>
1014 <reg32 offset="0x0843" name="CP_DBG_ECO_CNTL"/>
1015 <reg32 offset="0x084F" name="CP_PROTECT_CNTL"/>
1016
1017 <array offset="0x0883" name="CP_SCRATCH" stride="1" length="8">
1018 <reg32 offset="0x0" name="REG" type="uint"/>
1019 </array>
1020 <array offset="0x0850" name="CP_PROTECT" stride="1" length="32">
1021 <reg32 offset="0x0" name="REG" type="a6x_cp_protect"/>
1022 </array>
1023
1024 <reg32 offset="0x08A0" name="CP_CONTEXT_SWITCH_CNTL"/>
1025 <reg32 offset="0x08A1" name="CP_CONTEXT_SWITCH_SMMU_INFO_LO"/>
1026 <reg32 offset="0x08A2" name="CP_CONTEXT_SWITCH_SMMU_INFO_HI"/>
1027 <reg32 offset="0x08A3" name="CP_CONTEXT_SWITCH_PRIV_NON_SECURE_RESTORE_ADDR_LO"/>
1028 <reg32 offset="0x08A4" name="CP_CONTEXT_SWITCH_PRIV_NON_SECURE_RESTORE_ADDR_HI"/>
1029 <reg32 offset="0x08A5" name="CP_CONTEXT_SWITCH_PRIV_SECURE_RESTORE_ADDR_LO"/>
1030 <reg32 offset="0x08A6" name="CP_CONTEXT_SWITCH_PRIV_SECURE_RESTORE_ADDR_HI"/>
1031 <reg32 offset="0x08A7" name="CP_CONTEXT_SWITCH_NON_PRIV_RESTORE_ADDR_LO"/>
1032 <reg32 offset="0x08A8" name="CP_CONTEXT_SWITCH_NON_PRIV_RESTORE_ADDR_HI"/>
1033 <reg32 offset="0x08D0" name="CP_PERFCTR_CP_SEL_0"/>
1034 <reg32 offset="0x08D1" name="CP_PERFCTR_CP_SEL_1"/>
1035 <reg32 offset="0x08D2" name="CP_PERFCTR_CP_SEL_2"/>
1036 <reg32 offset="0x08D3" name="CP_PERFCTR_CP_SEL_3"/>
1037 <reg32 offset="0x08D4" name="CP_PERFCTR_CP_SEL_4"/>
1038 <reg32 offset="0x08D5" name="CP_PERFCTR_CP_SEL_5"/>
1039 <reg32 offset="0x08D6" name="CP_PERFCTR_CP_SEL_6"/>
1040 <reg32 offset="0x08D7" name="CP_PERFCTR_CP_SEL_7"/>
1041 <reg32 offset="0x08D8" name="CP_PERFCTR_CP_SEL_8"/>
1042 <reg32 offset="0x08D9" name="CP_PERFCTR_CP_SEL_9"/>
1043 <reg32 offset="0x08DA" name="CP_PERFCTR_CP_SEL_10"/>
1044 <reg32 offset="0x08DB" name="CP_PERFCTR_CP_SEL_11"/>
1045 <reg32 offset="0x08DC" name="CP_PERFCTR_CP_SEL_12"/>
1046 <reg32 offset="0x08DD" name="CP_PERFCTR_CP_SEL_13"/>
1047 <reg32 offset="0x0900" name="CP_CRASH_SCRIPT_BASE_LO"/>
1048 <reg32 offset="0x0901" name="CP_CRASH_SCRIPT_BASE_HI"/>
1049 <reg32 offset="0x0902" name="CP_CRASH_DUMP_CNTL"/>
1050 <reg32 offset="0x0903" name="CP_CRASH_DUMP_STATUS"/>
1051 <reg32 offset="0x0908" name="CP_SQE_STAT_ADDR"/>
1052 <reg32 offset="0x0909" name="CP_SQE_STAT_DATA"/>
1053 <reg32 offset="0x090A" name="CP_DRAW_STATE_ADDR"/>
1054 <reg32 offset="0x090B" name="CP_DRAW_STATE_DATA"/>
1055 <reg32 offset="0x090C" name="CP_ROQ_DBG_ADDR"/>
1056 <reg32 offset="0x090D" name="CP_ROQ_DBG_DATA"/>
1057 <reg32 offset="0x090E" name="CP_MEM_POOL_DBG_ADDR"/>
1058 <reg32 offset="0x090F" name="CP_MEM_POOL_DBG_DATA"/>
1059 <reg32 offset="0x0910" name="CP_SQE_UCODE_DBG_ADDR"/>
1060 <reg32 offset="0x0911" name="CP_SQE_UCODE_DBG_DATA"/>
1061 <reg32 offset="0x0928" name="CP_IB1_BASE"/>
1062 <reg32 offset="0x0929" name="CP_IB1_BASE_HI"/>
1063 <reg32 offset="0x092A" name="CP_IB1_REM_SIZE"/>
1064 <reg32 offset="0x092B" name="CP_IB2_BASE"/>
1065 <reg32 offset="0x092C" name="CP_IB2_BASE_HI"/>
1066 <reg32 offset="0x092D" name="CP_IB2_REM_SIZE"/>
1067 <!-- SDS == CP_SET_DRAW_STATE: -->
1068 <reg32 offset="0x092e" name="CP_SDS_BASE"/>
1069 <reg32 offset="0x092f" name="CP_SDS_BASE_HI"/>
1070 <reg32 offset="0x092e" name="CP_SDS_REM_SIZE"/>
1071 <reg32 offset="0x0931" name="CP_BIN_SIZE_ADDRESS"/>
1072 <reg32 offset="0x0932" name="CP_BIN_SIZE_ADDRESS_HI"/>
1073 <reg32 offset="0x0934" name="CP_BIN_DATA_ADDR"/>
1074 <reg32 offset="0x0935" name="CP_BIN_DATA_ADDR_HI"/>
1075 <!--
1076 There are probably similar registers for RB and SDS, teasing out SDS will
1077 take a slightly better test case..
1078 -->
1079 <reg32 offset="0x0949" name="CP_CSQ_IB1_STAT">
1080 <doc>number of remaining dwords incl current dword being consumed?</doc>
1081 <bitfield name="REM" low="16" high="31"/>
1082 </reg32>
1083 <reg32 offset="0x094a" name="CP_CSQ_IB2_STAT">
1084 <doc>number of remaining dwords incl current dword being consumed?</doc>
1085 <bitfield name="REM" low="16" high="31"/>
1086 </reg32>
1087 <reg32 offset="0x0980" name="CP_ALWAYS_ON_COUNTER_LO"/>
1088 <reg32 offset="0x0981" name="CP_ALWAYS_ON_COUNTER_HI"/>
1089 <reg32 offset="0x098D" name="CP_AHB_CNTL"/>
1090 <reg32 offset="0x0A00" name="CP_APERTURE_CNTL_HOST"/>
1091 <reg32 offset="0x0A03" name="CP_APERTURE_CNTL_CD"/>
1092 <reg32 offset="0x0C01" name="VSC_ADDR_MODE_CNTL"/>
1093 <reg32 offset="0x0201" name="RBBM_INT_0_STATUS"/>
1094 <reg32 offset="0x0210" name="RBBM_STATUS">
1095 <bitfield high="23" low="23" name="GPU_BUSY_IGN_AHB" />
1096 <bitfield high="22" low="22" name="GPU_BUSY_IGN_AHB_CP" />
1097 <bitfield high="21" low="21" name="HLSQ_BUSY" />
1098 <bitfield high="20" low="20" name="VSC_BUSY" />
1099 <bitfield high="19" low="19" name="TPL1_BUSY" />
1100 <bitfield high="18" low="18" name="SP_BUSY" />
1101 <bitfield high="17" low="17" name="UCHE_BUSY" />
1102 <bitfield high="16" low="16" name="VPC_BUSY" />
1103 <bitfield high="15" low="15" name="VFD_BUSY" />
1104 <bitfield high="14" low="14" name="TESS_BUSY" />
1105 <bitfield high="13" low="13" name="PC_VSD_BUSY" />
1106 <bitfield high="12" low="12" name="PC_DCALL_BUSY" />
1107 <bitfield high="11" low="11" name="COM_DCOM_BUSY" />
1108 <bitfield high="10" low="10" name="LRZ_BUSY" />
1109 <bitfield high="9" low="9" name="A2D_BUSY" />
1110 <bitfield high="8" low="8" name="CCU_BUSY" />
1111 <bitfield high="7" low="7" name="RB_BUSY" />
1112 <bitfield high="6" low="6" name="RAS_BUSY" />
1113 <bitfield high="5" low="5" name="TSE_BUSY" />
1114 <bitfield high="4" low="4" name="VBIF_BUSY" />
1115 <bitfield high="3" low="3" name="GFX_DBGC_BUSY" />
1116 <bitfield high="2" low="2" name="CP_BUSY" />
1117 <bitfield high="1" low="1" name="CP_AHB_BUSY_CP_MASTER" />
1118 <bitfield high="0" low="0" name="CP_AHB_BUSY_CX_MASTER"/>
1119 </reg32>
1120 <reg32 offset="0x0213" name="RBBM_STATUS3">
1121 <bitfield pos="24" name="SMMU_STALLED_ON_FAULT" type="boolean"/>
1122 </reg32>
1123 <reg32 offset="0x0215" name="RBBM_VBIF_GX_RESET_STATUS"/>
1124 <reg32 offset="0x0400" name="RBBM_PERFCTR_CP_0_LO"/>
1125 <reg32 offset="0x0401" name="RBBM_PERFCTR_CP_0_HI"/>
1126 <reg32 offset="0x0402" name="RBBM_PERFCTR_CP_1_LO"/>
1127 <reg32 offset="0x0403" name="RBBM_PERFCTR_CP_1_HI"/>
1128 <reg32 offset="0x0404" name="RBBM_PERFCTR_CP_2_LO"/>
1129 <reg32 offset="0x0405" name="RBBM_PERFCTR_CP_2_HI"/>
1130 <reg32 offset="0x0406" name="RBBM_PERFCTR_CP_3_LO"/>
1131 <reg32 offset="0x0407" name="RBBM_PERFCTR_CP_3_HI"/>
1132 <reg32 offset="0x0408" name="RBBM_PERFCTR_CP_4_LO"/>
1133 <reg32 offset="0x0409" name="RBBM_PERFCTR_CP_4_HI"/>
1134 <reg32 offset="0x040a" name="RBBM_PERFCTR_CP_5_LO"/>
1135 <reg32 offset="0x040b" name="RBBM_PERFCTR_CP_5_HI"/>
1136 <reg32 offset="0x040c" name="RBBM_PERFCTR_CP_6_LO"/>
1137 <reg32 offset="0x040d" name="RBBM_PERFCTR_CP_6_HI"/>
1138 <reg32 offset="0x040e" name="RBBM_PERFCTR_CP_7_LO"/>
1139 <reg32 offset="0x040f" name="RBBM_PERFCTR_CP_7_HI"/>
1140 <reg32 offset="0x0410" name="RBBM_PERFCTR_CP_8_LO"/>
1141 <reg32 offset="0x0411" name="RBBM_PERFCTR_CP_8_HI"/>
1142 <reg32 offset="0x0412" name="RBBM_PERFCTR_CP_9_LO"/>
1143 <reg32 offset="0x0413" name="RBBM_PERFCTR_CP_9_HI"/>
1144 <reg32 offset="0x0414" name="RBBM_PERFCTR_CP_10_LO"/>
1145 <reg32 offset="0x0415" name="RBBM_PERFCTR_CP_10_HI"/>
1146 <reg32 offset="0x0416" name="RBBM_PERFCTR_CP_11_LO"/>
1147 <reg32 offset="0x0417" name="RBBM_PERFCTR_CP_11_HI"/>
1148 <reg32 offset="0x0418" name="RBBM_PERFCTR_CP_12_LO"/>
1149 <reg32 offset="0x0419" name="RBBM_PERFCTR_CP_12_HI"/>
1150 <reg32 offset="0x041a" name="RBBM_PERFCTR_CP_13_LO"/>
1151 <reg32 offset="0x041b" name="RBBM_PERFCTR_CP_13_HI"/>
1152 <reg32 offset="0x041c" name="RBBM_PERFCTR_RBBM_0_LO"/>
1153 <reg32 offset="0x041d" name="RBBM_PERFCTR_RBBM_0_HI"/>
1154 <reg32 offset="0x041e" name="RBBM_PERFCTR_RBBM_1_LO"/>
1155 <reg32 offset="0x041f" name="RBBM_PERFCTR_RBBM_1_HI"/>
1156 <reg32 offset="0x0420" name="RBBM_PERFCTR_RBBM_2_LO"/>
1157 <reg32 offset="0x0421" name="RBBM_PERFCTR_RBBM_2_HI"/>
1158 <reg32 offset="0x0422" name="RBBM_PERFCTR_RBBM_3_LO"/>
1159 <reg32 offset="0x0423" name="RBBM_PERFCTR_RBBM_3_HI"/>
1160 <reg32 offset="0x0424" name="RBBM_PERFCTR_PC_0_LO"/>
1161 <reg32 offset="0x0425" name="RBBM_PERFCTR_PC_0_HI"/>
1162 <reg32 offset="0x0426" name="RBBM_PERFCTR_PC_1_LO"/>
1163 <reg32 offset="0x0427" name="RBBM_PERFCTR_PC_1_HI"/>
1164 <reg32 offset="0x0428" name="RBBM_PERFCTR_PC_2_LO"/>
1165 <reg32 offset="0x0429" name="RBBM_PERFCTR_PC_2_HI"/>
1166 <reg32 offset="0x042a" name="RBBM_PERFCTR_PC_3_LO"/>
1167 <reg32 offset="0x042b" name="RBBM_PERFCTR_PC_3_HI"/>
1168 <reg32 offset="0x042c" name="RBBM_PERFCTR_PC_4_LO"/>
1169 <reg32 offset="0x042d" name="RBBM_PERFCTR_PC_4_HI"/>
1170 <reg32 offset="0x042e" name="RBBM_PERFCTR_PC_5_LO"/>
1171 <reg32 offset="0x042f" name="RBBM_PERFCTR_PC_5_HI"/>
1172 <reg32 offset="0x0430" name="RBBM_PERFCTR_PC_6_LO"/>
1173 <reg32 offset="0x0431" name="RBBM_PERFCTR_PC_6_HI"/>
1174 <reg32 offset="0x0432" name="RBBM_PERFCTR_PC_7_LO"/>
1175 <reg32 offset="0x0433" name="RBBM_PERFCTR_PC_7_HI"/>
1176 <reg32 offset="0x0434" name="RBBM_PERFCTR_VFD_0_LO"/>
1177 <reg32 offset="0x0435" name="RBBM_PERFCTR_VFD_0_HI"/>
1178 <reg32 offset="0x0436" name="RBBM_PERFCTR_VFD_1_LO"/>
1179 <reg32 offset="0x0437" name="RBBM_PERFCTR_VFD_1_HI"/>
1180 <reg32 offset="0x0438" name="RBBM_PERFCTR_VFD_2_LO"/>
1181 <reg32 offset="0x0439" name="RBBM_PERFCTR_VFD_2_HI"/>
1182 <reg32 offset="0x043a" name="RBBM_PERFCTR_VFD_3_LO"/>
1183 <reg32 offset="0x043b" name="RBBM_PERFCTR_VFD_3_HI"/>
1184 <reg32 offset="0x043c" name="RBBM_PERFCTR_VFD_4_LO"/>
1185 <reg32 offset="0x043d" name="RBBM_PERFCTR_VFD_4_HI"/>
1186 <reg32 offset="0x043e" name="RBBM_PERFCTR_VFD_5_LO"/>
1187 <reg32 offset="0x043f" name="RBBM_PERFCTR_VFD_5_HI"/>
1188 <reg32 offset="0x0440" name="RBBM_PERFCTR_VFD_6_LO"/>
1189 <reg32 offset="0x0441" name="RBBM_PERFCTR_VFD_6_HI"/>
1190 <reg32 offset="0x0442" name="RBBM_PERFCTR_VFD_7_LO"/>
1191 <reg32 offset="0x0443" name="RBBM_PERFCTR_VFD_7_HI"/>
1192 <reg32 offset="0x0444" name="RBBM_PERFCTR_HLSQ_0_LO"/>
1193 <reg32 offset="0x0445" name="RBBM_PERFCTR_HLSQ_0_HI"/>
1194 <reg32 offset="0x0446" name="RBBM_PERFCTR_HLSQ_1_LO"/>
1195 <reg32 offset="0x0447" name="RBBM_PERFCTR_HLSQ_1_HI"/>
1196 <reg32 offset="0x0448" name="RBBM_PERFCTR_HLSQ_2_LO"/>
1197 <reg32 offset="0x0449" name="RBBM_PERFCTR_HLSQ_2_HI"/>
1198 <reg32 offset="0x044a" name="RBBM_PERFCTR_HLSQ_3_LO"/>
1199 <reg32 offset="0x044b" name="RBBM_PERFCTR_HLSQ_3_HI"/>
1200 <reg32 offset="0x044c" name="RBBM_PERFCTR_HLSQ_4_LO"/>
1201 <reg32 offset="0x044d" name="RBBM_PERFCTR_HLSQ_4_HI"/>
1202 <reg32 offset="0x044e" name="RBBM_PERFCTR_HLSQ_5_LO"/>
1203 <reg32 offset="0x044f" name="RBBM_PERFCTR_HLSQ_5_HI"/>
1204 <reg32 offset="0x0450" name="RBBM_PERFCTR_VPC_0_LO"/>
1205 <reg32 offset="0x0451" name="RBBM_PERFCTR_VPC_0_HI"/>
1206 <reg32 offset="0x0452" name="RBBM_PERFCTR_VPC_1_LO"/>
1207 <reg32 offset="0x0453" name="RBBM_PERFCTR_VPC_1_HI"/>
1208 <reg32 offset="0x0454" name="RBBM_PERFCTR_VPC_2_LO"/>
1209 <reg32 offset="0x0455" name="RBBM_PERFCTR_VPC_2_HI"/>
1210 <reg32 offset="0x0456" name="RBBM_PERFCTR_VPC_3_LO"/>
1211 <reg32 offset="0x0457" name="RBBM_PERFCTR_VPC_3_HI"/>
1212 <reg32 offset="0x0458" name="RBBM_PERFCTR_VPC_4_LO"/>
1213 <reg32 offset="0x0459" name="RBBM_PERFCTR_VPC_4_HI"/>
1214 <reg32 offset="0x045a" name="RBBM_PERFCTR_VPC_5_LO"/>
1215 <reg32 offset="0x045b" name="RBBM_PERFCTR_VPC_5_HI"/>
1216 <reg32 offset="0x045c" name="RBBM_PERFCTR_CCU_0_LO"/>
1217 <reg32 offset="0x045d" name="RBBM_PERFCTR_CCU_0_HI"/>
1218 <reg32 offset="0x045e" name="RBBM_PERFCTR_CCU_1_LO"/>
1219 <reg32 offset="0x045f" name="RBBM_PERFCTR_CCU_1_HI"/>
1220 <reg32 offset="0x0460" name="RBBM_PERFCTR_CCU_2_LO"/>
1221 <reg32 offset="0x0461" name="RBBM_PERFCTR_CCU_2_HI"/>
1222 <reg32 offset="0x0462" name="RBBM_PERFCTR_CCU_3_LO"/>
1223 <reg32 offset="0x0463" name="RBBM_PERFCTR_CCU_3_HI"/>
1224 <reg32 offset="0x0464" name="RBBM_PERFCTR_CCU_4_LO"/>
1225 <reg32 offset="0x0465" name="RBBM_PERFCTR_CCU_4_HI"/>
1226 <reg32 offset="0x0466" name="RBBM_PERFCTR_TSE_0_LO"/>
1227 <reg32 offset="0x0467" name="RBBM_PERFCTR_TSE_0_HI"/>
1228 <reg32 offset="0x0468" name="RBBM_PERFCTR_TSE_1_LO"/>
1229 <reg32 offset="0x0469" name="RBBM_PERFCTR_TSE_1_HI"/>
1230 <reg32 offset="0x046a" name="RBBM_PERFCTR_TSE_2_LO"/>
1231 <reg32 offset="0x046b" name="RBBM_PERFCTR_TSE_2_HI"/>
1232 <reg32 offset="0x046c" name="RBBM_PERFCTR_TSE_3_LO"/>
1233 <reg32 offset="0x046d" name="RBBM_PERFCTR_TSE_3_HI"/>
1234 <reg32 offset="0x046e" name="RBBM_PERFCTR_RAS_0_LO"/>
1235 <reg32 offset="0x046f" name="RBBM_PERFCTR_RAS_0_HI"/>
1236 <reg32 offset="0x0470" name="RBBM_PERFCTR_RAS_1_LO"/>
1237 <reg32 offset="0x0471" name="RBBM_PERFCTR_RAS_1_HI"/>
1238 <reg32 offset="0x0472" name="RBBM_PERFCTR_RAS_2_LO"/>
1239 <reg32 offset="0x0473" name="RBBM_PERFCTR_RAS_2_HI"/>
1240 <reg32 offset="0x0474" name="RBBM_PERFCTR_RAS_3_LO"/>
1241 <reg32 offset="0x0475" name="RBBM_PERFCTR_RAS_3_HI"/>
1242 <reg32 offset="0x0476" name="RBBM_PERFCTR_UCHE_0_LO"/>
1243 <reg32 offset="0x0477" name="RBBM_PERFCTR_UCHE_0_HI"/>
1244 <reg32 offset="0x0478" name="RBBM_PERFCTR_UCHE_1_LO"/>
1245 <reg32 offset="0x0479" name="RBBM_PERFCTR_UCHE_1_HI"/>
1246 <reg32 offset="0x047a" name="RBBM_PERFCTR_UCHE_2_LO"/>
1247 <reg32 offset="0x047b" name="RBBM_PERFCTR_UCHE_2_HI"/>
1248 <reg32 offset="0x047c" name="RBBM_PERFCTR_UCHE_3_LO"/>
1249 <reg32 offset="0x047d" name="RBBM_PERFCTR_UCHE_3_HI"/>
1250 <reg32 offset="0x047e" name="RBBM_PERFCTR_UCHE_4_LO"/>
1251 <reg32 offset="0x047f" name="RBBM_PERFCTR_UCHE_4_HI"/>
1252 <reg32 offset="0x0480" name="RBBM_PERFCTR_UCHE_5_LO"/>
1253 <reg32 offset="0x0481" name="RBBM_PERFCTR_UCHE_5_HI"/>
1254 <reg32 offset="0x0482" name="RBBM_PERFCTR_UCHE_6_LO"/>
1255 <reg32 offset="0x0483" name="RBBM_PERFCTR_UCHE_6_HI"/>
1256 <reg32 offset="0x0484" name="RBBM_PERFCTR_UCHE_7_LO"/>
1257 <reg32 offset="0x0485" name="RBBM_PERFCTR_UCHE_7_HI"/>
1258 <reg32 offset="0x0486" name="RBBM_PERFCTR_UCHE_8_LO"/>
1259 <reg32 offset="0x0487" name="RBBM_PERFCTR_UCHE_8_HI"/>
1260 <reg32 offset="0x0488" name="RBBM_PERFCTR_UCHE_9_LO"/>
1261 <reg32 offset="0x0489" name="RBBM_PERFCTR_UCHE_9_HI"/>
1262 <reg32 offset="0x048a" name="RBBM_PERFCTR_UCHE_10_LO"/>
1263 <reg32 offset="0x048b" name="RBBM_PERFCTR_UCHE_10_HI"/>
1264 <reg32 offset="0x048c" name="RBBM_PERFCTR_UCHE_11_LO"/>
1265 <reg32 offset="0x048d" name="RBBM_PERFCTR_UCHE_11_HI"/>
1266 <reg32 offset="0x048e" name="RBBM_PERFCTR_TP_0_LO"/>
1267 <reg32 offset="0x048f" name="RBBM_PERFCTR_TP_0_HI"/>
1268 <reg32 offset="0x0490" name="RBBM_PERFCTR_TP_1_LO"/>
1269 <reg32 offset="0x0491" name="RBBM_PERFCTR_TP_1_HI"/>
1270 <reg32 offset="0x0492" name="RBBM_PERFCTR_TP_2_LO"/>
1271 <reg32 offset="0x0493" name="RBBM_PERFCTR_TP_2_HI"/>
1272 <reg32 offset="0x0494" name="RBBM_PERFCTR_TP_3_LO"/>
1273 <reg32 offset="0x0495" name="RBBM_PERFCTR_TP_3_HI"/>
1274 <reg32 offset="0x0496" name="RBBM_PERFCTR_TP_4_LO"/>
1275 <reg32 offset="0x0497" name="RBBM_PERFCTR_TP_4_HI"/>
1276 <reg32 offset="0x0498" name="RBBM_PERFCTR_TP_5_LO"/>
1277 <reg32 offset="0x0499" name="RBBM_PERFCTR_TP_5_HI"/>
1278 <reg32 offset="0x049a" name="RBBM_PERFCTR_TP_6_LO"/>
1279 <reg32 offset="0x049b" name="RBBM_PERFCTR_TP_6_HI"/>
1280 <reg32 offset="0x049c" name="RBBM_PERFCTR_TP_7_LO"/>
1281 <reg32 offset="0x049d" name="RBBM_PERFCTR_TP_7_HI"/>
1282 <reg32 offset="0x049e" name="RBBM_PERFCTR_TP_8_LO"/>
1283 <reg32 offset="0x049f" name="RBBM_PERFCTR_TP_8_HI"/>
1284 <reg32 offset="0x04a0" name="RBBM_PERFCTR_TP_9_LO"/>
1285 <reg32 offset="0x04a1" name="RBBM_PERFCTR_TP_9_HI"/>
1286 <reg32 offset="0x04a2" name="RBBM_PERFCTR_TP_10_LO"/>
1287 <reg32 offset="0x04a3" name="RBBM_PERFCTR_TP_10_HI"/>
1288 <reg32 offset="0x04a4" name="RBBM_PERFCTR_TP_11_LO"/>
1289 <reg32 offset="0x04a5" name="RBBM_PERFCTR_TP_11_HI"/>
1290 <reg32 offset="0x04a6" name="RBBM_PERFCTR_SP_0_LO"/>
1291 <reg32 offset="0x04a7" name="RBBM_PERFCTR_SP_0_HI"/>
1292 <reg32 offset="0x04a8" name="RBBM_PERFCTR_SP_1_LO"/>
1293 <reg32 offset="0x04a9" name="RBBM_PERFCTR_SP_1_HI"/>
1294 <reg32 offset="0x04aa" name="RBBM_PERFCTR_SP_2_LO"/>
1295 <reg32 offset="0x04ab" name="RBBM_PERFCTR_SP_2_HI"/>
1296 <reg32 offset="0x04ac" name="RBBM_PERFCTR_SP_3_LO"/>
1297 <reg32 offset="0x04ad" name="RBBM_PERFCTR_SP_3_HI"/>
1298 <reg32 offset="0x04ae" name="RBBM_PERFCTR_SP_4_LO"/>
1299 <reg32 offset="0x04af" name="RBBM_PERFCTR_SP_4_HI"/>
1300 <reg32 offset="0x04b0" name="RBBM_PERFCTR_SP_5_LO"/>
1301 <reg32 offset="0x04b1" name="RBBM_PERFCTR_SP_5_HI"/>
1302 <reg32 offset="0x04b2" name="RBBM_PERFCTR_SP_6_LO"/>
1303 <reg32 offset="0x04b3" name="RBBM_PERFCTR_SP_6_HI"/>
1304 <reg32 offset="0x04b4" name="RBBM_PERFCTR_SP_7_LO"/>
1305 <reg32 offset="0x04b5" name="RBBM_PERFCTR_SP_7_HI"/>
1306 <reg32 offset="0x04b6" name="RBBM_PERFCTR_SP_8_LO"/>
1307 <reg32 offset="0x04b7" name="RBBM_PERFCTR_SP_8_HI"/>
1308 <reg32 offset="0x04b8" name="RBBM_PERFCTR_SP_9_LO"/>
1309 <reg32 offset="0x04b9" name="RBBM_PERFCTR_SP_9_HI"/>
1310 <reg32 offset="0x04ba" name="RBBM_PERFCTR_SP_10_LO"/>
1311 <reg32 offset="0x04bb" name="RBBM_PERFCTR_SP_10_HI"/>
1312 <reg32 offset="0x04bc" name="RBBM_PERFCTR_SP_11_LO"/>
1313 <reg32 offset="0x04bd" name="RBBM_PERFCTR_SP_11_HI"/>
1314 <reg32 offset="0x04be" name="RBBM_PERFCTR_SP_12_LO"/>
1315 <reg32 offset="0x04bf" name="RBBM_PERFCTR_SP_12_HI"/>
1316 <reg32 offset="0x04c0" name="RBBM_PERFCTR_SP_13_LO"/>
1317 <reg32 offset="0x04c1" name="RBBM_PERFCTR_SP_13_HI"/>
1318 <reg32 offset="0x04c2" name="RBBM_PERFCTR_SP_14_LO"/>
1319 <reg32 offset="0x04c3" name="RBBM_PERFCTR_SP_14_HI"/>
1320 <reg32 offset="0x04c4" name="RBBM_PERFCTR_SP_15_LO"/>
1321 <reg32 offset="0x04c5" name="RBBM_PERFCTR_SP_15_HI"/>
1322 <reg32 offset="0x04c6" name="RBBM_PERFCTR_SP_16_LO"/>
1323 <reg32 offset="0x04c7" name="RBBM_PERFCTR_SP_16_HI"/>
1324 <reg32 offset="0x04c8" name="RBBM_PERFCTR_SP_17_LO"/>
1325 <reg32 offset="0x04c9" name="RBBM_PERFCTR_SP_17_HI"/>
1326 <reg32 offset="0x04ca" name="RBBM_PERFCTR_SP_18_LO"/>
1327 <reg32 offset="0x04cb" name="RBBM_PERFCTR_SP_18_HI"/>
1328 <reg32 offset="0x04cc" name="RBBM_PERFCTR_SP_19_LO"/>
1329 <reg32 offset="0x04cd" name="RBBM_PERFCTR_SP_19_HI"/>
1330 <reg32 offset="0x04ce" name="RBBM_PERFCTR_SP_20_LO"/>
1331 <reg32 offset="0x04cf" name="RBBM_PERFCTR_SP_20_HI"/>
1332 <reg32 offset="0x04d0" name="RBBM_PERFCTR_SP_21_LO"/>
1333 <reg32 offset="0x04d1" name="RBBM_PERFCTR_SP_21_HI"/>
1334 <reg32 offset="0x04d2" name="RBBM_PERFCTR_SP_22_LO"/>
1335 <reg32 offset="0x04d3" name="RBBM_PERFCTR_SP_22_HI"/>
1336 <reg32 offset="0x04d4" name="RBBM_PERFCTR_SP_23_LO"/>
1337 <reg32 offset="0x04d5" name="RBBM_PERFCTR_SP_23_HI"/>
1338 <reg32 offset="0x04d6" name="RBBM_PERFCTR_RB_0_LO"/>
1339 <reg32 offset="0x04d7" name="RBBM_PERFCTR_RB_0_HI"/>
1340 <reg32 offset="0x04d8" name="RBBM_PERFCTR_RB_1_LO"/>
1341 <reg32 offset="0x04d9" name="RBBM_PERFCTR_RB_1_HI"/>
1342 <reg32 offset="0x04da" name="RBBM_PERFCTR_RB_2_LO"/>
1343 <reg32 offset="0x04db" name="RBBM_PERFCTR_RB_2_HI"/>
1344 <reg32 offset="0x04dc" name="RBBM_PERFCTR_RB_3_LO"/>
1345 <reg32 offset="0x04dd" name="RBBM_PERFCTR_RB_3_HI"/>
1346 <reg32 offset="0x04de" name="RBBM_PERFCTR_RB_4_LO"/>
1347 <reg32 offset="0x04df" name="RBBM_PERFCTR_RB_4_HI"/>
1348 <reg32 offset="0x04e0" name="RBBM_PERFCTR_RB_5_LO"/>
1349 <reg32 offset="0x04e1" name="RBBM_PERFCTR_RB_5_HI"/>
1350 <reg32 offset="0x04e2" name="RBBM_PERFCTR_RB_6_LO"/>
1351 <reg32 offset="0x04e3" name="RBBM_PERFCTR_RB_6_HI"/>
1352 <reg32 offset="0x04e4" name="RBBM_PERFCTR_RB_7_LO"/>
1353 <reg32 offset="0x04e5" name="RBBM_PERFCTR_RB_7_HI"/>
1354 <reg32 offset="0x04e6" name="RBBM_PERFCTR_VSC_0_LO"/>
1355 <reg32 offset="0x04e7" name="RBBM_PERFCTR_VSC_0_HI"/>
1356 <reg32 offset="0x04e8" name="RBBM_PERFCTR_VSC_1_LO"/>
1357 <reg32 offset="0x04e9" name="RBBM_PERFCTR_VSC_1_HI"/>
1358 <reg32 offset="0x04ea" name="RBBM_PERFCTR_LRZ_0_LO"/>
1359 <reg32 offset="0x04eb" name="RBBM_PERFCTR_LRZ_0_HI"/>
1360 <reg32 offset="0x04ec" name="RBBM_PERFCTR_LRZ_1_LO"/>
1361 <reg32 offset="0x04ed" name="RBBM_PERFCTR_LRZ_1_HI"/>
1362 <reg32 offset="0x04ee" name="RBBM_PERFCTR_LRZ_2_LO"/>
1363 <reg32 offset="0x04ef" name="RBBM_PERFCTR_LRZ_2_HI"/>
1364 <reg32 offset="0x04f0" name="RBBM_PERFCTR_LRZ_3_LO"/>
1365 <reg32 offset="0x04f1" name="RBBM_PERFCTR_LRZ_3_HI"/>
1366 <reg32 offset="0x04f2" name="RBBM_PERFCTR_CMP_0_LO"/>
1367 <reg32 offset="0x04f3" name="RBBM_PERFCTR_CMP_0_HI"/>
1368 <reg32 offset="0x04f4" name="RBBM_PERFCTR_CMP_1_LO"/>
1369 <reg32 offset="0x04f5" name="RBBM_PERFCTR_CMP_1_HI"/>
1370 <reg32 offset="0x04f6" name="RBBM_PERFCTR_CMP_2_LO"/>
1371 <reg32 offset="0x04f7" name="RBBM_PERFCTR_CMP_2_HI"/>
1372 <reg32 offset="0x04f8" name="RBBM_PERFCTR_CMP_3_LO"/>
1373 <reg32 offset="0x04f9" name="RBBM_PERFCTR_CMP_3_HI"/>
1374 <reg32 offset="0x0500" name="RBBM_PERFCTR_CNTL"/>
1375 <reg32 offset="0x0501" name="RBBM_PERFCTR_LOAD_CMD0"/>
1376 <reg32 offset="0x0502" name="RBBM_PERFCTR_LOAD_CMD1"/>
1377 <reg32 offset="0x0503" name="RBBM_PERFCTR_LOAD_CMD2"/>
1378 <reg32 offset="0x0504" name="RBBM_PERFCTR_LOAD_CMD3"/>
1379 <reg32 offset="0x0505" name="RBBM_PERFCTR_LOAD_VALUE_LO"/>
1380 <reg32 offset="0x0506" name="RBBM_PERFCTR_LOAD_VALUE_HI"/>
1381 <reg32 offset="0x0507" name="RBBM_PERFCTR_RBBM_SEL_0"/>
1382 <reg32 offset="0x0508" name="RBBM_PERFCTR_RBBM_SEL_1"/>
1383 <reg32 offset="0x0509" name="RBBM_PERFCTR_RBBM_SEL_2"/>
1384 <reg32 offset="0x050A" name="RBBM_PERFCTR_RBBM_SEL_3"/>
1385 <reg32 offset="0x050B" name="RBBM_PERFCTR_GPU_BUSY_MASKED"/>
1386 <reg32 offset="0x0533" name="RBBM_ISDB_CNT"/>
1387
1388 <!---
1389 This block of registers aren't tied to perf counters. They
1390 count various geometry stats, for example number of
1391 vertices in, number of primnitives assembled etc.
1392 -->
1393
1394 <reg32 offset="0x0540" name="RBBM_PRIMCTR_0_LO"/> <!-- vs vertices in -->
1395 <reg32 offset="0x0541" name="RBBM_PRIMCTR_0_HI"/>
1396 <reg32 offset="0x0542" name="RBBM_PRIMCTR_1_LO"/> <!-- vs primitives out -->
1397 <reg32 offset="0x0543" name="RBBM_PRIMCTR_1_HI"/>
1398 <reg32 offset="0x0544" name="RBBM_PRIMCTR_2_LO"/> <!-- hs vertices in -->
1399 <reg32 offset="0x0545" name="RBBM_PRIMCTR_2_HI"/>
1400 <reg32 offset="0x0546" name="RBBM_PRIMCTR_3_LO"/> <!-- hs patches out -->
1401 <reg32 offset="0x0547" name="RBBM_PRIMCTR_3_HI"/>
1402 <reg32 offset="0x0548" name="RBBM_PRIMCTR_4_LO"/> <!-- dss vertices in -->
1403 <reg32 offset="0x0549" name="RBBM_PRIMCTR_4_HI"/>
1404 <reg32 offset="0x054a" name="RBBM_PRIMCTR_5_LO"/> <!-- ds primitives out -->
1405 <reg32 offset="0x054b" name="RBBM_PRIMCTR_5_HI"/>
1406 <reg32 offset="0x054c" name="RBBM_PRIMCTR_6_LO"/> <!-- gs primitives in -->
1407 <reg32 offset="0x054d" name="RBBM_PRIMCTR_6_HI"/>
1408 <reg32 offset="0x054e" name="RBBM_PRIMCTR_7_LO"/> <!-- gs primitives out -->
1409 <reg32 offset="0x054f" name="RBBM_PRIMCTR_7_HI"/>
1410 <reg32 offset="0x0550" name="RBBM_PRIMCTR_8_LO"/> <!-- gs primitives out -->
1411 <reg32 offset="0x0551" name="RBBM_PRIMCTR_8_HI"/>
1412 <reg32 offset="0x0552" name="RBBM_PRIMCTR_9_LO"/> <!-- raster primitives in -->
1413 <reg32 offset="0x0553" name="RBBM_PRIMCTR_9_HI"/>
1414 <reg32 offset="0x0554" name="RBBM_PRIMCTR_10_LO"/>
1415 <reg32 offset="0x0555" name="RBBM_PRIMCTR_10_HI"/>
1416
1417 <reg32 offset="0xF400" name="RBBM_SECVID_TRUST_CNTL"/>
1418 <reg32 offset="0xF800" name="RBBM_SECVID_TSB_TRUSTED_BASE_LO"/>
1419 <reg32 offset="0xF801" name="RBBM_SECVID_TSB_TRUSTED_BASE_HI"/>
1420 <reg32 offset="0xF802" name="RBBM_SECVID_TSB_TRUSTED_SIZE"/>
1421 <reg32 offset="0xF803" name="RBBM_SECVID_TSB_CNTL"/>
1422 <reg32 offset="0xF810" name="RBBM_SECVID_TSB_ADDR_MODE_CNTL"/>
1423 <reg32 offset="0x00010" name="RBBM_VBIF_CLIENT_QOS_CNTL"/>
1424 <reg32 offset="0x00011" name="RBBM_GBIF_CLIENT_QOS_CNTL"/>
1425 <reg32 offset="0x0001f" name="RBBM_INTERFACE_HANG_INT_CNTL"/>
1426 <reg32 offset="0x00037" name="RBBM_INT_CLEAR_CMD"/>
1427 <reg32 offset="0x00038" name="RBBM_INT_0_MASK"/>
1428 <reg32 offset="0x00042" name="RBBM_SP_HYST_CNT"/>
1429 <reg32 offset="0x00043" name="RBBM_SW_RESET_CMD"/>
1430 <reg32 offset="0x00044" name="RBBM_RAC_THRESHOLD_CNT"/>
1431 <reg32 offset="0x00045" name="RBBM_BLOCK_SW_RESET_CMD"/>
1432 <reg32 offset="0x00046" name="RBBM_BLOCK_SW_RESET_CMD2"/>
1433 <reg32 offset="0x000ae" name="RBBM_CLOCK_CNTL"/>
1434 <reg32 offset="0x000b0" name="RBBM_CLOCK_CNTL_SP0"/>
1435 <reg32 offset="0x000b1" name="RBBM_CLOCK_CNTL_SP1"/>
1436 <reg32 offset="0x000b2" name="RBBM_CLOCK_CNTL_SP2"/>
1437 <reg32 offset="0x000b3" name="RBBM_CLOCK_CNTL_SP3"/>
1438 <reg32 offset="0x000b4" name="RBBM_CLOCK_CNTL2_SP0"/>
1439 <reg32 offset="0x000b5" name="RBBM_CLOCK_CNTL2_SP1"/>
1440 <reg32 offset="0x000b6" name="RBBM_CLOCK_CNTL2_SP2"/>
1441 <reg32 offset="0x000b7" name="RBBM_CLOCK_CNTL2_SP3"/>
1442 <reg32 offset="0x000b8" name="RBBM_CLOCK_DELAY_SP0"/>
1443 <reg32 offset="0x000b9" name="RBBM_CLOCK_DELAY_SP1"/>
1444 <reg32 offset="0x000ba" name="RBBM_CLOCK_DELAY_SP2"/>
1445 <reg32 offset="0x000bb" name="RBBM_CLOCK_DELAY_SP3"/>
1446 <reg32 offset="0x000bc" name="RBBM_CLOCK_HYST_SP0"/>
1447 <reg32 offset="0x000bd" name="RBBM_CLOCK_HYST_SP1"/>
1448 <reg32 offset="0x000be" name="RBBM_CLOCK_HYST_SP2"/>
1449 <reg32 offset="0x000bf" name="RBBM_CLOCK_HYST_SP3"/>
1450 <reg32 offset="0x000c0" name="RBBM_CLOCK_CNTL_TP0"/>
1451 <reg32 offset="0x000c1" name="RBBM_CLOCK_CNTL_TP1"/>
1452 <reg32 offset="0x000c2" name="RBBM_CLOCK_CNTL_TP2"/>
1453 <reg32 offset="0x000c3" name="RBBM_CLOCK_CNTL_TP3"/>
1454 <reg32 offset="0x000c4" name="RBBM_CLOCK_CNTL2_TP0"/>
1455 <reg32 offset="0x000c5" name="RBBM_CLOCK_CNTL2_TP1"/>
1456 <reg32 offset="0x000c6" name="RBBM_CLOCK_CNTL2_TP2"/>
1457 <reg32 offset="0x000c7" name="RBBM_CLOCK_CNTL2_TP3"/>
1458 <reg32 offset="0x000c8" name="RBBM_CLOCK_CNTL3_TP0"/>
1459 <reg32 offset="0x000c9" name="RBBM_CLOCK_CNTL3_TP1"/>
1460 <reg32 offset="0x000ca" name="RBBM_CLOCK_CNTL3_TP2"/>
1461 <reg32 offset="0x000cb" name="RBBM_CLOCK_CNTL3_TP3"/>
1462 <reg32 offset="0x000cc" name="RBBM_CLOCK_CNTL4_TP0"/>
1463 <reg32 offset="0x000cd" name="RBBM_CLOCK_CNTL4_TP1"/>
1464 <reg32 offset="0x000ce" name="RBBM_CLOCK_CNTL4_TP2"/>
1465 <reg32 offset="0x000cf" name="RBBM_CLOCK_CNTL4_TP3"/>
1466 <reg32 offset="0x000d0" name="RBBM_CLOCK_DELAY_TP0"/>
1467 <reg32 offset="0x000d1" name="RBBM_CLOCK_DELAY_TP1"/>
1468 <reg32 offset="0x000d2" name="RBBM_CLOCK_DELAY_TP2"/>
1469 <reg32 offset="0x000d3" name="RBBM_CLOCK_DELAY_TP3"/>
1470 <reg32 offset="0x000d4" name="RBBM_CLOCK_DELAY2_TP0"/>
1471 <reg32 offset="0x000d5" name="RBBM_CLOCK_DELAY2_TP1"/>
1472 <reg32 offset="0x000d6" name="RBBM_CLOCK_DELAY2_TP2"/>
1473 <reg32 offset="0x000d7" name="RBBM_CLOCK_DELAY2_TP3"/>
1474 <reg32 offset="0x000d8" name="RBBM_CLOCK_DELAY3_TP0"/>
1475 <reg32 offset="0x000d9" name="RBBM_CLOCK_DELAY3_TP1"/>
1476 <reg32 offset="0x000da" name="RBBM_CLOCK_DELAY3_TP2"/>
1477 <reg32 offset="0x000db" name="RBBM_CLOCK_DELAY3_TP3"/>
1478 <reg32 offset="0x000dc" name="RBBM_CLOCK_DELAY4_TP0"/>
1479 <reg32 offset="0x000dd" name="RBBM_CLOCK_DELAY4_TP1"/>
1480 <reg32 offset="0x000de" name="RBBM_CLOCK_DELAY4_TP2"/>
1481 <reg32 offset="0x000df" name="RBBM_CLOCK_DELAY4_TP3"/>
1482 <reg32 offset="0x000e0" name="RBBM_CLOCK_HYST_TP0"/>
1483 <reg32 offset="0x000e1" name="RBBM_CLOCK_HYST_TP1"/>
1484 <reg32 offset="0x000e2" name="RBBM_CLOCK_HYST_TP2"/>
1485 <reg32 offset="0x000e3" name="RBBM_CLOCK_HYST_TP3"/>
1486 <reg32 offset="0x000e4" name="RBBM_CLOCK_HYST2_TP0"/>
1487 <reg32 offset="0x000e5" name="RBBM_CLOCK_HYST2_TP1"/>
1488 <reg32 offset="0x000e6" name="RBBM_CLOCK_HYST2_TP2"/>
1489 <reg32 offset="0x000e7" name="RBBM_CLOCK_HYST2_TP3"/>
1490 <reg32 offset="0x000e8" name="RBBM_CLOCK_HYST3_TP0"/>
1491 <reg32 offset="0x000e9" name="RBBM_CLOCK_HYST3_TP1"/>
1492 <reg32 offset="0x000ea" name="RBBM_CLOCK_HYST3_TP2"/>
1493 <reg32 offset="0x000eb" name="RBBM_CLOCK_HYST3_TP3"/>
1494 <reg32 offset="0x000ec" name="RBBM_CLOCK_HYST4_TP0"/>
1495 <reg32 offset="0x000ed" name="RBBM_CLOCK_HYST4_TP1"/>
1496 <reg32 offset="0x000ee" name="RBBM_CLOCK_HYST4_TP2"/>
1497 <reg32 offset="0x000ef" name="RBBM_CLOCK_HYST4_TP3"/>
1498 <reg32 offset="0x000f0" name="RBBM_CLOCK_CNTL_RB0"/>
1499 <reg32 offset="0x000f1" name="RBBM_CLOCK_CNTL_RB1"/>
1500 <reg32 offset="0x000f2" name="RBBM_CLOCK_CNTL_RB2"/>
1501 <reg32 offset="0x000f3" name="RBBM_CLOCK_CNTL_RB3"/>
1502 <reg32 offset="0x000f4" name="RBBM_CLOCK_CNTL2_RB0"/>
1503 <reg32 offset="0x000f5" name="RBBM_CLOCK_CNTL2_RB1"/>
1504 <reg32 offset="0x000f6" name="RBBM_CLOCK_CNTL2_RB2"/>
1505 <reg32 offset="0x000f7" name="RBBM_CLOCK_CNTL2_RB3"/>
1506 <reg32 offset="0x000f8" name="RBBM_CLOCK_CNTL_CCU0"/>
1507 <reg32 offset="0x000f9" name="RBBM_CLOCK_CNTL_CCU1"/>
1508 <reg32 offset="0x000fa" name="RBBM_CLOCK_CNTL_CCU2"/>
1509 <reg32 offset="0x000fb" name="RBBM_CLOCK_CNTL_CCU3"/>
1510 <reg32 offset="0x00100" name="RBBM_CLOCK_HYST_RB_CCU0"/>
1511 <reg32 offset="0x00101" name="RBBM_CLOCK_HYST_RB_CCU1"/>
1512 <reg32 offset="0x00102" name="RBBM_CLOCK_HYST_RB_CCU2"/>
1513 <reg32 offset="0x00103" name="RBBM_CLOCK_HYST_RB_CCU3"/>
1514 <reg32 offset="0x00104" name="RBBM_CLOCK_CNTL_RAC"/>
1515 <reg32 offset="0x00105" name="RBBM_CLOCK_CNTL2_RAC"/>
1516 <reg32 offset="0x00106" name="RBBM_CLOCK_DELAY_RAC"/>
1517 <reg32 offset="0x00107" name="RBBM_CLOCK_HYST_RAC"/>
1518 <reg32 offset="0x00108" name="RBBM_CLOCK_CNTL_TSE_RAS_RBBM"/>
1519 <reg32 offset="0x00109" name="RBBM_CLOCK_DELAY_TSE_RAS_RBBM"/>
1520 <reg32 offset="0x0010a" name="RBBM_CLOCK_HYST_TSE_RAS_RBBM"/>
1521 <reg32 offset="0x0010b" name="RBBM_CLOCK_CNTL_UCHE"/>
1522 <reg32 offset="0x0010c" name="RBBM_CLOCK_CNTL2_UCHE"/>
1523 <reg32 offset="0x0010d" name="RBBM_CLOCK_CNTL3_UCHE"/>
1524 <reg32 offset="0x0010e" name="RBBM_CLOCK_CNTL4_UCHE"/>
1525 <reg32 offset="0x0010f" name="RBBM_CLOCK_DELAY_UCHE"/>
1526 <reg32 offset="0x00110" name="RBBM_CLOCK_HYST_UCHE"/>
1527 <reg32 offset="0x00111" name="RBBM_CLOCK_MODE_VFD"/>
1528 <reg32 offset="0x00112" name="RBBM_CLOCK_DELAY_VFD"/>
1529 <reg32 offset="0x00113" name="RBBM_CLOCK_HYST_VFD"/>
1530 <reg32 offset="0x00114" name="RBBM_CLOCK_MODE_GPC"/>
1531 <reg32 offset="0x00115" name="RBBM_CLOCK_DELAY_GPC"/>
1532 <reg32 offset="0x00116" name="RBBM_CLOCK_HYST_GPC"/>
1533 <reg32 offset="0x00117" name="RBBM_CLOCK_DELAY_HLSQ_2"/>
1534 <reg32 offset="0x00118" name="RBBM_CLOCK_CNTL_GMU_GX"/>
1535 <reg32 offset="0x00119" name="RBBM_CLOCK_DELAY_GMU_GX"/>
1536 <reg32 offset="0x0011a" name="RBBM_CLOCK_HYST_GMU_GX"/>
1537 <reg32 offset="0x0011b" name="RBBM_CLOCK_MODE_HLSQ"/>
1538 <reg32 offset="0x0011c" name="RBBM_CLOCK_DELAY_HLSQ"/>
1539 <reg32 offset="0x0600" name="DBGC_CFG_DBGBUS_SEL_A"/>
1540 <reg32 offset="0x0601" name="DBGC_CFG_DBGBUS_SEL_B"/>
1541 <reg32 offset="0x0602" name="DBGC_CFG_DBGBUS_SEL_C"/>
1542 <reg32 offset="0x0603" name="DBGC_CFG_DBGBUS_SEL_D">
1543 <bitfield high="7" low="0" name="PING_INDEX"/>
1544 <bitfield high="15" low="8" name="PING_BLK_SEL"/>
1545 </reg32>
1546 <reg32 offset="0x0604" name="DBGC_CFG_DBGBUS_CNTLT">
1547 <bitfield high="5" low="0" name="TRACEEN"/>
1548 <bitfield high="14" low="12" name="GRANU"/>
1549 <bitfield high="31" low="28" name="SEGT"/>
1550 </reg32>
1551 <reg32 offset="0x0605" name="DBGC_CFG_DBGBUS_CNTLM">
1552 <bitfield high="27" low="24" name="ENABLE"/>
1553 </reg32>
1554 <reg32 offset="0x0608" name="DBGC_CFG_DBGBUS_IVTL_0"/>
1555 <reg32 offset="0x0609" name="DBGC_CFG_DBGBUS_IVTL_1"/>
1556 <reg32 offset="0x060a" name="DBGC_CFG_DBGBUS_IVTL_2"/>
1557 <reg32 offset="0x060b" name="DBGC_CFG_DBGBUS_IVTL_3"/>
1558 <reg32 offset="0x060c" name="DBGC_CFG_DBGBUS_MASKL_0"/>
1559 <reg32 offset="0x060d" name="DBGC_CFG_DBGBUS_MASKL_1"/>
1560 <reg32 offset="0x060e" name="DBGC_CFG_DBGBUS_MASKL_2"/>
1561 <reg32 offset="0x060f" name="DBGC_CFG_DBGBUS_MASKL_3"/>
1562 <reg32 offset="0x0610" name="DBGC_CFG_DBGBUS_BYTEL_0">
1563 <bitfield high="3" low="0" name="BYTEL0"/>
1564 <bitfield high="7" low="4" name="BYTEL1"/>
1565 <bitfield high="11" low="8" name="BYTEL2"/>
1566 <bitfield high="15" low="12" name="BYTEL3"/>
1567 <bitfield high="19" low="16" name="BYTEL4"/>
1568 <bitfield high="23" low="20" name="BYTEL5"/>
1569 <bitfield high="27" low="24" name="BYTEL6"/>
1570 <bitfield high="31" low="28" name="BYTEL7"/>
1571 </reg32>
1572 <reg32 offset="0x0611" name="DBGC_CFG_DBGBUS_BYTEL_1">
1573 <bitfield high="3" low="0" name="BYTEL8"/>
1574 <bitfield high="7" low="4" name="BYTEL9"/>
1575 <bitfield high="11" low="8" name="BYTEL10"/>
1576 <bitfield high="15" low="12" name="BYTEL11"/>
1577 <bitfield high="19" low="16" name="BYTEL12"/>
1578 <bitfield high="23" low="20" name="BYTEL13"/>
1579 <bitfield high="27" low="24" name="BYTEL14"/>
1580 <bitfield high="31" low="28" name="BYTEL15"/>
1581 </reg32>
1582 <reg32 offset="0x062f" name="DBGC_CFG_DBGBUS_TRACE_BUF1"/>
1583 <reg32 offset="0x0630" name="DBGC_CFG_DBGBUS_TRACE_BUF2"/>
1584 <reg32 offset="0x0CD8" name="VSC_PERFCTR_VSC_SEL_0"/>
1585 <reg32 offset="0x0CD9" name="VSC_PERFCTR_VSC_SEL_1"/>
1586 <reg32 offset="0x8601" name="GRAS_ADDR_MODE_CNTL"/>
1587 <reg32 offset="0x8610" name="GRAS_PERFCTR_TSE_SEL_0"/>
1588 <reg32 offset="0x8611" name="GRAS_PERFCTR_TSE_SEL_1"/>
1589 <reg32 offset="0x8612" name="GRAS_PERFCTR_TSE_SEL_2"/>
1590 <reg32 offset="0x8613" name="GRAS_PERFCTR_TSE_SEL_3"/>
1591 <reg32 offset="0x8614" name="GRAS_PERFCTR_RAS_SEL_0"/>
1592 <reg32 offset="0x8615" name="GRAS_PERFCTR_RAS_SEL_1"/>
1593 <reg32 offset="0x8616" name="GRAS_PERFCTR_RAS_SEL_2"/>
1594 <reg32 offset="0x8617" name="GRAS_PERFCTR_RAS_SEL_3"/>
1595 <reg32 offset="0x8618" name="GRAS_PERFCTR_LRZ_SEL_0"/>
1596 <reg32 offset="0x8619" name="GRAS_PERFCTR_LRZ_SEL_1"/>
1597 <reg32 offset="0x861A" name="GRAS_PERFCTR_LRZ_SEL_2"/>
1598 <reg32 offset="0x861B" name="GRAS_PERFCTR_LRZ_SEL_3"/>
1599 <reg32 offset="0x8E05" name="RB_ADDR_MODE_CNTL"/>
1600 <reg32 offset="0x8E08" name="RB_NC_MODE_CNTL"/>
1601 <reg32 offset="0x8E10" name="RB_PERFCTR_RB_SEL_0"/>
1602 <reg32 offset="0x8E11" name="RB_PERFCTR_RB_SEL_1"/>
1603 <reg32 offset="0x8E12" name="RB_PERFCTR_RB_SEL_2"/>
1604 <reg32 offset="0x8E13" name="RB_PERFCTR_RB_SEL_3"/>
1605 <reg32 offset="0x8E14" name="RB_PERFCTR_RB_SEL_4"/>
1606 <reg32 offset="0x8E15" name="RB_PERFCTR_RB_SEL_5"/>
1607 <reg32 offset="0x8E16" name="RB_PERFCTR_RB_SEL_6"/>
1608 <reg32 offset="0x8E17" name="RB_PERFCTR_RB_SEL_7"/>
1609 <reg32 offset="0x8E18" name="RB_PERFCTR_CCU_SEL_0"/>
1610 <reg32 offset="0x8E19" name="RB_PERFCTR_CCU_SEL_1"/>
1611 <reg32 offset="0x8E1A" name="RB_PERFCTR_CCU_SEL_2"/>
1612 <reg32 offset="0x8E1B" name="RB_PERFCTR_CCU_SEL_3"/>
1613 <reg32 offset="0x8E1C" name="RB_PERFCTR_CCU_SEL_4"/>
1614 <reg32 offset="0x8E2C" name="RB_PERFCTR_CMP_SEL_0"/>
1615 <reg32 offset="0x8E2D" name="RB_PERFCTR_CMP_SEL_1"/>
1616 <reg32 offset="0x8E2E" name="RB_PERFCTR_CMP_SEL_2"/>
1617 <reg32 offset="0x8E2F" name="RB_PERFCTR_CMP_SEL_3"/>
1618 <reg32 offset="0x8E3D" name="RB_RB_SUB_BLOCK_SEL_CNTL_CD"/>
1619 <reg32 offset="0x8E50" name="RB_CONTEXT_SWITCH_GMEM_SAVE_RESTORE"/>
1620 <reg32 offset="0x9E00" name="PC_DBG_ECO_CNTL"/>
1621 <reg32 offset="0x9E01" name="PC_ADDR_MODE_CNTL"/>
1622 <reg32 offset="0x9E34" name="PC_PERFCTR_PC_SEL_0"/>
1623 <reg32 offset="0x9E35" name="PC_PERFCTR_PC_SEL_1"/>
1624 <reg32 offset="0x9E36" name="PC_PERFCTR_PC_SEL_2"/>
1625 <reg32 offset="0x9E37" name="PC_PERFCTR_PC_SEL_3"/>
1626 <reg32 offset="0x9E38" name="PC_PERFCTR_PC_SEL_4"/>
1627 <reg32 offset="0x9E39" name="PC_PERFCTR_PC_SEL_5"/>
1628 <reg32 offset="0x9E3A" name="PC_PERFCTR_PC_SEL_6"/>
1629 <reg32 offset="0x9E3B" name="PC_PERFCTR_PC_SEL_7"/>
1630 <reg32 offset="0xBE05" name="HLSQ_ADDR_MODE_CNTL"/>
1631 <reg32 offset="0xBE10" name="HLSQ_PERFCTR_HLSQ_SEL_0"/>
1632 <reg32 offset="0xBE11" name="HLSQ_PERFCTR_HLSQ_SEL_1"/>
1633 <reg32 offset="0xBE12" name="HLSQ_PERFCTR_HLSQ_SEL_2"/>
1634 <reg32 offset="0xBE13" name="HLSQ_PERFCTR_HLSQ_SEL_3"/>
1635 <reg32 offset="0xBE14" name="HLSQ_PERFCTR_HLSQ_SEL_4"/>
1636 <reg32 offset="0xBE15" name="HLSQ_PERFCTR_HLSQ_SEL_5"/>
1637 <reg32 offset="0xC800" name="HLSQ_DBG_AHB_READ_APERTURE"/>
1638 <reg32 offset="0xD000" name="HLSQ_DBG_READ_SEL"/>
1639 <reg32 offset="0xA601" name="VFD_ADDR_MODE_CNTL"/>
1640 <reg32 offset="0xA610" name="VFD_PERFCTR_VFD_SEL_0"/>
1641 <reg32 offset="0xA611" name="VFD_PERFCTR_VFD_SEL_1"/>
1642 <reg32 offset="0xA612" name="VFD_PERFCTR_VFD_SEL_2"/>
1643 <reg32 offset="0xA613" name="VFD_PERFCTR_VFD_SEL_3"/>
1644 <reg32 offset="0xA614" name="VFD_PERFCTR_VFD_SEL_4"/>
1645 <reg32 offset="0xA615" name="VFD_PERFCTR_VFD_SEL_5"/>
1646 <reg32 offset="0xA616" name="VFD_PERFCTR_VFD_SEL_6"/>
1647 <reg32 offset="0xA617" name="VFD_PERFCTR_VFD_SEL_7"/>
1648 <reg32 offset="0x9601" name="VPC_ADDR_MODE_CNTL"/>
1649 <reg32 offset="0x9604" name="VPC_PERFCTR_VPC_SEL_0"/>
1650 <reg32 offset="0x9605" name="VPC_PERFCTR_VPC_SEL_1"/>
1651 <reg32 offset="0x9606" name="VPC_PERFCTR_VPC_SEL_2"/>
1652 <reg32 offset="0x9607" name="VPC_PERFCTR_VPC_SEL_3"/>
1653 <reg32 offset="0x9608" name="VPC_PERFCTR_VPC_SEL_4"/>
1654 <reg32 offset="0x9609" name="VPC_PERFCTR_VPC_SEL_5"/>
1655 <reg32 offset="0x0E00" name="UCHE_ADDR_MODE_CNTL"/>
1656 <reg32 offset="0x0E01" name="UCHE_MODE_CNTL"/>
1657 <reg32 offset="0x0E05" name="UCHE_WRITE_RANGE_MAX_LO"/>
1658 <reg32 offset="0x0E06" name="UCHE_WRITE_RANGE_MAX_HI"/>
1659 <reg32 offset="0x0E07" name="UCHE_WRITE_THRU_BASE_LO"/>
1660 <reg32 offset="0x0E08" name="UCHE_WRITE_THRU_BASE_HI"/>
1661 <reg32 offset="0x0E09" name="UCHE_TRAP_BASE_LO"/>
1662 <reg32 offset="0x0E0A" name="UCHE_TRAP_BASE_HI"/>
1663 <reg32 offset="0x0E0B" name="UCHE_GMEM_RANGE_MIN_LO"/>
1664 <reg32 offset="0x0E0C" name="UCHE_GMEM_RANGE_MIN_HI"/>
1665 <reg32 offset="0x0E0D" name="UCHE_GMEM_RANGE_MAX_LO"/>
1666 <reg32 offset="0x0E0E" name="UCHE_GMEM_RANGE_MAX_HI"/>
1667 <reg32 offset="0x0E17" name="UCHE_CACHE_WAYS"/>
1668 <reg32 offset="0x0E18" name="UCHE_FILTER_CNTL"/>
1669 <reg32 offset="0x0E19" name="UCHE_CLIENT_PF">
1670 <bitfield high="7" low="0" name="PERFSEL"/>
1671 </reg32>
1672 <reg32 offset="0x0E1C" name="UCHE_PERFCTR_UCHE_SEL_0"/>
1673 <reg32 offset="0x0E1D" name="UCHE_PERFCTR_UCHE_SEL_1"/>
1674 <reg32 offset="0x0E1E" name="UCHE_PERFCTR_UCHE_SEL_2"/>
1675 <reg32 offset="0x0E1F" name="UCHE_PERFCTR_UCHE_SEL_3"/>
1676 <reg32 offset="0x0E20" name="UCHE_PERFCTR_UCHE_SEL_4"/>
1677 <reg32 offset="0x0E21" name="UCHE_PERFCTR_UCHE_SEL_5"/>
1678 <reg32 offset="0x0E22" name="UCHE_PERFCTR_UCHE_SEL_6"/>
1679 <reg32 offset="0x0E23" name="UCHE_PERFCTR_UCHE_SEL_7"/>
1680 <reg32 offset="0x0E24" name="UCHE_PERFCTR_UCHE_SEL_8"/>
1681 <reg32 offset="0x0E25" name="UCHE_PERFCTR_UCHE_SEL_9"/>
1682 <reg32 offset="0x0E26" name="UCHE_PERFCTR_UCHE_SEL_10"/>
1683 <reg32 offset="0x0E27" name="UCHE_PERFCTR_UCHE_SEL_11"/>
1684 <reg32 offset="0xAE01" name="SP_ADDR_MODE_CNTL"/>
1685 <reg32 offset="0xAE02" name="SP_NC_MODE_CNTL"/>
1686 <reg32 offset="0xAE10" name="SP_PERFCTR_SP_SEL_0"/>
1687 <reg32 offset="0xAE11" name="SP_PERFCTR_SP_SEL_1"/>
1688 <reg32 offset="0xAE12" name="SP_PERFCTR_SP_SEL_2"/>
1689 <reg32 offset="0xAE13" name="SP_PERFCTR_SP_SEL_3"/>
1690 <reg32 offset="0xAE14" name="SP_PERFCTR_SP_SEL_4"/>
1691 <reg32 offset="0xAE15" name="SP_PERFCTR_SP_SEL_5"/>
1692 <reg32 offset="0xAE16" name="SP_PERFCTR_SP_SEL_6"/>
1693 <reg32 offset="0xAE17" name="SP_PERFCTR_SP_SEL_7"/>
1694 <reg32 offset="0xAE18" name="SP_PERFCTR_SP_SEL_8"/>
1695 <reg32 offset="0xAE19" name="SP_PERFCTR_SP_SEL_9"/>
1696 <reg32 offset="0xAE1A" name="SP_PERFCTR_SP_SEL_10"/>
1697 <reg32 offset="0xAE1B" name="SP_PERFCTR_SP_SEL_11"/>
1698 <reg32 offset="0xAE1C" name="SP_PERFCTR_SP_SEL_12"/>
1699 <reg32 offset="0xAE1D" name="SP_PERFCTR_SP_SEL_13"/>
1700 <reg32 offset="0xAE1E" name="SP_PERFCTR_SP_SEL_14"/>
1701 <reg32 offset="0xAE1F" name="SP_PERFCTR_SP_SEL_15"/>
1702 <reg32 offset="0xAE20" name="SP_PERFCTR_SP_SEL_16"/>
1703 <reg32 offset="0xAE21" name="SP_PERFCTR_SP_SEL_17"/>
1704 <reg32 offset="0xAE22" name="SP_PERFCTR_SP_SEL_18"/>
1705 <reg32 offset="0xAE23" name="SP_PERFCTR_SP_SEL_19"/>
1706 <reg32 offset="0xAE24" name="SP_PERFCTR_SP_SEL_20"/>
1707 <reg32 offset="0xAE25" name="SP_PERFCTR_SP_SEL_21"/>
1708 <reg32 offset="0xAE26" name="SP_PERFCTR_SP_SEL_22"/>
1709 <reg32 offset="0xAE27" name="SP_PERFCTR_SP_SEL_23"/>
1710 <reg32 offset="0xB601" name="TPL1_ADDR_MODE_CNTL"/>
1711 <reg32 offset="0xB604" name="TPL1_NC_MODE_CNTL"/>
1712 <reg32 offset="0xB608" name="TPL1_BICUBIC_WEIGHTS_TABLE_0"/>
1713 <reg32 offset="0xB609" name="TPL1_BICUBIC_WEIGHTS_TABLE_1"/>
1714 <reg32 offset="0xB60A" name="TPL1_BICUBIC_WEIGHTS_TABLE_2"/>
1715 <reg32 offset="0xB60B" name="TPL1_BICUBIC_WEIGHTS_TABLE_3"/>
1716 <reg32 offset="0xB60C" name="TPL1_BICUBIC_WEIGHTS_TABLE_4"/>
1717 <reg32 offset="0xB610" name="TPL1_PERFCTR_TP_SEL_0"/>
1718 <reg32 offset="0xB611" name="TPL1_PERFCTR_TP_SEL_1"/>
1719 <reg32 offset="0xB612" name="TPL1_PERFCTR_TP_SEL_2"/>
1720 <reg32 offset="0xB613" name="TPL1_PERFCTR_TP_SEL_3"/>
1721 <reg32 offset="0xB614" name="TPL1_PERFCTR_TP_SEL_4"/>
1722 <reg32 offset="0xB615" name="TPL1_PERFCTR_TP_SEL_5"/>
1723 <reg32 offset="0xB616" name="TPL1_PERFCTR_TP_SEL_6"/>
1724 <reg32 offset="0xB617" name="TPL1_PERFCTR_TP_SEL_7"/>
1725 <reg32 offset="0xB618" name="TPL1_PERFCTR_TP_SEL_8"/>
1726 <reg32 offset="0xB619" name="TPL1_PERFCTR_TP_SEL_9"/>
1727 <reg32 offset="0xB61A" name="TPL1_PERFCTR_TP_SEL_10"/>
1728 <reg32 offset="0xB61B" name="TPL1_PERFCTR_TP_SEL_11"/>
1729 <reg32 offset="0x3000" name="VBIF_VERSION"/>
1730 <reg32 offset="0x3001" name="VBIF_CLKON">
1731 <bitfield pos="1" name="FORCE_ON_TESTBUS"/>
1732 </reg32>
1733 <reg32 offset="0x302A" name="VBIF_GATE_OFF_WRREQ_EN"/>
1734 <reg32 offset="0x3080" name="VBIF_XIN_HALT_CTRL0"/>
1735 <reg32 offset="0x3081" name="VBIF_XIN_HALT_CTRL1"/>
1736 <reg32 offset="0x3084" name="VBIF_TEST_BUS_OUT_CTRL"/>
1737 <reg32 offset="0x3085" name="VBIF_TEST_BUS1_CTRL0"/>
1738 <reg32 offset="0x3086" name="VBIF_TEST_BUS1_CTRL1">
1739 <bitfield low="0" high="3" name="DATA_SEL"/>
1740 </reg32>
1741 <reg32 offset="0x3087" name="VBIF_TEST_BUS2_CTRL0"/>
1742 <reg32 offset="0x3088" name="VBIF_TEST_BUS2_CTRL1">
1743 <bitfield low="0" high="8" name="DATA_SEL"/>
1744 </reg32>
1745 <reg32 offset="0x308c" name="VBIF_TEST_BUS_OUT"/>
1746 <reg32 offset="0x30d0" name="VBIF_PERF_CNT_SEL0"/>
1747 <reg32 offset="0x30d1" name="VBIF_PERF_CNT_SEL1"/>
1748 <reg32 offset="0x30d2" name="VBIF_PERF_CNT_SEL2"/>
1749 <reg32 offset="0x30d3" name="VBIF_PERF_CNT_SEL3"/>
1750 <reg32 offset="0x30d8" name="VBIF_PERF_CNT_LOW0"/>
1751 <reg32 offset="0x30d9" name="VBIF_PERF_CNT_LOW1"/>
1752 <reg32 offset="0x30da" name="VBIF_PERF_CNT_LOW2"/>
1753 <reg32 offset="0x30db" name="VBIF_PERF_CNT_LOW3"/>
1754 <reg32 offset="0x30e0" name="VBIF_PERF_CNT_HIGH0"/>
1755 <reg32 offset="0x30e1" name="VBIF_PERF_CNT_HIGH1"/>
1756 <reg32 offset="0x30e2" name="VBIF_PERF_CNT_HIGH2"/>
1757 <reg32 offset="0x30e3" name="VBIF_PERF_CNT_HIGH3"/>
1758 <reg32 offset="0x3100" name="VBIF_PERF_PWR_CNT_EN0"/>
1759 <reg32 offset="0x3101" name="VBIF_PERF_PWR_CNT_EN1"/>
1760 <reg32 offset="0x3102" name="VBIF_PERF_PWR_CNT_EN2"/>
1761 <reg32 offset="0x3110" name="VBIF_PERF_PWR_CNT_LOW0"/>
1762 <reg32 offset="0x3111" name="VBIF_PERF_PWR_CNT_LOW1"/>
1763 <reg32 offset="0x3112" name="VBIF_PERF_PWR_CNT_LOW2"/>
1764 <reg32 offset="0x3118" name="VBIF_PERF_PWR_CNT_HIGH0"/>
1765 <reg32 offset="0x3119" name="VBIF_PERF_PWR_CNT_HIGH1"/>
1766 <reg32 offset="0x311a" name="VBIF_PERF_PWR_CNT_HIGH2"/>
1767
1768 <!-- move/rename these.. -->
1769
1770 <reg32 offset="0x88d4" name="RB_WINDOW_OFFSET2" type="adreno_reg_xy"/>
1771 <reg32 offset="0xb4d1" name="SP_WINDOW_OFFSET" type="adreno_reg_xy"/>
1772 <reg32 offset="0xb307" name="SP_TP_WINDOW_OFFSET" type="adreno_reg_xy"/>
1773
1774 <!-- same as RB_BIN_CONTROL -->
1775 <reg32 offset="0x80a1" name="GRAS_BIN_CONTROL">
1776 <bitfield name="BINW" low="0" high="7" shr="5" type="uint"/>
1777 <bitfield name="BINH" low="8" high="16" shr="4" type="uint"/>
1778 <bitfield name="BINNING_PASS" pos="18" type="boolean"/>
1779 <bitfield name="USE_VIZ" pos="21" type="boolean"/>
1780 </reg32>
1781
1782 <!--
1783 from offset it seems it should be RB, but weird to duplicate
1784 other regs from same block??
1785 -->
1786 <reg32 offset="0x88d3" name="RB_BIN_CONTROL2">
1787 <bitfield name="BINW" low="0" high="7" shr="5" type="uint"/>
1788 <bitfield name="BINH" low="8" high="16" shr="4" type="uint"/>
1789 </reg32>
1790
1791 <reg32 offset="0x0c02" name="VSC_BIN_SIZE">
1792 <bitfield name="WIDTH" low="0" high="7" shr="5" type="uint"/>
1793 <bitfield name="HEIGHT" low="8" high="16" shr="4" type="uint"/>
1794 </reg32>
1795 <reg32 offset="0x0c03" name="VSC_DRAW_STRM_SIZE_ADDRESS_LO"/>
1796 <reg32 offset="0x0c04" name="VSC_DRAW_STRM_SIZE_ADDRESS_HI"/>
1797 <reg64 offset="0x0c03" name="VSC_DRAW_STRM_SIZE_ADDRESS" type="waddress"/>
1798 <reg32 offset="0x0c06" name="VSC_BIN_COUNT">
1799 <bitfield name="NX" low="1" high="10" type="uint"/>
1800 <bitfield name="NY" low="11" high="20" type="uint"/>
1801 </reg32>
1802 <array offset="0x0c10" name="VSC_PIPE_CONFIG" stride="1" length="32">
1803 <reg32 offset="0x0" name="REG">
1804 <doc>
1805 Configures the mapping between VSC_PIPE buffer and
1806 bin, X/Y specify the bin index in the horiz/vert
1807 direction (0,0 is upper left, 0,1 is leftmost bin
1808 on second row, and so on). W/H specify the number
1809 of bins assigned to this VSC_PIPE in the horiz/vert
1810 dimension.
1811 </doc>
1812 <bitfield name="X" low="0" high="9" type="uint"/>
1813 <bitfield name="Y" low="10" high="19" type="uint"/>
1814 <bitfield name="W" low="20" high="25" type="uint"/>
1815 <bitfield name="H" low="26" high="31" type="uint"/>
1816 </reg32>
1817 </array>
1818 <!--
1819 HW binning primitive & draw streams, which enable draws and primitives
1820 within a draw to be skipped in the main tile pass. See:
1821 https://github.com/freedreno/freedreno/wiki/Visibility-Stream-Format
1822
1823 Compared to a5xx and earlier, we just program the address of the first
1824 stream and hw adds (pipe_num * VSC_*_STRM_PITCH)
1825
1826 LIMIT is set to PITCH - 64, to make room for a bit of overflow
1827 -->
1828 <reg32 offset="0x0c30" name="VSC_PRIM_STRM_ADDRESS_LO"/>
1829 <reg32 offset="0x0c31" name="VSC_PRIM_STRM_ADDRESS_HI"/>
1830 <reg64 offset="0x0c30" name="VSC_PRIM_STRM_ADDRESS" type="waddress"/>
1831 <reg32 offset="0x0c32" name="VSC_PRIM_STRM_PITCH"/>
1832 <reg32 offset="0x0c33" name="VSC_PRIM_STRM_LIMIT"/>
1833 <reg32 offset="0x0c34" name="VSC_DRAW_STRM_ADDRESS_LO"/>
1834 <reg32 offset="0x0c35" name="VSC_DRAW_STRM_ADDRESS_HI"/>
1835 <reg64 offset="0x0c34" name="VSC_DRAW_STRM_ADDRESS" type="waddress"/>
1836 <reg32 offset="0x0c36" name="VSC_DRAW_STRM_PITCH"/>
1837 <reg32 offset="0x0c37" name="VSC_DRAW_STRM_LIMIT"/>
1838
1839 <array offset="0x0c38" name="VSC_STATE" stride="1" length="32">
1840 <doc>
1841 Seems to be a bitmap of which tiles mapped to the VSC
1842 pipe contain geometry.
1843
1844 I suppose we can connect a maximum of 32 tiles to a
1845 single VSC pipe.
1846 </doc>
1847 <reg32 offset="0x0" name="REG"/>
1848 </array>
1849
1850 <array offset="0x0c58" name="VSC_PRIM_STRM_SIZE" stride="1" length="32">
1851 <doc>
1852 Has the size of data written to corresponding VSC_PRIM_STRM
1853 buffer.
1854 </doc>
1855 <reg32 offset="0x0" name="REG"/>
1856 </array>
1857
1858 <array offset="0x0c78" name="VSC_DRAW_STRM_SIZE" stride="1" length="32">
1859 <doc>
1860 Has the size of data written to corresponding VSC pipe, ie.
1861 same thing that is written out to VSC_DRAW_STRM_SIZE_ADDRESS_LO/HI
1862 </doc>
1863 <reg32 offset="0x0" name="REG"/>
1864 </array>
1865
1866 <!-- always 0x03200000 ? -->
1867 <reg32 offset="0x0e12" name="UCHE_UNKNOWN_0E12"/>
1868
1869 <reg32 offset="0x8000" name="GRAS_CL_CNTL">
1870 <bitfield name="CLIP_DISABLE" pos="0" type="boolean"/>
1871 <bitfield name="ZNEAR_CLIP_DISABLE" pos="1" type="boolean"/>
1872 <bitfield name="ZFAR_CLIP_DISABLE" pos="2" type="boolean"/>
1873 <!-- set with depthClampEnable, not clear what it does -->
1874 <bitfield name="UNK5" pos="5" type="boolean"/>
1875 <!-- controls near z clip behavior (set for vulkan) -->
1876 <bitfield name="ZERO_GB_SCALE_Z" pos="6" type="boolean"/>
1877 <!-- guess based on a3xx and meaning of bits 8 and 9
1878 if the guess is right then this is related to point sprite clipping -->
1879 <bitfield name="VP_CLIP_CODE_IGNORE" pos="7" type="boolean"/>
1880 <bitfield name="VP_XFORM_DISABLE" pos="8" type="boolean"/>
1881 <bitfield name="PERSP_DIVISION_DISABLE" pos="9" type="boolean"/>
1882 </reg32>
1883 <reg32 offset="0x8001" name="GRAS_UNKNOWN_8001"/>
1884 <reg32 offset="0x8002" name="GRAS_UNKNOWN_8002"/>
1885 <reg32 offset="0x8003" name="GRAS_UNKNOWN_8003"/>
1886
1887 <enum name="a6xx_layer_type">
1888 <value value="0x0" name="LAYER_MULTISAMPLE_ARRAY"/>
1889 <value value="0x1" name="LAYER_3D"/>
1890 <value value="0x2" name="LAYER_CUBEMAP"/>
1891 <value value="0x3" name="LAYER_2D_ARRAY"/>
1892 </enum>
1893
1894 <!-- index of highest layer that can be written to via gl_Layer -->
1895 <reg32 offset="0x8004" name="GRAS_MAX_LAYER_INDEX" type="uint"/>
1896
1897 <reg32 offset="0x8005" name="GRAS_CNTL">
1898 <!-- see also RB_RENDER_CONTROL0 -->
1899 <bitfield name="VARYING" pos="0" type="boolean"/>
1900 <!-- b1 set for interpolateAtCentroid() -->
1901 <bitfield name="CENTROID" pos="1" type="boolean"/>
1902 <!-- b2 set instead of b0 when running in per-sample mode -->
1903 <bitfield name="PERSAMP_VARYING" pos="2" type="boolean"/>
1904 <!--
1905 b3 set for interpolateAt{Offset,Sample}() if not in per-sample
1906 mode, and frag_face
1907 -->
1908 <bitfield name="SIZE" pos="3" type="boolean"/>
1909 <!-- b5 set ofr interpolateAt{Offset,Sample}() if in per-sample mode -->
1910 <bitfield name="SIZE_PERSAMP" pos="5" type="boolean"/>
1911 <bitfield name="COORD_MASK" low="6" high="9" type="hex"/>
1912 </reg32>
1913 <reg32 offset="0x8006" name="GRAS_CL_GUARDBAND_CLIP_ADJ">
1914 <bitfield name="HORZ" low="0" high="9" type="uint"/>
1915 <bitfield name="VERT" low="10" high="19" type="uint"/>
1916 </reg32>
1917 <reg32 offset="0x8010" name="GRAS_CL_VPORT_XOFFSET_0" type="float"/>
1918 <reg32 offset="0x8011" name="GRAS_CL_VPORT_XSCALE_0" type="float"/>
1919 <reg32 offset="0x8012" name="GRAS_CL_VPORT_YOFFSET_0" type="float"/>
1920 <reg32 offset="0x8013" name="GRAS_CL_VPORT_YSCALE_0" type="float"/>
1921 <reg32 offset="0x8014" name="GRAS_CL_VPORT_ZOFFSET_0" type="float"/>
1922 <reg32 offset="0x8015" name="GRAS_CL_VPORT_ZSCALE_0" type="float"/>
1923
1924 <!-- not clear what it does, mirrors RB_Z_CLAMP_MIN -->
1925 <reg32 offset="0x8070" name="GRAS_CL_Z_CLAMP_MIN" type="float"/>
1926 <reg32 offset="0x8071" name="GRAS_CL_Z_CLAMP_MAX" type="float"/>
1927
1928 <reg32 offset="0x8090" name="GRAS_SU_CNTL">
1929 <bitfield name="CULL_FRONT" pos="0" type="boolean"/>
1930 <bitfield name="CULL_BACK" pos="1" type="boolean"/>
1931 <bitfield name="FRONT_CW" pos="2" type="boolean"/>
1932 <bitfield name="LINEHALFWIDTH" low="3" high="10" radix="2" type="fixed"/>
1933 <bitfield name="POLY_OFFSET" pos="11" type="boolean"/>
1934 <bitfield name="MSAA_ENABLE" pos="13" type="boolean"/>
1935 <!-- probably LINEHALFWIDTH is the same as a4xx.. -->
1936 </reg32>
1937 <reg32 offset="0x8091" name="GRAS_SU_POINT_MINMAX">
1938 <bitfield name="MIN" low="0" high="15" type="ufixed" radix="4"/>
1939 <bitfield name="MAX" low="16" high="31" type="ufixed" radix="4"/>
1940 </reg32>
1941 <reg32 offset="0x8092" name="GRAS_SU_POINT_SIZE" type="fixed" radix="4"/>
1942
1943 <reg32 offset="0x8094" name="GRAS_SU_DEPTH_PLANE_CNTL">
1944 <bitfield name="Z_MODE" low="0" high="1" type="a6xx_ztest_mode"/>
1945 </reg32>
1946 <reg32 offset="0x8095" name="GRAS_SU_POLY_OFFSET_SCALE" type="float"/>
1947 <reg32 offset="0x8096" name="GRAS_SU_POLY_OFFSET_OFFSET" type="float"/>
1948 <reg32 offset="0x8097" name="GRAS_SU_POLY_OFFSET_OFFSET_CLAMP" type="float"/>
1949 <!-- duplicates RB_DEPTH_BUFFER_INFO: -->
1950 <reg32 offset="0x8098" name="GRAS_SU_DEPTH_BUFFER_INFO">
1951 <bitfield name="DEPTH_FORMAT" low="0" high="2" type="a6xx_depth_format"/>
1952 </reg32>
1953
1954 <!-- always 0x0 -->
1955 <reg32 offset="0x8099" name="GRAS_UNKNOWN_8099"/>
1956
1957 <!-- always 0x0 ? -->
1958 <reg32 offset="0x809b" name="GRAS_UNKNOWN_809B"/>
1959
1960 <reg32 offset="0x809c" name="GRAS_UNKNOWN_809C">
1961 <bitfield name="GS_WRITES_LAYER" pos="0" type="boolean"/>
1962 </reg32>
1963
1964 <reg32 offset="0x809d" name="GRAS_UNKNOWN_809D"/>
1965
1966 <reg32 offset="0x80a0" name="GRAS_UNKNOWN_80A0"/>
1967
1968 <reg32 offset="0x80a2" name="GRAS_RAS_MSAA_CNTL">
1969 <bitfield name="SAMPLES" low="0" high="1" type="a3xx_msaa_samples"/>
1970 </reg32>
1971 <reg32 offset="0x80a3" name="GRAS_DEST_MSAA_CNTL">
1972 <bitfield name="SAMPLES" low="0" high="1" type="a3xx_msaa_samples"/>
1973 <bitfield name="MSAA_DISABLE" pos="2" type="boolean"/>
1974 </reg32>
1975
1976 <bitset name="a6xx_sample_config" inline="yes">
1977 <bitfield name="LOCATION_ENABLE" pos="1" type="boolean"/>
1978 </bitset>
1979
1980 <bitset name="a6xx_sample_locations" inline="yes">
1981 <bitfield name="SAMPLE_0_X" low="0" high="3" radix="4" type="fixed"/>
1982 <bitfield name="SAMPLE_0_Y" low="4" high="7" radix="4" type="fixed"/>
1983 <bitfield name="SAMPLE_1_X" low="8" high="11" radix="4" type="fixed"/>
1984 <bitfield name="SAMPLE_1_Y" low="12" high="15" radix="4" type="fixed"/>
1985 <bitfield name="SAMPLE_2_X" low="16" high="19" radix="4" type="fixed"/>
1986 <bitfield name="SAMPLE_2_Y" low="20" high="23" radix="4" type="fixed"/>
1987 <bitfield name="SAMPLE_3_X" low="24" high="27" radix="4" type="fixed"/>
1988 <bitfield name="SAMPLE_3_Y" low="28" high="31" radix="4" type="fixed"/>
1989 </bitset>
1990
1991 <reg32 offset="0x80a4" name="GRAS_SAMPLE_CONFIG" type="a6xx_sample_config"/>
1992 <reg32 offset="0x80a5" name="GRAS_SAMPLE_LOCATION_0" type="a6xx_sample_locations"/>
1993 <reg32 offset="0x80a6" name="GRAS_SAMPLE_LOCATION_1" type="a6xx_sample_locations"/>
1994
1995 <!-- always 0x0 -->
1996 <reg32 offset="0x80af" name="GRAS_UNKNOWN_80AF"/>
1997
1998 <reg32 offset="0x80b0" name="GRAS_SC_SCREEN_SCISSOR_TL_0" type="adreno_reg_xy"/>
1999 <reg32 offset="0x80b1" name="GRAS_SC_SCREEN_SCISSOR_BR_0" type="adreno_reg_xy"/>
2000 <reg32 offset="0x80d0" name="GRAS_SC_VIEWPORT_SCISSOR_TL_0" type="adreno_reg_xy"/>
2001 <reg32 offset="0x80d1" name="GRAS_SC_VIEWPORT_SCISSOR_BR_0" type="adreno_reg_xy"/>
2002 <reg32 offset="0x80f0" name="GRAS_SC_WINDOW_SCISSOR_TL" type="adreno_reg_xy"/>
2003 <reg32 offset="0x80f1" name="GRAS_SC_WINDOW_SCISSOR_BR" type="adreno_reg_xy"/>
2004
2005 <reg32 offset="0x8100" name="GRAS_LRZ_CNTL">
2006 <!--
2007 These bits seems to mostly fit.. but wouldn't hurt to have a 2nd
2008 look when we get around to enabling lrz
2009 -->
2010 <bitfield name="ENABLE" pos="0" type="boolean"/>
2011 <doc>LRZ write also disabled for blend/etc.</doc>
2012 <bitfield name="LRZ_WRITE" pos="1" type="boolean"/>
2013 <doc>update MAX instead of MIN value, ie. GL_GREATER/GL_GEQUAL</doc>
2014 <bitfield name="GREATER" pos="2" type="boolean"/>
2015 <bitfield name="FC_ENABLE" pos="3" type="boolean"/>
2016 <!-- set when depth-test + depth-write enabled -->
2017 <bitfield name="Z_TEST_ENABLE" pos="4" type="boolean"/>
2018 </reg32>
2019 <reg32 offset="0x8101" name="GRAS_UNKNOWN_8101"/>
2020 <reg32 offset="0x8102" name="GRAS_2D_BLIT_INFO">
2021 <bitfield name="COLOR_FORMAT" low="0" high="7" type="a6xx_format"/>
2022 </reg32>
2023 <reg32 offset="0x8103" name="GRAS_LRZ_BUFFER_BASE_LO"/>
2024 <reg32 offset="0x8104" name="GRAS_LRZ_BUFFER_BASE_HI"/>
2025 <reg64 offset="0x8103" name="GRAS_LRZ_BUFFER_BASE" type="waddress"/>
2026 <reg32 offset="0x8105" name="GRAS_LRZ_BUFFER_PITCH">
2027 <bitfield name="PITCH" low="0" high="10" shr="5" type="uint"/>
2028 <bitfield name="ARRAY_PITCH" low="11" high="21" shr="5" type="uint"/> <!-- ??? -->
2029 </reg32>
2030
2031 <!--
2032 The LRZ "fast clear" buffer is initialized to zero's by blob, and
2033 read/written when GRAS_LRZ_CNTL.FC_ENABLE (b3) is set. It appears
2034 to store 1b/block. It appears that '0' means block has original
2035 depth clear value, and '1' means that the corresponding block in
2036 LRZ has been modified. Ignoring alignment/padding, the size is
2037 given by the formula:
2038
2039 // calculate LRZ size from depth size:
2040 if (nr_samples == 4) {
2041 width *= 2;
2042 height *= 2;
2043 } else if (nr_samples == 2) {
2044 height *= 2;
2045 }
2046
2047 lrz_width = div_round_up(width, 8);
2048 lrz_heigh = div_round_up(height, 8);
2049
2050 // calculate # of blocks:
2051 nblocksx = div_round_up(lrz_width, 16);
2052 nblocksy = div_round_up(lrz_height, 4);
2053
2054 // fast-clear buffer is 1bit/block:
2055 fc_sz = div_round_up(nblocksx * nblocksy, 8);
2056
2057 In practice the blob seems to switch off FC_ENABLE once the size
2058 increases beyond 1 page. Not sure if that is an actual limit or
2059 not.
2060 -->
2061 <reg32 offset="0x8106" name="GRAS_LRZ_FAST_CLEAR_BUFFER_BASE_LO"/>
2062 <reg32 offset="0x8107" name="GRAS_LRZ_FAST_CLEAR_BUFFER_BASE_HI"/>
2063 <reg32 offset="0x8106" name="GRAS_LRZ_FAST_CLEAR_BUFFER_BASE" type="waddress"/>
2064
2065 <reg32 offset="0x8109" name="GRAS_SAMPLE_CNTL">
2066 <bitfield name="PER_SAMP_MODE" pos="0" type="boolean"/>
2067 </reg32>
2068
2069 <reg32 offset="0x8110" name="GRAS_UNKNOWN_8110"/>
2070
2071 <enum name="a6xx_rotation">
2072 <value value="0x0" name="ROTATE_0"/>
2073 <value value="0x1" name="ROTATE_90"/>
2074 <value value="0x2" name="ROTATE_180"/>
2075 <value value="0x3" name="ROTATE_270"/>
2076 <value value="0x4" name="ROTATE_HFLIP"/>
2077 <value value="0x5" name="ROTATE_VFLIP"/>
2078 </enum>
2079
2080 <bitset name="a6xx_2d_blit_cntl" inline="yes">
2081 <bitfield name="ROTATE" low="0" high="2" type="a6xx_rotation"/>
2082 <bitfield name="SOLID_COLOR" pos="7" type="boolean"/>
2083 <bitfield name="COLOR_FORMAT" low="8" high="15" type="a6xx_format"/>
2084 <bitfield name="SCISSOR" pos="16" type="boolean"/>
2085
2086 <bitfield name="UNK" low="17" high="18" type="uint"/>
2087
2088 <!-- required when blitting D24S8/D24X8 -->
2089 <bitfield name="D24S8" pos="19" type="boolean"/>
2090 <!-- some sort of channel mask, disabled channels are set to zero ? -->
2091 <bitfield name="MASK" low="20" high="23"/>
2092 <bitfield name="IFMT" low="24" high="28" type="a6xx_2d_ifmt"/>
2093 </bitset>
2094
2095 <reg32 offset="0x8400" name="GRAS_2D_BLIT_CNTL" type="a6xx_2d_blit_cntl"/>
2096
2097 <!-- could be the src coords are fixed point? -->
2098 <reg32 offset="0x8401" name="GRAS_2D_SRC_TL_X">
2099 <bitfield name="X" low="8" high="31" type="int"/>
2100 </reg32>
2101 <reg32 offset="0x8402" name="GRAS_2D_SRC_BR_X">
2102 <bitfield name="X" low="8" high="31" type="int"/>
2103 </reg32>
2104 <reg32 offset="0x8403" name="GRAS_2D_SRC_TL_Y">
2105 <bitfield name="Y" low="8" high="31" type="int"/>
2106 </reg32>
2107 <reg32 offset="0x8404" name="GRAS_2D_SRC_BR_Y">
2108 <bitfield name="Y" low="8" high="31" type="int"/>
2109 </reg32>
2110
2111 <reg32 offset="0x8405" name="GRAS_2D_DST_TL" type="adreno_reg_xy"/>
2112 <reg32 offset="0x8406" name="GRAS_2D_DST_BR" type="adreno_reg_xy"/>
2113
2114 <reg32 offset="0x840a" name="GRAS_RESOLVE_CNTL_1" type="adreno_reg_xy"/>
2115 <reg32 offset="0x840b" name="GRAS_RESOLVE_CNTL_2" type="adreno_reg_xy"/>
2116
2117 <!-- always 0x880 ? -->
2118 <reg32 offset="0x8600" name="GRAS_UNKNOWN_8600"/>
2119
2120 <!-- same as GRAS_BIN_CONTROL: -->
2121 <reg32 offset="0x8800" name="RB_BIN_CONTROL">
2122 <bitfield name="BINW" low="0" high="7" shr="5" type="uint"/>
2123 <bitfield name="BINH" low="8" high="16" shr="4" type="uint"/>
2124 <bitfield name="BINNING_PASS" pos="18" type="boolean"/>
2125 <bitfield name="USE_VIZ" pos="21" type="boolean"/>
2126 </reg32>
2127 <reg32 offset="0x8801" name="RB_RENDER_CNTL">
2128 <!-- always set: ?? -->
2129 <bitfield name="UNK4" pos="4" type="boolean"/>
2130 <!-- set during binning pass: -->
2131 <bitfield name="BINNING" pos="7" type="boolean"/>
2132 <!-- bit seems to be set whenever depth buffer enabled: -->
2133 <bitfield name="FLAG_DEPTH" pos="14" type="boolean"/>
2134 <!-- bitmask of MRTs using UBWC flag buffer: -->
2135 <bitfield name="FLAG_MRTS" low="16" high="23"/>
2136 </reg32>
2137 <reg32 offset="0x8802" name="RB_RAS_MSAA_CNTL">
2138 <bitfield name="SAMPLES" low="0" high="1" type="a3xx_msaa_samples"/>
2139 </reg32>
2140 <reg32 offset="0x8803" name="RB_DEST_MSAA_CNTL">
2141 <bitfield name="SAMPLES" low="0" high="1" type="a3xx_msaa_samples"/>
2142 <bitfield name="MSAA_DISABLE" pos="2" type="boolean"/>
2143 </reg32>
2144
2145 <reg32 offset="0x8804" name="RB_SAMPLE_CONFIG" type="a6xx_sample_config"/>
2146 <reg32 offset="0x8805" name="RB_SAMPLE_LOCATION_0" type="a6xx_sample_locations"/>
2147 <reg32 offset="0x8806" name="RB_SAMPLE_LOCATION_1" type="a6xx_sample_locations"/>
2148
2149 <!--
2150 note: maybe not actually called RB_RENDER_CONTROLn (since RB_RENDER_CNTL
2151 name comes from kernel and is probably right)
2152 -->
2153 <reg32 offset="0x8809" name="RB_RENDER_CONTROL0">
2154 <!-- see also GRAS_CNTL -->
2155 <bitfield name="VARYING" pos="0" type="boolean"/>
2156 <!-- b1 set for interpolateAtCentroid() -->
2157 <bitfield name="CENTROID" pos="1" type="boolean"/>
2158 <!-- b2 set instead of b0 when running in per-sample mode -->
2159 <bitfield name="PERSAMP_VARYING" pos="2" type="boolean"/>
2160 <!--
2161 b3 set for interpolateAt{Offset,Sample}() if not in per-sample
2162 mode, and frag_face
2163 -->
2164 <bitfield name="SIZE" pos="3" type="boolean"/>
2165 <!-- b5 set ofr interpolateAt{Offset,Sample}() if in per-sample mode -->
2166 <bitfield name="SIZE_PERSAMP" pos="5" type="boolean"/>
2167 <bitfield name="COORD_MASK" low="6" high="9" type="hex"/>
2168 <bitfield name="UNK10" pos="10" type="boolean"/>
2169 </reg32>
2170 <reg32 offset="0x880a" name="RB_RENDER_CONTROL1">
2171 <!-- enable bits for various FS sysvalue regs: -->
2172 <bitfield name="SAMPLEMASK" pos="0" type="boolean"/>
2173 <bitfield name="FACENESS" pos="2" type="boolean"/>
2174 <bitfield name="SAMPLEID" pos="3" type="boolean"/>
2175 <!-- b4 and b5 set in per-sample mode: -->
2176 <bitfield name="UNK4" pos="4" type="boolean"/>
2177 <bitfield name="UNK5" pos="5" type="boolean"/>
2178 <bitfield name="SIZE" pos="6" type="boolean"/>
2179 </reg32>
2180
2181 <reg32 offset="0x880b" name="RB_FS_OUTPUT_CNTL0">
2182 <bitfield name="DUAL_COLOR_IN_ENABLE" pos="0" type="boolean"/>
2183 <bitfield name="FRAG_WRITES_Z" pos="1" type="boolean"/>
2184 <bitfield name="FRAG_WRITES_SAMPMASK" pos="2" type="boolean"/>
2185 </reg32>
2186 <reg32 offset="0x880c" name="RB_FS_OUTPUT_CNTL1">
2187 <bitfield name="MRT" low="0" high="3" type="uint"/>
2188 </reg32>
2189 <reg32 offset="0x880d" name="RB_RENDER_COMPONENTS">
2190 <bitfield name="RT0" low="0" high="3"/>
2191 <bitfield name="RT1" low="4" high="7"/>
2192 <bitfield name="RT2" low="8" high="11"/>
2193 <bitfield name="RT3" low="12" high="15"/>
2194 <bitfield name="RT4" low="16" high="19"/>
2195 <bitfield name="RT5" low="20" high="23"/>
2196 <bitfield name="RT6" low="24" high="27"/>
2197 <bitfield name="RT7" low="28" high="31"/>
2198 </reg32>
2199 <reg32 offset="0x880e" name="RB_DITHER_CNTL">
2200 <bitfield name="DITHER_MODE_MRT0" low="0" high="1" type="adreno_rb_dither_mode"/>
2201 <bitfield name="DITHER_MODE_MRT1" low="2" high="3" type="adreno_rb_dither_mode"/>
2202 <bitfield name="DITHER_MODE_MRT2" low="4" high="5" type="adreno_rb_dither_mode"/>
2203 <bitfield name="DITHER_MODE_MRT3" low="6" high="7" type="adreno_rb_dither_mode"/>
2204 <bitfield name="DITHER_MODE_MRT4" low="8" high="9" type="adreno_rb_dither_mode"/>
2205 <bitfield name="DITHER_MODE_MRT5" low="10" high="11" type="adreno_rb_dither_mode"/>
2206 <bitfield name="DITHER_MODE_MRT6" low="12" high="12" type="adreno_rb_dither_mode"/>
2207 <bitfield name="DITHER_MODE_MRT7" low="14" high="15" type="adreno_rb_dither_mode"/>
2208 </reg32>
2209 <reg32 offset="0x880f" name="RB_SRGB_CNTL">
2210 <!-- Same as SP_SRGB_CNTL -->
2211 <bitfield name="SRGB_MRT0" pos="0" type="boolean"/>
2212 <bitfield name="SRGB_MRT1" pos="1" type="boolean"/>
2213 <bitfield name="SRGB_MRT2" pos="2" type="boolean"/>
2214 <bitfield name="SRGB_MRT3" pos="3" type="boolean"/>
2215 <bitfield name="SRGB_MRT4" pos="4" type="boolean"/>
2216 <bitfield name="SRGB_MRT5" pos="5" type="boolean"/>
2217 <bitfield name="SRGB_MRT6" pos="6" type="boolean"/>
2218 <bitfield name="SRGB_MRT7" pos="7" type="boolean"/>
2219 </reg32>
2220
2221 <reg32 offset="0x8810" name="RB_SAMPLE_CNTL">
2222 <bitfield name="PER_SAMP_MODE" pos="0" type="boolean"/>
2223 </reg32>
2224 <reg32 offset="0x8811" name="RB_UNKNOWN_8811"/>
2225
2226 <!-- always 0x0 ? -->
2227 <reg32 offset="0x8818" name="RB_UNKNOWN_8818"/>
2228 <reg32 offset="0x8819" name="RB_UNKNOWN_8819"/>
2229 <reg32 offset="0x881a" name="RB_UNKNOWN_881A"/>
2230 <reg32 offset="0x881b" name="RB_UNKNOWN_881B"/>
2231 <reg32 offset="0x881c" name="RB_UNKNOWN_881C"/>
2232 <reg32 offset="0x881d" name="RB_UNKNOWN_881D"/>
2233 <reg32 offset="0x881e" name="RB_UNKNOWN_881E"/>
2234
2235 <array offset="0x8820" name="RB_MRT" stride="8" length="8">
2236 <reg32 offset="0x0" name="CONTROL">
2237 <bitfield name="BLEND" pos="0" type="boolean"/>
2238 <bitfield name="BLEND2" pos="1" type="boolean"/>
2239 <bitfield name="ROP_ENABLE" pos="2" type="boolean"/>
2240 <bitfield name="ROP_CODE" low="3" high="6" type="a3xx_rop_code"/>
2241 <bitfield name="COMPONENT_ENABLE" low="7" high="10" type="hex"/>
2242 </reg32>
2243 <reg32 offset="0x1" name="BLEND_CONTROL">
2244 <bitfield name="RGB_SRC_FACTOR" low="0" high="4" type="adreno_rb_blend_factor"/>
2245 <bitfield name="RGB_BLEND_OPCODE" low="5" high="7" type="a3xx_rb_blend_opcode"/>
2246 <bitfield name="RGB_DEST_FACTOR" low="8" high="12" type="adreno_rb_blend_factor"/>
2247 <bitfield name="ALPHA_SRC_FACTOR" low="16" high="20" type="adreno_rb_blend_factor"/>
2248 <bitfield name="ALPHA_BLEND_OPCODE" low="21" high="23" type="a3xx_rb_blend_opcode"/>
2249 <bitfield name="ALPHA_DEST_FACTOR" low="24" high="28" type="adreno_rb_blend_factor"/>
2250 </reg32>
2251 <reg32 offset="0x2" name="BUF_INFO">
2252 <bitfield name="COLOR_FORMAT" low="0" high="7" type="a6xx_format"/>
2253 <bitfield name="COLOR_TILE_MODE" low="8" high="9" type="a6xx_tile_mode"/>
2254 <bitfield name="COLOR_SWAP" low="13" high="14" type="a3xx_color_swap"/>
2255 </reg32>
2256 <!--
2257 at least in gmem, things seem to be aligned to pitch of 64..
2258 maybe an artifact of tiled format used in gmem?
2259 -->
2260 <reg32 offset="0x3" name="PITCH" shr="6" type="uint"/>
2261 <reg32 offset="0x4" name="ARRAY_PITCH" shr="6" type="uint"/>
2262 <!--
2263 Compared to a5xx and before, we configure both a GMEM base and
2264 external base. Not sure if this is to facilitate GMEM save/
2265 restore for context switch, or just to simplify state setup to
2266 not have to care about GMEM vs BYPASS mode.
2267 -->
2268 <reg32 offset="0x5" name="BASE_LO"/>
2269 <reg32 offset="0x6" name="BASE_HI"/>
2270
2271 <reg64 offset="0x5" name="BASE" type="waddress"/>
2272
2273 <reg32 offset="0x7" name="BASE_GMEM"/>
2274 </array>
2275
2276 <reg32 offset="0x8860" name="RB_BLEND_RED_F32" type="float"/>
2277 <reg32 offset="0x8861" name="RB_BLEND_GREEN_F32" type="float"/>
2278 <reg32 offset="0x8862" name="RB_BLEND_BLUE_F32" type="float"/>
2279 <reg32 offset="0x8863" name="RB_BLEND_ALPHA_F32" type="float"/>
2280 <reg32 offset="0x8864" name="RB_ALPHA_CONTROL">
2281 <bitfield name="ALPHA_REF" low="0" high="7" type="hex"/>
2282 <bitfield name="ALPHA_TEST" pos="8" type="boolean"/>
2283 <bitfield name="ALPHA_TEST_FUNC" low="9" high="11" type="adreno_compare_func"/>
2284 </reg32>
2285 <reg32 offset="0x8865" name="RB_BLEND_CNTL">
2286 <!-- per-mrt enable bit -->
2287 <bitfield name="ENABLE_BLEND" low="0" high="7"/>
2288 <bitfield name="INDEPENDENT_BLEND" pos="8" type="boolean"/>
2289 <bitfield name="DUAL_COLOR_IN_ENABLE" pos="9" type="boolean"/>
2290 <bitfield name="ALPHA_TO_COVERAGE" pos="10" type="boolean"/>
2291 <bitfield name="ALPHA_TO_ONE" pos="11" type="boolean"/>
2292 <bitfield name="SAMPLE_MASK" low="16" high="31"/>
2293 </reg32>
2294 <reg32 offset="0x8870" name="RB_DEPTH_PLANE_CNTL">
2295 <bitfield name="Z_MODE" low="0" high="1" type="a6xx_ztest_mode"/>
2296 </reg32>
2297
2298 <reg32 offset="0x8871" name="RB_DEPTH_CNTL">
2299 <bitfield name="Z_ENABLE" pos="0" type="boolean"/>
2300 <bitfield name="Z_WRITE_ENABLE" pos="1" type="boolean"/>
2301 <bitfield name="ZFUNC" low="2" high="4" type="adreno_compare_func"/>
2302 <bitfield name="Z_CLAMP_ENABLE" pos="5" type="boolean"/>
2303 <doc>Z_TEST_ENABLE bit is set for zfunc other than GL_ALWAYS or GL_NEVER</doc>
2304 <bitfield name="Z_TEST_ENABLE" pos="6" type="boolean"/>
2305 </reg32>
2306 <!-- duplicates GRAS_SU_DEPTH_BUFFER_INFO: -->
2307 <reg32 offset="0x8872" name="RB_DEPTH_BUFFER_INFO">
2308 <bitfield name="DEPTH_FORMAT" low="0" high="2" type="a6xx_depth_format"/>
2309 </reg32>
2310 <!-- probably: -->
2311 <reg32 offset="0x8873" name="RB_DEPTH_BUFFER_PITCH" shr="6" type="uint">
2312 <doc>stride of depth/stencil buffer</doc>
2313 </reg32>
2314 <reg32 offset="0x8874" name="RB_DEPTH_BUFFER_ARRAY_PITCH" shr="6" type="uint">
2315 <doc>size of layer</doc>
2316 </reg32>
2317 <reg32 offset="0x8875" name="RB_DEPTH_BUFFER_BASE_LO"/>
2318 <reg32 offset="0x8876" name="RB_DEPTH_BUFFER_BASE_HI"/>
2319 <reg64 offset="0x8875" name="RB_DEPTH_BUFFER_BASE" type="waddress"/>
2320 <reg32 offset="0x8877" name="RB_DEPTH_BUFFER_BASE_GMEM"/>
2321
2322 <!-- always 0x0 ? -->
2323 <reg32 offset="0x8878" name="RB_UNKNOWN_8878"/>
2324 <!-- always 0x0 ? -->
2325 <reg32 offset="0x8879" name="RB_UNKNOWN_8879"/>
2326
2327 <reg32 offset="0x8880" name="RB_STENCIL_CONTROL">
2328 <bitfield name="STENCIL_ENABLE" pos="0" type="boolean"/>
2329 <bitfield name="STENCIL_ENABLE_BF" pos="1" type="boolean"/>
2330 <!--
2331 set for stencil operations that require read from stencil
2332 buffer, but not for example for stencil clear (which does
2333 not require read).. so guessing this is analogous to
2334 READ_DEST_ENABLE for color buffer..
2335 -->
2336 <bitfield name="STENCIL_READ" pos="2" type="boolean"/>
2337 <bitfield name="FUNC" low="8" high="10" type="adreno_compare_func"/>
2338 <bitfield name="FAIL" low="11" high="13" type="adreno_stencil_op"/>
2339 <bitfield name="ZPASS" low="14" high="16" type="adreno_stencil_op"/>
2340 <bitfield name="ZFAIL" low="17" high="19" type="adreno_stencil_op"/>
2341 <bitfield name="FUNC_BF" low="20" high="22" type="adreno_compare_func"/>
2342 <bitfield name="FAIL_BF" low="23" high="25" type="adreno_stencil_op"/>
2343 <bitfield name="ZPASS_BF" low="26" high="28" type="adreno_stencil_op"/>
2344 <bitfield name="ZFAIL_BF" low="29" high="31" type="adreno_stencil_op"/>
2345 </reg32>
2346 <reg32 offset="0x8881" name="RB_STENCIL_INFO">
2347 <bitfield name="SEPARATE_STENCIL" pos="0" type="boolean"/>
2348 </reg32>
2349 <reg32 offset="0x8882" name="RB_STENCIL_BUFFER_PITCH" shr="6" type="uint">
2350 <doc>stride of stencil buffer</doc>
2351 </reg32>
2352 <reg32 offset="0x8883" name="RB_STENCIL_BUFFER_ARRAY_PITCH" shr="6" type="uint">
2353 <doc>size of layer</doc>
2354 </reg32>
2355 <reg32 offset="0x8884" name="RB_STENCIL_BUFFER_BASE_LO"/>
2356 <reg32 offset="0x8885" name="RB_STENCIL_BUFFER_BASE_HI"/>
2357 <reg64 offset="0x8884" name="RB_STENCIL_BUFFER_BASE" type="waddress"/>
2358 <reg32 offset="0x8886" name="RB_STENCIL_BUFFER_BASE_GMEM"/>
2359 <reg32 offset="0x8887" name="RB_STENCILREF">
2360 <bitfield name="REF" low="0" high="7"/>
2361 <bitfield name="BFREF" low="8" high="15"/>
2362 </reg32>
2363 <reg32 offset="0x8888" name="RB_STENCILMASK">
2364 <bitfield name="MASK" low="0" high="7"/>
2365 <bitfield name="BFMASK" low="8" high="15"/>
2366 </reg32>
2367 <reg32 offset="0x8889" name="RB_STENCILWRMASK">
2368 <bitfield name="WRMASK" low="0" high="7"/>
2369 <bitfield name="BFWRMASK" low="8" high="15"/>
2370 </reg32>
2371 <reg32 offset="0x8890" name="RB_WINDOW_OFFSET" type="adreno_reg_xy"/>
2372 <reg32 offset="0x8891" name="RB_SAMPLE_COUNT_CONTROL">
2373 <bitfield name="COPY" pos="1" type="boolean"/>
2374 </reg32>
2375
2376 <reg32 offset="0x8898" name="RB_LRZ_CNTL">
2377 <bitfield name="ENABLE" pos="0" type="boolean"/>
2378 </reg32>
2379
2380 <!-- clamps depth value for depth test/write -->
2381 <reg32 offset="0x88c0" name="RB_Z_CLAMP_MIN" type="float"/>
2382 <reg32 offset="0x88c1" name="RB_Z_CLAMP_MAX" type="float"/>
2383
2384 <reg32 offset="0x88d0" name="RB_UNKNOWN_88D0"/>
2385 <reg32 offset="0x88d1" name="RB_BLIT_SCISSOR_TL" type="adreno_reg_xy"/>
2386 <reg32 offset="0x88d2" name="RB_BLIT_SCISSOR_BR" type="adreno_reg_xy"/>
2387
2388 <reg32 offset="0x88d5" name="RB_MSAA_CNTL">
2389 <bitfield name="SAMPLES" low="3" high="4" type="a3xx_msaa_samples"/>
2390 </reg32>
2391 <reg32 offset="0x88d6" name="RB_BLIT_BASE_GMEM"/>
2392 <!-- s/DST_FORMAT/DST_INFO/ probably: -->
2393 <reg32 offset="0x88d7" name="RB_BLIT_DST_INFO">
2394 <bitfield name="TILE_MODE" low="0" high="1" type="a6xx_tile_mode"/>
2395 <bitfield name="FLAGS" pos="2" type="boolean"/>
2396 <bitfield name="SAMPLES" low="3" high="4" type="a3xx_msaa_samples"/>
2397 <bitfield name="COLOR_FORMAT" low="7" high="14" type="a6xx_format"/>
2398 <bitfield name="COLOR_SWAP" low="5" high="6" type="a3xx_color_swap"/>
2399 </reg32>
2400 <reg64 offset="0x88d8" name="RB_BLIT_DST" type="waddress"/>
2401 <reg32 offset="0x88d8" name="RB_BLIT_DST_LO"/>
2402 <reg32 offset="0x88d9" name="RB_BLIT_DST_HI"/>
2403 <reg32 offset="0x88da" name="RB_BLIT_DST_PITCH" shr="6" type="uint"/>
2404 <!-- array-pitch is size of layer -->
2405 <reg32 offset="0x88db" name="RB_BLIT_DST_ARRAY_PITCH" shr="6" type="uint"/>
2406 <reg64 offset="0x88dc" name="RB_BLIT_FLAG_DST" type="waddress"/>
2407 <reg32 offset="0x88dc" name="RB_BLIT_FLAG_DST_LO"/>
2408 <reg32 offset="0x88dd" name="RB_BLIT_FLAG_DST_HI"/>
2409 <reg32 offset="0x88de" name="RB_BLIT_FLAG_DST_PITCH">
2410 <bitfield name="PITCH" low="0" high="10" shr="6" type="uint"/>
2411 <bitfield name="ARRAY_PITCH" low="11" high="21" shr="7" type="uint"/>
2412 </reg32>
2413
2414 <reg32 offset="0x88df" name="RB_BLIT_CLEAR_COLOR_DW0"/>
2415 <reg32 offset="0x88e0" name="RB_BLIT_CLEAR_COLOR_DW1"/>
2416 <reg32 offset="0x88e1" name="RB_BLIT_CLEAR_COLOR_DW2"/>
2417 <reg32 offset="0x88e2" name="RB_BLIT_CLEAR_COLOR_DW3"/>
2418
2419 <!-- seems somewhat similar to what we called RB_CLEAR_CNTL on a5xx: -->
2420 <reg32 offset="0x88e3" name="RB_BLIT_INFO">
2421 <bitfield name="UNK0" pos="0" type="boolean"/> <!-- s8 stencil restore/clear? But also color restore? -->
2422 <bitfield name="GMEM" pos="1" type="boolean"/> <!-- set for restore and clear to gmem? -->
2423 <bitfield name="INTEGER" pos="2" type="boolean"/> <!-- probably -->
2424 <bitfield name="DEPTH" pos="3" type="boolean"/> <!-- z16/z32/z24s8/x24x8 clear or resolve? -->
2425 <doc>
2426 For clearing depth/stencil
2427 1 - depth
2428 2 - stencil
2429 3 - depth+stencil
2430 For clearing color buffer:
2431 then probably a component mask, I always see 0xf
2432 </doc>
2433 <bitfield name="CLEAR_MASK" low="4" high="7"/>
2434 </reg32>
2435
2436 <!-- always 0x0 ? -->
2437 <reg32 offset="0x88f0" name="RB_UNKNOWN_88F0"/>
2438
2439 <reg32 offset="0x8900" name="RB_DEPTH_FLAG_BUFFER_BASE_LO"/>
2440 <reg32 offset="0x8901" name="RB_DEPTH_FLAG_BUFFER_BASE_HI"/>
2441 <reg64 offset="0x8900" name="RB_DEPTH_FLAG_BUFFER_BASE" type="waddress"/>
2442 <reg32 offset="0x8902" name="RB_DEPTH_FLAG_BUFFER_PITCH">
2443 <bitfield name="PITCH" low="0" high="10" shr="6" type="uint"/>
2444 <bitfield name="ARRAY_PITCH" low="11" high="21" shr="7" type="uint"/>
2445 </reg32>
2446 <array offset="0x8903" name="RB_MRT_FLAG_BUFFER" stride="3" length="8">
2447 <reg32 offset="0" name="ADDR_LO"/>
2448 <reg32 offset="1" name="ADDR_HI"/>
2449 <reg64 offset="0" name="ADDR" type="waddress"/>
2450 <reg32 offset="2" name="PITCH">
2451 <bitfield name="PITCH" low="0" high="10" shr="6" type="uint"/>
2452 <bitfield name="ARRAY_PITCH" low="11" high="21" shr="7" type="uint"/> <!-- ??? -->
2453 </reg32>
2454 </array>
2455 <reg32 offset="0x8927" name="RB_SAMPLE_COUNT_ADDR_LO"/>
2456 <reg32 offset="0x8928" name="RB_SAMPLE_COUNT_ADDR_HI"/>
2457
2458 <reg32 offset="0x8c00" name="RB_2D_BLIT_CNTL" type="a6xx_2d_blit_cntl"/>
2459 <reg32 offset="0x8c01" name="RB_UNKNOWN_8C01"/>
2460
2461 <bitset name="a6xx_2d_surf_info" inline="yes">
2462 <bitfield name="COLOR_FORMAT" low="0" high="7" type="a6xx_format"/>
2463 <bitfield name="TILE_MODE" low="8" high="9" type="a6xx_tile_mode"/>
2464 <bitfield name="COLOR_SWAP" low="10" high="11" type="a3xx_color_swap"/>
2465 <bitfield name="FLAGS" pos="12" type="boolean"/>
2466 <bitfield name="SRGB" pos="13" type="boolean"/>
2467 <!-- the rest is only for src -->
2468 <bitfield name="SAMPLES" low="14" high="15" type="a3xx_msaa_samples"/>
2469 <bitfield name="FILTER" pos="16" type="boolean"/>
2470 <bitfield name="SAMPLES_AVERAGE" pos="18" type="boolean"/>
2471 <bitfield name="UNK20" pos="20" type="boolean"/>
2472 <bitfield name="UNK22" pos="22" type="boolean"/>
2473 </bitset>
2474
2475 <reg32 offset="0x8c17" name="RB_2D_DST_INFO" type="a6xx_2d_surf_info"/>
2476 <reg32 offset="0x8c18" name="RB_2D_DST_LO"/>
2477 <reg32 offset="0x8c19" name="RB_2D_DST_HI"/>
2478 <reg64 offset="0x8c18" name="RB_2D_DST" type="waddress"/>
2479 <reg32 offset="0x8c1a" name="RB_2D_DST_SIZE">
2480 <bitfield name="PITCH" low="0" high="15" shr="6" type="uint"/>
2481 </reg32>
2482
2483 <reg32 offset="0x8c20" name="RB_2D_DST_FLAGS_LO"/>
2484 <reg32 offset="0x8c21" name="RB_2D_DST_FLAGS_HI"/>
2485 <reg64 offset="0x8c20" name="RB_2D_DST_FLAGS" type="waddress"/>
2486 <reg32 offset="0x8c22" name="RB_2D_DST_FLAGS_PITCH">
2487 <bitfield name="PITCH" low="0" high="10" shr="6" type="uint"/>
2488 <bitfield name="ARRAY_PITCH" low="11" high="21" shr="7" type="uint"/>
2489 </reg32>
2490
2491 <!-- unlike a5xx, these are per channel values rather than packed -->
2492 <reg32 offset="0x8c2c" name="RB_2D_SRC_SOLID_C0"/>
2493 <reg32 offset="0x8c2d" name="RB_2D_SRC_SOLID_C1"/>
2494 <reg32 offset="0x8c2e" name="RB_2D_SRC_SOLID_C2"/>
2495 <reg32 offset="0x8c2f" name="RB_2D_SRC_SOLID_C3"/>
2496
2497 <!-- always 0x1 ? -->
2498 <reg32 offset="0x8e01" name="RB_UNKNOWN_8E01"/>
2499
2500 <reg32 offset="0x8e04" name="RB_UNKNOWN_8E04"/>
2501
2502 <reg32 offset="0x8e07" name="RB_CCU_CNTL">
2503 <!-- offset into GMEM for something.
2504 important for sysmem path
2505 BLIT_OP_SCALE also writes to GMEM at this offset for GMEM store
2506 blob values for GMEM path (note: close to GMEM size):
2507 a618: 0x7c000 a630/a640: 0xf8000 a650: 0x114000
2508 SYSMEM path values:
2509 a618: 0x10000 a630/a640: 0x20000 a650: 0x30000
2510 -->
2511 <bitfield name="OFFSET" low="23" high="31" shr="12" type="hex"/>
2512 <bitfield name="GMEM" pos="22" type="boolean"/> <!-- set for GMEM path -->
2513 <bitfield name="UNK2" pos="2" type="boolean"/> <!-- sometimes set with GMEM? -->
2514 </reg32>
2515
2516 <reg32 offset="0x9100" name="VPC_UNKNOWN_9100"/>
2517
2518 <!-- always 0x00ffff00 ? */ -->
2519 <reg32 offset="0x9101" name="VPC_UNKNOWN_9101"/>
2520 <reg32 offset="0x9102" name="VPC_UNKNOWN_9102"/>
2521 <reg32 offset="0x9103" name="VPC_UNKNOWN_9103"/>
2522
2523 <reg32 offset="0x9104" name="VPC_GS_SIV_CNTL"/>
2524
2525 <reg32 offset="0x9105" name="VPC_UNKNOWN_9105">
2526 <bitfield name="LAYERLOC" low="0" high="7" type="uint"/>
2527 </reg32>
2528
2529 <reg32 offset="0x9106" name="VPC_UNKNOWN_9106"/>
2530 <reg32 offset="0x9107" name="VPC_UNKNOWN_9107"/>
2531 <reg32 offset="0x9108" name="VPC_UNKNOWN_9108"/>
2532
2533 <array offset="0x9200" name="VPC_VARYING_INTERP" stride="1" length="8">
2534 <reg32 offset="0x0" name="MODE"/>
2535 </array>
2536 <array offset="0x9208" name="VPC_VARYING_PS_REPL" stride="1" length="8">
2537 <reg32 offset="0x0" name="MODE"/>
2538 </array>
2539
2540 <!-- always 0x0 -->
2541 <reg32 offset="0x9210" name="VPC_UNKNOWN_9210"/>
2542 <reg32 offset="0x9211" name="VPC_UNKNOWN_9211"/>
2543
2544 <array offset="0x9212" name="VPC_VAR" stride="1" length="4">
2545 <!-- one bit per varying component: -->
2546 <reg32 offset="0" name="DISABLE"/>
2547 </array>
2548
2549 <reg32 offset="0x9216" name="VPC_SO_CNTL">
2550 <!-- always 0x10000 when SO enabled.. -->
2551 <bitfield name="ENABLE" pos="16" type="boolean"/>
2552 </reg32>
2553 <reg32 offset="0x9217" name="VPC_SO_PROG">
2554 <bitfield name="A_BUF" low="0" high="1" type="uint"/>
2555 <bitfield name="A_OFF" low="2" high="10" shr="2" type="uint"/>
2556 <bitfield name="A_EN" pos="11" type="boolean"/>
2557 <bitfield name="B_BUF" low="12" high="13" type="uint"/>
2558 <bitfield name="B_OFF" low="14" high="22" shr="2" type="uint"/>
2559 <bitfield name="B_EN" pos="23" type="boolean"/>
2560 </reg32>
2561
2562 <reg32 offset="0x9218" name="VPC_SO_STREAM_COUNTS_LO"/>
2563 <reg32 offset="0x9219" name="VPC_SO_STREAM_COUNTS_HI"/>
2564
2565 <array offset="0x921a" name="VPC_SO" stride="7" length="4">
2566 <reg64 offset="0" name="BUFFER_BASE" type="waddress"/>
2567 <reg32 offset="0" name="BUFFER_BASE_LO"/>
2568 <reg32 offset="1" name="BUFFER_BASE_HI"/>
2569 <reg32 offset="2" name="BUFFER_SIZE"/>
2570 <reg32 offset="3" name="NCOMP"/> <!-- component count -->
2571 <reg32 offset="4" name="BUFFER_OFFSET"/>
2572 <reg64 offset="5" name="FLUSH_BASE" type="waddress"/>
2573 <reg32 offset="5" name="FLUSH_BASE_LO"/>
2574 <reg32 offset="6" name="FLUSH_BASE_HI"/>
2575 </array>
2576
2577 <!-- always 0x0 ? -->
2578 <reg32 offset="0x9236" name="VPC_UNKNOWN_9236">
2579 <bitfield name="POINT_COORD_INVERT" pos="0" type="uint"/>
2580 </reg32>
2581
2582 <!-- always 0x0 ? -->
2583 <reg32 offset="0x9300" name="VPC_UNKNOWN_9300"/>
2584
2585 <reg32 offset="0x9301" name="VPC_PACK">
2586 <doc>
2587 num of varyings plus four for gl_Position (plus one if gl_PointSize)
2588 plus # of transform-feedback (streamout) varyings if using the
2589 hw streamout (rather than stg instructions in shader)
2590 </doc>
2591 <bitfield name="STRIDE_IN_VPC" low="0" high="7" type="uint"/>
2592 <bitfield name="POSITIONLOC" low="8" high="15" type="uint"/>
2593 <!--
2594 This seems to be the OUTLOC for the psize output. It could possibly
2595 be the max-OUTLOC position, but it is only set when VS writes psize
2596 (and blob always puts psize at highest OUTLOC)
2597 -->
2598 <bitfield name="PSIZELOC" low="16" high="23" type="uint"/>
2599 </reg32>
2600
2601 <reg32 offset="0x9302" name="VPC_PACK_GS">
2602 <doc>
2603 num of varyings plus four for gl_Position (plus one if gl_PointSize)
2604 plus # of transform-feedback (streamout) varyings if using the
2605 hw streamout (rather than stg instructions in shader)
2606 </doc>
2607 <bitfield name="STRIDE_IN_VPC" low="0" high="7" type="uint"/>
2608 <bitfield name="POSITIONLOC" low="8" high="15" type="uint"/>
2609 <!--
2610 This seems to be the OUTLOC for the psize output. It could possibly
2611 be the max-OUTLOC position, but it is only set when VS writes psize
2612 (and blob always puts psize at highest OUTLOC)
2613 -->
2614 <bitfield name="PSIZELOC" low="16" high="23" type="uint"/>
2615 </reg32>
2616
2617 <reg32 offset="0x9303" name="VPC_PACK_3">
2618 <doc>
2619 domain shader version of VPC_PACK
2620 </doc>
2621 <bitfield name="STRIDE_IN_VPC" low="0" high="7" type="uint"/>
2622 <bitfield name="POSITIONLOC" low="8" high="15" type="uint"/>
2623 <!--
2624 This seems to be the OUTLOC for the psize output. It could possibly
2625 be the max-OUTLOC position, but it is only set when VS writes psize
2626 (and blob always puts psize at highest OUTLOC)
2627 -->
2628 <bitfield name="PSIZELOC" low="16" high="23" type="uint"/>
2629 </reg32>
2630
2631 <reg32 offset="0x9304" name="VPC_CNTL_0">
2632 <bitfield name="NUMNONPOSVAR" low="0" high="7" type="uint"/>
2633 <!-- for fixed-function (i.e. no GS) gl_PrimitiveID in FS -->
2634 <bitfield name="PRIMIDLOC" low="8" high="15" type="uint"/>
2635 <bitfield name="VARYING" pos="16" type="boolean"/>
2636 <bitfield name="UNKLOC" low="24" high="31" type="uint"/>
2637 </reg32>
2638
2639 <reg32 offset="0x9305" name="VPC_SO_BUF_CNTL">
2640 <bitfield name="BUF0" pos="0" type="boolean"/>
2641 <bitfield name="BUF1" pos="3" type="boolean"/>
2642 <bitfield name="BUF2" pos="6" type="boolean"/>
2643 <bitfield name="BUF3" pos="9" type="boolean"/>
2644 <bitfield name="ENABLE" pos="15" type="boolean"/>
2645 </reg32>
2646 <reg32 offset="0x9306" name="VPC_SO_OVERRIDE">
2647 <bitfield name="SO_DISABLE" pos="0" type="boolean"/>
2648 </reg32>
2649
2650 <!-- always 0x0 ? -->
2651 <reg32 offset="0x9600" name="VPC_UNKNOWN_9600"/>
2652 <!-- always 0x0 ? -->
2653 <reg32 offset="0x9602" name="VPC_UNKNOWN_9602"/>
2654
2655 <reg32 offset="0x9800" name="PC_TESS_NUM_VERTEX"/>
2656
2657 <!-- always 0x0 ? -->
2658 <reg32 offset="0x9801" name="PC_UNKNOWN_9801"/>
2659
2660 <enum name="a6xx_tess_spacing">
2661 <value value="0x0" name="TESS_EQUAL"/>
2662 <value value="0x2" name="TESS_FRACTIONAL_ODD"/>
2663 <value value="0x3" name="TESS_FRACTIONAL_EVEN"/>
2664 </enum>
2665
2666 <enum name="a6xx_tess_output">
2667 <value value="0x0" name="TESS_POINTS"/>
2668 <value value="0x1" name="TESS_LINES"/>
2669 <value value="0x2" name="TESS_CW_TRIS"/>
2670 <value value="0x3" name="TESS_CCW_TRIS"/>
2671 </enum>
2672
2673 <reg32 offset="0x9802" name="PC_TESS_CNTL">
2674 <bitfield name="SPACING" low="0" high="1" type="a6xx_tess_spacing"/>
2675 <bitfield name="OUTPUT" low="2" high="3" type="a6xx_tess_output"/>
2676 </reg32>
2677
2678 <!-- probably: -->
2679 <reg32 offset="0x9803" name="PC_RESTART_INDEX"/>
2680 <reg32 offset="0x9804" name="PC_MODE_CNTL"/>
2681
2682 <!-- always 0x1 ? -->
2683 <reg32 offset="0x9805" name="PC_UNKNOWN_9805"/>
2684
2685 <!-- probably a mirror of VFD_CONTROL_6 -->
2686 <reg32 offset="0x9806" name="PC_PRIMID_CNTL">
2687 <bitfield name="PRIMID_PASSTHRU" pos="0" type="boolean"/>
2688 </reg32>
2689
2690 <reg32 offset="0x9980" name="PC_UNKNOWN_9980"/>
2691 <reg32 offset="0x9981" name="PC_UNKNOWN_9981"/>
2692
2693 <reg32 offset="0x9990" name="PC_UNKNOWN_9990"/>
2694
2695 <reg32 offset="0x9b00" name="PC_PRIMITIVE_CNTL_0">
2696 <bitfield name="PRIMITIVE_RESTART" pos="0" type="boolean"/>
2697 <!-- maybe? b1 seems always set, so just assume it is for now: -->
2698 <bitfield name="PROVOKING_VTX_LAST" pos="1" type="boolean"/>
2699 </reg32>
2700 <reg32 offset="0x9b01" name="PC_PRIMITIVE_CNTL_1">
2701 <doc>
2702 vertex shader
2703
2704 num of varyings plus four for gl_Position (plus one if gl_PointSize)
2705 plus # of transform-feedback (streamout) varyings if using the
2706 hw streamout (rather than stg instructions in shader)
2707 </doc>
2708 <bitfield name="STRIDE_IN_VPC" low="0" high="7" type="uint"/>
2709 <bitfield name="PSIZE" pos="8" type="boolean"/>
2710 </reg32>
2711
2712 <reg32 offset="0x9b02" name="PC_PRIMITIVE_CNTL_2">
2713 <doc>
2714 geometry shader
2715 </doc>
2716 <bitfield name="STRIDE_IN_VPC" low="0" high="7" type="uint"/>
2717 <bitfield name="PSIZE" pos="8" type="boolean"/>
2718 <bitfield name="LAYER" pos="9" type="boolean"/>
2719 <bitfield name="PRIMITIVE_ID" pos="11" type="boolean"/>
2720 </reg32>
2721
2722 <reg32 offset="0x9b03" name="PC_PRIMITIVE_CNTL_3">
2723 <doc>
2724 hull shader?
2725
2726 num of varyings plus four for gl_Position (plus one if gl_PointSize)
2727 plus # of transform-feedback (streamout) varyings if using the
2728 hw streamout (rather than stg instructions in shader)
2729 </doc>
2730 <bitfield name="STRIDE_IN_VPC" low="0" high="7" type="uint"/>
2731 <bitfield name="PSIZE" pos="8" type="boolean"/>
2732 </reg32>
2733 <reg32 offset="0x9b04" name="PC_PRIMITIVE_CNTL_4">
2734 <doc>
2735 domain shader
2736 num of varyings plus four for gl_Position (plus one if gl_PointSize)
2737 plus # of transform-feedback (streamout) varyings if using the
2738 hw streamout (rather than stg instructions in shader)
2739 </doc>
2740 <bitfield name="STRIDE_IN_VPC" low="0" high="7" type="uint"/>
2741 <bitfield name="PSIZE" pos="8" type="boolean"/>
2742 </reg32>
2743
2744 <reg32 offset="0x9b05" name="PC_PRIMITIVE_CNTL_5">
2745 <doc>
2746 geometry shader
2747 </doc>
2748 <bitfield name="GS_VERTICES_OUT" low="0" high="7" type="uint"/>
2749 <bitfield name="GS_INVOCATIONS" low="10" high="14" type="uint"/>
2750 <bitfield name="GS_OUTPUT" low="16" high="17" type="a6xx_tess_output"/>
2751 </reg32>
2752
2753 <reg32 offset="0x9b06" name="PC_PRIMITIVE_CNTL_6">
2754 <doc>
2755 size in vec4s of per-primitive storage for gs
2756 </doc>
2757 <bitfield name="STRIDE_IN_VPC" low="0" high="8" type="uint"/>
2758 </reg32>
2759
2760 <reg32 offset="0x9b07" name="PC_UNKNOWN_9B07"/>
2761
2762 <reg32 offset="0x9e08" name="PC_TESSFACTOR_ADDR_LO"/>
2763 <reg32 offset="0x9e09" name="PC_TESSFACTOR_ADDR_HI"/>
2764
2765 <!-- These match the contents of CP_SET_BIN_DATA (not written directly) -->
2766 <reg32 offset="0x9e11" name="PC_VSTREAM_CONTROL">
2767 <bitfield name="VSC_SIZE" low="16" high="21" type="uint"/>
2768 <bitfield name="VSC_N" low="22" high="26" type="uint"/>
2769 </reg32>
2770 <reg32 offset="0x9e12" name="PC_BIN_DATA_ADDR2_LO"/>
2771 <reg32 offset="0x9e13" name="PC_BIN_DATA_ADDR2_HI"/>
2772 <reg32 offset="0x9e14" name="PC_BIN_DATA_ADDR_LO"/>
2773 <reg32 offset="0x9e15" name="PC_BIN_DATA_ADDR_HI"/>
2774
2775 <!-- always 0x0 -->
2776 <reg32 offset="0x9e72" name="PC_UNKNOWN_9E72"/>
2777
2778 <reg32 offset="0xa000" name="VFD_CONTROL_0">
2779 <bitfield name="FETCH_CNT" low="0" high="5" type="uint"/>
2780 <bitfield name="DECODE_CNT" low="8" high="13" type="uint"/>
2781 </reg32>
2782 <reg32 offset="0xa001" name="VFD_CONTROL_1">
2783 <bitfield name="REGID4VTX" low="0" high="7" type="a3xx_regid"/>
2784 <bitfield name="REGID4INST" low="8" high="15" type="a3xx_regid"/>
2785 <bitfield name="REGID4PRIMID" low="16" high="23" type="a3xx_regid"/>
2786 </reg32>
2787 <reg32 offset="0xa002" name="VFD_CONTROL_2">
2788 <bitfield name="REGID_HSPATCHID" low="0" high="7" type="a3xx_regid"/>
2789 <bitfield name="REGID_INVOCATIONID" low="8" high="15" type="a3xx_regid"/>
2790 </reg32>
2791 <reg32 offset="0xa003" name="VFD_CONTROL_3">
2792 <bitfield name="REGID_DSPATCHID" low="8" high="15" type="a3xx_regid"/>
2793 <bitfield name="REGID_TESSX" low="16" high="23" type="a3xx_regid"/>
2794 <bitfield name="REGID_TESSY" low="24" high="31" type="a3xx_regid"/>
2795 </reg32>
2796 <reg32 offset="0xa004" name="VFD_CONTROL_4">
2797 </reg32>
2798 <reg32 offset="0xa005" name="VFD_CONTROL_5">
2799 <bitfield name="REGID_GSHEADER" low="0" high="7" type="a3xx_regid"/>
2800 </reg32>
2801 <reg32 offset="0xa006" name="VFD_CONTROL_6">
2802 <!--
2803 True if gl_PrimitiveID is read via the FS and there is
2804 no matching write from the GS, and therefore it needs to
2805 be passed through via fixed-function logic.
2806 -->
2807 <bitfield name="PRIMID_PASSTHRU" pos="0" type="boolean"/>
2808 </reg32>
2809
2810 <reg32 offset="0xa007" name="VFD_MODE_CNTL">
2811 <bitfield name="BINNING_PASS" pos="0" type="boolean"/>
2812 </reg32>
2813
2814 <!-- always 0x0 ? -->
2815 <reg32 offset="0xa008" name="VFD_UNKNOWN_A008"/>
2816 <reg32 offset="0xa009" name="VFD_ADD_OFFSET">
2817 <!-- add VFD_INDEX_OFFSET to REGID4VTX -->
2818 <bitfield name="VERTEX" pos="0" type="boolean"/>
2819 <!-- add VFD_INSTANCE_START_OFFSET to REGID4INST -->
2820 <bitfield name="INSTANCE" pos="1" type="boolean"/>
2821 </reg32>
2822
2823 <reg32 offset="0xa00e" name="VFD_INDEX_OFFSET"/>
2824 <reg32 offset="0xa00f" name="VFD_INSTANCE_START_OFFSET"/>
2825 <array offset="0xa010" name="VFD_FETCH" stride="4" length="32">
2826 <reg64 offset="0x0" name="BASE" type="address"/>
2827 <reg32 offset="0x0" name="BASE_LO"/>
2828 <reg32 offset="0x1" name="BASE_HI"/>
2829 <reg32 offset="0x2" name="SIZE" type="uint"/>
2830 <reg32 offset="0x3" name="STRIDE" type="uint"/>
2831 </array>
2832 <array offset="0xa090" name="VFD_DECODE" stride="2" length="32">
2833 <reg32 offset="0x0" name="INSTR">
2834 <!-- IDX and byte OFFSET into VFD_FETCH -->
2835 <bitfield name="IDX" low="0" high="4" type="uint"/>
2836 <bitfield name="OFFSET" low="5" high="16"/>
2837 <bitfield name="INSTANCED" pos="17" type="boolean"/>
2838 <bitfield name="FORMAT" low="20" high="27" type="a6xx_format"/>
2839 <bitfield name="SWAP" low="28" high="29" type="a3xx_color_swap"/>
2840 <bitfield name="UNK30" pos="30" type="boolean"/>
2841 <bitfield name="FLOAT" pos="31" type="boolean"/>
2842 </reg32>
2843 <reg32 offset="0x1" name="STEP_RATE"/>
2844 </array>
2845 <array offset="0xa0d0" name="VFD_DEST_CNTL" stride="1" length="32">
2846 <reg32 offset="0x0" name="INSTR">
2847 <bitfield name="WRITEMASK" low="0" high="3" type="hex"/>
2848 <bitfield name="REGID" low="4" high="11" type="a3xx_regid"/>
2849 </reg32>
2850 </array>
2851
2852 <!-- always 0x1 ? -->
2853 <reg32 offset="0xa0f8" name="SP_UNKNOWN_A0F8"/>
2854
2855 <bitset name="a6xx_sp_xs_ctrl_reg0" inline="yes">
2856 <!--
2857 When b31 set we just see FULLREGFOOTPRINT set. The pattern of
2858 used registers is a bit odd too:
2859 - used (half): 0-15 68-179 (cnt=128, max=179)
2860 - used (full): 0-33 50-69 71 73 75 77 79 81 83 85 87 89-105 107 109 111 113 115 117 119 121 123 125 127>
2861 whereas we usually see a (mostly) contiguous range of regs used. But if
2862 I merge the full and half ranges (ie. rN counts as hr(N*2) and hr(N*2+1)),
2863 then:
2864 - used (merged): 0-191 (cnt=192, max=191)
2865 So I think if b31 is set, then the half precision registers overlap
2866 the full precision registers. (Which seems like a pretty sensible
2867 feature, actually I'm not sure when you *wouldn't* want to use that,
2868 since it gives register allocation more flexibility)
2869 -->
2870 <bitfield name="HALFREGFOOTPRINT" low="1" high="6" type="uint"/>
2871 <bitfield name="FULLREGFOOTPRINT" low="7" high="12" type="uint"/>
2872 <!-- seems to be nesting level for flow control:.. -->
2873 <bitfield name="BRANCHSTACK" low="14" high="19" type="uint"/>
2874 <bitfield name="THREADSIZE" pos="20" type="a3xx_threadsize"/>
2875 <bitfield name="VARYING" pos="22" type="boolean"/>
2876 <!-- set when dFdxFine/dFdyFine is used -->
2877 <bitfield name="DIFF_FINE" pos="23" type="boolean"/>
2878 <bitfield name="PIXLODENABLE" pos="26" type="boolean"/>
2879 <bitfield name="MERGEDREGS" pos="31" type="boolean"/>
2880 </bitset>
2881
2882 <bitset name="a6xx_sp_xs_config" inline="yes">
2883 <!--
2884 Each of these are set if the given resource type is used
2885 with the Vulkan/bindless binding model.
2886 -->
2887 <bitfield name="BINDLESS_TEX" pos="0" type="boolean"/>
2888 <bitfield name="BINDLESS_SAMP" pos="1" type="boolean"/>
2889 <bitfield name="BINDLESS_IBO" pos="2" type="boolean"/>
2890 <bitfield name="BINDLESS_UBO" pos="3" type="boolean"/>
2891
2892 <bitfield name="ENABLED" pos="8" type="boolean"/>
2893 <!--
2894 number of textures and samplers.. these might be swapped, with GL I
2895 always see the same value for both.
2896 -->
2897 <bitfield name="NTEX" low="9" high="16" type="uint"/>
2898 <bitfield name="NSAMP" low="17" high="21" type="uint"/>
2899 <bitfield name="NIBO" low="22" high="29" type="uint"/>
2900 </bitset>
2901
2902 <reg32 offset="0xa800" name="SP_VS_CTRL_REG0" type="a6xx_sp_xs_ctrl_reg0"/>
2903 <reg32 offset="0xa801" name="SP_VS_BRANCH_COND" type="hex">
2904 <!--
2905 bitmask of true/false conditions for VS brac.N instructions,
2906 bit N corresponds to brac.N
2907 -->
2908 </reg32>
2909 <reg32 offset="0xa802" name="SP_PRIMITIVE_CNTL">
2910 <!-- # of VS outputs including pos/psize -->
2911 <bitfield name="VSOUT" low="0" high="5" type="uint"/>
2912 </reg32>
2913 <array offset="0xa803" name="SP_VS_OUT" stride="1" length="16">
2914 <reg32 offset="0x0" name="REG">
2915 <bitfield name="A_REGID" low="0" high="7" type="a3xx_regid"/>
2916 <bitfield name="A_COMPMASK" low="8" high="11" type="hex"/>
2917 <bitfield name="B_REGID" low="16" high="23" type="a3xx_regid"/>
2918 <bitfield name="B_COMPMASK" low="24" high="27" type="hex"/>
2919 </reg32>
2920 </array>
2921 <!--
2922 Starting with a5xx, position/psize outputs from shader end up in the
2923 SP_VS_OUT map, with highest OUTLOCn position. (Generally they are
2924 the last entries too, except when gl_PointCoord is used, blob inserts
2925 an extra varying after, but with a lower OUTLOC position. If present,
2926 psize is last, preceded by position.
2927 -->
2928 <array offset="0xa813" name="SP_VS_VPC_DST" stride="1" length="8">
2929 <reg32 offset="0x0" name="REG">
2930 <bitfield name="OUTLOC0" low="0" high="7" type="uint"/>
2931 <bitfield name="OUTLOC1" low="8" high="15" type="uint"/>
2932 <bitfield name="OUTLOC2" low="16" high="23" type="uint"/>
2933 <bitfield name="OUTLOC3" low="24" high="31" type="uint"/>
2934 </reg32>
2935 </array>
2936
2937 <reg32 offset="0xa81b" name="SP_UNKNOWN_A81B"/>
2938 <reg32 offset="0xa81c" name="SP_VS_OBJ_START_LO"/>
2939 <reg32 offset="0xa81d" name="SP_VS_OBJ_START_HI"/>
2940 <reg32 offset="0xa822" name="SP_VS_TEX_COUNT" type="uint"/>
2941 <reg32 offset="0xa823" name="SP_VS_CONFIG" type="a6xx_sp_xs_config"/>
2942 <reg32 offset="0xa824" name="SP_VS_INSTRLEN" type="uint"/>
2943
2944 <reg32 offset="0xa830" name="SP_HS_CTRL_REG0" type="a6xx_sp_xs_ctrl_reg0"/>
2945 <reg32 offset="0xa831" name="SP_HS_UNKNOWN_A831"/>
2946 <reg32 offset="0xa833" name="SP_HS_UNKNOWN_A833"/>
2947 <reg32 offset="0xa834" name="SP_HS_OBJ_START_LO"/>
2948 <reg32 offset="0xa835" name="SP_HS_OBJ_START_HI"/>
2949 <reg32 offset="0xa83a" name="SP_HS_TEX_COUNT" type="uint"/>
2950 <reg32 offset="0xa83b" name="SP_HS_CONFIG" type="a6xx_sp_xs_config"/>
2951 <reg32 offset="0xa83c" name="SP_HS_INSTRLEN" type="uint"/>
2952
2953 <reg32 offset="0xa840" name="SP_DS_CTRL_REG0" type="a6xx_sp_xs_ctrl_reg0"/>
2954 <reg32 offset="0xa842" name="SP_DS_PRIMITIVE_CNTL">
2955 <!-- # of DS outputs including pos/psize -->
2956 <bitfield name="DSOUT" low="0" high="4" type="uint"/>
2957 </reg32>
2958 <array offset="0xa843" name="SP_DS_OUT" stride="1" length="16">
2959 <reg32 offset="0x0" name="REG">
2960 <bitfield name="A_REGID" low="0" high="7" type="a3xx_regid"/>
2961 <bitfield name="A_COMPMASK" low="8" high="11" type="hex"/>
2962 <bitfield name="B_REGID" low="16" high="23" type="a3xx_regid"/>
2963 <bitfield name="B_COMPMASK" low="24" high="27" type="hex"/>
2964 </reg32>
2965 </array>
2966 <array offset="0xa853" name="SP_DS_VPC_DST" stride="1" length="8">
2967 <reg32 offset="0x0" name="REG">
2968 <bitfield name="OUTLOC0" low="0" high="7" type="uint"/>
2969 <bitfield name="OUTLOC1" low="8" high="15" type="uint"/>
2970 <bitfield name="OUTLOC2" low="16" high="23" type="uint"/>
2971 <bitfield name="OUTLOC3" low="24" high="31" type="uint"/>
2972 </reg32>
2973 </array>
2974
2975 <reg32 offset="0xa85b" name="SP_DS_UNKNOWN_A85B"/>
2976 <reg32 offset="0xa85c" name="SP_DS_OBJ_START_LO"/>
2977 <reg32 offset="0xa85d" name="SP_DS_OBJ_START_HI"/>
2978 <reg32 offset="0xa862" name="SP_DS_TEX_COUNT" type="uint"/>
2979 <reg32 offset="0xa863" name="SP_DS_CONFIG" type="a6xx_sp_xs_config"/>
2980 <reg32 offset="0xa864" name="SP_DS_INSTRLEN" type="uint"/>
2981
2982 <reg32 offset="0xa870" name="SP_GS_CTRL_REG0" type="a6xx_sp_xs_ctrl_reg0"/>
2983 <reg32 offset="0xa871" name="SP_GS_PRIM_SIZE">
2984 <!-- size of output of previous stage -->
2985 </reg32>
2986 <reg32 offset="0xa872" name="SP_GS_BRANCH_COND" type="hex">
2987 <!--
2988 bitmask of true/false conditions for FS brac.N instructions,
2989 bit N corresponds to brac.N
2990 -->
2991 </reg32>
2992
2993 <reg32 offset="0xa873" name="SP_PRIMITIVE_CNTL_GS">
2994 <!-- # of VS outputs including pos/psize -->
2995 <bitfield name="GSOUT" low="0" high="5" type="uint"/>
2996 <bitfield name="FLAGS_REGID" low="6" high="13" type="a3xx_regid"/>
2997 </reg32>
2998
2999 <array offset="0xa874" name="SP_GS_OUT" stride="1" length="16">
3000 <reg32 offset="0x0" name="REG">
3001 <bitfield name="A_REGID" low="0" high="7" type="a3xx_regid"/>
3002 <bitfield name="A_COMPMASK" low="8" high="11" type="hex"/>
3003 <bitfield name="B_REGID" low="16" high="23" type="a3xx_regid"/>
3004 <bitfield name="B_COMPMASK" low="24" high="27" type="hex"/>
3005 </reg32>
3006 </array>
3007
3008 <array offset="0xa884" name="SP_GS_VPC_DST" stride="1" length="8">
3009 <reg32 offset="0x0" name="REG">
3010 <bitfield name="OUTLOC0" low="0" high="7" type="uint"/>
3011 <bitfield name="OUTLOC1" low="8" high="15" type="uint"/>
3012 <bitfield name="OUTLOC2" low="16" high="23" type="uint"/>
3013 <bitfield name="OUTLOC3" low="24" high="31" type="uint"/>
3014 </reg32>
3015 </array>
3016
3017 <reg32 offset="0xa88d" name="SP_GS_OBJ_START_LO"/>
3018 <reg32 offset="0xa88e" name="SP_GS_OBJ_START_HI"/>
3019 <reg32 offset="0xa893" name="SP_GS_TEX_COUNT" type="uint"/>
3020 <reg32 offset="0xa894" name="SP_GS_CONFIG" type="a6xx_sp_xs_config"/>
3021 <reg32 offset="0xa895" name="SP_GS_INSTRLEN" type="uint"/>
3022
3023 <reg32 offset="0xa8a0" name="SP_VS_TEX_SAMP_LO"/>
3024 <reg32 offset="0xa8a1" name="SP_VS_TEX_SAMP_HI"/>
3025 <reg32 offset="0xa8a2" name="SP_HS_TEX_SAMP_LO"/>
3026 <reg32 offset="0xa8a3" name="SP_HS_TEX_SAMP_HI"/>
3027 <reg32 offset="0xa8a4" name="SP_DS_TEX_SAMP_LO"/>
3028 <reg32 offset="0xa8a5" name="SP_DS_TEX_SAMP_HI"/>
3029 <reg32 offset="0xa8a6" name="SP_GS_TEX_SAMP_LO"/>
3030 <reg32 offset="0xa8a7" name="SP_GS_TEX_SAMP_HI"/>
3031 <reg32 offset="0xa8a8" name="SP_VS_TEX_CONST_LO"/>
3032 <reg32 offset="0xa8a9" name="SP_VS_TEX_CONST_HI"/>
3033 <reg32 offset="0xa8aa" name="SP_HS_TEX_CONST_LO"/>
3034 <reg32 offset="0xa8ab" name="SP_HS_TEX_CONST_HI"/>
3035 <reg32 offset="0xa8ac" name="SP_DS_TEX_CONST_LO"/>
3036 <reg32 offset="0xa8ad" name="SP_DS_TEX_CONST_HI"/>
3037 <reg32 offset="0xa8ae" name="SP_GS_TEX_CONST_LO"/>
3038 <reg32 offset="0xa8af" name="SP_GS_TEX_CONST_HI"/>
3039
3040 <reg32 offset="0xa980" name="SP_FS_CTRL_REG0" type="a6xx_sp_xs_ctrl_reg0"/>
3041 <reg32 offset="0xa981" name="SP_FS_BRANCH_COND" type="hex">
3042 <!--
3043 bitmask of true/false conditions for FS brac.N instructions,
3044 bit N corresponds to brac.N
3045 -->
3046 </reg32>
3047 <reg32 offset="0xa982" name="SP_UNKNOWN_A982"/>
3048 <reg32 offset="0xa983" name="SP_FS_OBJ_START_LO"/>
3049 <reg32 offset="0xa984" name="SP_FS_OBJ_START_HI"/>
3050
3051 <reg32 offset="0xa989" name="SP_BLEND_CNTL">
3052 <bitfield name="ENABLED" pos="0" type="boolean"/>
3053 <bitfield name="UNK8" pos="8" type="boolean"/>
3054 <bitfield name="DUAL_COLOR_IN_ENABLE" pos="9" type="boolean"/>
3055 <bitfield name="ALPHA_TO_COVERAGE" pos="10" type="boolean"/>
3056 </reg32>
3057 <reg32 offset="0xa98a" name="SP_SRGB_CNTL">
3058 <!-- Same as RB_SRGB_CNTL -->
3059 <bitfield name="SRGB_MRT0" pos="0" type="boolean"/>
3060 <bitfield name="SRGB_MRT1" pos="1" type="boolean"/>
3061 <bitfield name="SRGB_MRT2" pos="2" type="boolean"/>
3062 <bitfield name="SRGB_MRT3" pos="3" type="boolean"/>
3063 <bitfield name="SRGB_MRT4" pos="4" type="boolean"/>
3064 <bitfield name="SRGB_MRT5" pos="5" type="boolean"/>
3065 <bitfield name="SRGB_MRT6" pos="6" type="boolean"/>
3066 <bitfield name="SRGB_MRT7" pos="7" type="boolean"/>
3067 </reg32>
3068 <reg32 offset="0xa98b" name="SP_FS_RENDER_COMPONENTS">
3069 <bitfield name="RT0" low="0" high="3"/>
3070 <bitfield name="RT1" low="4" high="7"/>
3071 <bitfield name="RT2" low="8" high="11"/>
3072 <bitfield name="RT3" low="12" high="15"/>
3073 <bitfield name="RT4" low="16" high="19"/>
3074 <bitfield name="RT5" low="20" high="23"/>
3075 <bitfield name="RT6" low="24" high="27"/>
3076 <bitfield name="RT7" low="28" high="31"/>
3077 </reg32>
3078 <reg32 offset="0xa98c" name="SP_FS_OUTPUT_CNTL0">
3079 <bitfield name="DUAL_COLOR_IN_ENABLE" pos="0" type="boolean"/>
3080 <bitfield name="DEPTH_REGID" low="8" high="15" type="a3xx_regid"/>
3081 <bitfield name="SAMPMASK_REGID" low="16" high="23" type="a3xx_regid"/>
3082 </reg32>
3083 <reg32 offset="0xa98d" name="SP_FS_OUTPUT_CNTL1">
3084 <bitfield name="MRT" low="0" high="3" type="uint"/>
3085 </reg32>
3086
3087 <array offset="0xa996" name="SP_FS_MRT" stride="1" length="8">
3088 <reg32 offset="0" name="REG">
3089 <bitfield name="COLOR_FORMAT" low="0" high="7" type="a6xx_format"/>
3090 <bitfield name="COLOR_SINT" pos="8" type="boolean"/>
3091 <bitfield name="COLOR_UINT" pos="9" type="boolean"/>
3092 </reg32>
3093 </array>
3094
3095 <reg32 offset="0xa99e" name="SP_FS_PREFETCH_CNTL">
3096 <!-- unknown bits 0x7fc0 always set -->
3097 <bitfield name="COUNT" low="0" high="2" type="uint"/>
3098 <!-- b3 set if no other use of varyings in the shader itself.. maybe alternative to dummy bary.f? -->
3099 <bitfield name="UNK3" pos="3" type="boolean"/>
3100 <bitfield name="UNK4" low="4" high="11" type="a3xx_regid"/>
3101 </reg32>
3102 <array offset="0xa99f" name="SP_FS_PREFETCH" stride="1" length="4">
3103 <reg32 offset="0" name="CMD">
3104 <bitfield name="SRC" low="0" high="6" type="uint"/>
3105 <bitfield name="SAMP_ID" low="7" high="10" type="uint"/>
3106 <bitfield name="TEX_ID" low="11" high="15" type="uint"/>
3107 <bitfield name="DST" low="16" high="21" type="a3xx_regid"/>
3108 <bitfield name="WRMASK" low="22" high="25" type="hex"/>
3109 <bitfield name="HALF" pos="26" type="boolean"/>
3110 <!--
3111 CMD seems always 0x4?? 3d, textureProj, textureLod seem to
3112 skip pre-fetch.. TODO test texelFetch
3113 CMD is 0x6 when the Vulkan mode is enabled, and
3114 TEX_ID/SAMP_ID refer to the descriptor sets while the
3115 indices come from SP_FS_BINDLESS_PREFETCH[n]
3116 -->
3117 <bitfield name="CMD" low="27" high="31"/>
3118 </reg32>
3119 </array>
3120
3121 <!-- TODO confirm that this is actually an array -->
3122 <array offset="0xa9a3" name="SP_FS_BINDLESS_PREFETCH" stride="1" length="4">
3123 <reg32 offset="0" name="CMD">
3124 <bitfield name="SAMP_ID" low="0" high="7" type="uint"/>
3125 <bitfield name="TEX_ID" low="16" high="23" type="uint"/>
3126 </reg32>
3127 </array>
3128
3129 <reg32 offset="0xa9a7" name="SP_FS_TEX_COUNT" type="uint"/>
3130
3131 <!-- always 0x0 ? -->
3132 <reg32 offset="0xa9a8" name="SP_UNKNOWN_A9A8"/>
3133
3134 <!-- set for compute shaders, always 0x41 -->
3135 <reg32 offset="0xa9b1" name="SP_CS_UNKNOWN_A9B1" type="uint"/>
3136
3137 <!-- set for compute shaders, always 0x0 -->
3138 <reg32 offset="0xa9b3" name="SP_CS_UNKNOWN_A9B3" type="uint"/>
3139
3140 <reg32 offset="0xa9ba" name="SP_CS_TEX_COUNT" type="uint"/>
3141
3142 <reg32 offset="0xa9e0" name="SP_FS_TEX_SAMP_LO"/>
3143 <reg32 offset="0xa9e1" name="SP_FS_TEX_SAMP_HI"/>
3144 <reg32 offset="0xa9e2" name="SP_CS_TEX_SAMP_LO"/>
3145 <reg32 offset="0xa9e3" name="SP_CS_TEX_SAMP_HI"/>
3146 <reg32 offset="0xa9e4" name="SP_FS_TEX_CONST_LO"/>
3147 <reg32 offset="0xa9e5" name="SP_FS_TEX_CONST_HI"/>
3148 <reg32 offset="0xa9e6" name="SP_CS_TEX_CONST_LO"/>
3149 <reg32 offset="0xa9e7" name="SP_CS_TEX_CONST_HI"/>
3150
3151 <array offset="0xa9e8" name="SP_CS_BINDLESS_BASE" stride="2" length="5">
3152 <reg64 offset="0" name="ADDR" type="waddress"/>
3153 </array>
3154
3155 <array offset="0xa98e" name="SP_FS_OUTPUT" stride="1" length="8">
3156 <doc>per MRT</doc>
3157 <reg32 offset="0x0" name="REG">
3158 <bitfield name="REGID" low="0" high="7" type="a3xx_regid"/>
3159 <bitfield name="HALF_PRECISION" pos="8" type="boolean"/>
3160 </reg32>
3161 </array>
3162
3163 <reg32 offset="0xa9b0" name="SP_CS_CTRL_REG0" type="a6xx_sp_xs_ctrl_reg0"/>
3164 <reg32 offset="0xa9b4" name="SP_CS_OBJ_START_LO"/>
3165 <reg32 offset="0xa9b5" name="SP_CS_OBJ_START_HI"/>
3166 <reg32 offset="0xa9bb" name="SP_CS_CONFIG" type="a6xx_sp_xs_config"/>
3167 <reg32 offset="0xa9bc" name="SP_CS_INSTRLEN" type="uint"/>
3168
3169 <!--
3170 IBO state for compute shader:
3171 -->
3172 <reg32 offset="0xa9f2" name="SP_CS_IBO_LO"/>
3173 <reg32 offset="0xa9f3" name="SP_CS_IBO_HI"/>
3174 <reg32 offset="0xaa00" name="SP_CS_IBO_COUNT" type="uint"/>
3175
3176 <!-- always 0x5 ? -->
3177 <reg32 offset="0xab00" name="SP_UNKNOWN_AB00"/>
3178
3179 <reg32 offset="0xab04" name="SP_FS_CONFIG" type="a6xx_sp_xs_config"/>
3180 <reg32 offset="0xab05" name="SP_FS_INSTRLEN" type="uint"/>
3181
3182 <array offset="0xab10" name="SP_BINDLESS_BASE" stride="2" length="5">
3183 <reg64 offset="0" name="ADDR" type="waddress"/>
3184 </array>
3185
3186 <!--
3187 Combined IBO state for 3d pipe, used for Image and SSBO write/atomic
3188 instructions VS/HS/DS/GS/FS. See SP_CS_IBO_* for compute shaders.
3189 -->
3190 <reg32 offset="0xab1a" name="SP_IBO_LO"/>
3191 <reg32 offset="0xab1b" name="SP_IBO_HI"/>
3192 <reg32 offset="0xab20" name="SP_IBO_COUNT" type="uint"/>
3193
3194 <!--
3195 not really src, COLOR_FORMAT/SRGB seem to be related to ifmt which is for dst
3196 -->
3197 <reg32 offset="0xacc0" name="SP_2D_SRC_FORMAT">
3198 <bitfield name="NORM" pos="0" type="boolean"/>
3199 <bitfield name="SINT" pos="1" type="boolean"/>
3200 <bitfield name="UINT" pos="2" type="boolean"/>
3201 <!-- looks like HW only cares about the base type of this format,
3202 which matches the ifmt? -->
3203 <bitfield name="COLOR_FORMAT" low="3" high="10" type="a6xx_format"/>
3204 <!-- set when ifmt is R2D_UNORM8_SRGB -->
3205 <bitfield name="SRGB" pos="11" type="boolean"/>
3206 <!-- some sort of channel mask, not sure what it is for -->
3207 <bitfield name="MASK" low="12" high="15"/>
3208 </reg32>
3209
3210 <!-- always 0x0 -->
3211 <reg32 offset="0xae00" name="SP_UNKNOWN_AE00"/>
3212
3213 <reg32 offset="0xae03" name="SP_UNKNOWN_AE03"/>
3214 <reg32 offset="0xae04" name="SP_UNKNOWN_AE04"/>
3215
3216 <!-- always 0x3f ? -->
3217 <reg32 offset="0xae0f" name="SP_UNKNOWN_AE0F"/>
3218
3219 <!--
3220 The downstream kernel calls the debug cluster of registers
3221 "a6xx_sp_ps_tp_cluster" but this actually specifies the border
3222 color base for compute shaders.
3223 -->
3224 <reg64 offset="0xb180" name="SP_PS_TP_BORDER_COLOR_BASE_ADDR" type="address"/>
3225 <!-- always 0x0 ? -->
3226 <reg32 offset="0xb182" name="SP_UNKNOWN_B182"/>
3227 <reg32 offset="0xb183" name="SP_UNKNOWN_B183"/>
3228
3229 <!-- could be all the stuff below here is actually TPL1?? -->
3230
3231 <reg32 offset="0xb300" name="SP_TP_RAS_MSAA_CNTL">
3232 <bitfield name="SAMPLES" low="0" high="1" type="a3xx_msaa_samples"/>
3233 </reg32>
3234 <reg32 offset="0xb301" name="SP_TP_DEST_MSAA_CNTL">
3235 <bitfield name="SAMPLES" low="0" high="1" type="a3xx_msaa_samples"/>
3236 <bitfield name="MSAA_DISABLE" pos="2" type="boolean"/>
3237 </reg32>
3238
3239 <!-- looks to work in the same way as a5xx: -->
3240 <reg64 offset="0xb302" name="SP_TP_BORDER_COLOR_BASE_ADDR" type="address"/>
3241 <reg32 offset="0xb302" name="SP_TP_BORDER_COLOR_BASE_ADDR_LO"/>
3242 <reg32 offset="0xb303" name="SP_TP_BORDER_COLOR_BASE_ADDR_HI"/>
3243 <reg32 offset="0xb304" name="SP_TP_SAMPLE_CONFIG" type="a6xx_sample_config"/>
3244 <reg32 offset="0xb305" name="SP_TP_SAMPLE_LOCATION_0" type="a6xx_sample_locations"/>
3245 <reg32 offset="0xb306" name="SP_TP_SAMPLE_LOCATION_1" type="a6xx_sample_locations"/>
3246
3247 <reg32 offset="0xb309" name="SP_TP_UNKNOWN_B309"/>
3248
3249 <!--
3250 Equiv to corresponding RB_2D_SRC_* regs on a5xx.. which were either
3251 badly named or the functionality moved in a6xx. But downstream kernel
3252 calls this "a6xx_sp_ps_tp_2d_cluster"
3253 -->
3254 <reg32 offset="0xb4c0" name="SP_PS_2D_SRC_INFO" type="a6xx_2d_surf_info"/>
3255 <reg32 offset="0xb4c1" name="SP_PS_2D_SRC_SIZE">
3256 <bitfield name="WIDTH" low="0" high="14" type="uint"/>
3257 <bitfield name="HEIGHT" low="15" high="29" type="uint"/>
3258 </reg32>
3259 <reg32 offset="0xb4c2" name="SP_PS_2D_SRC_LO"/>
3260 <reg32 offset="0xb4c3" name="SP_PS_2D_SRC_HI"/>
3261 <reg64 offset="0xb4c2" name="SP_PS_2D_SRC" type="waddress"/>
3262 <reg32 offset="0xb4c4" name="SP_PS_2D_SRC_PITCH">
3263 <bitfield name="PITCH" low="9" high="24" shr="6" type="uint"/>
3264 </reg32>
3265
3266 <reg32 offset="0xb4ca" name="SP_PS_2D_SRC_FLAGS_LO"/>
3267 <reg32 offset="0xb4cb" name="SP_PS_2D_SRC_FLAGS_HI"/>
3268 <reg64 offset="0xb4ca" name="SP_PS_2D_SRC_FLAGS" type="waddress"/>
3269 <reg32 offset="0xb4cc" name="SP_PS_2D_SRC_FLAGS_PITCH">
3270 <bitfield name="PITCH" low="0" high="10" shr="6" type="uint"/>
3271 <bitfield name="ARRAY_PITCH" low="11" high="21" shr="7" type="uint"/>
3272 </reg32>
3273
3274 <!-- always 0x00100000 ? -->
3275 <reg32 offset="0xb600" name="SP_UNKNOWN_B600"/>
3276
3277 <!-- always 0x44 ? -->
3278 <reg32 offset="0xb605" name="SP_UNKNOWN_B605"/>
3279
3280 <bitset name="a6xx_hlsq_xs_cntl" inline="yes">
3281 <bitfield name="CONSTLEN" low="0" high="7" shr="2" type="uint"/>
3282 <bitfield name="ENABLED" pos="8" type="boolean"/>
3283 </bitset>
3284
3285 <reg32 offset="0xb800" name="HLSQ_VS_CNTL" type="a6xx_hlsq_xs_cntl"/>
3286 <reg32 offset="0xb801" name="HLSQ_HS_CNTL" type="a6xx_hlsq_xs_cntl"/>
3287 <reg32 offset="0xb802" name="HLSQ_DS_CNTL" type="a6xx_hlsq_xs_cntl"/>
3288 <reg32 offset="0xb803" name="HLSQ_GS_CNTL" type="a6xx_hlsq_xs_cntl"/>
3289
3290 <reg32 offset="0xb980" name="HLSQ_UNKNOWN_B980"/>
3291
3292 <reg32 offset="0xb982" name="HLSQ_CONTROL_1_REG">
3293 <!-- always 0x7 ? -->
3294 </reg32>
3295 <reg32 offset="0xb983" name="HLSQ_CONTROL_2_REG">
3296 <bitfield name="FACEREGID" low="0" high="7" type="a3xx_regid"/>
3297 <!-- SAMPLEID is loaded into a half-precision register: -->
3298 <bitfield name="SAMPLEID" low="8" high="15" type="a3xx_regid"/>
3299 <bitfield name="SAMPLEMASK" low="16" high="23" type="a3xx_regid"/>
3300 <!--
3301 SIZE is the "size" of the primitive, ie. what the i/j coords need
3302 to be divided by to scale to a single fragment. It is probably
3303 the longer of the two lines that form the tri (ie v0v1 and v0v2)?
3304 -->
3305 <bitfield name="SIZE" low="24" high="31" type="a3xx_regid"/>
3306 </reg32>
3307 <reg32 offset="0xb984" name="HLSQ_CONTROL_3_REG">
3308 <!-- register loaded with position (bary.f) -->
3309 <bitfield name="BARY_IJ_PIXEL" low="0" high="7" type="a3xx_regid"/>
3310 <bitfield name="BARY_IJ_CENTROID" low="16" high="23" type="a3xx_regid"/>
3311 </reg32>
3312 <reg32 offset="0xb985" name="HLSQ_CONTROL_4_REG">
3313 <bitfield name="BARY_IJ_PIXEL_PERSAMP" low="0" high="7" type="a3xx_regid"/>
3314 <bitfield name="XYCOORDREGID" low="16" high="23" type="a3xx_regid"/>
3315 <bitfield name="ZWCOORDREGID" low="24" high="31" type="a3xx_regid"/>
3316 </reg32>
3317 <reg32 offset="0xb986" name="HLSQ_CONTROL_5_REG">
3318 <!-- unknown regid in low 8b -->
3319 </reg32>
3320 <reg32 offset="0xb987" name="HLSQ_CS_CNTL" type="a6xx_hlsq_xs_cntl"/>
3321
3322 <reg32 offset="0xb990" name="HLSQ_CS_NDRANGE_0">
3323 <bitfield name="KERNELDIM" low="0" high="1" type="uint"/>
3324 <!-- localsize is value minus one: -->
3325 <bitfield name="LOCALSIZEX" low="2" high="11" type="uint"/>
3326 <bitfield name="LOCALSIZEY" low="12" high="21" type="uint"/>
3327 <bitfield name="LOCALSIZEZ" low="22" high="31" type="uint"/>
3328 </reg32>
3329 <reg32 offset="0xb991" name="HLSQ_CS_NDRANGE_1">
3330 <bitfield name="GLOBALSIZE_X" low="0" high="31" type="uint"/>
3331 </reg32>
3332 <reg32 offset="0xb992" name="HLSQ_CS_NDRANGE_2">
3333 <bitfield name="GLOBALOFF_X" low="0" high="31" type="uint"/>
3334 </reg32>
3335 <reg32 offset="0xb993" name="HLSQ_CS_NDRANGE_3">
3336 <bitfield name="GLOBALSIZE_Y" low="0" high="31" type="uint"/>
3337 </reg32>
3338 <reg32 offset="0xb994" name="HLSQ_CS_NDRANGE_4">
3339 <bitfield name="GLOBALOFF_Y" low="0" high="31" type="uint"/>
3340 </reg32>
3341 <reg32 offset="0xb995" name="HLSQ_CS_NDRANGE_5">
3342 <bitfield name="GLOBALSIZE_Z" low="0" high="31" type="uint"/>
3343 </reg32>
3344 <reg32 offset="0xb996" name="HLSQ_CS_NDRANGE_6">
3345 <bitfield name="GLOBALOFF_Z" low="0" high="31" type="uint"/>
3346 </reg32>
3347 <reg32 offset="0xb997" name="HLSQ_CS_CNTL_0">
3348 <bitfield name="WGIDCONSTID" low="0" high="7" type="a3xx_regid"/>
3349 <bitfield name="UNK0" low="8" high="15" type="a3xx_regid"/>
3350 <bitfield name="UNK1" low="16" high="23" type="a3xx_regid"/>
3351 <bitfield name="LOCALIDREGID" low="24" high="31" type="a3xx_regid"/>
3352 </reg32>
3353 <reg32 offset="0xb998" name="HLSQ_CS_UNKNOWN_B998"/> <!-- always 0x2fc -->
3354 <reg32 offset="0xb999" name="HLSQ_CS_KERNEL_GROUP_X"/>
3355 <reg32 offset="0xb99a" name="HLSQ_CS_KERNEL_GROUP_Y"/>
3356 <reg32 offset="0xb99b" name="HLSQ_CS_KERNEL_GROUP_Z"/>
3357
3358 <!-- mirror of SP_CS_BINDLESS_BASE -->
3359 <array offset="0xb9c0" name="HLSQ_CS_BINDLESS_BASE" stride="2" length="5">
3360 <reg64 offset="0" name="ADDR" type="waddress"/>
3361 </array>
3362
3363 <!-- probably: -->
3364 <reg32 offset="0xbb08" name="HLSQ_UPDATE_CNTL"/>
3365
3366 <reg32 offset="0xbb10" name="HLSQ_FS_CNTL" type="a6xx_hlsq_xs_cntl"/>
3367
3368 <!-- always 0x0 ? -->
3369 <reg32 offset="0xbb11" name="HLSQ_UNKNOWN_BB11"/>
3370
3371 <!-- mirror of SP_BINDLESS_BASE -->
3372 <array offset="0xbb20" name="HLSQ_BINDLESS_BASE" stride="2" length="5">
3373 <reg64 offset="0" name="ADDR" type="waddress"/>
3374 </array>
3375
3376 <!-- always 0x80 ? -->
3377 <reg32 offset="0xbe00" name="HLSQ_UNKNOWN_BE00"/>
3378 <!-- always 0x0 ? -->
3379 <reg32 offset="0xbe01" name="HLSQ_UNKNOWN_BE01"/>
3380 <!-- always 0x0 ? -->
3381 <reg32 offset="0xbe04" name="HLSQ_UNKNOWN_BE04"/>
3382
3383 </domain>
3384
3385 <!-- Seems basically the same as a5xx, maybe move to common.xml.. -->
3386 <domain name="A6XX_TEX_SAMP" width="32">
3387 <doc>Texture sampler dwords</doc>
3388 <enum name="a6xx_tex_filter"> <!-- same as a4xx? -->
3389 <value name="A6XX_TEX_NEAREST" value="0"/>
3390 <value name="A6XX_TEX_LINEAR" value="1"/>
3391 <value name="A6XX_TEX_ANISO" value="2"/>
3392 <value name="A6XX_TEX_CUBIC" value="3"/> <!-- a650 only -->
3393 </enum>
3394 <enum name="a6xx_tex_clamp"> <!-- same as a4xx? -->
3395 <value name="A6XX_TEX_REPEAT" value="0"/>
3396 <value name="A6XX_TEX_CLAMP_TO_EDGE" value="1"/>
3397 <value name="A6XX_TEX_MIRROR_REPEAT" value="2"/>
3398 <value name="A6XX_TEX_CLAMP_TO_BORDER" value="3"/>
3399 <value name="A6XX_TEX_MIRROR_CLAMP" value="4"/>
3400 </enum>
3401 <enum name="a6xx_tex_aniso"> <!-- same as a4xx? -->
3402 <value name="A6XX_TEX_ANISO_1" value="0"/>
3403 <value name="A6XX_TEX_ANISO_2" value="1"/>
3404 <value name="A6XX_TEX_ANISO_4" value="2"/>
3405 <value name="A6XX_TEX_ANISO_8" value="3"/>
3406 <value name="A6XX_TEX_ANISO_16" value="4"/>
3407 </enum>
3408 <enum name="a6xx_reduction_mode">
3409 <value name="A6XX_REDUCTION_MODE_AVERAGE" value="0"/>
3410 <value name="A6XX_REDUCTION_MODE_MIN" value="1"/>
3411 <value name="A6XX_REDUCTION_MODE_MAX" value="2"/>
3412 </enum>
3413
3414 <reg32 offset="0" name="0">
3415 <bitfield name="MIPFILTER_LINEAR_NEAR" pos="0" type="boolean"/>
3416 <bitfield name="XY_MAG" low="1" high="2" type="a6xx_tex_filter"/>
3417 <bitfield name="XY_MIN" low="3" high="4" type="a6xx_tex_filter"/>
3418 <bitfield name="WRAP_S" low="5" high="7" type="a6xx_tex_clamp"/>
3419 <bitfield name="WRAP_T" low="8" high="10" type="a6xx_tex_clamp"/>
3420 <bitfield name="WRAP_R" low="11" high="13" type="a6xx_tex_clamp"/>
3421 <bitfield name="ANISO" low="14" high="16" type="a6xx_tex_aniso"/>
3422 <bitfield name="LOD_BIAS" low="19" high="31" type="fixed" radix="8"/><!-- no idea how many bits for real -->
3423 </reg32>
3424 <reg32 offset="1" name="1">
3425 <!-- bit 0 always set with vulkan? -->
3426 <bitfield name="UNK0" pos="0" type="boolean"/>
3427 <bitfield name="COMPARE_FUNC" low="1" high="3" type="adreno_compare_func"/>
3428 <bitfield name="CUBEMAPSEAMLESSFILTOFF" pos="4" type="boolean"/>
3429 <bitfield name="UNNORM_COORDS" pos="5" type="boolean"/>
3430 <bitfield name="MIPFILTER_LINEAR_FAR" pos="6" type="boolean"/>
3431 <bitfield name="MAX_LOD" low="8" high="19" type="ufixed" radix="8"/>
3432 <bitfield name="MIN_LOD" low="20" high="31" type="ufixed" radix="8"/>
3433 </reg32>
3434 <reg32 offset="2" name="2">
3435 <bitfield name="REDUCTION_MODE" low="0" high="1" type="a6xx_reduction_mode"/>
3436 <bitfield name="CHROMA_LINEAR" pos="5" type="boolean"/>
3437 <bitfield name="BCOLOR_OFFSET" low="7" high="31" shr="7"/>
3438 </reg32>
3439 <reg32 offset="3" name="3"/>
3440 </domain>
3441
3442 <domain name="A6XX_TEX_CONST" width="32">
3443 <doc>Texture constant dwords</doc>
3444 <enum name="a6xx_tex_swiz"> <!-- same as a4xx? -->
3445 <value name="A6XX_TEX_X" value="0"/>
3446 <value name="A6XX_TEX_Y" value="1"/>
3447 <value name="A6XX_TEX_Z" value="2"/>
3448 <value name="A6XX_TEX_W" value="3"/>
3449 <value name="A6XX_TEX_ZERO" value="4"/>
3450 <value name="A6XX_TEX_ONE" value="5"/>
3451 </enum>
3452 <enum name="a6xx_tex_type"> <!-- same as a4xx? -->
3453 <value name="A6XX_TEX_1D" value="0"/>
3454 <value name="A6XX_TEX_2D" value="1"/>
3455 <value name="A6XX_TEX_CUBE" value="2"/>
3456 <value name="A6XX_TEX_3D" value="3"/>
3457 </enum>
3458 <reg32 offset="0" name="0">
3459 <bitfield name="TILE_MODE" low="0" high="1" type="a6xx_tile_mode"/>
3460 <bitfield name="SRGB" pos="2" type="boolean"/>
3461 <bitfield name="SWIZ_X" low="4" high="6" type="a6xx_tex_swiz"/>
3462 <bitfield name="SWIZ_Y" low="7" high="9" type="a6xx_tex_swiz"/>
3463 <bitfield name="SWIZ_Z" low="10" high="12" type="a6xx_tex_swiz"/>
3464 <bitfield name="SWIZ_W" low="13" high="15" type="a6xx_tex_swiz"/>
3465 <bitfield name="MIPLVLS" low="16" high="19" type="uint"/>
3466 <!-- overlaps with MIPLVLS -->
3467 <bitfield name="CHROMA_MIDPOINT_X" pos="16" type="boolean"/>
3468 <bitfield name="CHROMA_MIDPOINT_Y" pos="18" type="boolean"/>
3469 <bitfield name="SAMPLES" low="20" high="21" type="a3xx_msaa_samples"/>
3470 <bitfield name="FMT" low="22" high="29" type="a6xx_format"/>
3471 <bitfield name="SWAP" low="30" high="31" type="a3xx_color_swap"/>
3472 </reg32>
3473 <reg32 offset="1" name="1">
3474 <bitfield name="WIDTH" low="0" high="14" type="uint"/>
3475 <bitfield name="HEIGHT" low="15" high="29" type="uint"/>
3476 </reg32>
3477 <reg32 offset="2" name="2">
3478 <!--
3479 b4 and b31 set for buffer/ssbo case, in which case low 15 bits
3480 of size encoded in WIDTH, and high 15 bits encoded in HEIGHT
3481
3482 b31 is probably the 'BUFFER' bit.. it is the one that changes
3483 behavior of texture in dEQP-GLES31.functional.texture.texture_buffer.render.as_fragment_texture.buffer_size_131071
3484 -->
3485 <bitfield name="UNK4" pos="4" type="boolean"/>
3486 <!-- minimum pitch (for mipmap levels): log2(pitchalign / 64) -->
3487 <bitfield name="PITCHALIGN" low="0" high="3" type="uint"/>
3488 <doc>Pitch in bytes (so actually stride)</doc>
3489 <bitfield name="PITCH" low="7" high="28" type="uint"/>
3490 <bitfield name="TYPE" low="29" high="30" type="a6xx_tex_type"/>
3491 <bitfield name="UNK31" pos="31" type="boolean"/>
3492 </reg32>
3493 <reg32 offset="3" name="3">
3494 <!--
3495 ARRAY_PITCH is basically LAYERSZ for the first mipmap level, and
3496 for 3d textures (laid out mipmap level first) MIN_LAYERSZ is the
3497 layer size at the point that it stops being reduced moving to
3498 higher (smaller) mipmap levels
3499 -->
3500 <bitfield name="ARRAY_PITCH" low="0" high="13" shr="12" type="uint"/>
3501 <bitfield name="MIN_LAYERSZ" low="23" high="26" shr="12"/>
3502 <!--
3503 by default levels with w < 16 are linear
3504 TILE_ALL makes all levels have tiling
3505 seems required when using UBWC, since all levels have UBWC (can possibly be disabled?)
3506 -->
3507 <bitfield name="TILE_ALL" pos="27" type="boolean"/>
3508 <bitfield name="FLAG" pos="28" type="boolean"/>
3509 </reg32>
3510 <!-- for 2-3 plane format, BASE is flag buffer address (if enabled)
3511 the address of the non-flag base buffer is determined automatically,
3512 and must follow the flag buffer
3513 -->
3514 <reg32 offset="4" name="4">
3515 <bitfield name="BASE_LO" low="5" high="31" shr="5"/>
3516 </reg32>
3517 <reg32 offset="5" name="5">
3518 <bitfield name="BASE_HI" low="0" high="16"/>
3519 <bitfield name="DEPTH" low="17" high="29" type="uint"/>
3520 </reg32>
3521 <reg32 offset="6" name="6">
3522 <!-- pitch for plane 2 / plane 3 -->
3523 <bitfield name="PLANE_PITCH" low="8" high="31" type="uint"/>
3524 </reg32>
3525 <!-- 7/8 is plane 2 address for planar formats -->
3526 <reg32 offset="7" name="7">
3527 <bitfield name="FLAG_LO" low="5" high="31" shr="5"/>
3528 </reg32>
3529 <reg32 offset="8" name="8">
3530 <bitfield name="FLAG_HI" low="0" high="16"/>
3531 </reg32>
3532 <!-- 9/10 is plane 3 address for planar formats -->
3533 <reg32 offset="9" name="9">
3534 <bitfield name="FLAG_BUFFER_ARRAY_PITCH" low="0" high="16" shr="4" type="uint"/>
3535 </reg32>
3536 <reg32 offset="10" name="10">
3537 <bitfield name="FLAG_BUFFER_PITCH" low="0" high="6" shr="6" type="uint"/>
3538 <!-- log2 size of the first level, required for mipmapping -->
3539 <bitfield name="FLAG_BUFFER_LOGW" low="8" high="11" type="uint"/>
3540 <bitfield name="FLAG_BUFFER_LOGH" low="12" high="15" type="uint"/>
3541 </reg32>
3542 <reg32 offset="11" name="11"/>
3543 <reg32 offset="12" name="12"/>
3544 <reg32 offset="13" name="13"/>
3545 <reg32 offset="14" name="14"/>
3546 <reg32 offset="15" name="15"/>
3547 </domain>
3548
3549 <!--
3550 Note the "SSBO" state blocks are actually used for both images and SSBOs,
3551 naming is just because I r/e'd SSBOs first. I should probably come up
3552 with a better name.
3553 -->
3554 <domain name="A6XX_IBO" width="32">
3555 <reg32 offset="0" name="0">
3556 <!--
3557 NOTE: same position as in TEX_CONST state.. I don't see other bits
3558 used but if they are good chance position is same as TEX_CONST
3559 -->
3560 <bitfield name="TILE_MODE" low="0" high="1" type="a6xx_tile_mode"/>
3561 <bitfield name="FMT" low="22" high="29" type="a6xx_format"/>
3562 </reg32>
3563 <reg32 offset="1" name="1">
3564 <bitfield name="WIDTH" low="0" high="14" type="uint"/>
3565 <bitfield name="HEIGHT" low="15" high="29" type="uint"/>
3566 </reg32>
3567 <reg32 offset="2" name="2">
3568 <!--
3569 b4 and b31 set for buffer/ssbo case, in which case low 15 bits
3570 of size encoded in WIDTH, and high 15 bits encoded in HEIGHT
3571 -->
3572 <bitfield name="UNK4" pos="4" type="boolean"/>
3573 <doc>Pitch in bytes (so actually stride)</doc>
3574 <bitfield name="PITCH" low="7" high="28" type="uint"/>
3575 <bitfield name="TYPE" low="29" high="30" type="a6xx_tex_type"/>
3576 <bitfield name="UNK31" pos="31" type="boolean"/>
3577 </reg32>
3578 <reg32 offset="3" name="3">
3579 <!--
3580 ARRAY_PITCH is basically LAYERSZ for the first mipmap level, and
3581 for 3d textures (laid out mipmap level first) MIN_LAYERSZ is the
3582 layer size at the point that it stops being reduced moving to
3583 higher (smaller) mipmap levels
3584 -->
3585 <bitfield name="ARRAY_PITCH" low="0" high="13" shr="12" type="uint"/>
3586 <bitfield name="UNK27" pos="27" type="boolean"/>
3587 <bitfield name="FLAG" pos="28" type="boolean"/>
3588 </reg32>
3589 <reg32 offset="4" name="4">
3590 <bitfield name="BASE_LO" low="0" high="31"/>
3591 </reg32>
3592 <reg32 offset="5" name="5">
3593 <bitfield name="BASE_HI" low="0" high="16"/>
3594 <bitfield name="DEPTH" low="17" high="29" type="uint"/>
3595 </reg32>
3596 <reg32 offset="6" name="6">
3597 </reg32>
3598 <reg32 offset="7" name="7">
3599 </reg32>
3600 <reg32 offset="8" name="8">
3601 </reg32>
3602 <reg32 offset="9" name="9">
3603 <bitfield name="FLAG_BUFFER_ARRAY_PITCH" low="0" high="16" shr="4" type="uint"/>
3604 </reg32>
3605 <reg32 offset="10" name="10">
3606 <!--
3607 I see some other bits set by blob above FLAG_BUFFER_PITCH, but they
3608 don't seem to be particularly sensible... or needed for UBWC to work
3609 -->
3610 <bitfield name="FLAG_BUFFER_PITCH" low="0" high="6" shr="6" type="uint"/>
3611 </reg32>
3612 </domain>
3613
3614 <domain name="A6XX_UBO" width="32">
3615 <reg32 offset="0" name="0">
3616 <bitfield name="BASE_LO" low="0" high="31"/>
3617 </reg32>
3618 <reg32 offset="1" name="1">
3619 <bitfield name="BASE_HI" low="0" high="16"/>
3620 <bitfield name="SIZE" low="17" high="31"/> <!-- size in vec4 (4xDWORD) units -->
3621 </reg32>
3622 </domain>
3623
3624 <domain name="A6XX_PDC" width="32">
3625 <reg32 offset="0x1140" name="GPU_ENABLE_PDC"/>
3626 <reg32 offset="0x1148" name="GPU_SEQ_START_ADDR"/>
3627 <reg32 offset="0x1540" name="GPU_TCS0_CONTROL"/>
3628 <reg32 offset="0x1541" name="GPU_TCS0_CMD_ENABLE_BANK"/>
3629 <reg32 offset="0x1542" name="GPU_TCS0_CMD_WAIT_FOR_CMPL_BANK"/>
3630 <reg32 offset="0x1543" name="GPU_TCS0_CMD0_MSGID"/>
3631 <reg32 offset="0x1544" name="GPU_TCS0_CMD0_ADDR"/>
3632 <reg32 offset="0x1545" name="GPU_TCS0_CMD0_DATA"/>
3633 <reg32 offset="0x1572" name="GPU_TCS1_CONTROL"/>
3634 <reg32 offset="0x1573" name="GPU_TCS1_CMD_ENABLE_BANK"/>
3635 <reg32 offset="0x1574" name="GPU_TCS1_CMD_WAIT_FOR_CMPL_BANK"/>
3636 <reg32 offset="0x1575" name="GPU_TCS1_CMD0_MSGID"/>
3637 <reg32 offset="0x1576" name="GPU_TCS1_CMD0_ADDR"/>
3638 <reg32 offset="0x1577" name="GPU_TCS1_CMD0_DATA"/>
3639 <reg32 offset="0x15A4" name="GPU_TCS2_CONTROL"/>
3640 <reg32 offset="0x15A5" name="GPU_TCS2_CMD_ENABLE_BANK"/>
3641 <reg32 offset="0x15A6" name="GPU_TCS2_CMD_WAIT_FOR_CMPL_BANK"/>
3642 <reg32 offset="0x15A7" name="GPU_TCS2_CMD0_MSGID"/>
3643 <reg32 offset="0x15A8" name="GPU_TCS2_CMD0_ADDR"/>
3644 <reg32 offset="0x15A9" name="GPU_TCS2_CMD0_DATA"/>
3645 <reg32 offset="0x15D6" name="GPU_TCS3_CONTROL"/>
3646 <reg32 offset="0x15D7" name="GPU_TCS3_CMD_ENABLE_BANK"/>
3647 <reg32 offset="0x15D8" name="GPU_TCS3_CMD_WAIT_FOR_CMPL_BANK"/>
3648 <reg32 offset="0x15D9" name="GPU_TCS3_CMD0_MSGID"/>
3649 <reg32 offset="0x15DA" name="GPU_TCS3_CMD0_ADDR"/>
3650 <reg32 offset="0x15DB" name="GPU_TCS3_CMD0_DATA"/>
3651 </domain>
3652
3653 <domain name="A6XX_PDC_GPU_SEQ" width="32">
3654 <reg32 offset="0x0" name="MEM_0"/>
3655 </domain>
3656
3657 <domain name="A6XX_CX_DBGC" width="32">
3658 <reg32 offset="0x0000" name="CFG_DBGBUS_SEL_A">
3659 <bitfield high="7" low="0" name="PING_INDEX"/>
3660 <bitfield high="15" low="8" name="PING_BLK_SEL"/>
3661 </reg32>
3662 <reg32 offset="0x0001" name="CFG_DBGBUS_SEL_B"/>
3663 <reg32 offset="0x0002" name="CFG_DBGBUS_SEL_C"/>
3664 <reg32 offset="0x0003" name="CFG_DBGBUS_SEL_D"/>
3665 <reg32 offset="0x0004" name="CFG_DBGBUS_CNTLT">
3666 <bitfield high="5" low="0" name="TRACEEN"/>
3667 <bitfield high="14" low="12" name="GRANU"/>
3668 <bitfield high="31" low="28" name="SEGT"/>
3669 </reg32>
3670 <reg32 offset="0x0005" name="CFG_DBGBUS_CNTLM">
3671 <bitfield high="27" low="24" name="ENABLE"/>
3672 </reg32>
3673 <reg32 offset="0x0008" name="CFG_DBGBUS_IVTL_0"/>
3674 <reg32 offset="0x0009" name="CFG_DBGBUS_IVTL_1"/>
3675 <reg32 offset="0x000a" name="CFG_DBGBUS_IVTL_2"/>
3676 <reg32 offset="0x000b" name="CFG_DBGBUS_IVTL_3"/>
3677 <reg32 offset="0x000c" name="CFG_DBGBUS_MASKL_0"/>
3678 <reg32 offset="0x000d" name="CFG_DBGBUS_MASKL_1"/>
3679 <reg32 offset="0x000e" name="CFG_DBGBUS_MASKL_2"/>
3680 <reg32 offset="0x000f" name="CFG_DBGBUS_MASKL_3"/>
3681 <reg32 offset="0x0010" name="CFG_DBGBUS_BYTEL_0">
3682 <bitfield high="3" low="0" name="BYTEL0"/>
3683 <bitfield high="7" low="4" name="BYTEL1"/>
3684 <bitfield high="11" low="8" name="BYTEL2"/>
3685 <bitfield high="15" low="12" name="BYTEL3"/>
3686 <bitfield high="19" low="16" name="BYTEL4"/>
3687 <bitfield high="23" low="20" name="BYTEL5"/>
3688 <bitfield high="27" low="24" name="BYTEL6"/>
3689 <bitfield high="31" low="28" name="BYTEL7"/>
3690 </reg32>
3691 <reg32 offset="0x0011" name="CFG_DBGBUS_BYTEL_1">
3692 <bitfield high="3" low="0" name="BYTEL8"/>
3693 <bitfield high="7" low="4" name="BYTEL9"/>
3694 <bitfield high="11" low="8" name="BYTEL10"/>
3695 <bitfield high="15" low="12" name="BYTEL11"/>
3696 <bitfield high="19" low="16" name="BYTEL12"/>
3697 <bitfield high="23" low="20" name="BYTEL13"/>
3698 <bitfield high="27" low="24" name="BYTEL14"/>
3699 <bitfield high="31" low="28" name="BYTEL15"/>
3700 </reg32>
3701
3702 <reg32 offset="0x002f" name="CFG_DBGBUS_TRACE_BUF1"/>
3703 <reg32 offset="0x0030" name="CFG_DBGBUS_TRACE_BUF2"/>
3704 </domain>
3705
3706 <domain name="A6XX_CX_MISC" width="32">
3707 <reg32 offset="0x0001" name="SYSTEM_CACHE_CNTL_0"/>
3708 <reg32 offset="0x0002" name="SYSTEM_CACHE_CNTL_1"/>
3709 </domain>
3710
3711 </database>