1bf215546Sopenharmony_ci<?xml version="1.0" encoding="UTF-8"?>
2bf215546Sopenharmony_ci<database xmlns="http://nouveau.freedesktop.org/"
3bf215546Sopenharmony_cixmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4bf215546Sopenharmony_cixsi:schemaLocation="http://nouveau.freedesktop.org/ rules-ng.xsd">
5bf215546Sopenharmony_ci<import file="freedreno_copyright.xml"/>
6bf215546Sopenharmony_ci<import file="adreno/adreno_common.xml"/>
7bf215546Sopenharmony_ci<import file="adreno/adreno_pm4.xml"/>
8bf215546Sopenharmony_ci
9bf215546Sopenharmony_ci<!-- these might be same as a5xx -->
10bf215546Sopenharmony_ci<enum name="a6xx_tile_mode">
11bf215546Sopenharmony_ci	<value name="TILE6_LINEAR" value="0"/>
12bf215546Sopenharmony_ci	<value name="TILE6_2" value="2"/>
13bf215546Sopenharmony_ci	<value name="TILE6_3" value="3"/>
14bf215546Sopenharmony_ci</enum>
15bf215546Sopenharmony_ci
16bf215546Sopenharmony_ci<enum name="a6xx_format">
17bf215546Sopenharmony_ci	<value value="0x02" name="FMT6_A8_UNORM"/>
18bf215546Sopenharmony_ci	<value value="0x03" name="FMT6_8_UNORM"/>
19bf215546Sopenharmony_ci	<value value="0x04" name="FMT6_8_SNORM"/>
20bf215546Sopenharmony_ci	<value value="0x05" name="FMT6_8_UINT"/>
21bf215546Sopenharmony_ci	<value value="0x06" name="FMT6_8_SINT"/>
22bf215546Sopenharmony_ci
23bf215546Sopenharmony_ci	<value value="0x08" name="FMT6_4_4_4_4_UNORM"/>
24bf215546Sopenharmony_ci	<value value="0x0a" name="FMT6_5_5_5_1_UNORM"/>
25bf215546Sopenharmony_ci	<value value="0x0c" name="FMT6_1_5_5_5_UNORM"/> <!-- read only -->
26bf215546Sopenharmony_ci	<value value="0x0e" name="FMT6_5_6_5_UNORM"/>
27bf215546Sopenharmony_ci
28bf215546Sopenharmony_ci	<value value="0x0f" name="FMT6_8_8_UNORM"/>
29bf215546Sopenharmony_ci	<value value="0x10" name="FMT6_8_8_SNORM"/>
30bf215546Sopenharmony_ci	<value value="0x11" name="FMT6_8_8_UINT"/>
31bf215546Sopenharmony_ci	<value value="0x12" name="FMT6_8_8_SINT"/>
32bf215546Sopenharmony_ci	<value value="0x13" name="FMT6_L8_A8_UNORM"/>
33bf215546Sopenharmony_ci
34bf215546Sopenharmony_ci	<value value="0x15" name="FMT6_16_UNORM"/>
35bf215546Sopenharmony_ci	<value value="0x16" name="FMT6_16_SNORM"/>
36bf215546Sopenharmony_ci	<value value="0x17" name="FMT6_16_FLOAT"/>
37bf215546Sopenharmony_ci	<value value="0x18" name="FMT6_16_UINT"/>
38bf215546Sopenharmony_ci	<value value="0x19" name="FMT6_16_SINT"/>
39bf215546Sopenharmony_ci
40bf215546Sopenharmony_ci	<value value="0x21" name="FMT6_8_8_8_UNORM"/>
41bf215546Sopenharmony_ci	<value value="0x22" name="FMT6_8_8_8_SNORM"/>
42bf215546Sopenharmony_ci	<value value="0x23" name="FMT6_8_8_8_UINT"/>
43bf215546Sopenharmony_ci	<value value="0x24" name="FMT6_8_8_8_SINT"/>
44bf215546Sopenharmony_ci
45bf215546Sopenharmony_ci	<value value="0x30" name="FMT6_8_8_8_8_UNORM"/>
46bf215546Sopenharmony_ci	<value value="0x31" name="FMT6_8_8_8_X8_UNORM"/> <!-- samples 1 for alpha -->
47bf215546Sopenharmony_ci	<value value="0x32" name="FMT6_8_8_8_8_SNORM"/>
48bf215546Sopenharmony_ci	<value value="0x33" name="FMT6_8_8_8_8_UINT"/>
49bf215546Sopenharmony_ci	<value value="0x34" name="FMT6_8_8_8_8_SINT"/>
50bf215546Sopenharmony_ci
51bf215546Sopenharmony_ci	<value value="0x35" name="FMT6_9_9_9_E5_FLOAT"/>
52bf215546Sopenharmony_ci
53bf215546Sopenharmony_ci	<value value="0x36" name="FMT6_10_10_10_2_UNORM"/>
54bf215546Sopenharmony_ci	<value value="0x37" name="FMT6_10_10_10_2_UNORM_DEST"/>
55bf215546Sopenharmony_ci	<value value="0x39" name="FMT6_10_10_10_2_SNORM"/>
56bf215546Sopenharmony_ci	<value value="0x3a" name="FMT6_10_10_10_2_UINT"/>
57bf215546Sopenharmony_ci	<value value="0x3b" name="FMT6_10_10_10_2_SINT"/>
58bf215546Sopenharmony_ci
59bf215546Sopenharmony_ci	<value value="0x42" name="FMT6_11_11_10_FLOAT"/>
60bf215546Sopenharmony_ci
61bf215546Sopenharmony_ci	<value value="0x43" name="FMT6_16_16_UNORM"/>
62bf215546Sopenharmony_ci	<value value="0x44" name="FMT6_16_16_SNORM"/>
63bf215546Sopenharmony_ci	<value value="0x45" name="FMT6_16_16_FLOAT"/>
64bf215546Sopenharmony_ci	<value value="0x46" name="FMT6_16_16_UINT"/>
65bf215546Sopenharmony_ci	<value value="0x47" name="FMT6_16_16_SINT"/>
66bf215546Sopenharmony_ci
67bf215546Sopenharmony_ci	<value value="0x48" name="FMT6_32_UNORM"/>
68bf215546Sopenharmony_ci	<value value="0x49" name="FMT6_32_SNORM"/>
69bf215546Sopenharmony_ci	<value value="0x4a" name="FMT6_32_FLOAT"/>
70bf215546Sopenharmony_ci	<value value="0x4b" name="FMT6_32_UINT"/>
71bf215546Sopenharmony_ci	<value value="0x4c" name="FMT6_32_SINT"/>
72bf215546Sopenharmony_ci	<value value="0x4d" name="FMT6_32_FIXED"/>
73bf215546Sopenharmony_ci
74bf215546Sopenharmony_ci	<value value="0x58" name="FMT6_16_16_16_UNORM"/>
75bf215546Sopenharmony_ci	<value value="0x59" name="FMT6_16_16_16_SNORM"/>
76bf215546Sopenharmony_ci	<value value="0x5a" name="FMT6_16_16_16_FLOAT"/>
77bf215546Sopenharmony_ci	<value value="0x5b" name="FMT6_16_16_16_UINT"/>
78bf215546Sopenharmony_ci	<value value="0x5c" name="FMT6_16_16_16_SINT"/>
79bf215546Sopenharmony_ci
80bf215546Sopenharmony_ci	<value value="0x60" name="FMT6_16_16_16_16_UNORM"/>
81bf215546Sopenharmony_ci	<value value="0x61" name="FMT6_16_16_16_16_SNORM"/>
82bf215546Sopenharmony_ci	<value value="0x62" name="FMT6_16_16_16_16_FLOAT"/>
83bf215546Sopenharmony_ci	<value value="0x63" name="FMT6_16_16_16_16_UINT"/>
84bf215546Sopenharmony_ci	<value value="0x64" name="FMT6_16_16_16_16_SINT"/>
85bf215546Sopenharmony_ci
86bf215546Sopenharmony_ci	<value value="0x65" name="FMT6_32_32_UNORM"/>
87bf215546Sopenharmony_ci	<value value="0x66" name="FMT6_32_32_SNORM"/>
88bf215546Sopenharmony_ci	<value value="0x67" name="FMT6_32_32_FLOAT"/>
89bf215546Sopenharmony_ci	<value value="0x68" name="FMT6_32_32_UINT"/>
90bf215546Sopenharmony_ci	<value value="0x69" name="FMT6_32_32_SINT"/>
91bf215546Sopenharmony_ci	<value value="0x6a" name="FMT6_32_32_FIXED"/>
92bf215546Sopenharmony_ci
93bf215546Sopenharmony_ci	<value value="0x70" name="FMT6_32_32_32_UNORM"/>
94bf215546Sopenharmony_ci	<value value="0x71" name="FMT6_32_32_32_SNORM"/>
95bf215546Sopenharmony_ci	<value value="0x72" name="FMT6_32_32_32_UINT"/>
96bf215546Sopenharmony_ci	<value value="0x73" name="FMT6_32_32_32_SINT"/>
97bf215546Sopenharmony_ci	<value value="0x74" name="FMT6_32_32_32_FLOAT"/>
98bf215546Sopenharmony_ci	<value value="0x75" name="FMT6_32_32_32_FIXED"/>
99bf215546Sopenharmony_ci
100bf215546Sopenharmony_ci	<value value="0x80" name="FMT6_32_32_32_32_UNORM"/>
101bf215546Sopenharmony_ci	<value value="0x81" name="FMT6_32_32_32_32_SNORM"/>
102bf215546Sopenharmony_ci	<value value="0x82" name="FMT6_32_32_32_32_FLOAT"/>
103bf215546Sopenharmony_ci	<value value="0x83" name="FMT6_32_32_32_32_UINT"/>
104bf215546Sopenharmony_ci	<value value="0x84" name="FMT6_32_32_32_32_SINT"/>
105bf215546Sopenharmony_ci	<value value="0x85" name="FMT6_32_32_32_32_FIXED"/>
106bf215546Sopenharmony_ci
107bf215546Sopenharmony_ci	<value value="0x8c" name="FMT6_G8R8B8R8_422_UNORM"/> <!-- UYVY -->
108bf215546Sopenharmony_ci	<value value="0x8d" name="FMT6_R8G8R8B8_422_UNORM"/> <!-- YUYV -->
109bf215546Sopenharmony_ci	<value value="0x8e" name="FMT6_R8_G8B8_2PLANE_420_UNORM"/> <!-- NV12 -->
110bf215546Sopenharmony_ci	<value value="0x8f" name="FMT6_NV21"/>
111bf215546Sopenharmony_ci	<value value="0x90" name="FMT6_R8_G8_B8_3PLANE_420_UNORM"/> <!-- YV12 -->
112bf215546Sopenharmony_ci
113bf215546Sopenharmony_ci	<value value="0x91" name="FMT6_Z24_UNORM_S8_UINT_AS_R8G8B8A8"/>
114bf215546Sopenharmony_ci
115bf215546Sopenharmony_ci	<!-- Note: tiling/UBWC for these may be different from equivalent formats
116bf215546Sopenharmony_ci	For example FMT6_NV12_Y is not compatible with FMT6_8_UNORM
117bf215546Sopenharmony_ci	-->
118bf215546Sopenharmony_ci	<value value="0x94" name="FMT6_NV12_Y"/>
119bf215546Sopenharmony_ci	<value value="0x95" name="FMT6_NV12_UV"/>
120bf215546Sopenharmony_ci	<value value="0x96" name="FMT6_NV12_VU"/>
121bf215546Sopenharmony_ci	<value value="0x97" name="FMT6_NV12_4R"/>
122bf215546Sopenharmony_ci	<value value="0x98" name="FMT6_NV12_4R_Y"/>
123bf215546Sopenharmony_ci	<value value="0x99" name="FMT6_NV12_4R_UV"/>
124bf215546Sopenharmony_ci	<value value="0x9a" name="FMT6_P010"/>
125bf215546Sopenharmony_ci	<value value="0x9b" name="FMT6_P010_Y"/>
126bf215546Sopenharmony_ci	<value value="0x9c" name="FMT6_P010_UV"/>
127bf215546Sopenharmony_ci	<value value="0x9d" name="FMT6_TP10"/>
128bf215546Sopenharmony_ci	<value value="0x9e" name="FMT6_TP10_Y"/>
129bf215546Sopenharmony_ci	<value value="0x9f" name="FMT6_TP10_UV"/>
130bf215546Sopenharmony_ci
131bf215546Sopenharmony_ci	<value value="0xa0" name="FMT6_Z24_UNORM_S8_UINT"/>
132bf215546Sopenharmony_ci
133bf215546Sopenharmony_ci	<value value="0xab" name="FMT6_ETC2_RG11_UNORM"/>
134bf215546Sopenharmony_ci	<value value="0xac" name="FMT6_ETC2_RG11_SNORM"/>
135bf215546Sopenharmony_ci	<value value="0xad" name="FMT6_ETC2_R11_UNORM"/>
136bf215546Sopenharmony_ci	<value value="0xae" name="FMT6_ETC2_R11_SNORM"/>
137bf215546Sopenharmony_ci	<value value="0xaf" name="FMT6_ETC1"/>
138bf215546Sopenharmony_ci	<value value="0xb0" name="FMT6_ETC2_RGB8"/>
139bf215546Sopenharmony_ci	<value value="0xb1" name="FMT6_ETC2_RGBA8"/>
140bf215546Sopenharmony_ci	<value value="0xb2" name="FMT6_ETC2_RGB8A1"/>
141bf215546Sopenharmony_ci	<value value="0xb3" name="FMT6_DXT1"/>
142bf215546Sopenharmony_ci	<value value="0xb4" name="FMT6_DXT3"/>
143bf215546Sopenharmony_ci	<value value="0xb5" name="FMT6_DXT5"/>
144bf215546Sopenharmony_ci	<value value="0xb7" name="FMT6_RGTC1_UNORM"/>
145bf215546Sopenharmony_ci	<value value="0xb8" name="FMT6_RGTC1_SNORM"/>
146bf215546Sopenharmony_ci	<value value="0xbb" name="FMT6_RGTC2_UNORM"/>
147bf215546Sopenharmony_ci	<value value="0xbc" name="FMT6_RGTC2_SNORM"/>
148bf215546Sopenharmony_ci	<value value="0xbe" name="FMT6_BPTC_UFLOAT"/>
149bf215546Sopenharmony_ci	<value value="0xbf" name="FMT6_BPTC_FLOAT"/>
150bf215546Sopenharmony_ci	<value value="0xc0" name="FMT6_BPTC"/>
151bf215546Sopenharmony_ci	<value value="0xc1" name="FMT6_ASTC_4x4"/>
152bf215546Sopenharmony_ci	<value value="0xc2" name="FMT6_ASTC_5x4"/>
153bf215546Sopenharmony_ci	<value value="0xc3" name="FMT6_ASTC_5x5"/>
154bf215546Sopenharmony_ci	<value value="0xc4" name="FMT6_ASTC_6x5"/>
155bf215546Sopenharmony_ci	<value value="0xc5" name="FMT6_ASTC_6x6"/>
156bf215546Sopenharmony_ci	<value value="0xc6" name="FMT6_ASTC_8x5"/>
157bf215546Sopenharmony_ci	<value value="0xc7" name="FMT6_ASTC_8x6"/>
158bf215546Sopenharmony_ci	<value value="0xc8" name="FMT6_ASTC_8x8"/>
159bf215546Sopenharmony_ci	<value value="0xc9" name="FMT6_ASTC_10x5"/>
160bf215546Sopenharmony_ci	<value value="0xca" name="FMT6_ASTC_10x6"/>
161bf215546Sopenharmony_ci	<value value="0xcb" name="FMT6_ASTC_10x8"/>
162bf215546Sopenharmony_ci	<value value="0xcc" name="FMT6_ASTC_10x10"/>
163bf215546Sopenharmony_ci	<value value="0xcd" name="FMT6_ASTC_12x10"/>
164bf215546Sopenharmony_ci	<value value="0xce" name="FMT6_ASTC_12x12"/>
165bf215546Sopenharmony_ci
166bf215546Sopenharmony_ci	<!-- for sampling stencil (integer, 2nd channel), not available on a630 -->
167bf215546Sopenharmony_ci	<value value="0xea" name="FMT6_Z24_UINT_S8_UINT"/>
168bf215546Sopenharmony_ci
169bf215546Sopenharmony_ci	<!-- Not a hw enum, used internally in driver -->
170bf215546Sopenharmony_ci	<value value="0xff" name="FMT6_NONE"/>
171bf215546Sopenharmony_ci
172bf215546Sopenharmony_ci</enum>
173bf215546Sopenharmony_ci
174bf215546Sopenharmony_ci<!-- probably same as a5xx -->
175bf215546Sopenharmony_ci<enum name="a6xx_polygon_mode">
176bf215546Sopenharmony_ci	<value name="POLYMODE6_POINTS" value="1"/>
177bf215546Sopenharmony_ci	<value name="POLYMODE6_LINES" value="2"/>
178bf215546Sopenharmony_ci	<value name="POLYMODE6_TRIANGLES" value="3"/>
179bf215546Sopenharmony_ci</enum>
180bf215546Sopenharmony_ci
181bf215546Sopenharmony_ci<enum name="a6xx_depth_format">
182bf215546Sopenharmony_ci	<value name="DEPTH6_NONE" value="0"/>
183bf215546Sopenharmony_ci	<value name="DEPTH6_16" value="1"/>
184bf215546Sopenharmony_ci	<value name="DEPTH6_24_8" value="2"/>
185bf215546Sopenharmony_ci	<value name="DEPTH6_32" value="4"/>
186bf215546Sopenharmony_ci</enum>
187bf215546Sopenharmony_ci
188bf215546Sopenharmony_ci<bitset name="a6x_cp_protect" inline="yes">
189bf215546Sopenharmony_ci	<bitfield name="BASE_ADDR" low="0" high="17"/>
190bf215546Sopenharmony_ci	<bitfield name="MASK_LEN" low="18" high="30"/>
191bf215546Sopenharmony_ci	<bitfield name="READ" pos="31" type="boolean"/>
192bf215546Sopenharmony_ci</bitset>
193bf215546Sopenharmony_ci
194bf215546Sopenharmony_ci<enum name="a6xx_shader_id">
195bf215546Sopenharmony_ci	<value value="0x9" name="A6XX_TP0_TMO_DATA"/>
196bf215546Sopenharmony_ci	<value value="0xa" name="A6XX_TP0_SMO_DATA"/>
197bf215546Sopenharmony_ci	<value value="0xb" name="A6XX_TP0_MIPMAP_BASE_DATA"/>
198bf215546Sopenharmony_ci	<value value="0x19" name="A6XX_TP1_TMO_DATA"/>
199bf215546Sopenharmony_ci	<value value="0x1a" name="A6XX_TP1_SMO_DATA"/>
200bf215546Sopenharmony_ci	<value value="0x1b" name="A6XX_TP1_MIPMAP_BASE_DATA"/>
201bf215546Sopenharmony_ci	<value value="0x29" name="A6XX_SP_INST_DATA"/>
202bf215546Sopenharmony_ci	<value value="0x2a" name="A6XX_SP_LB_0_DATA"/>
203bf215546Sopenharmony_ci	<value value="0x2b" name="A6XX_SP_LB_1_DATA"/>
204bf215546Sopenharmony_ci	<value value="0x2c" name="A6XX_SP_LB_2_DATA"/>
205bf215546Sopenharmony_ci	<value value="0x2d" name="A6XX_SP_LB_3_DATA"/>
206bf215546Sopenharmony_ci	<value value="0x2e" name="A6XX_SP_LB_4_DATA"/>
207bf215546Sopenharmony_ci	<value value="0x2f" name="A6XX_SP_LB_5_DATA"/>
208bf215546Sopenharmony_ci	<value value="0x30" name="A6XX_SP_CB_BINDLESS_DATA"/>
209bf215546Sopenharmony_ci	<value value="0x31" name="A6XX_SP_CB_LEGACY_DATA"/>
210bf215546Sopenharmony_ci	<value value="0x32" name="A6XX_SP_UAV_DATA"/>
211bf215546Sopenharmony_ci	<value value="0x33" name="A6XX_SP_INST_TAG"/>
212bf215546Sopenharmony_ci	<value value="0x34" name="A6XX_SP_CB_BINDLESS_TAG"/>
213bf215546Sopenharmony_ci	<value value="0x35" name="A6XX_SP_TMO_UMO_TAG"/>
214bf215546Sopenharmony_ci	<value value="0x36" name="A6XX_SP_SMO_TAG"/>
215bf215546Sopenharmony_ci	<value value="0x37" name="A6XX_SP_STATE_DATA"/>
216bf215546Sopenharmony_ci	<value value="0x49" name="A6XX_HLSQ_CHUNK_CVS_RAM"/>
217bf215546Sopenharmony_ci	<value value="0x4a" name="A6XX_HLSQ_CHUNK_CPS_RAM"/>
218bf215546Sopenharmony_ci	<value value="0x4b" name="A6XX_HLSQ_CHUNK_CVS_RAM_TAG"/>
219bf215546Sopenharmony_ci	<value value="0x4c" name="A6XX_HLSQ_CHUNK_CPS_RAM_TAG"/>
220bf215546Sopenharmony_ci	<value value="0x4d" name="A6XX_HLSQ_ICB_CVS_CB_BASE_TAG"/>
221bf215546Sopenharmony_ci	<value value="0x4e" name="A6XX_HLSQ_ICB_CPS_CB_BASE_TAG"/>
222bf215546Sopenharmony_ci	<value value="0x50" name="A6XX_HLSQ_CVS_MISC_RAM"/>
223bf215546Sopenharmony_ci	<value value="0x51" name="A6XX_HLSQ_CPS_MISC_RAM"/>
224bf215546Sopenharmony_ci	<value value="0x52" name="A6XX_HLSQ_INST_RAM"/>
225bf215546Sopenharmony_ci	<value value="0x53" name="A6XX_HLSQ_GFX_CVS_CONST_RAM"/>
226bf215546Sopenharmony_ci	<value value="0x54" name="A6XX_HLSQ_GFX_CPS_CONST_RAM"/>
227bf215546Sopenharmony_ci	<value value="0x55" name="A6XX_HLSQ_CVS_MISC_RAM_TAG"/>
228bf215546Sopenharmony_ci	<value value="0x56" name="A6XX_HLSQ_CPS_MISC_RAM_TAG"/>
229bf215546Sopenharmony_ci	<value value="0x57" name="A6XX_HLSQ_INST_RAM_TAG"/>
230bf215546Sopenharmony_ci	<value value="0x58" name="A6XX_HLSQ_GFX_CVS_CONST_RAM_TAG"/>
231bf215546Sopenharmony_ci	<value value="0x59" name="A6XX_HLSQ_GFX_CPS_CONST_RAM_TAG"/>
232bf215546Sopenharmony_ci	<value value="0x5a" name="A6XX_HLSQ_PWR_REST_RAM"/>
233bf215546Sopenharmony_ci	<value value="0x5b" name="A6XX_HLSQ_PWR_REST_TAG"/>
234bf215546Sopenharmony_ci	<value value="0x60" name="A6XX_HLSQ_DATAPATH_META"/>
235bf215546Sopenharmony_ci	<value value="0x61" name="A6XX_HLSQ_FRONTEND_META"/>
236bf215546Sopenharmony_ci	<value value="0x62" name="A6XX_HLSQ_INDIRECT_META"/>
237bf215546Sopenharmony_ci	<value value="0x63" name="A6XX_HLSQ_BACKEND_META"/>
238bf215546Sopenharmony_ci</enum>
239bf215546Sopenharmony_ci
240bf215546Sopenharmony_ci<enum name="a6xx_debugbus_id">
241bf215546Sopenharmony_ci	<value value="0x1" name="A6XX_DBGBUS_CP"/>
242bf215546Sopenharmony_ci	<value value="0x2" name="A6XX_DBGBUS_RBBM"/>
243bf215546Sopenharmony_ci	<value value="0x3" name="A6XX_DBGBUS_VBIF"/>
244bf215546Sopenharmony_ci	<value value="0x4" name="A6XX_DBGBUS_HLSQ"/>
245bf215546Sopenharmony_ci	<value value="0x5" name="A6XX_DBGBUS_UCHE"/>
246bf215546Sopenharmony_ci	<value value="0x6" name="A6XX_DBGBUS_DPM"/>
247bf215546Sopenharmony_ci	<value value="0x7" name="A6XX_DBGBUS_TESS"/>
248bf215546Sopenharmony_ci	<value value="0x8" name="A6XX_DBGBUS_PC"/>
249bf215546Sopenharmony_ci	<value value="0x9" name="A6XX_DBGBUS_VFDP"/>
250bf215546Sopenharmony_ci	<value value="0xa" name="A6XX_DBGBUS_VPC"/>
251bf215546Sopenharmony_ci	<value value="0xb" name="A6XX_DBGBUS_TSE"/>
252bf215546Sopenharmony_ci	<value value="0xc" name="A6XX_DBGBUS_RAS"/>
253bf215546Sopenharmony_ci	<value value="0xd" name="A6XX_DBGBUS_VSC"/>
254bf215546Sopenharmony_ci	<value value="0xe" name="A6XX_DBGBUS_COM"/>
255bf215546Sopenharmony_ci	<value value="0x10" name="A6XX_DBGBUS_LRZ"/>
256bf215546Sopenharmony_ci	<value value="0x11" name="A6XX_DBGBUS_A2D"/>
257bf215546Sopenharmony_ci	<value value="0x12" name="A6XX_DBGBUS_CCUFCHE"/>
258bf215546Sopenharmony_ci	<value value="0x13" name="A6XX_DBGBUS_GMU_CX"/>
259bf215546Sopenharmony_ci	<value value="0x14" name="A6XX_DBGBUS_RBP"/>
260bf215546Sopenharmony_ci	<value value="0x15" name="A6XX_DBGBUS_DCS"/>
261bf215546Sopenharmony_ci	<value value="0x16" name="A6XX_DBGBUS_DBGC"/>
262bf215546Sopenharmony_ci	<value value="0x17" name="A6XX_DBGBUS_CX"/>
263bf215546Sopenharmony_ci	<value value="0x18" name="A6XX_DBGBUS_GMU_GX"/>
264bf215546Sopenharmony_ci	<value value="0x19" name="A6XX_DBGBUS_TPFCHE"/>
265bf215546Sopenharmony_ci	<value value="0x1a" name="A6XX_DBGBUS_GBIF_GX"/>
266bf215546Sopenharmony_ci	<value value="0x1d" name="A6XX_DBGBUS_GPC"/>
267bf215546Sopenharmony_ci	<value value="0x1e" name="A6XX_DBGBUS_LARC"/>
268bf215546Sopenharmony_ci	<value value="0x1f" name="A6XX_DBGBUS_HLSQ_SPTP"/>
269bf215546Sopenharmony_ci	<value value="0x20" name="A6XX_DBGBUS_RB_0"/>
270bf215546Sopenharmony_ci	<value value="0x21" name="A6XX_DBGBUS_RB_1"/>
271bf215546Sopenharmony_ci	<value value="0x24" name="A6XX_DBGBUS_UCHE_WRAPPER"/>
272bf215546Sopenharmony_ci	<value value="0x28" name="A6XX_DBGBUS_CCU_0"/>
273bf215546Sopenharmony_ci	<value value="0x29" name="A6XX_DBGBUS_CCU_1"/>
274bf215546Sopenharmony_ci	<value value="0x38" name="A6XX_DBGBUS_VFD_0"/>
275bf215546Sopenharmony_ci	<value value="0x39" name="A6XX_DBGBUS_VFD_1"/>
276bf215546Sopenharmony_ci	<value value="0x3a" name="A6XX_DBGBUS_VFD_2"/>
277bf215546Sopenharmony_ci	<value value="0x3b" name="A6XX_DBGBUS_VFD_3"/>
278bf215546Sopenharmony_ci	<value value="0x40" name="A6XX_DBGBUS_SP_0"/>
279bf215546Sopenharmony_ci	<value value="0x41" name="A6XX_DBGBUS_SP_1"/>
280bf215546Sopenharmony_ci	<value value="0x48" name="A6XX_DBGBUS_TPL1_0"/>
281bf215546Sopenharmony_ci	<value value="0x49" name="A6XX_DBGBUS_TPL1_1"/>
282bf215546Sopenharmony_ci	<value value="0x4a" name="A6XX_DBGBUS_TPL1_2"/>
283bf215546Sopenharmony_ci	<value value="0x4b" name="A6XX_DBGBUS_TPL1_3"/>
284bf215546Sopenharmony_ci</enum>
285bf215546Sopenharmony_ci
286bf215546Sopenharmony_ci<enum name="a6xx_cp_perfcounter_select">
287bf215546Sopenharmony_ci	<value value="0" name="PERF_CP_ALWAYS_COUNT"/>
288bf215546Sopenharmony_ci	<value value="1" name="PERF_CP_BUSY_GFX_CORE_IDLE"/>
289bf215546Sopenharmony_ci	<value value="2" name="PERF_CP_BUSY_CYCLES"/>
290bf215546Sopenharmony_ci	<value value="3" name="PERF_CP_NUM_PREEMPTIONS"/>
291bf215546Sopenharmony_ci	<value value="4" name="PERF_CP_PREEMPTION_REACTION_DELAY"/>
292bf215546Sopenharmony_ci	<value value="5" name="PERF_CP_PREEMPTION_SWITCH_OUT_TIME"/>
293bf215546Sopenharmony_ci	<value value="6" name="PERF_CP_PREEMPTION_SWITCH_IN_TIME"/>
294bf215546Sopenharmony_ci	<value value="7" name="PERF_CP_DEAD_DRAWS_IN_BIN_RENDER"/>
295bf215546Sopenharmony_ci	<value value="8" name="PERF_CP_PREDICATED_DRAWS_KILLED"/>
296bf215546Sopenharmony_ci	<value value="9" name="PERF_CP_MODE_SWITCH"/>
297bf215546Sopenharmony_ci	<value value="10" name="PERF_CP_ZPASS_DONE"/>
298bf215546Sopenharmony_ci	<value value="11" name="PERF_CP_CONTEXT_DONE"/>
299bf215546Sopenharmony_ci	<value value="12" name="PERF_CP_CACHE_FLUSH"/>
300bf215546Sopenharmony_ci	<value value="13" name="PERF_CP_LONG_PREEMPTIONS"/>
301bf215546Sopenharmony_ci	<value value="14" name="PERF_CP_SQE_I_CACHE_STARVE"/>
302bf215546Sopenharmony_ci	<value value="15" name="PERF_CP_SQE_IDLE"/>
303bf215546Sopenharmony_ci	<value value="16" name="PERF_CP_SQE_PM4_STARVE_RB_IB"/>
304bf215546Sopenharmony_ci	<value value="17" name="PERF_CP_SQE_PM4_STARVE_SDS"/>
305bf215546Sopenharmony_ci	<value value="18" name="PERF_CP_SQE_MRB_STARVE"/>
306bf215546Sopenharmony_ci	<value value="19" name="PERF_CP_SQE_RRB_STARVE"/>
307bf215546Sopenharmony_ci	<value value="20" name="PERF_CP_SQE_VSD_STARVE"/>
308bf215546Sopenharmony_ci	<value value="21" name="PERF_CP_VSD_DECODE_STARVE"/>
309bf215546Sopenharmony_ci	<value value="22" name="PERF_CP_SQE_PIPE_OUT_STALL"/>
310bf215546Sopenharmony_ci	<value value="23" name="PERF_CP_SQE_SYNC_STALL"/>
311bf215546Sopenharmony_ci	<value value="24" name="PERF_CP_SQE_PM4_WFI_STALL"/>
312bf215546Sopenharmony_ci	<value value="25" name="PERF_CP_SQE_SYS_WFI_STALL"/>
313bf215546Sopenharmony_ci	<value value="26" name="PERF_CP_SQE_T4_EXEC"/>
314bf215546Sopenharmony_ci	<value value="27" name="PERF_CP_SQE_LOAD_STATE_EXEC"/>
315bf215546Sopenharmony_ci	<value value="28" name="PERF_CP_SQE_SAVE_SDS_STATE"/>
316bf215546Sopenharmony_ci	<value value="29" name="PERF_CP_SQE_DRAW_EXEC"/>
317bf215546Sopenharmony_ci	<value value="30" name="PERF_CP_SQE_CTXT_REG_BUNCH_EXEC"/>
318bf215546Sopenharmony_ci	<value value="31" name="PERF_CP_SQE_EXEC_PROFILED"/>
319bf215546Sopenharmony_ci	<value value="32" name="PERF_CP_MEMORY_POOL_EMPTY"/>
320bf215546Sopenharmony_ci	<value value="33" name="PERF_CP_MEMORY_POOL_SYNC_STALL"/>
321bf215546Sopenharmony_ci	<value value="34" name="PERF_CP_MEMORY_POOL_ABOVE_THRESH"/>
322bf215546Sopenharmony_ci	<value value="35" name="PERF_CP_AHB_WR_STALL_PRE_DRAWS"/>
323bf215546Sopenharmony_ci	<value value="36" name="PERF_CP_AHB_STALL_SQE_GMU"/>
324bf215546Sopenharmony_ci	<value value="37" name="PERF_CP_AHB_STALL_SQE_WR_OTHER"/>
325bf215546Sopenharmony_ci	<value value="38" name="PERF_CP_AHB_STALL_SQE_RD_OTHER"/>
326bf215546Sopenharmony_ci	<value value="39" name="PERF_CP_CLUSTER0_EMPTY"/>
327bf215546Sopenharmony_ci	<value value="40" name="PERF_CP_CLUSTER1_EMPTY"/>
328bf215546Sopenharmony_ci	<value value="41" name="PERF_CP_CLUSTER2_EMPTY"/>
329bf215546Sopenharmony_ci	<value value="42" name="PERF_CP_CLUSTER3_EMPTY"/>
330bf215546Sopenharmony_ci	<value value="43" name="PERF_CP_CLUSTER4_EMPTY"/>
331bf215546Sopenharmony_ci	<value value="44" name="PERF_CP_CLUSTER5_EMPTY"/>
332bf215546Sopenharmony_ci	<value value="45" name="PERF_CP_PM4_DATA"/>
333bf215546Sopenharmony_ci	<value value="46" name="PERF_CP_PM4_HEADERS"/>
334bf215546Sopenharmony_ci	<value value="47" name="PERF_CP_VBIF_READ_BEATS"/>
335bf215546Sopenharmony_ci	<value value="48" name="PERF_CP_VBIF_WRITE_BEATS"/>
336bf215546Sopenharmony_ci	<value value="49" name="PERF_CP_SQE_INSTR_COUNTER"/>
337bf215546Sopenharmony_ci</enum>
338bf215546Sopenharmony_ci
339bf215546Sopenharmony_ci<enum name="a6xx_rbbm_perfcounter_select">
340bf215546Sopenharmony_ci	<value value="0" name="PERF_RBBM_ALWAYS_COUNT"/>
341bf215546Sopenharmony_ci	<value value="1" name="PERF_RBBM_ALWAYS_ON"/>
342bf215546Sopenharmony_ci	<value value="2" name="PERF_RBBM_TSE_BUSY"/>
343bf215546Sopenharmony_ci	<value value="3" name="PERF_RBBM_RAS_BUSY"/>
344bf215546Sopenharmony_ci	<value value="4" name="PERF_RBBM_PC_DCALL_BUSY"/>
345bf215546Sopenharmony_ci	<value value="5" name="PERF_RBBM_PC_VSD_BUSY"/>
346bf215546Sopenharmony_ci	<value value="6" name="PERF_RBBM_STATUS_MASKED"/>
347bf215546Sopenharmony_ci	<value value="7" name="PERF_RBBM_COM_BUSY"/>
348bf215546Sopenharmony_ci	<value value="8" name="PERF_RBBM_DCOM_BUSY"/>
349bf215546Sopenharmony_ci	<value value="9" name="PERF_RBBM_VBIF_BUSY"/>
350bf215546Sopenharmony_ci	<value value="10" name="PERF_RBBM_VSC_BUSY"/>
351bf215546Sopenharmony_ci	<value value="11" name="PERF_RBBM_TESS_BUSY"/>
352bf215546Sopenharmony_ci	<value value="12" name="PERF_RBBM_UCHE_BUSY"/>
353bf215546Sopenharmony_ci	<value value="13" name="PERF_RBBM_HLSQ_BUSY"/>
354bf215546Sopenharmony_ci</enum>
355bf215546Sopenharmony_ci
356bf215546Sopenharmony_ci<enum name="a6xx_pc_perfcounter_select">
357bf215546Sopenharmony_ci	<value value="0" name="PERF_PC_BUSY_CYCLES"/>
358bf215546Sopenharmony_ci	<value value="1" name="PERF_PC_WORKING_CYCLES"/>
359bf215546Sopenharmony_ci	<value value="2" name="PERF_PC_STALL_CYCLES_VFD"/>
360bf215546Sopenharmony_ci	<value value="3" name="PERF_PC_STALL_CYCLES_TSE"/>
361bf215546Sopenharmony_ci	<value value="4" name="PERF_PC_STALL_CYCLES_VPC"/>
362bf215546Sopenharmony_ci	<value value="5" name="PERF_PC_STALL_CYCLES_UCHE"/>
363bf215546Sopenharmony_ci	<value value="6" name="PERF_PC_STALL_CYCLES_TESS"/>
364bf215546Sopenharmony_ci	<value value="7" name="PERF_PC_STALL_CYCLES_TSE_ONLY"/>
365bf215546Sopenharmony_ci	<value value="8" name="PERF_PC_STALL_CYCLES_VPC_ONLY"/>
366bf215546Sopenharmony_ci	<value value="9" name="PERF_PC_PASS1_TF_STALL_CYCLES"/>
367bf215546Sopenharmony_ci	<value value="10" name="PERF_PC_STARVE_CYCLES_FOR_INDEX"/>
368bf215546Sopenharmony_ci	<value value="11" name="PERF_PC_STARVE_CYCLES_FOR_TESS_FACTOR"/>
369bf215546Sopenharmony_ci	<value value="12" name="PERF_PC_STARVE_CYCLES_FOR_VIZ_STREAM"/>
370bf215546Sopenharmony_ci	<value value="13" name="PERF_PC_STARVE_CYCLES_FOR_POSITION"/>
371bf215546Sopenharmony_ci	<value value="14" name="PERF_PC_STARVE_CYCLES_DI"/>
372bf215546Sopenharmony_ci	<value value="15" name="PERF_PC_VIS_STREAMS_LOADED"/>
373bf215546Sopenharmony_ci	<value value="16" name="PERF_PC_INSTANCES"/>
374bf215546Sopenharmony_ci	<value value="17" name="PERF_PC_VPC_PRIMITIVES"/>
375bf215546Sopenharmony_ci	<value value="18" name="PERF_PC_DEAD_PRIM"/>
376bf215546Sopenharmony_ci	<value value="19" name="PERF_PC_LIVE_PRIM"/>
377bf215546Sopenharmony_ci	<value value="20" name="PERF_PC_VERTEX_HITS"/>
378bf215546Sopenharmony_ci	<value value="21" name="PERF_PC_IA_VERTICES"/>
379bf215546Sopenharmony_ci	<value value="22" name="PERF_PC_IA_PRIMITIVES"/>
380bf215546Sopenharmony_ci	<value value="23" name="PERF_PC_GS_PRIMITIVES"/>
381bf215546Sopenharmony_ci	<value value="24" name="PERF_PC_HS_INVOCATIONS"/>
382bf215546Sopenharmony_ci	<value value="25" name="PERF_PC_DS_INVOCATIONS"/>
383bf215546Sopenharmony_ci	<value value="26" name="PERF_PC_VS_INVOCATIONS"/>
384bf215546Sopenharmony_ci	<value value="27" name="PERF_PC_GS_INVOCATIONS"/>
385bf215546Sopenharmony_ci	<value value="28" name="PERF_PC_DS_PRIMITIVES"/>
386bf215546Sopenharmony_ci	<value value="29" name="PERF_PC_VPC_POS_DATA_TRANSACTION"/>
387bf215546Sopenharmony_ci	<value value="30" name="PERF_PC_3D_DRAWCALLS"/>
388bf215546Sopenharmony_ci	<value value="31" name="PERF_PC_2D_DRAWCALLS"/>
389bf215546Sopenharmony_ci	<value value="32" name="PERF_PC_NON_DRAWCALL_GLOBAL_EVENTS"/>
390bf215546Sopenharmony_ci	<value value="33" name="PERF_TESS_BUSY_CYCLES"/>
391bf215546Sopenharmony_ci	<value value="34" name="PERF_TESS_WORKING_CYCLES"/>
392bf215546Sopenharmony_ci	<value value="35" name="PERF_TESS_STALL_CYCLES_PC"/>
393bf215546Sopenharmony_ci	<value value="36" name="PERF_TESS_STARVE_CYCLES_PC"/>
394bf215546Sopenharmony_ci	<value value="37" name="PERF_PC_TSE_TRANSACTION"/>
395bf215546Sopenharmony_ci	<value value="38" name="PERF_PC_TSE_VERTEX"/>
396bf215546Sopenharmony_ci	<value value="39" name="PERF_PC_TESS_PC_UV_TRANS"/>
397bf215546Sopenharmony_ci	<value value="40" name="PERF_PC_TESS_PC_UV_PATCHES"/>
398bf215546Sopenharmony_ci	<value value="41" name="PERF_PC_TESS_FACTOR_TRANS"/>
399bf215546Sopenharmony_ci</enum>
400bf215546Sopenharmony_ci
401bf215546Sopenharmony_ci<enum name="a6xx_vfd_perfcounter_select">
402bf215546Sopenharmony_ci	<value value="0" name="PERF_VFD_BUSY_CYCLES"/>
403bf215546Sopenharmony_ci	<value value="1" name="PERF_VFD_STALL_CYCLES_UCHE"/>
404bf215546Sopenharmony_ci	<value value="2" name="PERF_VFD_STALL_CYCLES_VPC_ALLOC"/>
405bf215546Sopenharmony_ci	<value value="3" name="PERF_VFD_STALL_CYCLES_SP_INFO"/>
406bf215546Sopenharmony_ci	<value value="4" name="PERF_VFD_STALL_CYCLES_SP_ATTR"/>
407bf215546Sopenharmony_ci	<value value="5" name="PERF_VFD_STARVE_CYCLES_UCHE"/>
408bf215546Sopenharmony_ci	<value value="6" name="PERF_VFD_RBUFFER_FULL"/>
409bf215546Sopenharmony_ci	<value value="7" name="PERF_VFD_ATTR_INFO_FIFO_FULL"/>
410bf215546Sopenharmony_ci	<value value="8" name="PERF_VFD_DECODED_ATTRIBUTE_BYTES"/>
411bf215546Sopenharmony_ci	<value value="9" name="PERF_VFD_NUM_ATTRIBUTES"/>
412bf215546Sopenharmony_ci	<value value="10" name="PERF_VFD_UPPER_SHADER_FIBERS"/>
413bf215546Sopenharmony_ci	<value value="11" name="PERF_VFD_LOWER_SHADER_FIBERS"/>
414bf215546Sopenharmony_ci	<value value="12" name="PERF_VFD_MODE_0_FIBERS"/>
415bf215546Sopenharmony_ci	<value value="13" name="PERF_VFD_MODE_1_FIBERS"/>
416bf215546Sopenharmony_ci	<value value="14" name="PERF_VFD_MODE_2_FIBERS"/>
417bf215546Sopenharmony_ci	<value value="15" name="PERF_VFD_MODE_3_FIBERS"/>
418bf215546Sopenharmony_ci	<value value="16" name="PERF_VFD_MODE_4_FIBERS"/>
419bf215546Sopenharmony_ci	<value value="17" name="PERF_VFD_TOTAL_VERTICES"/>
420bf215546Sopenharmony_ci	<value value="18" name="PERF_VFDP_STALL_CYCLES_VFD"/>
421bf215546Sopenharmony_ci	<value value="19" name="PERF_VFDP_STALL_CYCLES_VFD_INDEX"/>
422bf215546Sopenharmony_ci	<value value="20" name="PERF_VFDP_STALL_CYCLES_VFD_PROG"/>
423bf215546Sopenharmony_ci	<value value="21" name="PERF_VFDP_STARVE_CYCLES_PC"/>
424bf215546Sopenharmony_ci	<value value="22" name="PERF_VFDP_VS_STAGE_WAVES"/>
425bf215546Sopenharmony_ci</enum>
426bf215546Sopenharmony_ci
427bf215546Sopenharmony_ci<enum name="a6xx_hlsq_perfcounter_select">
428bf215546Sopenharmony_ci	<value value="0" name="PERF_HLSQ_BUSY_CYCLES"/>
429bf215546Sopenharmony_ci	<value value="1" name="PERF_HLSQ_STALL_CYCLES_UCHE"/>
430bf215546Sopenharmony_ci	<value value="2" name="PERF_HLSQ_STALL_CYCLES_SP_STATE"/>
431bf215546Sopenharmony_ci	<value value="3" name="PERF_HLSQ_STALL_CYCLES_SP_FS_STAGE"/>
432bf215546Sopenharmony_ci	<value value="4" name="PERF_HLSQ_UCHE_LATENCY_CYCLES"/>
433bf215546Sopenharmony_ci	<value value="5" name="PERF_HLSQ_UCHE_LATENCY_COUNT"/>
434bf215546Sopenharmony_ci	<value value="6" name="PERF_HLSQ_FS_STAGE_1X_WAVES"/>
435bf215546Sopenharmony_ci	<value value="7" name="PERF_HLSQ_FS_STAGE_2X_WAVES"/>
436bf215546Sopenharmony_ci	<value value="8" name="PERF_HLSQ_QUADS"/>
437bf215546Sopenharmony_ci	<value value="9" name="PERF_HLSQ_CS_INVOCATIONS"/>
438bf215546Sopenharmony_ci	<value value="10" name="PERF_HLSQ_COMPUTE_DRAWCALLS"/>
439bf215546Sopenharmony_ci	<value value="11" name="PERF_HLSQ_FS_DATA_WAIT_PROGRAMMING"/>
440bf215546Sopenharmony_ci	<value value="12" name="PERF_HLSQ_DUAL_FS_PROG_ACTIVE"/>
441bf215546Sopenharmony_ci	<value value="13" name="PERF_HLSQ_DUAL_VS_PROG_ACTIVE"/>
442bf215546Sopenharmony_ci	<value value="14" name="PERF_HLSQ_FS_BATCH_COUNT_ZERO"/>
443bf215546Sopenharmony_ci	<value value="15" name="PERF_HLSQ_VS_BATCH_COUNT_ZERO"/>
444bf215546Sopenharmony_ci	<value value="16" name="PERF_HLSQ_WAVE_PENDING_NO_QUAD"/>
445bf215546Sopenharmony_ci	<value value="17" name="PERF_HLSQ_WAVE_PENDING_NO_PRIM_BASE"/>
446bf215546Sopenharmony_ci	<value value="18" name="PERF_HLSQ_STALL_CYCLES_VPC"/>
447bf215546Sopenharmony_ci	<value value="19" name="PERF_HLSQ_PIXELS"/>
448bf215546Sopenharmony_ci	<value value="20" name="PERF_HLSQ_DRAW_MODE_SWITCH_VSFS_SYNC"/>
449bf215546Sopenharmony_ci</enum>
450bf215546Sopenharmony_ci
451bf215546Sopenharmony_ci<enum name="a6xx_vpc_perfcounter_select">
452bf215546Sopenharmony_ci	<value value="0" name="PERF_VPC_BUSY_CYCLES"/>
453bf215546Sopenharmony_ci	<value value="1" name="PERF_VPC_WORKING_CYCLES"/>
454bf215546Sopenharmony_ci	<value value="2" name="PERF_VPC_STALL_CYCLES_UCHE"/>
455bf215546Sopenharmony_ci	<value value="3" name="PERF_VPC_STALL_CYCLES_VFD_WACK"/>
456bf215546Sopenharmony_ci	<value value="4" name="PERF_VPC_STALL_CYCLES_HLSQ_PRIM_ALLOC"/>
457bf215546Sopenharmony_ci	<value value="5" name="PERF_VPC_STALL_CYCLES_PC"/>
458bf215546Sopenharmony_ci	<value value="6" name="PERF_VPC_STALL_CYCLES_SP_LM"/>
459bf215546Sopenharmony_ci	<value value="7" name="PERF_VPC_STARVE_CYCLES_SP"/>
460bf215546Sopenharmony_ci	<value value="8" name="PERF_VPC_STARVE_CYCLES_LRZ"/>
461bf215546Sopenharmony_ci	<value value="9" name="PERF_VPC_PC_PRIMITIVES"/>
462bf215546Sopenharmony_ci	<value value="10" name="PERF_VPC_SP_COMPONENTS"/>
463bf215546Sopenharmony_ci	<value value="11" name="PERF_VPC_STALL_CYCLES_VPCRAM_POS"/>
464bf215546Sopenharmony_ci	<value value="12" name="PERF_VPC_LRZ_ASSIGN_PRIMITIVES"/>
465bf215546Sopenharmony_ci	<value value="13" name="PERF_VPC_RB_VISIBLE_PRIMITIVES"/>
466bf215546Sopenharmony_ci	<value value="14" name="PERF_VPC_LM_TRANSACTION"/>
467bf215546Sopenharmony_ci	<value value="15" name="PERF_VPC_STREAMOUT_TRANSACTION"/>
468bf215546Sopenharmony_ci	<value value="16" name="PERF_VPC_VS_BUSY_CYCLES"/>
469bf215546Sopenharmony_ci	<value value="17" name="PERF_VPC_PS_BUSY_CYCLES"/>
470bf215546Sopenharmony_ci	<value value="18" name="PERF_VPC_VS_WORKING_CYCLES"/>
471bf215546Sopenharmony_ci	<value value="19" name="PERF_VPC_PS_WORKING_CYCLES"/>
472bf215546Sopenharmony_ci	<value value="20" name="PERF_VPC_STARVE_CYCLES_RB"/>
473bf215546Sopenharmony_ci	<value value="21" name="PERF_VPC_NUM_VPCRAM_READ_POS"/>
474bf215546Sopenharmony_ci	<value value="22" name="PERF_VPC_WIT_FULL_CYCLES"/>
475bf215546Sopenharmony_ci	<value value="23" name="PERF_VPC_VPCRAM_FULL_CYCLES"/>
476bf215546Sopenharmony_ci	<value value="24" name="PERF_VPC_LM_FULL_WAIT_FOR_INTP_END"/>
477bf215546Sopenharmony_ci	<value value="25" name="PERF_VPC_NUM_VPCRAM_WRITE"/>
478bf215546Sopenharmony_ci	<value value="26" name="PERF_VPC_NUM_VPCRAM_READ_SO"/>
479bf215546Sopenharmony_ci	<value value="27" name="PERF_VPC_NUM_ATTR_REQ_LM"/>
480bf215546Sopenharmony_ci</enum>
481bf215546Sopenharmony_ci
482bf215546Sopenharmony_ci<enum name="a6xx_tse_perfcounter_select">
483bf215546Sopenharmony_ci	<value value="0" name="PERF_TSE_BUSY_CYCLES"/>
484bf215546Sopenharmony_ci	<value value="1" name="PERF_TSE_CLIPPING_CYCLES"/>
485bf215546Sopenharmony_ci	<value value="2" name="PERF_TSE_STALL_CYCLES_RAS"/>
486bf215546Sopenharmony_ci	<value value="3" name="PERF_TSE_STALL_CYCLES_LRZ_BARYPLANE"/>
487bf215546Sopenharmony_ci	<value value="4" name="PERF_TSE_STALL_CYCLES_LRZ_ZPLANE"/>
488bf215546Sopenharmony_ci	<value value="5" name="PERF_TSE_STARVE_CYCLES_PC"/>
489bf215546Sopenharmony_ci	<value value="6" name="PERF_TSE_INPUT_PRIM"/>
490bf215546Sopenharmony_ci	<value value="7" name="PERF_TSE_INPUT_NULL_PRIM"/>
491bf215546Sopenharmony_ci	<value value="8" name="PERF_TSE_TRIVAL_REJ_PRIM"/>
492bf215546Sopenharmony_ci	<value value="9" name="PERF_TSE_CLIPPED_PRIM"/>
493bf215546Sopenharmony_ci	<value value="10" name="PERF_TSE_ZERO_AREA_PRIM"/>
494bf215546Sopenharmony_ci	<value value="11" name="PERF_TSE_FACENESS_CULLED_PRIM"/>
495bf215546Sopenharmony_ci	<value value="12" name="PERF_TSE_ZERO_PIXEL_PRIM"/>
496bf215546Sopenharmony_ci	<value value="13" name="PERF_TSE_OUTPUT_NULL_PRIM"/>
497bf215546Sopenharmony_ci	<value value="14" name="PERF_TSE_OUTPUT_VISIBLE_PRIM"/>
498bf215546Sopenharmony_ci	<value value="15" name="PERF_TSE_CINVOCATION"/>
499bf215546Sopenharmony_ci	<value value="16" name="PERF_TSE_CPRIMITIVES"/>
500bf215546Sopenharmony_ci	<value value="17" name="PERF_TSE_2D_INPUT_PRIM"/>
501bf215546Sopenharmony_ci	<value value="18" name="PERF_TSE_2D_ALIVE_CYCLES"/>
502bf215546Sopenharmony_ci	<value value="19" name="PERF_TSE_CLIP_PLANES"/>
503bf215546Sopenharmony_ci</enum>
504bf215546Sopenharmony_ci
505bf215546Sopenharmony_ci<enum name="a6xx_ras_perfcounter_select">
506bf215546Sopenharmony_ci	<value value="0" name="PERF_RAS_BUSY_CYCLES"/>
507bf215546Sopenharmony_ci	<value value="1" name="PERF_RAS_SUPERTILE_ACTIVE_CYCLES"/>
508bf215546Sopenharmony_ci	<value value="2" name="PERF_RAS_STALL_CYCLES_LRZ"/>
509bf215546Sopenharmony_ci	<value value="3" name="PERF_RAS_STARVE_CYCLES_TSE"/>
510bf215546Sopenharmony_ci	<value value="4" name="PERF_RAS_SUPER_TILES"/>
511bf215546Sopenharmony_ci	<value value="5" name="PERF_RAS_8X4_TILES"/>
512bf215546Sopenharmony_ci	<value value="6" name="PERF_RAS_MASKGEN_ACTIVE"/>
513bf215546Sopenharmony_ci	<value value="7" name="PERF_RAS_FULLY_COVERED_SUPER_TILES"/>
514bf215546Sopenharmony_ci	<value value="8" name="PERF_RAS_FULLY_COVERED_8X4_TILES"/>
515bf215546Sopenharmony_ci	<value value="9" name="PERF_RAS_PRIM_KILLED_INVISILBE"/>
516bf215546Sopenharmony_ci	<value value="10" name="PERF_RAS_SUPERTILE_GEN_ACTIVE_CYCLES"/>
517bf215546Sopenharmony_ci	<value value="11" name="PERF_RAS_LRZ_INTF_WORKING_CYCLES"/>
518bf215546Sopenharmony_ci	<value value="12" name="PERF_RAS_BLOCKS"/>
519bf215546Sopenharmony_ci</enum>
520bf215546Sopenharmony_ci
521bf215546Sopenharmony_ci<enum name="a6xx_uche_perfcounter_select">
522bf215546Sopenharmony_ci	<value value="0" name="PERF_UCHE_BUSY_CYCLES"/>
523bf215546Sopenharmony_ci	<value value="1" name="PERF_UCHE_STALL_CYCLES_ARBITER"/>
524bf215546Sopenharmony_ci	<value value="2" name="PERF_UCHE_VBIF_LATENCY_CYCLES"/>
525bf215546Sopenharmony_ci	<value value="3" name="PERF_UCHE_VBIF_LATENCY_SAMPLES"/>
526bf215546Sopenharmony_ci	<value value="4" name="PERF_UCHE_VBIF_READ_BEATS_TP"/>
527bf215546Sopenharmony_ci	<value value="5" name="PERF_UCHE_VBIF_READ_BEATS_VFD"/>
528bf215546Sopenharmony_ci	<value value="6" name="PERF_UCHE_VBIF_READ_BEATS_HLSQ"/>
529bf215546Sopenharmony_ci	<value value="7" name="PERF_UCHE_VBIF_READ_BEATS_LRZ"/>
530bf215546Sopenharmony_ci	<value value="8" name="PERF_UCHE_VBIF_READ_BEATS_SP"/>
531bf215546Sopenharmony_ci	<value value="9" name="PERF_UCHE_READ_REQUESTS_TP"/>
532bf215546Sopenharmony_ci	<value value="10" name="PERF_UCHE_READ_REQUESTS_VFD"/>
533bf215546Sopenharmony_ci	<value value="11" name="PERF_UCHE_READ_REQUESTS_HLSQ"/>
534bf215546Sopenharmony_ci	<value value="12" name="PERF_UCHE_READ_REQUESTS_LRZ"/>
535bf215546Sopenharmony_ci	<value value="13" name="PERF_UCHE_READ_REQUESTS_SP"/>
536bf215546Sopenharmony_ci	<value value="14" name="PERF_UCHE_WRITE_REQUESTS_LRZ"/>
537bf215546Sopenharmony_ci	<value value="15" name="PERF_UCHE_WRITE_REQUESTS_SP"/>
538bf215546Sopenharmony_ci	<value value="16" name="PERF_UCHE_WRITE_REQUESTS_VPC"/>
539bf215546Sopenharmony_ci	<value value="17" name="PERF_UCHE_WRITE_REQUESTS_VSC"/>
540bf215546Sopenharmony_ci	<value value="18" name="PERF_UCHE_EVICTS"/>
541bf215546Sopenharmony_ci	<value value="19" name="PERF_UCHE_BANK_REQ0"/>
542bf215546Sopenharmony_ci	<value value="20" name="PERF_UCHE_BANK_REQ1"/>
543bf215546Sopenharmony_ci	<value value="21" name="PERF_UCHE_BANK_REQ2"/>
544bf215546Sopenharmony_ci	<value value="22" name="PERF_UCHE_BANK_REQ3"/>
545bf215546Sopenharmony_ci	<value value="23" name="PERF_UCHE_BANK_REQ4"/>
546bf215546Sopenharmony_ci	<value value="24" name="PERF_UCHE_BANK_REQ5"/>
547bf215546Sopenharmony_ci	<value value="25" name="PERF_UCHE_BANK_REQ6"/>
548bf215546Sopenharmony_ci	<value value="26" name="PERF_UCHE_BANK_REQ7"/>
549bf215546Sopenharmony_ci	<value value="27" name="PERF_UCHE_VBIF_READ_BEATS_CH0"/>
550bf215546Sopenharmony_ci	<value value="28" name="PERF_UCHE_VBIF_READ_BEATS_CH1"/>
551bf215546Sopenharmony_ci	<value value="29" name="PERF_UCHE_GMEM_READ_BEATS"/>
552bf215546Sopenharmony_ci	<value value="30" name="PERF_UCHE_TPH_REF_FULL"/>
553bf215546Sopenharmony_ci	<value value="31" name="PERF_UCHE_TPH_VICTIM_FULL"/>
554bf215546Sopenharmony_ci	<value value="32" name="PERF_UCHE_TPH_EXT_FULL"/>
555bf215546Sopenharmony_ci	<value value="33" name="PERF_UCHE_VBIF_STALL_WRITE_DATA"/>
556bf215546Sopenharmony_ci	<value value="34" name="PERF_UCHE_DCMP_LATENCY_SAMPLES"/>
557bf215546Sopenharmony_ci	<value value="35" name="PERF_UCHE_DCMP_LATENCY_CYCLES"/>
558bf215546Sopenharmony_ci	<value value="36" name="PERF_UCHE_VBIF_READ_BEATS_PC"/>
559bf215546Sopenharmony_ci	<value value="37" name="PERF_UCHE_READ_REQUESTS_PC"/>
560bf215546Sopenharmony_ci	<value value="38" name="PERF_UCHE_RAM_READ_REQ"/>
561bf215546Sopenharmony_ci	<value value="39" name="PERF_UCHE_RAM_WRITE_REQ"/>
562bf215546Sopenharmony_ci</enum>
563bf215546Sopenharmony_ci
564bf215546Sopenharmony_ci<enum name="a6xx_tp_perfcounter_select">
565bf215546Sopenharmony_ci	<value value="0" name="PERF_TP_BUSY_CYCLES"/>
566bf215546Sopenharmony_ci	<value value="1" name="PERF_TP_STALL_CYCLES_UCHE"/>
567bf215546Sopenharmony_ci	<value value="2" name="PERF_TP_LATENCY_CYCLES"/>
568bf215546Sopenharmony_ci	<value value="3" name="PERF_TP_LATENCY_TRANS"/>
569bf215546Sopenharmony_ci	<value value="4" name="PERF_TP_FLAG_CACHE_REQUEST_SAMPLES"/>
570bf215546Sopenharmony_ci	<value value="5" name="PERF_TP_FLAG_CACHE_REQUEST_LATENCY"/>
571bf215546Sopenharmony_ci	<value value="6" name="PERF_TP_L1_CACHELINE_REQUESTS"/>
572bf215546Sopenharmony_ci	<value value="7" name="PERF_TP_L1_CACHELINE_MISSES"/>
573bf215546Sopenharmony_ci	<value value="8" name="PERF_TP_SP_TP_TRANS"/>
574bf215546Sopenharmony_ci	<value value="9" name="PERF_TP_TP_SP_TRANS"/>
575bf215546Sopenharmony_ci	<value value="10" name="PERF_TP_OUTPUT_PIXELS"/>
576bf215546Sopenharmony_ci	<value value="11" name="PERF_TP_FILTER_WORKLOAD_16BIT"/>
577bf215546Sopenharmony_ci	<value value="12" name="PERF_TP_FILTER_WORKLOAD_32BIT"/>
578bf215546Sopenharmony_ci	<value value="13" name="PERF_TP_QUADS_RECEIVED"/>
579bf215546Sopenharmony_ci	<value value="14" name="PERF_TP_QUADS_OFFSET"/>
580bf215546Sopenharmony_ci	<value value="15" name="PERF_TP_QUADS_SHADOW"/>
581bf215546Sopenharmony_ci	<value value="16" name="PERF_TP_QUADS_ARRAY"/>
582bf215546Sopenharmony_ci	<value value="17" name="PERF_TP_QUADS_GRADIENT"/>
583bf215546Sopenharmony_ci	<value value="18" name="PERF_TP_QUADS_1D"/>
584bf215546Sopenharmony_ci	<value value="19" name="PERF_TP_QUADS_2D"/>
585bf215546Sopenharmony_ci	<value value="20" name="PERF_TP_QUADS_BUFFER"/>
586bf215546Sopenharmony_ci	<value value="21" name="PERF_TP_QUADS_3D"/>
587bf215546Sopenharmony_ci	<value value="22" name="PERF_TP_QUADS_CUBE"/>
588bf215546Sopenharmony_ci	<value value="23" name="PERF_TP_DIVERGENT_QUADS_RECEIVED"/>
589bf215546Sopenharmony_ci	<value value="24" name="PERF_TP_PRT_NON_RESIDENT_EVENTS"/>
590bf215546Sopenharmony_ci	<value value="25" name="PERF_TP_OUTPUT_PIXELS_POINT"/>
591bf215546Sopenharmony_ci	<value value="26" name="PERF_TP_OUTPUT_PIXELS_BILINEAR"/>
592bf215546Sopenharmony_ci	<value value="27" name="PERF_TP_OUTPUT_PIXELS_MIP"/>
593bf215546Sopenharmony_ci	<value value="28" name="PERF_TP_OUTPUT_PIXELS_ANISO"/>
594bf215546Sopenharmony_ci	<value value="29" name="PERF_TP_OUTPUT_PIXELS_ZERO_LOD"/>
595bf215546Sopenharmony_ci	<value value="30" name="PERF_TP_FLAG_CACHE_REQUESTS"/>
596bf215546Sopenharmony_ci	<value value="31" name="PERF_TP_FLAG_CACHE_MISSES"/>
597bf215546Sopenharmony_ci	<value value="32" name="PERF_TP_L1_5_L2_REQUESTS"/>
598bf215546Sopenharmony_ci	<value value="33" name="PERF_TP_2D_OUTPUT_PIXELS"/>
599bf215546Sopenharmony_ci	<value value="34" name="PERF_TP_2D_OUTPUT_PIXELS_POINT"/>
600bf215546Sopenharmony_ci	<value value="35" name="PERF_TP_2D_OUTPUT_PIXELS_BILINEAR"/>
601bf215546Sopenharmony_ci	<value value="36" name="PERF_TP_2D_FILTER_WORKLOAD_16BIT"/>
602bf215546Sopenharmony_ci	<value value="37" name="PERF_TP_2D_FILTER_WORKLOAD_32BIT"/>
603bf215546Sopenharmony_ci	<value value="38" name="PERF_TP_TPA2TPC_TRANS"/>
604bf215546Sopenharmony_ci	<value value="39" name="PERF_TP_L1_MISSES_ASTC_1TILE"/>
605bf215546Sopenharmony_ci	<value value="40" name="PERF_TP_L1_MISSES_ASTC_2TILE"/>
606bf215546Sopenharmony_ci	<value value="41" name="PERF_TP_L1_MISSES_ASTC_4TILE"/>
607bf215546Sopenharmony_ci	<value value="42" name="PERF_TP_L1_5_L2_COMPRESS_REQS"/>
608bf215546Sopenharmony_ci	<value value="43" name="PERF_TP_L1_5_L2_COMPRESS_MISS"/>
609bf215546Sopenharmony_ci	<value value="44" name="PERF_TP_L1_BANK_CONFLICT"/>
610bf215546Sopenharmony_ci	<value value="45" name="PERF_TP_L1_5_MISS_LATENCY_CYCLES"/>
611bf215546Sopenharmony_ci	<value value="46" name="PERF_TP_L1_5_MISS_LATENCY_TRANS"/>
612bf215546Sopenharmony_ci	<value value="47" name="PERF_TP_QUADS_CONSTANT_MULTIPLIED"/>
613bf215546Sopenharmony_ci	<value value="48" name="PERF_TP_FRONTEND_WORKING_CYCLES"/>
614bf215546Sopenharmony_ci	<value value="49" name="PERF_TP_L1_TAG_WORKING_CYCLES"/>
615bf215546Sopenharmony_ci	<value value="50" name="PERF_TP_L1_DATA_WRITE_WORKING_CYCLES"/>
616bf215546Sopenharmony_ci	<value value="51" name="PERF_TP_PRE_L1_DECOM_WORKING_CYCLES"/>
617bf215546Sopenharmony_ci	<value value="52" name="PERF_TP_BACKEND_WORKING_CYCLES"/>
618bf215546Sopenharmony_ci	<value value="53" name="PERF_TP_FLAG_CACHE_WORKING_CYCLES"/>
619bf215546Sopenharmony_ci	<value value="54" name="PERF_TP_L1_5_CACHE_WORKING_CYCLES"/>
620bf215546Sopenharmony_ci	<value value="55" name="PERF_TP_STARVE_CYCLES_SP"/>
621bf215546Sopenharmony_ci	<value value="56" name="PERF_TP_STARVE_CYCLES_UCHE"/>
622bf215546Sopenharmony_ci</enum>
623bf215546Sopenharmony_ci
624bf215546Sopenharmony_ci<enum name="a6xx_sp_perfcounter_select">
625bf215546Sopenharmony_ci	<value value="0" name="PERF_SP_BUSY_CYCLES"/>
626bf215546Sopenharmony_ci	<value value="1" name="PERF_SP_ALU_WORKING_CYCLES"/>
627bf215546Sopenharmony_ci	<value value="2" name="PERF_SP_EFU_WORKING_CYCLES"/>
628bf215546Sopenharmony_ci	<value value="3" name="PERF_SP_STALL_CYCLES_VPC"/>
629bf215546Sopenharmony_ci	<value value="4" name="PERF_SP_STALL_CYCLES_TP"/>
630bf215546Sopenharmony_ci	<value value="5" name="PERF_SP_STALL_CYCLES_UCHE"/>
631bf215546Sopenharmony_ci	<value value="6" name="PERF_SP_STALL_CYCLES_RB"/>
632bf215546Sopenharmony_ci	<value value="7" name="PERF_SP_NON_EXECUTION_CYCLES"/>
633bf215546Sopenharmony_ci	<value value="8" name="PERF_SP_WAVE_CONTEXTS"/>
634bf215546Sopenharmony_ci	<value value="9" name="PERF_SP_WAVE_CONTEXT_CYCLES"/>
635bf215546Sopenharmony_ci	<value value="10" name="PERF_SP_FS_STAGE_WAVE_CYCLES"/>
636bf215546Sopenharmony_ci	<value value="11" name="PERF_SP_FS_STAGE_WAVE_SAMPLES"/>
637bf215546Sopenharmony_ci	<value value="12" name="PERF_SP_VS_STAGE_WAVE_CYCLES"/>
638bf215546Sopenharmony_ci	<value value="13" name="PERF_SP_VS_STAGE_WAVE_SAMPLES"/>
639bf215546Sopenharmony_ci	<value value="14" name="PERF_SP_FS_STAGE_DURATION_CYCLES"/>
640bf215546Sopenharmony_ci	<value value="15" name="PERF_SP_VS_STAGE_DURATION_CYCLES"/>
641bf215546Sopenharmony_ci	<value value="16" name="PERF_SP_WAVE_CTRL_CYCLES"/>
642bf215546Sopenharmony_ci	<value value="17" name="PERF_SP_WAVE_LOAD_CYCLES"/>
643bf215546Sopenharmony_ci	<value value="18" name="PERF_SP_WAVE_EMIT_CYCLES"/>
644bf215546Sopenharmony_ci	<value value="19" name="PERF_SP_WAVE_NOP_CYCLES"/>
645bf215546Sopenharmony_ci	<value value="20" name="PERF_SP_WAVE_WAIT_CYCLES"/>
646bf215546Sopenharmony_ci	<value value="21" name="PERF_SP_WAVE_FETCH_CYCLES"/>
647bf215546Sopenharmony_ci	<value value="22" name="PERF_SP_WAVE_IDLE_CYCLES"/>
648bf215546Sopenharmony_ci	<value value="23" name="PERF_SP_WAVE_END_CYCLES"/>
649bf215546Sopenharmony_ci	<value value="24" name="PERF_SP_WAVE_LONG_SYNC_CYCLES"/>
650bf215546Sopenharmony_ci	<value value="25" name="PERF_SP_WAVE_SHORT_SYNC_CYCLES"/>
651bf215546Sopenharmony_ci	<value value="26" name="PERF_SP_WAVE_JOIN_CYCLES"/>
652bf215546Sopenharmony_ci	<value value="27" name="PERF_SP_LM_LOAD_INSTRUCTIONS"/>
653bf215546Sopenharmony_ci	<value value="28" name="PERF_SP_LM_STORE_INSTRUCTIONS"/>
654bf215546Sopenharmony_ci	<value value="29" name="PERF_SP_LM_ATOMICS"/>
655bf215546Sopenharmony_ci	<value value="30" name="PERF_SP_GM_LOAD_INSTRUCTIONS"/>
656bf215546Sopenharmony_ci	<value value="31" name="PERF_SP_GM_STORE_INSTRUCTIONS"/>
657bf215546Sopenharmony_ci	<value value="32" name="PERF_SP_GM_ATOMICS"/>
658bf215546Sopenharmony_ci	<value value="33" name="PERF_SP_VS_STAGE_TEX_INSTRUCTIONS"/>
659bf215546Sopenharmony_ci	<value value="34" name="PERF_SP_VS_STAGE_EFU_INSTRUCTIONS"/>
660bf215546Sopenharmony_ci	<value value="35" name="PERF_SP_VS_STAGE_FULL_ALU_INSTRUCTIONS"/>
661bf215546Sopenharmony_ci	<value value="36" name="PERF_SP_VS_STAGE_HALF_ALU_INSTRUCTIONS"/>
662bf215546Sopenharmony_ci	<value value="37" name="PERF_SP_FS_STAGE_TEX_INSTRUCTIONS"/>
663bf215546Sopenharmony_ci	<value value="38" name="PERF_SP_FS_STAGE_CFLOW_INSTRUCTIONS"/>
664bf215546Sopenharmony_ci	<value value="39" name="PERF_SP_FS_STAGE_EFU_INSTRUCTIONS"/>
665bf215546Sopenharmony_ci	<value value="40" name="PERF_SP_FS_STAGE_FULL_ALU_INSTRUCTIONS"/>
666bf215546Sopenharmony_ci	<value value="41" name="PERF_SP_FS_STAGE_HALF_ALU_INSTRUCTIONS"/>
667bf215546Sopenharmony_ci	<value value="42" name="PERF_SP_FS_STAGE_BARY_INSTRUCTIONS"/>
668bf215546Sopenharmony_ci	<value value="43" name="PERF_SP_VS_INSTRUCTIONS"/>
669bf215546Sopenharmony_ci	<value value="44" name="PERF_SP_FS_INSTRUCTIONS"/>
670bf215546Sopenharmony_ci	<value value="45" name="PERF_SP_ADDR_LOCK_COUNT"/>
671bf215546Sopenharmony_ci	<value value="46" name="PERF_SP_UCHE_READ_TRANS"/>
672bf215546Sopenharmony_ci	<value value="47" name="PERF_SP_UCHE_WRITE_TRANS"/>
673bf215546Sopenharmony_ci	<value value="48" name="PERF_SP_EXPORT_VPC_TRANS"/>
674bf215546Sopenharmony_ci	<value value="49" name="PERF_SP_EXPORT_RB_TRANS"/>
675bf215546Sopenharmony_ci	<value value="50" name="PERF_SP_PIXELS_KILLED"/>
676bf215546Sopenharmony_ci	<value value="51" name="PERF_SP_ICL1_REQUESTS"/>
677bf215546Sopenharmony_ci	<value value="52" name="PERF_SP_ICL1_MISSES"/>
678bf215546Sopenharmony_ci	<value value="53" name="PERF_SP_HS_INSTRUCTIONS"/>
679bf215546Sopenharmony_ci	<value value="54" name="PERF_SP_DS_INSTRUCTIONS"/>
680bf215546Sopenharmony_ci	<value value="55" name="PERF_SP_GS_INSTRUCTIONS"/>
681bf215546Sopenharmony_ci	<value value="56" name="PERF_SP_CS_INSTRUCTIONS"/>
682bf215546Sopenharmony_ci	<value value="57" name="PERF_SP_GPR_READ"/>
683bf215546Sopenharmony_ci	<value value="58" name="PERF_SP_GPR_WRITE"/>
684bf215546Sopenharmony_ci	<value value="59" name="PERF_SP_FS_STAGE_HALF_EFU_INSTRUCTIONS"/>
685bf215546Sopenharmony_ci	<value value="60" name="PERF_SP_VS_STAGE_HALF_EFU_INSTRUCTIONS"/>
686bf215546Sopenharmony_ci	<value value="61" name="PERF_SP_LM_BANK_CONFLICTS"/>
687bf215546Sopenharmony_ci	<value value="62" name="PERF_SP_TEX_CONTROL_WORKING_CYCLES"/>
688bf215546Sopenharmony_ci	<value value="63" name="PERF_SP_LOAD_CONTROL_WORKING_CYCLES"/>
689bf215546Sopenharmony_ci	<value value="64" name="PERF_SP_FLOW_CONTROL_WORKING_CYCLES"/>
690bf215546Sopenharmony_ci	<value value="65" name="PERF_SP_LM_WORKING_CYCLES"/>
691bf215546Sopenharmony_ci	<value value="66" name="PERF_SP_DISPATCHER_WORKING_CYCLES"/>
692bf215546Sopenharmony_ci	<value value="67" name="PERF_SP_SEQUENCER_WORKING_CYCLES"/>
693bf215546Sopenharmony_ci	<value value="68" name="PERF_SP_LOW_EFFICIENCY_STARVED_BY_TP"/>
694bf215546Sopenharmony_ci	<value value="69" name="PERF_SP_STARVE_CYCLES_HLSQ"/>
695bf215546Sopenharmony_ci	<value value="70" name="PERF_SP_NON_EXECUTION_LS_CYCLES"/>
696bf215546Sopenharmony_ci	<value value="71" name="PERF_SP_WORKING_EU"/>
697bf215546Sopenharmony_ci	<value value="72" name="PERF_SP_ANY_EU_WORKING"/>
698bf215546Sopenharmony_ci	<value value="73" name="PERF_SP_WORKING_EU_FS_STAGE"/>
699bf215546Sopenharmony_ci	<value value="74" name="PERF_SP_ANY_EU_WORKING_FS_STAGE"/>
700bf215546Sopenharmony_ci	<value value="75" name="PERF_SP_WORKING_EU_VS_STAGE"/>
701bf215546Sopenharmony_ci	<value value="76" name="PERF_SP_ANY_EU_WORKING_VS_STAGE"/>
702bf215546Sopenharmony_ci	<value value="77" name="PERF_SP_WORKING_EU_CS_STAGE"/>
703bf215546Sopenharmony_ci	<value value="78" name="PERF_SP_ANY_EU_WORKING_CS_STAGE"/>
704bf215546Sopenharmony_ci	<value value="79" name="PERF_SP_GPR_READ_PREFETCH"/>
705bf215546Sopenharmony_ci	<value value="80" name="PERF_SP_GPR_READ_CONFLICT"/>
706bf215546Sopenharmony_ci	<value value="81" name="PERF_SP_GPR_WRITE_CONFLICT"/>
707bf215546Sopenharmony_ci	<value value="82" name="PERF_SP_GM_LOAD_LATENCY_CYCLES"/>
708bf215546Sopenharmony_ci	<value value="83" name="PERF_SP_GM_LOAD_LATENCY_SAMPLES"/>
709bf215546Sopenharmony_ci	<value value="84" name="PERF_SP_EXECUTABLE_WAVES"/>
710bf215546Sopenharmony_ci</enum>
711bf215546Sopenharmony_ci
712bf215546Sopenharmony_ci<enum name="a6xx_rb_perfcounter_select">
713bf215546Sopenharmony_ci	<value value="0" name="PERF_RB_BUSY_CYCLES"/>
714bf215546Sopenharmony_ci	<value value="1" name="PERF_RB_STALL_CYCLES_HLSQ"/>
715bf215546Sopenharmony_ci	<value value="2" name="PERF_RB_STALL_CYCLES_FIFO0_FULL"/>
716bf215546Sopenharmony_ci	<value value="3" name="PERF_RB_STALL_CYCLES_FIFO1_FULL"/>
717bf215546Sopenharmony_ci	<value value="4" name="PERF_RB_STALL_CYCLES_FIFO2_FULL"/>
718bf215546Sopenharmony_ci	<value value="5" name="PERF_RB_STARVE_CYCLES_SP"/>
719bf215546Sopenharmony_ci	<value value="6" name="PERF_RB_STARVE_CYCLES_LRZ_TILE"/>
720bf215546Sopenharmony_ci	<value value="7" name="PERF_RB_STARVE_CYCLES_CCU"/>
721bf215546Sopenharmony_ci	<value value="8" name="PERF_RB_STARVE_CYCLES_Z_PLANE"/>
722bf215546Sopenharmony_ci	<value value="9" name="PERF_RB_STARVE_CYCLES_BARY_PLANE"/>
723bf215546Sopenharmony_ci	<value value="10" name="PERF_RB_Z_WORKLOAD"/>
724bf215546Sopenharmony_ci	<value value="11" name="PERF_RB_HLSQ_ACTIVE"/>
725bf215546Sopenharmony_ci	<value value="12" name="PERF_RB_Z_READ"/>
726bf215546Sopenharmony_ci	<value value="13" name="PERF_RB_Z_WRITE"/>
727bf215546Sopenharmony_ci	<value value="14" name="PERF_RB_C_READ"/>
728bf215546Sopenharmony_ci	<value value="15" name="PERF_RB_C_WRITE"/>
729bf215546Sopenharmony_ci	<value value="16" name="PERF_RB_TOTAL_PASS"/>
730bf215546Sopenharmony_ci	<value value="17" name="PERF_RB_Z_PASS"/>
731bf215546Sopenharmony_ci	<value value="18" name="PERF_RB_Z_FAIL"/>
732bf215546Sopenharmony_ci	<value value="19" name="PERF_RB_S_FAIL"/>
733bf215546Sopenharmony_ci	<value value="20" name="PERF_RB_BLENDED_FXP_COMPONENTS"/>
734bf215546Sopenharmony_ci	<value value="21" name="PERF_RB_BLENDED_FP16_COMPONENTS"/>
735bf215546Sopenharmony_ci	<value value="22" name="PERF_RB_PS_INVOCATIONS"/>
736bf215546Sopenharmony_ci	<value value="23" name="PERF_RB_2D_ALIVE_CYCLES"/>
737bf215546Sopenharmony_ci	<value value="24" name="PERF_RB_2D_STALL_CYCLES_A2D"/>
738bf215546Sopenharmony_ci	<value value="25" name="PERF_RB_2D_STARVE_CYCLES_SRC"/>
739bf215546Sopenharmony_ci	<value value="26" name="PERF_RB_2D_STARVE_CYCLES_SP"/>
740bf215546Sopenharmony_ci	<value value="27" name="PERF_RB_2D_STARVE_CYCLES_DST"/>
741bf215546Sopenharmony_ci	<value value="28" name="PERF_RB_2D_VALID_PIXELS"/>
742bf215546Sopenharmony_ci	<value value="29" name="PERF_RB_3D_PIXELS"/>
743bf215546Sopenharmony_ci	<value value="30" name="PERF_RB_BLENDER_WORKING_CYCLES"/>
744bf215546Sopenharmony_ci	<value value="31" name="PERF_RB_ZPROC_WORKING_CYCLES"/>
745bf215546Sopenharmony_ci	<value value="32" name="PERF_RB_CPROC_WORKING_CYCLES"/>
746bf215546Sopenharmony_ci	<value value="33" name="PERF_RB_SAMPLER_WORKING_CYCLES"/>
747bf215546Sopenharmony_ci	<value value="34" name="PERF_RB_STALL_CYCLES_CCU_COLOR_READ"/>
748bf215546Sopenharmony_ci	<value value="35" name="PERF_RB_STALL_CYCLES_CCU_COLOR_WRITE"/>
749bf215546Sopenharmony_ci	<value value="36" name="PERF_RB_STALL_CYCLES_CCU_DEPTH_READ"/>
750bf215546Sopenharmony_ci	<value value="37" name="PERF_RB_STALL_CYCLES_CCU_DEPTH_WRITE"/>
751bf215546Sopenharmony_ci	<value value="38" name="PERF_RB_STALL_CYCLES_VPC"/>
752bf215546Sopenharmony_ci	<value value="39" name="PERF_RB_2D_INPUT_TRANS"/>
753bf215546Sopenharmony_ci	<value value="40" name="PERF_RB_2D_OUTPUT_RB_DST_TRANS"/>
754bf215546Sopenharmony_ci	<value value="41" name="PERF_RB_2D_OUTPUT_RB_SRC_TRANS"/>
755bf215546Sopenharmony_ci	<value value="42" name="PERF_RB_BLENDED_FP32_COMPONENTS"/>
756bf215546Sopenharmony_ci	<value value="43" name="PERF_RB_COLOR_PIX_TILES"/>
757bf215546Sopenharmony_ci	<value value="44" name="PERF_RB_STALL_CYCLES_CCU"/>
758bf215546Sopenharmony_ci	<value value="45" name="PERF_RB_EARLY_Z_ARB3_GRANT"/>
759bf215546Sopenharmony_ci	<value value="46" name="PERF_RB_LATE_Z_ARB3_GRANT"/>
760bf215546Sopenharmony_ci	<value value="47" name="PERF_RB_EARLY_Z_SKIP_GRANT"/>
761bf215546Sopenharmony_ci</enum>
762bf215546Sopenharmony_ci
763bf215546Sopenharmony_ci<enum name="a6xx_vsc_perfcounter_select">
764bf215546Sopenharmony_ci	<value value="0" name="PERF_VSC_BUSY_CYCLES"/>
765bf215546Sopenharmony_ci	<value value="1" name="PERF_VSC_WORKING_CYCLES"/>
766bf215546Sopenharmony_ci	<value value="2" name="PERF_VSC_STALL_CYCLES_UCHE"/>
767bf215546Sopenharmony_ci	<value value="3" name="PERF_VSC_EOT_NUM"/>
768bf215546Sopenharmony_ci	<value value="4" name="PERF_VSC_INPUT_TILES"/>
769bf215546Sopenharmony_ci</enum>
770bf215546Sopenharmony_ci
771bf215546Sopenharmony_ci<enum name="a6xx_ccu_perfcounter_select">
772bf215546Sopenharmony_ci	<value value="0" name="PERF_CCU_BUSY_CYCLES"/>
773bf215546Sopenharmony_ci	<value value="1" name="PERF_CCU_STALL_CYCLES_RB_DEPTH_RETURN"/>
774bf215546Sopenharmony_ci	<value value="2" name="PERF_CCU_STALL_CYCLES_RB_COLOR_RETURN"/>
775bf215546Sopenharmony_ci	<value value="3" name="PERF_CCU_STARVE_CYCLES_FLAG_RETURN"/>
776bf215546Sopenharmony_ci	<value value="4" name="PERF_CCU_DEPTH_BLOCKS"/>
777bf215546Sopenharmony_ci	<value value="5" name="PERF_CCU_COLOR_BLOCKS"/>
778bf215546Sopenharmony_ci	<value value="6" name="PERF_CCU_DEPTH_BLOCK_HIT"/>
779bf215546Sopenharmony_ci	<value value="7" name="PERF_CCU_COLOR_BLOCK_HIT"/>
780bf215546Sopenharmony_ci	<value value="8" name="PERF_CCU_PARTIAL_BLOCK_READ"/>
781bf215546Sopenharmony_ci	<value value="9" name="PERF_CCU_GMEM_READ"/>
782bf215546Sopenharmony_ci	<value value="10" name="PERF_CCU_GMEM_WRITE"/>
783bf215546Sopenharmony_ci	<value value="11" name="PERF_CCU_DEPTH_READ_FLAG0_COUNT"/>
784bf215546Sopenharmony_ci	<value value="12" name="PERF_CCU_DEPTH_READ_FLAG1_COUNT"/>
785bf215546Sopenharmony_ci	<value value="13" name="PERF_CCU_DEPTH_READ_FLAG2_COUNT"/>
786bf215546Sopenharmony_ci	<value value="14" name="PERF_CCU_DEPTH_READ_FLAG3_COUNT"/>
787bf215546Sopenharmony_ci	<value value="15" name="PERF_CCU_DEPTH_READ_FLAG4_COUNT"/>
788bf215546Sopenharmony_ci	<value value="16" name="PERF_CCU_DEPTH_READ_FLAG5_COUNT"/>
789bf215546Sopenharmony_ci	<value value="17" name="PERF_CCU_DEPTH_READ_FLAG6_COUNT"/>
790bf215546Sopenharmony_ci	<value value="18" name="PERF_CCU_DEPTH_READ_FLAG8_COUNT"/>
791bf215546Sopenharmony_ci	<value value="19" name="PERF_CCU_COLOR_READ_FLAG0_COUNT"/>
792bf215546Sopenharmony_ci	<value value="20" name="PERF_CCU_COLOR_READ_FLAG1_COUNT"/>
793bf215546Sopenharmony_ci	<value value="21" name="PERF_CCU_COLOR_READ_FLAG2_COUNT"/>
794bf215546Sopenharmony_ci	<value value="22" name="PERF_CCU_COLOR_READ_FLAG3_COUNT"/>
795bf215546Sopenharmony_ci	<value value="23" name="PERF_CCU_COLOR_READ_FLAG4_COUNT"/>
796bf215546Sopenharmony_ci	<value value="24" name="PERF_CCU_COLOR_READ_FLAG5_COUNT"/>
797bf215546Sopenharmony_ci	<value value="25" name="PERF_CCU_COLOR_READ_FLAG6_COUNT"/>
798bf215546Sopenharmony_ci	<value value="26" name="PERF_CCU_COLOR_READ_FLAG8_COUNT"/>
799bf215546Sopenharmony_ci	<value value="27" name="PERF_CCU_2D_RD_REQ"/>
800bf215546Sopenharmony_ci	<value value="28" name="PERF_CCU_2D_WR_REQ"/>
801bf215546Sopenharmony_ci</enum>
802bf215546Sopenharmony_ci
803bf215546Sopenharmony_ci<enum name="a6xx_lrz_perfcounter_select">
804bf215546Sopenharmony_ci	<value value="0" name="PERF_LRZ_BUSY_CYCLES"/>
805bf215546Sopenharmony_ci	<value value="1" name="PERF_LRZ_STARVE_CYCLES_RAS"/>
806bf215546Sopenharmony_ci	<value value="2" name="PERF_LRZ_STALL_CYCLES_RB"/>
807bf215546Sopenharmony_ci	<value value="3" name="PERF_LRZ_STALL_CYCLES_VSC"/>
808bf215546Sopenharmony_ci	<value value="4" name="PERF_LRZ_STALL_CYCLES_VPC"/>
809bf215546Sopenharmony_ci	<value value="5" name="PERF_LRZ_STALL_CYCLES_FLAG_PREFETCH"/>
810bf215546Sopenharmony_ci	<value value="6" name="PERF_LRZ_STALL_CYCLES_UCHE"/>
811bf215546Sopenharmony_ci	<value value="7" name="PERF_LRZ_LRZ_READ"/>
812bf215546Sopenharmony_ci	<value value="8" name="PERF_LRZ_LRZ_WRITE"/>
813bf215546Sopenharmony_ci	<value value="9" name="PERF_LRZ_READ_LATENCY"/>
814bf215546Sopenharmony_ci	<value value="10" name="PERF_LRZ_MERGE_CACHE_UPDATING"/>
815bf215546Sopenharmony_ci	<value value="11" name="PERF_LRZ_PRIM_KILLED_BY_MASKGEN"/>
816bf215546Sopenharmony_ci	<value value="12" name="PERF_LRZ_PRIM_KILLED_BY_LRZ"/>
817bf215546Sopenharmony_ci	<value value="13" name="PERF_LRZ_VISIBLE_PRIM_AFTER_LRZ"/>
818bf215546Sopenharmony_ci	<value value="14" name="PERF_LRZ_FULL_8X8_TILES"/>
819bf215546Sopenharmony_ci	<value value="15" name="PERF_LRZ_PARTIAL_8X8_TILES"/>
820bf215546Sopenharmony_ci	<value value="16" name="PERF_LRZ_TILE_KILLED"/>
821bf215546Sopenharmony_ci	<value value="17" name="PERF_LRZ_TOTAL_PIXEL"/>
822bf215546Sopenharmony_ci	<value value="18" name="PERF_LRZ_VISIBLE_PIXEL_AFTER_LRZ"/>
823bf215546Sopenharmony_ci	<value value="19" name="PERF_LRZ_FULLY_COVERED_TILES"/>
824bf215546Sopenharmony_ci	<value value="20" name="PERF_LRZ_PARTIAL_COVERED_TILES"/>
825bf215546Sopenharmony_ci	<value value="21" name="PERF_LRZ_FEEDBACK_ACCEPT"/>
826bf215546Sopenharmony_ci	<value value="22" name="PERF_LRZ_FEEDBACK_DISCARD"/>
827bf215546Sopenharmony_ci	<value value="23" name="PERF_LRZ_FEEDBACK_STALL"/>
828bf215546Sopenharmony_ci	<value value="24" name="PERF_LRZ_STALL_CYCLES_RB_ZPLANE"/>
829bf215546Sopenharmony_ci	<value value="25" name="PERF_LRZ_STALL_CYCLES_RB_BPLANE"/>
830bf215546Sopenharmony_ci	<value value="26" name="PERF_LRZ_STALL_CYCLES_VC"/>
831bf215546Sopenharmony_ci	<value value="27" name="PERF_LRZ_RAS_MASK_TRANS"/>
832bf215546Sopenharmony_ci</enum>
833bf215546Sopenharmony_ci
834bf215546Sopenharmony_ci<enum name="a6xx_cmp_perfcounter_select">
835bf215546Sopenharmony_ci	<value value="0" name="PERF_CMPDECMP_STALL_CYCLES_ARB"/>
836bf215546Sopenharmony_ci	<value value="1" name="PERF_CMPDECMP_VBIF_LATENCY_CYCLES"/>
837bf215546Sopenharmony_ci	<value value="2" name="PERF_CMPDECMP_VBIF_LATENCY_SAMPLES"/>
838bf215546Sopenharmony_ci	<value value="3" name="PERF_CMPDECMP_VBIF_READ_DATA_CCU"/>
839bf215546Sopenharmony_ci	<value value="4" name="PERF_CMPDECMP_VBIF_WRITE_DATA_CCU"/>
840bf215546Sopenharmony_ci	<value value="5" name="PERF_CMPDECMP_VBIF_READ_REQUEST"/>
841bf215546Sopenharmony_ci	<value value="6" name="PERF_CMPDECMP_VBIF_WRITE_REQUEST"/>
842bf215546Sopenharmony_ci	<value value="7" name="PERF_CMPDECMP_VBIF_READ_DATA"/>
843bf215546Sopenharmony_ci	<value value="8" name="PERF_CMPDECMP_VBIF_WRITE_DATA"/>
844bf215546Sopenharmony_ci	<value value="9" name="PERF_CMPDECMP_FLAG_FETCH_CYCLES"/>
845bf215546Sopenharmony_ci	<value value="10" name="PERF_CMPDECMP_FLAG_FETCH_SAMPLES"/>
846bf215546Sopenharmony_ci	<value value="11" name="PERF_CMPDECMP_DEPTH_WRITE_FLAG1_COUNT"/>
847bf215546Sopenharmony_ci	<value value="12" name="PERF_CMPDECMP_DEPTH_WRITE_FLAG2_COUNT"/>
848bf215546Sopenharmony_ci	<value value="13" name="PERF_CMPDECMP_DEPTH_WRITE_FLAG3_COUNT"/>
849bf215546Sopenharmony_ci	<value value="14" name="PERF_CMPDECMP_DEPTH_WRITE_FLAG4_COUNT"/>
850bf215546Sopenharmony_ci	<value value="15" name="PERF_CMPDECMP_DEPTH_WRITE_FLAG5_COUNT"/>
851bf215546Sopenharmony_ci	<value value="16" name="PERF_CMPDECMP_DEPTH_WRITE_FLAG6_COUNT"/>
852bf215546Sopenharmony_ci	<value value="17" name="PERF_CMPDECMP_DEPTH_WRITE_FLAG8_COUNT"/>
853bf215546Sopenharmony_ci	<value value="18" name="PERF_CMPDECMP_COLOR_WRITE_FLAG1_COUNT"/>
854bf215546Sopenharmony_ci	<value value="19" name="PERF_CMPDECMP_COLOR_WRITE_FLAG2_COUNT"/>
855bf215546Sopenharmony_ci	<value value="20" name="PERF_CMPDECMP_COLOR_WRITE_FLAG3_COUNT"/>
856bf215546Sopenharmony_ci	<value value="21" name="PERF_CMPDECMP_COLOR_WRITE_FLAG4_COUNT"/>
857bf215546Sopenharmony_ci	<value value="22" name="PERF_CMPDECMP_COLOR_WRITE_FLAG5_COUNT"/>
858bf215546Sopenharmony_ci	<value value="23" name="PERF_CMPDECMP_COLOR_WRITE_FLAG6_COUNT"/>
859bf215546Sopenharmony_ci	<value value="24" name="PERF_CMPDECMP_COLOR_WRITE_FLAG8_COUNT"/>
860bf215546Sopenharmony_ci	<value value="25" name="PERF_CMPDECMP_2D_STALL_CYCLES_VBIF_REQ"/>
861bf215546Sopenharmony_ci	<value value="26" name="PERF_CMPDECMP_2D_STALL_CYCLES_VBIF_WR"/>
862bf215546Sopenharmony_ci	<value value="27" name="PERF_CMPDECMP_2D_STALL_CYCLES_VBIF_RETURN"/>
863bf215546Sopenharmony_ci	<value value="28" name="PERF_CMPDECMP_2D_RD_DATA"/>
864bf215546Sopenharmony_ci	<value value="29" name="PERF_CMPDECMP_2D_WR_DATA"/>
865bf215546Sopenharmony_ci	<value value="30" name="PERF_CMPDECMP_VBIF_READ_DATA_UCHE_CH0"/>
866bf215546Sopenharmony_ci	<value value="31" name="PERF_CMPDECMP_VBIF_READ_DATA_UCHE_CH1"/>
867bf215546Sopenharmony_ci	<value value="32" name="PERF_CMPDECMP_2D_OUTPUT_TRANS"/>
868bf215546Sopenharmony_ci	<value value="33" name="PERF_CMPDECMP_VBIF_WRITE_DATA_UCHE"/>
869bf215546Sopenharmony_ci	<value value="34" name="PERF_CMPDECMP_DEPTH_WRITE_FLAG0_COUNT"/>
870bf215546Sopenharmony_ci	<value value="35" name="PERF_CMPDECMP_COLOR_WRITE_FLAG0_COUNT"/>
871bf215546Sopenharmony_ci	<value value="36" name="PERF_CMPDECMP_COLOR_WRITE_FLAGALPHA_COUNT"/>
872bf215546Sopenharmony_ci	<value value="37" name="PERF_CMPDECMP_2D_BUSY_CYCLES"/>
873bf215546Sopenharmony_ci	<value value="38" name="PERF_CMPDECMP_2D_REORDER_STARVE_CYCLES"/>
874bf215546Sopenharmony_ci	<value value="39" name="PERF_CMPDECMP_2D_PIXELS"/>
875bf215546Sopenharmony_ci</enum>
876bf215546Sopenharmony_ci
877bf215546Sopenharmony_ci<!--
878bf215546Sopenharmony_ciUsed in a6xx_2d_blit_cntl.. the value mostly seems to correlate to the
879bf215546Sopenharmony_cicomponent type/size, so I think it relates to internal format used for
880bf215546Sopenharmony_ciblending?  The one exception is that 16b unorm and 32b float use the
881bf215546Sopenharmony_cisame value... maybe 16b unorm is uncommon enough that it was just easier
882bf215546Sopenharmony_cito upconvert to 32b float internally?
883bf215546Sopenharmony_ci
884bf215546Sopenharmony_ci 8b unorm:  10 (sometimes 0, is the high bit part of something else?)
885bf215546Sopenharmony_ci16b unorm:   4
886bf215546Sopenharmony_ci
887bf215546Sopenharmony_ci32b int:     7
888bf215546Sopenharmony_ci16b int:     6
889bf215546Sopenharmony_ci 8b int:     5
890bf215546Sopenharmony_ci
891bf215546Sopenharmony_ci32b float:   4
892bf215546Sopenharmony_ci16b float:   3
893bf215546Sopenharmony_ci -->
894bf215546Sopenharmony_ci<enum name="a6xx_2d_ifmt">
895bf215546Sopenharmony_ci	<value value="0x10" name="R2D_UNORM8"/>
896bf215546Sopenharmony_ci	<value value="0x7"  name="R2D_INT32"/>
897bf215546Sopenharmony_ci	<value value="0x6"  name="R2D_INT16"/>
898bf215546Sopenharmony_ci	<value value="0x5"  name="R2D_INT8"/>
899bf215546Sopenharmony_ci	<value value="0x4"  name="R2D_FLOAT32"/>
900bf215546Sopenharmony_ci	<value value="0x3"  name="R2D_FLOAT16"/>
901bf215546Sopenharmony_ci	<value value="0x1"  name="R2D_UNORM8_SRGB"/>
902bf215546Sopenharmony_ci	<value value="0x0"  name="R2D_RAW"/>
903bf215546Sopenharmony_ci</enum>
904bf215546Sopenharmony_ci
905bf215546Sopenharmony_ci<enum name="a6xx_ztest_mode">
906bf215546Sopenharmony_ci	<doc>Allow early z-test and early-lrz (if applicable)</doc>
907bf215546Sopenharmony_ci	<value value="0x0" name="A6XX_EARLY_Z"/>
908bf215546Sopenharmony_ci	<doc>Disable early z-test and early-lrz test (if applicable)</doc>
909bf215546Sopenharmony_ci	<value value="0x1" name="A6XX_LATE_Z"/>
910bf215546Sopenharmony_ci	<doc>
911bf215546Sopenharmony_ci		A special mode that allows early-lrz test but disables
912bf215546Sopenharmony_ci		early-z test.  Which might sound a bit funny, since
913bf215546Sopenharmony_ci		lrz-test happens before z-test.  But as long as a couple
914bf215546Sopenharmony_ci		conditions are maintained this allows using lrz-test in
915bf215546Sopenharmony_ci		cases where fragment shader has kill/discard:
916bf215546Sopenharmony_ci
917bf215546Sopenharmony_ci		1) Disable lrz-write in cases where it is uncertain during
918bf215546Sopenharmony_ci		   binning pass that a fragment will pass.  Ie.  if frag
919bf215546Sopenharmony_ci		   shader has-kill, writes-z, or alpha/stencil test is
920bf215546Sopenharmony_ci		   enabled.  (For correctness, lrz-write must be disabled
921bf215546Sopenharmony_ci		   when blend is enabled.)  This is analogous to how a
922bf215546Sopenharmony_ci		   z-prepass works.
923bf215546Sopenharmony_ci
924bf215546Sopenharmony_ci		2) Disable lrz-write and test if a depth-test direction
925bf215546Sopenharmony_ci		   reversal is detected.  Due to condition (1), the contents
926bf215546Sopenharmony_ci		   of the lrz buffer are a conservative estimation of the
927bf215546Sopenharmony_ci		   depth buffer during the draw pass.  Meaning that geometry
928bf215546Sopenharmony_ci		   that we know for certain will not be visible will not pass
929bf215546Sopenharmony_ci		   lrz-test.  But geometry which may be (or contributes to
930bf215546Sopenharmony_ci		   blend) will pass the lrz-test.
931bf215546Sopenharmony_ci
932bf215546Sopenharmony_ci		This allows us to keep early-lrz-test in cases where the frag
933bf215546Sopenharmony_ci		shader does not write-z (ie. we know the z-value before FS)
934bf215546Sopenharmony_ci		and does not have side-effects (image/ssbo writes, etc), but
935bf215546Sopenharmony_ci		does have kill/discard.  Which turns out to be a common
936bf215546Sopenharmony_ci		enough case that it is useful to keep early-lrz test against
937bf215546Sopenharmony_ci		the conservative lrz buffer to discard fragments that we
938bf215546Sopenharmony_ci		know will definitely not be visible.
939bf215546Sopenharmony_ci	</doc>
940bf215546Sopenharmony_ci	<value value="0x2" name="A6XX_EARLY_LRZ_LATE_Z"/>
941bf215546Sopenharmony_ci</enum>
942bf215546Sopenharmony_ci
943bf215546Sopenharmony_ci<domain name="A6XX" width="32">
944bf215546Sopenharmony_ci	<bitset name="A6XX_RBBM_INT_0_MASK" inline="no">
945bf215546Sopenharmony_ci		<bitfield name="RBBM_GPU_IDLE" pos="0" type="boolean"/>
946bf215546Sopenharmony_ci		<bitfield name="CP_AHB_ERROR" pos="1" type="boolean"/>
947bf215546Sopenharmony_ci		<bitfield name="RBBM_ATB_ASYNCFIFO_OVERFLOW" pos="6" type="boolean"/>
948bf215546Sopenharmony_ci		<bitfield name="RBBM_GPC_ERROR" pos="7" type="boolean"/>
949bf215546Sopenharmony_ci		<bitfield name="CP_SW" pos="8" type="boolean"/>
950bf215546Sopenharmony_ci		<bitfield name="CP_HW_ERROR" pos="9" type="boolean"/>
951bf215546Sopenharmony_ci		<bitfield name="CP_CCU_FLUSH_DEPTH_TS" pos="10" type="boolean"/>
952bf215546Sopenharmony_ci		<bitfield name="CP_CCU_FLUSH_COLOR_TS" pos="11" type="boolean"/>
953bf215546Sopenharmony_ci		<bitfield name="CP_CCU_RESOLVE_TS" pos="12" type="boolean"/>
954bf215546Sopenharmony_ci		<bitfield name="CP_IB2" pos="13" type="boolean"/>
955bf215546Sopenharmony_ci		<bitfield name="CP_IB1" pos="14" type="boolean"/>
956bf215546Sopenharmony_ci		<bitfield name="CP_RB" pos="15" type="boolean"/>
957bf215546Sopenharmony_ci		<bitfield name="CP_RB_DONE_TS" pos="17" type="boolean"/>
958bf215546Sopenharmony_ci		<bitfield name="CP_WT_DONE_TS" pos="18" type="boolean"/>
959bf215546Sopenharmony_ci		<bitfield name="CP_CACHE_FLUSH_TS" pos="20" type="boolean"/>
960bf215546Sopenharmony_ci		<bitfield name="RBBM_ATB_BUS_OVERFLOW" pos="22" type="boolean"/>
961bf215546Sopenharmony_ci		<bitfield name="RBBM_HANG_DETECT" pos="23" type="boolean"/>
962bf215546Sopenharmony_ci		<bitfield name="UCHE_OOB_ACCESS" pos="24" type="boolean"/>
963bf215546Sopenharmony_ci		<bitfield name="UCHE_TRAP_INTR" pos="25" type="boolean"/>
964bf215546Sopenharmony_ci		<bitfield name="DEBBUS_INTR_0" pos="26" type="boolean"/>
965bf215546Sopenharmony_ci		<bitfield name="DEBBUS_INTR_1" pos="27" type="boolean"/>
966bf215546Sopenharmony_ci		<bitfield name="ISDB_CPU_IRQ" pos="30" type="boolean"/>
967bf215546Sopenharmony_ci		<bitfield name="ISDB_UNDER_DEBUG" pos="31" type="boolean"/>
968bf215546Sopenharmony_ci	</bitset>
969bf215546Sopenharmony_ci
970bf215546Sopenharmony_ci	<bitset name="A6XX_CP_INT">
971bf215546Sopenharmony_ci		<bitfield name="CP_OPCODE_ERROR" pos="0" type="boolean"/>
972bf215546Sopenharmony_ci		<bitfield name="CP_UCODE_ERROR" pos="1" type="boolean"/>
973bf215546Sopenharmony_ci		<bitfield name="CP_HW_FAULT_ERROR" pos="2" type="boolean"/>
974bf215546Sopenharmony_ci		<bitfield name="CP_REGISTER_PROTECTION_ERROR" pos="4" type="boolean"/>
975bf215546Sopenharmony_ci		<bitfield name="CP_AHB_ERROR" pos="5" type="boolean"/>
976bf215546Sopenharmony_ci		<bitfield name="CP_VSD_PARITY_ERROR" pos="6" type="boolean"/>
977bf215546Sopenharmony_ci		<bitfield name="CP_ILLEGAL_INSTR_ERROR" pos="7" type="boolean"/>
978bf215546Sopenharmony_ci	</bitset>
979bf215546Sopenharmony_ci
980bf215546Sopenharmony_ci	<reg64 offset="0x0800" name="CP_RB_BASE"/>
981bf215546Sopenharmony_ci	<reg32 offset="0x0802" name="CP_RB_CNTL"/>
982bf215546Sopenharmony_ci	<reg64 offset="0x0804" name="CP_RB_RPTR_ADDR"/>
983bf215546Sopenharmony_ci	<reg32 offset="0x0806" name="CP_RB_RPTR"/>
984bf215546Sopenharmony_ci	<reg32 offset="0x0807" name="CP_RB_WPTR"/>
985bf215546Sopenharmony_ci	<reg32 offset="0x0808" name="CP_SQE_CNTL"/>
986bf215546Sopenharmony_ci	<reg32 offset="0x0812" name="CP_CP2GMU_STATUS">
987bf215546Sopenharmony_ci		<bitfield name="IFPC" pos="0" type="boolean"/>
988bf215546Sopenharmony_ci	</reg32>
989bf215546Sopenharmony_ci	<reg32 offset="0x0821" name="CP_HW_FAULT"/>
990bf215546Sopenharmony_ci	<reg32 offset="0x0823" name="CP_INTERRUPT_STATUS"/>
991bf215546Sopenharmony_ci	<reg32 offset="0x0824" name="CP_PROTECT_STATUS"/>
992bf215546Sopenharmony_ci	<reg64 offset="0x0830" name="CP_SQE_INSTR_BASE"/>
993bf215546Sopenharmony_ci	<reg32 offset="0x0840" name="CP_MISC_CNTL"/>
994bf215546Sopenharmony_ci	<reg32 offset="0x0844" name="CP_APRIV_CNTL"/>
995bf215546Sopenharmony_ci	<!-- all the threshold values seem to be in units of quad-dwords: -->
996bf215546Sopenharmony_ci	<reg32 offset="0x08C1" name="CP_ROQ_THRESHOLDS_1">
997bf215546Sopenharmony_ci		<doc>
998bf215546Sopenharmony_ci			b0..7 seems to contain the size of buffered by not yet processed
999bf215546Sopenharmony_ci			RB level cmdstream.. it's possible that it is a low threshold
1000bf215546Sopenharmony_ci			and b8..15 is a high threshold?
1001bf215546Sopenharmony_ci
1002bf215546Sopenharmony_ci			b16..23 identifies where IB1 data starts (and RB data ends?)
1003bf215546Sopenharmony_ci
1004bf215546Sopenharmony_ci			b24..31 identifies where IB2 data starts (and IB1 data ends)
1005bf215546Sopenharmony_ci		</doc>
1006bf215546Sopenharmony_ci		<bitfield name="RB_LO" low="0" high="7" shr="2"/>
1007bf215546Sopenharmony_ci		<bitfield name="RB_HI" low="8" high="15" shr="2"/>
1008bf215546Sopenharmony_ci		<bitfield name="IB1_START" low="16" high="23" shr="2"/>
1009bf215546Sopenharmony_ci		<bitfield name="IB2_START" low="24" high="31" shr="2"/>
1010bf215546Sopenharmony_ci	</reg32>
1011bf215546Sopenharmony_ci	<reg32 offset="0x08C2" name="CP_ROQ_THRESHOLDS_2">
1012bf215546Sopenharmony_ci		<doc>
1013bf215546Sopenharmony_ci			low bits identify where CP_SET_DRAW_STATE stateobj
1014bf215546Sopenharmony_ci			processing starts (and IB2 data ends). I'm guessing
1015bf215546Sopenharmony_ci			b8 is part of this since (from downstream kgsl):
1016bf215546Sopenharmony_ci
1017bf215546Sopenharmony_ci				/* ROQ sizes are twice as big on a640/a680 than on a630 */
1018bf215546Sopenharmony_ci				if (adreno_is_a640(adreno_dev) || adreno_is_a680(adreno_dev)) {
1019bf215546Sopenharmony_ci					kgsl_regwrite(device, A6XX_CP_ROQ_THRESHOLDS_2, 0x02000140);
1020bf215546Sopenharmony_ci					kgsl_regwrite(device, A6XX_CP_ROQ_THRESHOLDS_1, 0x8040362C);
1021bf215546Sopenharmony_ci				} ...
1022bf215546Sopenharmony_ci		</doc>
1023bf215546Sopenharmony_ci		<bitfield name="SDS_START" low="0" high="8" shr="2"/>
1024bf215546Sopenharmony_ci		<!-- total ROQ size: -->
1025bf215546Sopenharmony_ci		<bitfield name="ROQ_SIZE" low="16" high="31" shr="2"/>
1026bf215546Sopenharmony_ci	</reg32>
1027bf215546Sopenharmony_ci	<reg32 offset="0x08C3" name="CP_MEM_POOL_SIZE"/>
1028bf215546Sopenharmony_ci	<reg32 offset="0x0841" name="CP_CHICKEN_DBG"/>
1029bf215546Sopenharmony_ci	<reg32 offset="0x0842" name="CP_ADDR_MODE_CNTL" type="a5xx_address_mode"/>
1030bf215546Sopenharmony_ci	<reg32 offset="0x0843" name="CP_DBG_ECO_CNTL"/>
1031bf215546Sopenharmony_ci	<reg32 offset="0x084F" name="CP_PROTECT_CNTL"/>
1032bf215546Sopenharmony_ci
1033bf215546Sopenharmony_ci	<array offset="0x0883" name="CP_SCRATCH" stride="1" length="8">
1034bf215546Sopenharmony_ci		<reg32 offset="0x0" name="REG" type="uint"/>
1035bf215546Sopenharmony_ci	</array>
1036bf215546Sopenharmony_ci	<array offset="0x0850" name="CP_PROTECT" stride="1" length="32">
1037bf215546Sopenharmony_ci		<reg32 offset="0x0" name="REG" type="a6x_cp_protect"/>
1038bf215546Sopenharmony_ci	</array>
1039bf215546Sopenharmony_ci
1040bf215546Sopenharmony_ci	<reg32 offset="0x08A0" name="CP_CONTEXT_SWITCH_CNTL"/>
1041bf215546Sopenharmony_ci	<reg64 offset="0x08A1" name="CP_CONTEXT_SWITCH_SMMU_INFO"/>
1042bf215546Sopenharmony_ci	<reg64 offset="0x08A3" name="CP_CONTEXT_SWITCH_PRIV_NON_SECURE_RESTORE_ADDR"/>
1043bf215546Sopenharmony_ci	<reg64 offset="0x08A5" name="CP_CONTEXT_SWITCH_PRIV_SECURE_RESTORE_ADDR"/>
1044bf215546Sopenharmony_ci	<reg64 offset="0x08A7" name="CP_CONTEXT_SWITCH_NON_PRIV_RESTORE_ADDR"/>
1045bf215546Sopenharmony_ci	<array offset="0x08D0" name="CP_PERFCTR_CP_SEL" stride="1" length="14"/>
1046bf215546Sopenharmony_ci	<reg64 offset="0x0900" name="CP_CRASH_SCRIPT_BASE"/>
1047bf215546Sopenharmony_ci	<reg32 offset="0x0902" name="CP_CRASH_DUMP_CNTL"/>
1048bf215546Sopenharmony_ci	<reg32 offset="0x0903" name="CP_CRASH_DUMP_STATUS"/>
1049bf215546Sopenharmony_ci	<reg32 offset="0x0908" name="CP_SQE_STAT_ADDR"/>
1050bf215546Sopenharmony_ci	<reg32 offset="0x0909" name="CP_SQE_STAT_DATA"/>
1051bf215546Sopenharmony_ci	<reg32 offset="0x090A" name="CP_DRAW_STATE_ADDR"/>
1052bf215546Sopenharmony_ci	<reg32 offset="0x090B" name="CP_DRAW_STATE_DATA"/>
1053bf215546Sopenharmony_ci	<reg32 offset="0x090C" name="CP_ROQ_DBG_ADDR"/>
1054bf215546Sopenharmony_ci	<reg32 offset="0x090D" name="CP_ROQ_DBG_DATA"/>
1055bf215546Sopenharmony_ci	<reg32 offset="0x090E" name="CP_MEM_POOL_DBG_ADDR"/>
1056bf215546Sopenharmony_ci	<reg32 offset="0x090F" name="CP_MEM_POOL_DBG_DATA"/>
1057bf215546Sopenharmony_ci	<reg32 offset="0x0910" name="CP_SQE_UCODE_DBG_ADDR"/>
1058bf215546Sopenharmony_ci	<reg32 offset="0x0911" name="CP_SQE_UCODE_DBG_DATA"/>
1059bf215546Sopenharmony_ci	<reg64 offset="0x0928" name="CP_IB1_BASE"/>
1060bf215546Sopenharmony_ci	<reg32 offset="0x092A" name="CP_IB1_REM_SIZE"/>
1061bf215546Sopenharmony_ci	<reg64 offset="0x092B" name="CP_IB2_BASE"/>
1062bf215546Sopenharmony_ci	<reg32 offset="0x092D" name="CP_IB2_REM_SIZE"/>
1063bf215546Sopenharmony_ci	<!-- SDS == CP_SET_DRAW_STATE: -->
1064bf215546Sopenharmony_ci	<reg64 offset="0x092e" name="CP_SDS_BASE"/>
1065bf215546Sopenharmony_ci	<reg32 offset="0x0930" name="CP_SDS_REM_SIZE"/>
1066bf215546Sopenharmony_ci	<!-- MRB == MEM_READ_ADDR/$addr in SQE firmware -->
1067bf215546Sopenharmony_ci	<reg64 offset="0x0931" name="CP_MRB_BASE"/>
1068bf215546Sopenharmony_ci	<reg32 offset="0x0933" name="CP_MRB_REM_SIZE"/>
1069bf215546Sopenharmony_ci	<!--
1070bf215546Sopenharmony_ci	VSD == Visibility Stream Decode
1071bf215546Sopenharmony_ci	This is used by CP to read the draw stream and skip empty draws
1072bf215546Sopenharmony_ci	-->
1073bf215546Sopenharmony_ci	<reg64 offset="0x0934" name="CP_VSD_BASE"/>
1074bf215546Sopenharmony_ci	<reg32 offset="0x0946" name="CP_MRB_DWORDS"/>
1075bf215546Sopenharmony_ci	<reg32 offset="0x0947" name="CP_VSD_DWORDS"/>
1076bf215546Sopenharmony_ci	<!--
1077bf215546Sopenharmony_ci	There are probably similar registers for RB and SDS, teasing out SDS will
1078bf215546Sopenharmony_ci	take a slightly better test case..
1079bf215546Sopenharmony_ci	 -->
1080bf215546Sopenharmony_ci	<reg32 offset="0x0949" name="CP_CSQ_IB1_STAT">
1081bf215546Sopenharmony_ci		<doc>number of remaining dwords incl current dword being consumed?</doc>
1082bf215546Sopenharmony_ci		<bitfield name="REM" low="16" high="31"/>
1083bf215546Sopenharmony_ci	</reg32>
1084bf215546Sopenharmony_ci	<reg32 offset="0x094a" name="CP_CSQ_IB2_STAT">
1085bf215546Sopenharmony_ci		<doc>number of remaining dwords incl current dword being consumed?</doc>
1086bf215546Sopenharmony_ci		<bitfield name="REM" low="16" high="31"/>
1087bf215546Sopenharmony_ci	</reg32>
1088bf215546Sopenharmony_ci	<reg32 offset="0x094c" name="CP_MRQ_MRB_STAT">
1089bf215546Sopenharmony_ci		<doc>number of dwords that have already been read but haven't been consumed by $addr</doc>
1090bf215546Sopenharmony_ci		<bitfield name="REM" low="16" high="31"/>
1091bf215546Sopenharmony_ci	</reg32>
1092bf215546Sopenharmony_ci	<reg64 offset="0x0980" name="CP_ALWAYS_ON_COUNTER"/>
1093bf215546Sopenharmony_ci	<reg32 offset="0x098D" name="CP_AHB_CNTL"/>
1094bf215546Sopenharmony_ci	<reg32 offset="0x0A00" name="CP_APERTURE_CNTL_HOST"/>
1095bf215546Sopenharmony_ci	<reg32 offset="0x0A03" name="CP_APERTURE_CNTL_CD"/>
1096bf215546Sopenharmony_ci	<reg32 offset="0x0B34" name="CP_LPAC_PROG_FIFO_SIZE"/>
1097bf215546Sopenharmony_ci	<reg64 offset="0x0b82" name="CP_LPAC_SQE_INSTR_BASE"/>
1098bf215546Sopenharmony_ci	<reg32 offset="0x0C01" name="VSC_ADDR_MODE_CNTL" type="a5xx_address_mode"/>
1099bf215546Sopenharmony_ci	<reg32 offset="0x0201" name="RBBM_INT_0_STATUS" type="A6XX_RBBM_INT_0_MASK"/>
1100bf215546Sopenharmony_ci	<reg32 offset="0x0210" name="RBBM_STATUS">
1101bf215546Sopenharmony_ci		<bitfield pos="23" name="GPU_BUSY_IGN_AHB" type="boolean"/>
1102bf215546Sopenharmony_ci		<bitfield pos="22" name="GPU_BUSY_IGN_AHB_CP" type="boolean"/>
1103bf215546Sopenharmony_ci		<bitfield pos="21" name="HLSQ_BUSY" type="boolean"/>
1104bf215546Sopenharmony_ci		<bitfield pos="20" name="VSC_BUSY" type="boolean"/>
1105bf215546Sopenharmony_ci		<bitfield pos="19" name="TPL1_BUSY" type="boolean"/>
1106bf215546Sopenharmony_ci		<bitfield pos="18" name="SP_BUSY" type="boolean"/>
1107bf215546Sopenharmony_ci		<bitfield pos="17" name="UCHE_BUSY" type="boolean"/>
1108bf215546Sopenharmony_ci		<bitfield pos="16" name="VPC_BUSY" type="boolean"/>
1109bf215546Sopenharmony_ci		<bitfield pos="15" name="VFD_BUSY" type="boolean"/>
1110bf215546Sopenharmony_ci		<bitfield pos="14" name="TESS_BUSY" type="boolean"/>
1111bf215546Sopenharmony_ci		<bitfield pos="13" name="PC_VSD_BUSY" type="boolean"/>
1112bf215546Sopenharmony_ci		<bitfield pos="12" name="PC_DCALL_BUSY" type="boolean"/>
1113bf215546Sopenharmony_ci		<bitfield pos="11" name="COM_DCOM_BUSY" type="boolean"/>
1114bf215546Sopenharmony_ci		<bitfield pos="10" name="LRZ_BUSY" type="boolean"/>
1115bf215546Sopenharmony_ci		<bitfield pos="9"  name="A2D_BUSY" type="boolean"/>
1116bf215546Sopenharmony_ci		<bitfield pos="8"  name="CCU_BUSY" type="boolean"/>
1117bf215546Sopenharmony_ci		<bitfield pos="7"  name="RB_BUSY" type="boolean"/>
1118bf215546Sopenharmony_ci		<bitfield pos="6"  name="RAS_BUSY" type="boolean"/>
1119bf215546Sopenharmony_ci		<bitfield pos="5"  name="TSE_BUSY" type="boolean"/>
1120bf215546Sopenharmony_ci		<bitfield pos="4"  name="VBIF_BUSY" type="boolean"/>
1121bf215546Sopenharmony_ci		<bitfield pos="3"  name="GFX_DBGC_BUSY" type="boolean"/>
1122bf215546Sopenharmony_ci		<bitfield pos="2"  name="CP_BUSY" type="boolean"/>
1123bf215546Sopenharmony_ci		<bitfield pos="1"  name="CP_AHB_BUSY_CP_MASTER" type="boolean"/>
1124bf215546Sopenharmony_ci		<bitfield pos="0"  name="CP_AHB_BUSY_CX_MASTER" type="boolean"/>
1125bf215546Sopenharmony_ci	</reg32>
1126bf215546Sopenharmony_ci	<reg32 offset="0x0213" name="RBBM_STATUS3">
1127bf215546Sopenharmony_ci		<bitfield pos="24" name="SMMU_STALLED_ON_FAULT" type="boolean"/>
1128bf215546Sopenharmony_ci	</reg32>
1129bf215546Sopenharmony_ci	<reg32 offset="0x0215" name="RBBM_VBIF_GX_RESET_STATUS"/>
1130bf215546Sopenharmony_ci	<array offset="0x0400" name="RBBM_PERFCTR_CP" stride="2" length="14"/>
1131bf215546Sopenharmony_ci	<array offset="0x041c" name="RBBM_PERFCTR_RBBM" stride="2" length="4"/>
1132bf215546Sopenharmony_ci	<array offset="0x0424" name="RBBM_PERFCTR_PC" stride="2" length="8"/>
1133bf215546Sopenharmony_ci	<array offset="0x0434" name="RBBM_PERFCTR_VFD" stride="2" length="8"/>
1134bf215546Sopenharmony_ci	<array offset="0x0444" name="RBBM_PERFCTR_HLSQ" stride="2" length="6"/>
1135bf215546Sopenharmony_ci	<array offset="0x0450" name="RBBM_PERFCTR_VPC" stride="2" length="6"/>
1136bf215546Sopenharmony_ci	<array offset="0x045c" name="RBBM_PERFCTR_CCU" stride="2" length="5"/>
1137bf215546Sopenharmony_ci	<array offset="0x0466" name="RBBM_PERFCTR_TSE" stride="2" length="4"/>
1138bf215546Sopenharmony_ci	<array offset="0x046e" name="RBBM_PERFCTR_RAS" stride="2" length="4"/>
1139bf215546Sopenharmony_ci	<array offset="0x0476" name="RBBM_PERFCTR_UCHE" stride="2" length="12"/>
1140bf215546Sopenharmony_ci	<array offset="0x048e" name="RBBM_PERFCTR_TP" stride="2" length="12"/>
1141bf215546Sopenharmony_ci	<array offset="0x04a6" name="RBBM_PERFCTR_SP" stride="2" length="24"/>
1142bf215546Sopenharmony_ci	<array offset="0x04d6" name="RBBM_PERFCTR_RB" stride="2" length="8"/>
1143bf215546Sopenharmony_ci	<array offset="0x04e6" name="RBBM_PERFCTR_VSC" stride="2" length="2"/>
1144bf215546Sopenharmony_ci	<array offset="0x04ea" name="RBBM_PERFCTR_LRZ" stride="2" length="4"/>
1145bf215546Sopenharmony_ci	<array offset="0x04f2" name="RBBM_PERFCTR_CMP" stride="2" length="4"/>
1146bf215546Sopenharmony_ci	<reg32 offset="0x0500" name="RBBM_PERFCTR_CNTL"/>
1147bf215546Sopenharmony_ci	<reg32 offset="0x0501" name="RBBM_PERFCTR_LOAD_CMD0"/>
1148bf215546Sopenharmony_ci	<reg32 offset="0x0502" name="RBBM_PERFCTR_LOAD_CMD1"/>
1149bf215546Sopenharmony_ci	<reg32 offset="0x0503" name="RBBM_PERFCTR_LOAD_CMD2"/>
1150bf215546Sopenharmony_ci	<reg32 offset="0x0504" name="RBBM_PERFCTR_LOAD_CMD3"/>
1151bf215546Sopenharmony_ci	<reg32 offset="0x0505" name="RBBM_PERFCTR_LOAD_VALUE_LO"/>
1152bf215546Sopenharmony_ci	<reg32 offset="0x0506" name="RBBM_PERFCTR_LOAD_VALUE_HI"/>
1153bf215546Sopenharmony_ci	<array offset="0x0507" name="RBBM_PERFCTR_RBBM_SEL" stride="1" length="4"/>
1154bf215546Sopenharmony_ci	<reg32 offset="0x050B" name="RBBM_PERFCTR_GPU_BUSY_MASKED"/>
1155bf215546Sopenharmony_ci	<reg32 offset="0x050e" name="RBBM_PERFCTR_SRAM_INIT_CMD"/>
1156bf215546Sopenharmony_ci	<reg32 offset="0x050f" name="RBBM_PERFCTR_SRAM_INIT_STATUS"/>
1157bf215546Sopenharmony_ci	<reg32 offset="0x0533" name="RBBM_ISDB_CNT"/>
1158bf215546Sopenharmony_ci
1159bf215546Sopenharmony_ci	<!---
1160bf215546Sopenharmony_ci	    This block of registers aren't tied to perf counters. They
1161bf215546Sopenharmony_ci	    count various geometry stats, for example number of
1162bf215546Sopenharmony_ci	    vertices in, number of primnitives assembled etc.
1163bf215546Sopenharmony_ci	-->
1164bf215546Sopenharmony_ci
1165bf215546Sopenharmony_ci	<reg32 offset="0x0540" name="RBBM_PRIMCTR_0_LO"/>  <!-- vs vertices in -->
1166bf215546Sopenharmony_ci	<reg32 offset="0x0541" name="RBBM_PRIMCTR_0_HI"/>
1167bf215546Sopenharmony_ci	<reg32 offset="0x0542" name="RBBM_PRIMCTR_1_LO"/>  <!-- vs primitives out -->
1168bf215546Sopenharmony_ci	<reg32 offset="0x0543" name="RBBM_PRIMCTR_1_HI"/>
1169bf215546Sopenharmony_ci	<reg32 offset="0x0544" name="RBBM_PRIMCTR_2_LO"/>  <!-- hs vertices in -->
1170bf215546Sopenharmony_ci	<reg32 offset="0x0545" name="RBBM_PRIMCTR_2_HI"/>
1171bf215546Sopenharmony_ci	<reg32 offset="0x0546" name="RBBM_PRIMCTR_3_LO"/>  <!-- hs patches out -->
1172bf215546Sopenharmony_ci	<reg32 offset="0x0547" name="RBBM_PRIMCTR_3_HI"/>
1173bf215546Sopenharmony_ci	<reg32 offset="0x0548" name="RBBM_PRIMCTR_4_LO"/>  <!-- dss vertices in -->
1174bf215546Sopenharmony_ci	<reg32 offset="0x0549" name="RBBM_PRIMCTR_4_HI"/>
1175bf215546Sopenharmony_ci	<reg32 offset="0x054a" name="RBBM_PRIMCTR_5_LO"/>  <!-- ds primitives out -->
1176bf215546Sopenharmony_ci	<reg32 offset="0x054b" name="RBBM_PRIMCTR_5_HI"/>
1177bf215546Sopenharmony_ci	<reg32 offset="0x054c" name="RBBM_PRIMCTR_6_LO"/>  <!-- gs primitives in -->
1178bf215546Sopenharmony_ci	<reg32 offset="0x054d" name="RBBM_PRIMCTR_6_HI"/>
1179bf215546Sopenharmony_ci	<reg32 offset="0x054e" name="RBBM_PRIMCTR_7_LO"/>  <!-- gs primitives out -->
1180bf215546Sopenharmony_ci	<reg32 offset="0x054f" name="RBBM_PRIMCTR_7_HI"/>
1181bf215546Sopenharmony_ci	<reg32 offset="0x0550" name="RBBM_PRIMCTR_8_LO"/>  <!-- gs primitives out -->
1182bf215546Sopenharmony_ci	<reg32 offset="0x0551" name="RBBM_PRIMCTR_8_HI"/>
1183bf215546Sopenharmony_ci	<reg32 offset="0x0552" name="RBBM_PRIMCTR_9_LO"/>  <!-- raster primitives in -->
1184bf215546Sopenharmony_ci	<reg32 offset="0x0553" name="RBBM_PRIMCTR_9_HI"/>
1185bf215546Sopenharmony_ci	<reg32 offset="0x0554" name="RBBM_PRIMCTR_10_LO"/>
1186bf215546Sopenharmony_ci	<reg32 offset="0x0555" name="RBBM_PRIMCTR_10_HI"/>
1187bf215546Sopenharmony_ci
1188bf215546Sopenharmony_ci	<reg32 offset="0xF400" name="RBBM_SECVID_TRUST_CNTL"/>
1189bf215546Sopenharmony_ci	<reg64 offset="0xF800" name="RBBM_SECVID_TSB_TRUSTED_BASE"/>
1190bf215546Sopenharmony_ci	<reg32 offset="0xF802" name="RBBM_SECVID_TSB_TRUSTED_SIZE"/>
1191bf215546Sopenharmony_ci	<reg32 offset="0xF803" name="RBBM_SECVID_TSB_CNTL"/>
1192bf215546Sopenharmony_ci	<reg32 offset="0xF810" name="RBBM_SECVID_TSB_ADDR_MODE_CNTL" type="a5xx_address_mode"/>
1193bf215546Sopenharmony_ci	<reg32 offset="0x00010" name="RBBM_VBIF_CLIENT_QOS_CNTL"/>
1194bf215546Sopenharmony_ci	<reg32 offset="0x00011" name="RBBM_GBIF_CLIENT_QOS_CNTL"/>
1195bf215546Sopenharmony_ci	<reg32 offset="0x0001c" name="RBBM_WAIT_FOR_GPU_IDLE_CMD">
1196bf215546Sopenharmony_ci		<bitfield pos="0" name="WAIT_GPU_IDLE" type="boolean"/>
1197bf215546Sopenharmony_ci	</reg32>
1198bf215546Sopenharmony_ci	<reg32 offset="0x0001f" name="RBBM_INTERFACE_HANG_INT_CNTL"/>
1199bf215546Sopenharmony_ci	<reg32 offset="0x00037" name="RBBM_INT_CLEAR_CMD" type="A6XX_RBBM_INT_0_MASK"/>
1200bf215546Sopenharmony_ci	<reg32 offset="0x00038" name="RBBM_INT_0_MASK"/>
1201bf215546Sopenharmony_ci	<reg32 offset="0x00042" name="RBBM_SP_HYST_CNT"/>
1202bf215546Sopenharmony_ci	<reg32 offset="0x00043" name="RBBM_SW_RESET_CMD"/>
1203bf215546Sopenharmony_ci	<reg32 offset="0x00044" name="RBBM_RAC_THRESHOLD_CNT"/>
1204bf215546Sopenharmony_ci	<reg32 offset="0x00045" name="RBBM_BLOCK_SW_RESET_CMD"/>
1205bf215546Sopenharmony_ci	<reg32 offset="0x00046" name="RBBM_BLOCK_SW_RESET_CMD2"/>
1206bf215546Sopenharmony_ci	<reg32 offset="0x000ae" name="RBBM_CLOCK_CNTL"/>
1207bf215546Sopenharmony_ci	<reg32 offset="0x000b0" name="RBBM_CLOCK_CNTL_SP0"/>
1208bf215546Sopenharmony_ci	<reg32 offset="0x000b1" name="RBBM_CLOCK_CNTL_SP1"/>
1209bf215546Sopenharmony_ci	<reg32 offset="0x000b2" name="RBBM_CLOCK_CNTL_SP2"/>
1210bf215546Sopenharmony_ci	<reg32 offset="0x000b3" name="RBBM_CLOCK_CNTL_SP3"/>
1211bf215546Sopenharmony_ci	<reg32 offset="0x000b4" name="RBBM_CLOCK_CNTL2_SP0"/>
1212bf215546Sopenharmony_ci	<reg32 offset="0x000b5" name="RBBM_CLOCK_CNTL2_SP1"/>
1213bf215546Sopenharmony_ci	<reg32 offset="0x000b6" name="RBBM_CLOCK_CNTL2_SP2"/>
1214bf215546Sopenharmony_ci	<reg32 offset="0x000b7" name="RBBM_CLOCK_CNTL2_SP3"/>
1215bf215546Sopenharmony_ci	<reg32 offset="0x000b8" name="RBBM_CLOCK_DELAY_SP0"/>
1216bf215546Sopenharmony_ci	<reg32 offset="0x000b9" name="RBBM_CLOCK_DELAY_SP1"/>
1217bf215546Sopenharmony_ci	<reg32 offset="0x000ba" name="RBBM_CLOCK_DELAY_SP2"/>
1218bf215546Sopenharmony_ci	<reg32 offset="0x000bb" name="RBBM_CLOCK_DELAY_SP3"/>
1219bf215546Sopenharmony_ci	<reg32 offset="0x000bc" name="RBBM_CLOCK_HYST_SP0"/>
1220bf215546Sopenharmony_ci	<reg32 offset="0x000bd" name="RBBM_CLOCK_HYST_SP1"/>
1221bf215546Sopenharmony_ci	<reg32 offset="0x000be" name="RBBM_CLOCK_HYST_SP2"/>
1222bf215546Sopenharmony_ci	<reg32 offset="0x000bf" name="RBBM_CLOCK_HYST_SP3"/>
1223bf215546Sopenharmony_ci	<reg32 offset="0x000c0" name="RBBM_CLOCK_CNTL_TP0"/>
1224bf215546Sopenharmony_ci	<reg32 offset="0x000c1" name="RBBM_CLOCK_CNTL_TP1"/>
1225bf215546Sopenharmony_ci	<reg32 offset="0x000c2" name="RBBM_CLOCK_CNTL_TP2"/>
1226bf215546Sopenharmony_ci	<reg32 offset="0x000c3" name="RBBM_CLOCK_CNTL_TP3"/>
1227bf215546Sopenharmony_ci	<reg32 offset="0x000c4" name="RBBM_CLOCK_CNTL2_TP0"/>
1228bf215546Sopenharmony_ci	<reg32 offset="0x000c5" name="RBBM_CLOCK_CNTL2_TP1"/>
1229bf215546Sopenharmony_ci	<reg32 offset="0x000c6" name="RBBM_CLOCK_CNTL2_TP2"/>
1230bf215546Sopenharmony_ci	<reg32 offset="0x000c7" name="RBBM_CLOCK_CNTL2_TP3"/>
1231bf215546Sopenharmony_ci	<reg32 offset="0x000c8" name="RBBM_CLOCK_CNTL3_TP0"/>
1232bf215546Sopenharmony_ci	<reg32 offset="0x000c9" name="RBBM_CLOCK_CNTL3_TP1"/>
1233bf215546Sopenharmony_ci	<reg32 offset="0x000ca" name="RBBM_CLOCK_CNTL3_TP2"/>
1234bf215546Sopenharmony_ci	<reg32 offset="0x000cb" name="RBBM_CLOCK_CNTL3_TP3"/>
1235bf215546Sopenharmony_ci	<reg32 offset="0x000cc" name="RBBM_CLOCK_CNTL4_TP0"/>
1236bf215546Sopenharmony_ci	<reg32 offset="0x000cd" name="RBBM_CLOCK_CNTL4_TP1"/>
1237bf215546Sopenharmony_ci	<reg32 offset="0x000ce" name="RBBM_CLOCK_CNTL4_TP2"/>
1238bf215546Sopenharmony_ci	<reg32 offset="0x000cf" name="RBBM_CLOCK_CNTL4_TP3"/>
1239bf215546Sopenharmony_ci	<reg32 offset="0x000d0" name="RBBM_CLOCK_DELAY_TP0"/>
1240bf215546Sopenharmony_ci	<reg32 offset="0x000d1" name="RBBM_CLOCK_DELAY_TP1"/>
1241bf215546Sopenharmony_ci	<reg32 offset="0x000d2" name="RBBM_CLOCK_DELAY_TP2"/>
1242bf215546Sopenharmony_ci	<reg32 offset="0x000d3" name="RBBM_CLOCK_DELAY_TP3"/>
1243bf215546Sopenharmony_ci	<reg32 offset="0x000d4" name="RBBM_CLOCK_DELAY2_TP0"/>
1244bf215546Sopenharmony_ci	<reg32 offset="0x000d5" name="RBBM_CLOCK_DELAY2_TP1"/>
1245bf215546Sopenharmony_ci	<reg32 offset="0x000d6" name="RBBM_CLOCK_DELAY2_TP2"/>
1246bf215546Sopenharmony_ci	<reg32 offset="0x000d7" name="RBBM_CLOCK_DELAY2_TP3"/>
1247bf215546Sopenharmony_ci	<reg32 offset="0x000d8" name="RBBM_CLOCK_DELAY3_TP0"/>
1248bf215546Sopenharmony_ci	<reg32 offset="0x000d9" name="RBBM_CLOCK_DELAY3_TP1"/>
1249bf215546Sopenharmony_ci	<reg32 offset="0x000da" name="RBBM_CLOCK_DELAY3_TP2"/>
1250bf215546Sopenharmony_ci	<reg32 offset="0x000db" name="RBBM_CLOCK_DELAY3_TP3"/>
1251bf215546Sopenharmony_ci	<reg32 offset="0x000dc" name="RBBM_CLOCK_DELAY4_TP0"/>
1252bf215546Sopenharmony_ci	<reg32 offset="0x000dd" name="RBBM_CLOCK_DELAY4_TP1"/>
1253bf215546Sopenharmony_ci	<reg32 offset="0x000de" name="RBBM_CLOCK_DELAY4_TP2"/>
1254bf215546Sopenharmony_ci	<reg32 offset="0x000df" name="RBBM_CLOCK_DELAY4_TP3"/>
1255bf215546Sopenharmony_ci	<reg32 offset="0x000e0" name="RBBM_CLOCK_HYST_TP0"/>
1256bf215546Sopenharmony_ci	<reg32 offset="0x000e1" name="RBBM_CLOCK_HYST_TP1"/>
1257bf215546Sopenharmony_ci	<reg32 offset="0x000e2" name="RBBM_CLOCK_HYST_TP2"/>
1258bf215546Sopenharmony_ci	<reg32 offset="0x000e3" name="RBBM_CLOCK_HYST_TP3"/>
1259bf215546Sopenharmony_ci	<reg32 offset="0x000e4" name="RBBM_CLOCK_HYST2_TP0"/>
1260bf215546Sopenharmony_ci	<reg32 offset="0x000e5" name="RBBM_CLOCK_HYST2_TP1"/>
1261bf215546Sopenharmony_ci	<reg32 offset="0x000e6" name="RBBM_CLOCK_HYST2_TP2"/>
1262bf215546Sopenharmony_ci	<reg32 offset="0x000e7" name="RBBM_CLOCK_HYST2_TP3"/>
1263bf215546Sopenharmony_ci	<reg32 offset="0x000e8" name="RBBM_CLOCK_HYST3_TP0"/>
1264bf215546Sopenharmony_ci	<reg32 offset="0x000e9" name="RBBM_CLOCK_HYST3_TP1"/>
1265bf215546Sopenharmony_ci	<reg32 offset="0x000ea" name="RBBM_CLOCK_HYST3_TP2"/>
1266bf215546Sopenharmony_ci	<reg32 offset="0x000eb" name="RBBM_CLOCK_HYST3_TP3"/>
1267bf215546Sopenharmony_ci	<reg32 offset="0x000ec" name="RBBM_CLOCK_HYST4_TP0"/>
1268bf215546Sopenharmony_ci	<reg32 offset="0x000ed" name="RBBM_CLOCK_HYST4_TP1"/>
1269bf215546Sopenharmony_ci	<reg32 offset="0x000ee" name="RBBM_CLOCK_HYST4_TP2"/>
1270bf215546Sopenharmony_ci	<reg32 offset="0x000ef" name="RBBM_CLOCK_HYST4_TP3"/>
1271bf215546Sopenharmony_ci	<reg32 offset="0x000f0" name="RBBM_CLOCK_CNTL_RB0"/>
1272bf215546Sopenharmony_ci	<reg32 offset="0x000f1" name="RBBM_CLOCK_CNTL_RB1"/>
1273bf215546Sopenharmony_ci	<reg32 offset="0x000f2" name="RBBM_CLOCK_CNTL_RB2"/>
1274bf215546Sopenharmony_ci	<reg32 offset="0x000f3" name="RBBM_CLOCK_CNTL_RB3"/>
1275bf215546Sopenharmony_ci	<reg32 offset="0x000f4" name="RBBM_CLOCK_CNTL2_RB0"/>
1276bf215546Sopenharmony_ci	<reg32 offset="0x000f5" name="RBBM_CLOCK_CNTL2_RB1"/>
1277bf215546Sopenharmony_ci	<reg32 offset="0x000f6" name="RBBM_CLOCK_CNTL2_RB2"/>
1278bf215546Sopenharmony_ci	<reg32 offset="0x000f7" name="RBBM_CLOCK_CNTL2_RB3"/>
1279bf215546Sopenharmony_ci	<reg32 offset="0x000f8" name="RBBM_CLOCK_CNTL_CCU0"/>
1280bf215546Sopenharmony_ci	<reg32 offset="0x000f9" name="RBBM_CLOCK_CNTL_CCU1"/>
1281bf215546Sopenharmony_ci	<reg32 offset="0x000fa" name="RBBM_CLOCK_CNTL_CCU2"/>
1282bf215546Sopenharmony_ci	<reg32 offset="0x000fb" name="RBBM_CLOCK_CNTL_CCU3"/>
1283bf215546Sopenharmony_ci	<reg32 offset="0x00100" name="RBBM_CLOCK_HYST_RB_CCU0"/>
1284bf215546Sopenharmony_ci	<reg32 offset="0x00101" name="RBBM_CLOCK_HYST_RB_CCU1"/>
1285bf215546Sopenharmony_ci	<reg32 offset="0x00102" name="RBBM_CLOCK_HYST_RB_CCU2"/>
1286bf215546Sopenharmony_ci	<reg32 offset="0x00103" name="RBBM_CLOCK_HYST_RB_CCU3"/>
1287bf215546Sopenharmony_ci	<reg32 offset="0x00104" name="RBBM_CLOCK_CNTL_RAC"/>
1288bf215546Sopenharmony_ci	<reg32 offset="0x00105" name="RBBM_CLOCK_CNTL2_RAC"/>
1289bf215546Sopenharmony_ci	<reg32 offset="0x00106" name="RBBM_CLOCK_DELAY_RAC"/>
1290bf215546Sopenharmony_ci	<reg32 offset="0x00107" name="RBBM_CLOCK_HYST_RAC"/>
1291bf215546Sopenharmony_ci	<reg32 offset="0x00108" name="RBBM_CLOCK_CNTL_TSE_RAS_RBBM"/>
1292bf215546Sopenharmony_ci	<reg32 offset="0x00109" name="RBBM_CLOCK_DELAY_TSE_RAS_RBBM"/>
1293bf215546Sopenharmony_ci	<reg32 offset="0x0010a" name="RBBM_CLOCK_HYST_TSE_RAS_RBBM"/>
1294bf215546Sopenharmony_ci	<reg32 offset="0x0010b" name="RBBM_CLOCK_CNTL_UCHE"/>
1295bf215546Sopenharmony_ci	<reg32 offset="0x0010c" name="RBBM_CLOCK_CNTL2_UCHE"/>
1296bf215546Sopenharmony_ci	<reg32 offset="0x0010d" name="RBBM_CLOCK_CNTL3_UCHE"/>
1297bf215546Sopenharmony_ci	<reg32 offset="0x0010e" name="RBBM_CLOCK_CNTL4_UCHE"/>
1298bf215546Sopenharmony_ci	<reg32 offset="0x0010f" name="RBBM_CLOCK_DELAY_UCHE"/>
1299bf215546Sopenharmony_ci	<reg32 offset="0x00110" name="RBBM_CLOCK_HYST_UCHE"/>
1300bf215546Sopenharmony_ci	<reg32 offset="0x00111" name="RBBM_CLOCK_MODE_VFD"/>
1301bf215546Sopenharmony_ci	<reg32 offset="0x00112" name="RBBM_CLOCK_DELAY_VFD"/>
1302bf215546Sopenharmony_ci	<reg32 offset="0x00113" name="RBBM_CLOCK_HYST_VFD"/>
1303bf215546Sopenharmony_ci	<reg32 offset="0x00114" name="RBBM_CLOCK_MODE_GPC"/>
1304bf215546Sopenharmony_ci	<reg32 offset="0x00115" name="RBBM_CLOCK_DELAY_GPC"/>
1305bf215546Sopenharmony_ci	<reg32 offset="0x00116" name="RBBM_CLOCK_HYST_GPC"/>
1306bf215546Sopenharmony_ci	<reg32 offset="0x00117" name="RBBM_CLOCK_DELAY_HLSQ_2"/>
1307bf215546Sopenharmony_ci	<reg32 offset="0x00118" name="RBBM_CLOCK_CNTL_GMU_GX"/>
1308bf215546Sopenharmony_ci	<reg32 offset="0x00119" name="RBBM_CLOCK_DELAY_GMU_GX"/>
1309bf215546Sopenharmony_ci	<reg32 offset="0x0011a" name="RBBM_CLOCK_HYST_GMU_GX"/>
1310bf215546Sopenharmony_ci	<reg32 offset="0x0011b" name="RBBM_CLOCK_MODE_HLSQ"/>
1311bf215546Sopenharmony_ci	<reg32 offset="0x0011c" name="RBBM_CLOCK_DELAY_HLSQ"/>
1312bf215546Sopenharmony_ci	<reg32 offset="0x0011d" name="RBBM_CLOCK_HYST_HLSQ"/>
1313bf215546Sopenharmony_ci	<reg32 offset="0x00120" name="RBBM_CLOCK_CNTL_TEX_FCHE"/>
1314bf215546Sopenharmony_ci	<reg32 offset="0x00121" name="RBBM_CLOCK_DELAY_TEX_FCHE"/>
1315bf215546Sopenharmony_ci	<reg32 offset="0x00122" name="RBBM_CLOCK_HYST_TEX_FCHE"/>
1316bf215546Sopenharmony_ci
1317bf215546Sopenharmony_ci	<reg32 offset="0x0600" name="DBGC_CFG_DBGBUS_SEL_A"/>
1318bf215546Sopenharmony_ci	<reg32 offset="0x0601" name="DBGC_CFG_DBGBUS_SEL_B"/>
1319bf215546Sopenharmony_ci	<reg32 offset="0x0602" name="DBGC_CFG_DBGBUS_SEL_C"/>
1320bf215546Sopenharmony_ci	<reg32 offset="0x0603" name="DBGC_CFG_DBGBUS_SEL_D">
1321bf215546Sopenharmony_ci		<bitfield high="7" low="0" name="PING_INDEX"/>
1322bf215546Sopenharmony_ci		<bitfield high="15" low="8" name="PING_BLK_SEL"/>
1323bf215546Sopenharmony_ci	</reg32>
1324bf215546Sopenharmony_ci	<reg32 offset="0x0604" name="DBGC_CFG_DBGBUS_CNTLT">
1325bf215546Sopenharmony_ci		<bitfield high="5" low="0" name="TRACEEN"/>
1326bf215546Sopenharmony_ci		<bitfield high="14" low="12" name="GRANU"/>
1327bf215546Sopenharmony_ci		<bitfield high="31" low="28" name="SEGT"/>
1328bf215546Sopenharmony_ci	</reg32>
1329bf215546Sopenharmony_ci	<reg32 offset="0x0605" name="DBGC_CFG_DBGBUS_CNTLM">
1330bf215546Sopenharmony_ci		<bitfield high="27" low="24" name="ENABLE"/>
1331bf215546Sopenharmony_ci	</reg32>
1332bf215546Sopenharmony_ci	<reg32 offset="0x0608" name="DBGC_CFG_DBGBUS_IVTL_0"/>
1333bf215546Sopenharmony_ci	<reg32 offset="0x0609" name="DBGC_CFG_DBGBUS_IVTL_1"/>
1334bf215546Sopenharmony_ci	<reg32 offset="0x060a" name="DBGC_CFG_DBGBUS_IVTL_2"/>
1335bf215546Sopenharmony_ci	<reg32 offset="0x060b" name="DBGC_CFG_DBGBUS_IVTL_3"/>
1336bf215546Sopenharmony_ci	<reg32 offset="0x060c" name="DBGC_CFG_DBGBUS_MASKL_0"/>
1337bf215546Sopenharmony_ci	<reg32 offset="0x060d" name="DBGC_CFG_DBGBUS_MASKL_1"/>
1338bf215546Sopenharmony_ci	<reg32 offset="0x060e" name="DBGC_CFG_DBGBUS_MASKL_2"/>
1339bf215546Sopenharmony_ci	<reg32 offset="0x060f" name="DBGC_CFG_DBGBUS_MASKL_3"/>
1340bf215546Sopenharmony_ci	<reg32 offset="0x0610" name="DBGC_CFG_DBGBUS_BYTEL_0">
1341bf215546Sopenharmony_ci		<bitfield high="3" low="0" name="BYTEL0"/>
1342bf215546Sopenharmony_ci		<bitfield high="7" low="4" name="BYTEL1"/>
1343bf215546Sopenharmony_ci		<bitfield high="11" low="8" name="BYTEL2"/>
1344bf215546Sopenharmony_ci		<bitfield high="15" low="12" name="BYTEL3"/>
1345bf215546Sopenharmony_ci		<bitfield high="19" low="16" name="BYTEL4"/>
1346bf215546Sopenharmony_ci		<bitfield high="23" low="20" name="BYTEL5"/>
1347bf215546Sopenharmony_ci		<bitfield high="27" low="24" name="BYTEL6"/>
1348bf215546Sopenharmony_ci		<bitfield high="31" low="28" name="BYTEL7"/>
1349bf215546Sopenharmony_ci	</reg32>
1350bf215546Sopenharmony_ci	<reg32 offset="0x0611" name="DBGC_CFG_DBGBUS_BYTEL_1">
1351bf215546Sopenharmony_ci		<bitfield high="3" low="0" name="BYTEL8"/>
1352bf215546Sopenharmony_ci		<bitfield high="7" low="4" name="BYTEL9"/>
1353bf215546Sopenharmony_ci		<bitfield high="11" low="8" name="BYTEL10"/>
1354bf215546Sopenharmony_ci		<bitfield high="15" low="12" name="BYTEL11"/>
1355bf215546Sopenharmony_ci		<bitfield high="19" low="16" name="BYTEL12"/>
1356bf215546Sopenharmony_ci		<bitfield high="23" low="20" name="BYTEL13"/>
1357bf215546Sopenharmony_ci		<bitfield high="27" low="24" name="BYTEL14"/>
1358bf215546Sopenharmony_ci		<bitfield high="31" low="28" name="BYTEL15"/>
1359bf215546Sopenharmony_ci	</reg32>
1360bf215546Sopenharmony_ci	<reg32 offset="0x062f" name="DBGC_CFG_DBGBUS_TRACE_BUF1"/>
1361bf215546Sopenharmony_ci	<reg32 offset="0x0630" name="DBGC_CFG_DBGBUS_TRACE_BUF2"/>
1362bf215546Sopenharmony_ci	<array offset="0x0CD8" name="VSC_PERFCTR_VSC_SEL" stride="1" length="2"/>
1363bf215546Sopenharmony_ci	<reg32 offset="0xC800" name="HLSQ_DBG_AHB_READ_APERTURE"/>
1364bf215546Sopenharmony_ci	<reg32 offset="0xD000" name="HLSQ_DBG_READ_SEL"/>
1365bf215546Sopenharmony_ci	<reg32 offset="0x0E00" name="UCHE_ADDR_MODE_CNTL" type="a5xx_address_mode"/>
1366bf215546Sopenharmony_ci	<reg32 offset="0x0E01" name="UCHE_MODE_CNTL"/>
1367bf215546Sopenharmony_ci	<reg64 offset="0x0E05" name="UCHE_WRITE_RANGE_MAX"/>
1368bf215546Sopenharmony_ci	<reg64 offset="0x0E07" name="UCHE_WRITE_THRU_BASE"/>
1369bf215546Sopenharmony_ci	<reg64 offset="0x0E09" name="UCHE_TRAP_BASE"/>
1370bf215546Sopenharmony_ci	<reg64 offset="0x0E0B" name="UCHE_GMEM_RANGE_MIN"/>
1371bf215546Sopenharmony_ci	<reg64 offset="0x0E0D" name="UCHE_GMEM_RANGE_MAX"/>
1372bf215546Sopenharmony_ci	<reg32 offset="0x0E17" name="UCHE_CACHE_WAYS"/>
1373bf215546Sopenharmony_ci	<reg32 offset="0x0E18" name="UCHE_FILTER_CNTL"/>
1374bf215546Sopenharmony_ci	<reg32 offset="0x0E19" name="UCHE_CLIENT_PF">
1375bf215546Sopenharmony_ci		<bitfield high="7" low="0" name="PERFSEL"/>
1376bf215546Sopenharmony_ci	</reg32>
1377bf215546Sopenharmony_ci	<array offset="0x0E1C" name="UCHE_PERFCTR_UCHE_SEL" stride="1" length="12"/>
1378bf215546Sopenharmony_ci	<reg32 offset="0x0e3c" name="UCHE_CMDQ_CONFIG"/>
1379bf215546Sopenharmony_ci
1380bf215546Sopenharmony_ci	<reg32 offset="0x3000" name="VBIF_VERSION"/>
1381bf215546Sopenharmony_ci	<reg32 offset="0x3001" name="VBIF_CLKON">
1382bf215546Sopenharmony_ci		<bitfield pos="1" name="FORCE_ON_TESTBUS" type="boolean"/>
1383bf215546Sopenharmony_ci	</reg32>
1384bf215546Sopenharmony_ci	<reg32 offset="0x302A" name="VBIF_GATE_OFF_WRREQ_EN"/>
1385bf215546Sopenharmony_ci	<reg32 offset="0x3080" name="VBIF_XIN_HALT_CTRL0"/>
1386bf215546Sopenharmony_ci	<reg32 offset="0x3081" name="VBIF_XIN_HALT_CTRL1"/>
1387bf215546Sopenharmony_ci	<reg32 offset="0x3084" name="VBIF_TEST_BUS_OUT_CTRL"/>
1388bf215546Sopenharmony_ci	<reg32 offset="0x3085" name="VBIF_TEST_BUS1_CTRL0"/>
1389bf215546Sopenharmony_ci	<reg32 offset="0x3086" name="VBIF_TEST_BUS1_CTRL1">
1390bf215546Sopenharmony_ci		<bitfield low="0" high="3" name="DATA_SEL"/>
1391bf215546Sopenharmony_ci	</reg32>
1392bf215546Sopenharmony_ci	<reg32 offset="0x3087" name="VBIF_TEST_BUS2_CTRL0"/>
1393bf215546Sopenharmony_ci	<reg32 offset="0x3088" name="VBIF_TEST_BUS2_CTRL1">
1394bf215546Sopenharmony_ci		<bitfield low="0" high="8" name="DATA_SEL"/>
1395bf215546Sopenharmony_ci	</reg32>
1396bf215546Sopenharmony_ci	<reg32 offset="0x308c" name="VBIF_TEST_BUS_OUT"/>
1397bf215546Sopenharmony_ci	<reg32 offset="0x30d0" name="VBIF_PERF_CNT_SEL0"/>
1398bf215546Sopenharmony_ci	<reg32 offset="0x30d1" name="VBIF_PERF_CNT_SEL1"/>
1399bf215546Sopenharmony_ci	<reg32 offset="0x30d2" name="VBIF_PERF_CNT_SEL2"/>
1400bf215546Sopenharmony_ci	<reg32 offset="0x30d3" name="VBIF_PERF_CNT_SEL3"/>
1401bf215546Sopenharmony_ci	<reg32 offset="0x30d8" name="VBIF_PERF_CNT_LOW0"/>
1402bf215546Sopenharmony_ci	<reg32 offset="0x30d9" name="VBIF_PERF_CNT_LOW1"/>
1403bf215546Sopenharmony_ci	<reg32 offset="0x30da" name="VBIF_PERF_CNT_LOW2"/>
1404bf215546Sopenharmony_ci	<reg32 offset="0x30db" name="VBIF_PERF_CNT_LOW3"/>
1405bf215546Sopenharmony_ci	<reg32 offset="0x30e0" name="VBIF_PERF_CNT_HIGH0"/>
1406bf215546Sopenharmony_ci	<reg32 offset="0x30e1" name="VBIF_PERF_CNT_HIGH1"/>
1407bf215546Sopenharmony_ci	<reg32 offset="0x30e2" name="VBIF_PERF_CNT_HIGH2"/>
1408bf215546Sopenharmony_ci	<reg32 offset="0x30e3" name="VBIF_PERF_CNT_HIGH3"/>
1409bf215546Sopenharmony_ci	<reg32 offset="0x3100" name="VBIF_PERF_PWR_CNT_EN0"/>
1410bf215546Sopenharmony_ci	<reg32 offset="0x3101" name="VBIF_PERF_PWR_CNT_EN1"/>
1411bf215546Sopenharmony_ci	<reg32 offset="0x3102" name="VBIF_PERF_PWR_CNT_EN2"/>
1412bf215546Sopenharmony_ci	<reg32 offset="0x3110" name="VBIF_PERF_PWR_CNT_LOW0"/>
1413bf215546Sopenharmony_ci	<reg32 offset="0x3111" name="VBIF_PERF_PWR_CNT_LOW1"/>
1414bf215546Sopenharmony_ci	<reg32 offset="0x3112" name="VBIF_PERF_PWR_CNT_LOW2"/>
1415bf215546Sopenharmony_ci	<reg32 offset="0x3118" name="VBIF_PERF_PWR_CNT_HIGH0"/>
1416bf215546Sopenharmony_ci	<reg32 offset="0x3119" name="VBIF_PERF_PWR_CNT_HIGH1"/>
1417bf215546Sopenharmony_ci	<reg32 offset="0x311a" name="VBIF_PERF_PWR_CNT_HIGH2"/>
1418bf215546Sopenharmony_ci
1419bf215546Sopenharmony_ci	<reg32 offset="0x3c01" name="GBIF_SCACHE_CNTL0"/>
1420bf215546Sopenharmony_ci	<reg32 offset="0x3c02" name="GBIF_SCACHE_CNTL1"/>
1421bf215546Sopenharmony_ci	<reg32 offset="0x3c03" name="GBIF_QSB_SIDE0"/>
1422bf215546Sopenharmony_ci	<reg32 offset="0x3c04" name="GBIF_QSB_SIDE1"/>
1423bf215546Sopenharmony_ci	<reg32 offset="0x3c05" name="GBIF_QSB_SIDE2"/>
1424bf215546Sopenharmony_ci	<reg32 offset="0x3c06" name="GBIF_QSB_SIDE3"/>
1425bf215546Sopenharmony_ci	<reg32 offset="0x3c45" name="GBIF_HALT"/>
1426bf215546Sopenharmony_ci	<reg32 offset="0x3c46" name="GBIF_HALT_ACK"/>
1427bf215546Sopenharmony_ci	<reg32 offset="0x3cc0" name="GBIF_PERF_PWR_CNT_EN"/>
1428bf215546Sopenharmony_ci	<reg32 offset="0x3cc2" name="GBIF_PERF_CNT_SEL"/>
1429bf215546Sopenharmony_ci	<reg32 offset="0x3cc3" name="GBIF_PERF_PWR_CNT_SEL"/>
1430bf215546Sopenharmony_ci	<reg32 offset="0x3cc4" name="GBIF_PERF_CNT_LOW0"/>
1431bf215546Sopenharmony_ci	<reg32 offset="0x3cc5" name="GBIF_PERF_CNT_LOW1"/>
1432bf215546Sopenharmony_ci	<reg32 offset="0x3cc6" name="GBIF_PERF_CNT_LOW2"/>
1433bf215546Sopenharmony_ci	<reg32 offset="0x3cc7" name="GBIF_PERF_CNT_LOW3"/>
1434bf215546Sopenharmony_ci	<reg32 offset="0x3cc8" name="GBIF_PERF_CNT_HIGH0"/>
1435bf215546Sopenharmony_ci	<reg32 offset="0x3cc9" name="GBIF_PERF_CNT_HIGH1"/>
1436bf215546Sopenharmony_ci	<reg32 offset="0x3cca" name="GBIF_PERF_CNT_HIGH2"/>
1437bf215546Sopenharmony_ci	<reg32 offset="0x3ccb" name="GBIF_PERF_CNT_HIGH3"/>
1438bf215546Sopenharmony_ci	<reg32 offset="0x3ccc" name="GBIF_PWR_CNT_LOW0"/>
1439bf215546Sopenharmony_ci	<reg32 offset="0x3ccd" name="GBIF_PWR_CNT_LOW1"/>
1440bf215546Sopenharmony_ci	<reg32 offset="0x3cce" name="GBIF_PWR_CNT_LOW2"/>
1441bf215546Sopenharmony_ci	<reg32 offset="0x3ccf" name="GBIF_PWR_CNT_HIGH0"/>
1442bf215546Sopenharmony_ci	<reg32 offset="0x3cd0" name="GBIF_PWR_CNT_HIGH1"/>
1443bf215546Sopenharmony_ci	<reg32 offset="0x3cd1" name="GBIF_PWR_CNT_HIGH2"/>
1444bf215546Sopenharmony_ci
1445bf215546Sopenharmony_ci	<reg32 offset="0x0c00" name="VSC_DBG_ECO_CNTL"/>
1446bf215546Sopenharmony_ci	<reg32 offset="0x0c02" name="VSC_BIN_SIZE">
1447bf215546Sopenharmony_ci		<bitfield name="WIDTH" low="0" high="7" shr="5" type="uint"/>
1448bf215546Sopenharmony_ci		<bitfield name="HEIGHT" low="8" high="16" shr="4" type="uint"/>
1449bf215546Sopenharmony_ci	</reg32>
1450bf215546Sopenharmony_ci	<reg64 offset="0x0c03" name="VSC_DRAW_STRM_SIZE_ADDRESS" type="waddress"/>
1451bf215546Sopenharmony_ci	<reg32 offset="0x0c06" name="VSC_BIN_COUNT">
1452bf215546Sopenharmony_ci		<bitfield name="NX" low="1" high="10" type="uint"/>
1453bf215546Sopenharmony_ci		<bitfield name="NY" low="11" high="20" type="uint"/>
1454bf215546Sopenharmony_ci	</reg32>
1455bf215546Sopenharmony_ci	<array offset="0x0c10" name="VSC_PIPE_CONFIG" stride="1" length="32">
1456bf215546Sopenharmony_ci		<reg32 offset="0x0" name="REG">
1457bf215546Sopenharmony_ci			<doc>
1458bf215546Sopenharmony_ci				Configures the mapping between VSC_PIPE buffer and
1459bf215546Sopenharmony_ci				bin, X/Y specify the bin index in the horiz/vert
1460bf215546Sopenharmony_ci				direction (0,0 is upper left, 0,1 is leftmost bin
1461bf215546Sopenharmony_ci				on second row, and so on).  W/H specify the number
1462bf215546Sopenharmony_ci				of bins assigned to this VSC_PIPE in the horiz/vert
1463bf215546Sopenharmony_ci				dimension.
1464bf215546Sopenharmony_ci			</doc>
1465bf215546Sopenharmony_ci			<bitfield name="X" low="0" high="9" type="uint"/>
1466bf215546Sopenharmony_ci			<bitfield name="Y" low="10" high="19" type="uint"/>
1467bf215546Sopenharmony_ci			<bitfield name="W" low="20" high="25" type="uint"/>
1468bf215546Sopenharmony_ci			<bitfield name="H" low="26" high="31" type="uint"/>
1469bf215546Sopenharmony_ci		</reg32>
1470bf215546Sopenharmony_ci	</array>
1471bf215546Sopenharmony_ci	<!--
1472bf215546Sopenharmony_ci	HW binning primitive & draw streams, which enable draws and primitives
1473bf215546Sopenharmony_ci	within a draw to be skipped in the main tile pass.  See:
1474bf215546Sopenharmony_ci	https://github.com/freedreno/freedreno/wiki/Visibility-Stream-Format
1475bf215546Sopenharmony_ci
1476bf215546Sopenharmony_ci	Compared to a5xx and earlier, we just program the address of the first
1477bf215546Sopenharmony_ci	stream and hw adds (pipe_num * VSC_*_STRM_PITCH)
1478bf215546Sopenharmony_ci
1479bf215546Sopenharmony_ci	LIMIT is set to PITCH - 64, to make room for a bit of overflow
1480bf215546Sopenharmony_ci	 -->
1481bf215546Sopenharmony_ci	<reg64 offset="0x0c30" name="VSC_PRIM_STRM_ADDRESS" type="waddress"/>
1482bf215546Sopenharmony_ci	<reg32 offset="0x0c32" name="VSC_PRIM_STRM_PITCH"/>
1483bf215546Sopenharmony_ci	<reg32 offset="0x0c33" name="VSC_PRIM_STRM_LIMIT"/>
1484bf215546Sopenharmony_ci	<reg64 offset="0x0c34" name="VSC_DRAW_STRM_ADDRESS" type="waddress"/>
1485bf215546Sopenharmony_ci	<reg32 offset="0x0c36" name="VSC_DRAW_STRM_PITCH"/>
1486bf215546Sopenharmony_ci	<reg32 offset="0x0c37" name="VSC_DRAW_STRM_LIMIT"/>
1487bf215546Sopenharmony_ci
1488bf215546Sopenharmony_ci	<array offset="0x0c38" name="VSC_STATE" stride="1" length="32">
1489bf215546Sopenharmony_ci		<doc>
1490bf215546Sopenharmony_ci			Seems to be a bitmap of which tiles mapped to the VSC
1491bf215546Sopenharmony_ci			pipe contain geometry.
1492bf215546Sopenharmony_ci
1493bf215546Sopenharmony_ci			I suppose we can connect a maximum of 32 tiles to a
1494bf215546Sopenharmony_ci			single VSC pipe.
1495bf215546Sopenharmony_ci		</doc>
1496bf215546Sopenharmony_ci		<reg32 offset="0x0" name="REG"/>
1497bf215546Sopenharmony_ci	</array>
1498bf215546Sopenharmony_ci
1499bf215546Sopenharmony_ci	<array offset="0x0c58" name="VSC_PRIM_STRM_SIZE" stride="1" length="32">
1500bf215546Sopenharmony_ci		<doc>
1501bf215546Sopenharmony_ci			Has the size of data written to corresponding VSC_PRIM_STRM
1502bf215546Sopenharmony_ci			buffer.
1503bf215546Sopenharmony_ci		</doc>
1504bf215546Sopenharmony_ci		<reg32 offset="0x0" name="REG"/>
1505bf215546Sopenharmony_ci	</array>
1506bf215546Sopenharmony_ci
1507bf215546Sopenharmony_ci	<array offset="0x0c78" name="VSC_DRAW_STRM_SIZE" stride="1" length="32">
1508bf215546Sopenharmony_ci		<doc>
1509bf215546Sopenharmony_ci			Has the size of data written to corresponding VSC pipe, ie.
1510bf215546Sopenharmony_ci			same thing that is written out to VSC_DRAW_STRM_SIZE_ADDRESS_LO/HI
1511bf215546Sopenharmony_ci		</doc>
1512bf215546Sopenharmony_ci		<reg32 offset="0x0" name="REG"/>
1513bf215546Sopenharmony_ci	</array>
1514bf215546Sopenharmony_ci
1515bf215546Sopenharmony_ci	<!-- always 0x03200000 ? -->
1516bf215546Sopenharmony_ci	<reg32 offset="0x0e12" name="UCHE_UNKNOWN_0E12"/>
1517bf215546Sopenharmony_ci
1518bf215546Sopenharmony_ci	<!-- adreno_reg_xy has 15 bits per coordinate, but a6xx registers only have 14 -->
1519bf215546Sopenharmony_ci	<bitset name="a6xx_reg_xy" inline="yes">
1520bf215546Sopenharmony_ci		<bitfield name="X" low="0" high="13" type="uint"/>
1521bf215546Sopenharmony_ci		<bitfield name="Y" low="16" high="29" type="uint"/>
1522bf215546Sopenharmony_ci	</bitset>
1523bf215546Sopenharmony_ci
1524bf215546Sopenharmony_ci	<reg32 offset="0x8000" name="GRAS_CL_CNTL">
1525bf215546Sopenharmony_ci		<bitfield name="CLIP_DISABLE" pos="0" type="boolean"/>
1526bf215546Sopenharmony_ci		<bitfield name="ZNEAR_CLIP_DISABLE" pos="1" type="boolean"/>
1527bf215546Sopenharmony_ci		<bitfield name="ZFAR_CLIP_DISABLE" pos="2" type="boolean"/>
1528bf215546Sopenharmony_ci		<!-- set with depthClampEnable, not clear what it does -->
1529bf215546Sopenharmony_ci		<bitfield name="UNK5" pos="5" type="boolean"/>
1530bf215546Sopenharmony_ci		<!-- controls near z clip behavior (set for vulkan) -->
1531bf215546Sopenharmony_ci		<bitfield name="ZERO_GB_SCALE_Z" pos="6" type="boolean"/>
1532bf215546Sopenharmony_ci		<!-- guess based on a3xx and meaning of bits 8 and 9
1533bf215546Sopenharmony_ci		     if the guess is right then this is related to point sprite clipping -->
1534bf215546Sopenharmony_ci		<bitfield name="VP_CLIP_CODE_IGNORE" pos="7" type="boolean"/>
1535bf215546Sopenharmony_ci		<bitfield name="VP_XFORM_DISABLE" pos="8" type="boolean"/>
1536bf215546Sopenharmony_ci		<bitfield name="PERSP_DIVISION_DISABLE" pos="9" type="boolean"/>
1537bf215546Sopenharmony_ci	</reg32>
1538bf215546Sopenharmony_ci
1539bf215546Sopenharmony_ci	<bitset name="a6xx_gras_xs_cl_cntl" inline="yes">
1540bf215546Sopenharmony_ci		<bitfield name="CLIP_MASK" low="0" high="7"/>
1541bf215546Sopenharmony_ci		<bitfield name="CULL_MASK" low="8" high="15"/>
1542bf215546Sopenharmony_ci	</bitset>
1543bf215546Sopenharmony_ci	<reg32 offset="0x8001" name="GRAS_VS_CL_CNTL" type="a6xx_gras_xs_cl_cntl"/>
1544bf215546Sopenharmony_ci	<reg32 offset="0x8002" name="GRAS_DS_CL_CNTL" type="a6xx_gras_xs_cl_cntl"/>
1545bf215546Sopenharmony_ci	<reg32 offset="0x8003" name="GRAS_GS_CL_CNTL" type="a6xx_gras_xs_cl_cntl"/>
1546bf215546Sopenharmony_ci	<reg32 offset="0x8004" name="GRAS_MAX_LAYER_INDEX" low="0" high="10" type="uint"/>
1547bf215546Sopenharmony_ci
1548bf215546Sopenharmony_ci	<reg32 offset="0x8005" name="GRAS_CNTL">
1549bf215546Sopenharmony_ci		<!-- see also RB_RENDER_CONTROL0 -->
1550bf215546Sopenharmony_ci		<bitfield name="IJ_PERSP_PIXEL" pos="0" type="boolean"/>
1551bf215546Sopenharmony_ci		<bitfield name="IJ_PERSP_CENTROID" pos="1" type="boolean"/>
1552bf215546Sopenharmony_ci		<bitfield name="IJ_PERSP_SAMPLE" pos="2" type="boolean"/>
1553bf215546Sopenharmony_ci		<bitfield name="IJ_LINEAR_PIXEL" pos="3" type="boolean"/>
1554bf215546Sopenharmony_ci		<bitfield name="IJ_LINEAR_CENTROID" pos="4" type="boolean"/>
1555bf215546Sopenharmony_ci		<bitfield name="IJ_LINEAR_SAMPLE" pos="5" type="boolean"/>
1556bf215546Sopenharmony_ci		<bitfield name="COORD_MASK" low="6" high="9" type="hex"/>
1557bf215546Sopenharmony_ci	</reg32>
1558bf215546Sopenharmony_ci	<reg32 offset="0x8006" name="GRAS_CL_GUARDBAND_CLIP_ADJ">
1559bf215546Sopenharmony_ci		<bitfield name="HORZ" low="0" high="8" type="uint"/>
1560bf215546Sopenharmony_ci		<bitfield name="VERT" low="10" high="18" type="uint"/>
1561bf215546Sopenharmony_ci	</reg32>
1562bf215546Sopenharmony_ci	<!-- 0x8006-0x800f invalid -->
1563bf215546Sopenharmony_ci	<array offset="0x8010" name="GRAS_CL_VPORT" stride="6" length="16">
1564bf215546Sopenharmony_ci		<reg32 offset="0" name="XOFFSET" type="float"/>
1565bf215546Sopenharmony_ci		<reg32 offset="1" name="XSCALE" type="float"/>
1566bf215546Sopenharmony_ci		<reg32 offset="2" name="YOFFSET" type="float"/>
1567bf215546Sopenharmony_ci		<reg32 offset="3" name="YSCALE" type="float"/>
1568bf215546Sopenharmony_ci		<reg32 offset="4" name="ZOFFSET" type="float"/>
1569bf215546Sopenharmony_ci		<reg32 offset="5" name="ZSCALE" type="float"/>
1570bf215546Sopenharmony_ci	</array>
1571bf215546Sopenharmony_ci	<array offset="0x8070" name="GRAS_CL_Z_CLAMP" stride="2" length="16">
1572bf215546Sopenharmony_ci		<reg32 offset="0" name="MIN" type="float"/>
1573bf215546Sopenharmony_ci		<reg32 offset="1" name="MAX" type="float"/>
1574bf215546Sopenharmony_ci	</array>
1575bf215546Sopenharmony_ci
1576bf215546Sopenharmony_ci	<reg32 offset="0x8090" name="GRAS_SU_CNTL">
1577bf215546Sopenharmony_ci		<bitfield name="CULL_FRONT" pos="0" type="boolean"/>
1578bf215546Sopenharmony_ci		<bitfield name="CULL_BACK" pos="1" type="boolean"/>
1579bf215546Sopenharmony_ci		<bitfield name="FRONT_CW" pos="2" type="boolean"/>
1580bf215546Sopenharmony_ci		<bitfield name="LINEHALFWIDTH" low="3" high="10" radix="2" type="fixed"/>
1581bf215546Sopenharmony_ci		<bitfield name="POLY_OFFSET" pos="11" type="boolean"/>
1582bf215546Sopenharmony_ci		<bitfield name="UNK12" pos="12"/>
1583bf215546Sopenharmony_ci		<bitfield name="LINE_MODE" pos="13" type="a5xx_line_mode"/>
1584bf215546Sopenharmony_ci		<bitfield name="UNK15" low="15" high="16"/>
1585bf215546Sopenharmony_ci		<!--
1586bf215546Sopenharmony_ci		This is set by the blob when multiview is enabled, but doesn't seem
1587bf215546Sopenharmony_ci		to do anything.
1588bf215546Sopenharmony_ci		-->
1589bf215546Sopenharmony_ci		<bitfield name="UNK17" pos="17" type="boolean"/>
1590bf215546Sopenharmony_ci		<bitfield name="MULTIVIEW_ENABLE" pos="18" type="boolean"/>
1591bf215546Sopenharmony_ci		<bitfield name="UNK19" low="19" high="22"/>
1592bf215546Sopenharmony_ci	</reg32>
1593bf215546Sopenharmony_ci	<reg32 offset="0x8091" name="GRAS_SU_POINT_MINMAX">
1594bf215546Sopenharmony_ci		<bitfield name="MIN" low="0" high="15" type="ufixed" radix="4"/>
1595bf215546Sopenharmony_ci		<bitfield name="MAX" low="16" high="31" type="ufixed" radix="4"/>
1596bf215546Sopenharmony_ci	</reg32>
1597bf215546Sopenharmony_ci	<reg32 offset="0x8092" name="GRAS_SU_POINT_SIZE" low="0" high="15" type="fixed" radix="4"/>
1598bf215546Sopenharmony_ci	<!-- 0x8093 invalid -->
1599bf215546Sopenharmony_ci	<reg32 offset="0x8094" name="GRAS_SU_DEPTH_PLANE_CNTL">
1600bf215546Sopenharmony_ci		<bitfield name="Z_MODE" low="0" high="1" type="a6xx_ztest_mode"/>
1601bf215546Sopenharmony_ci	</reg32>
1602bf215546Sopenharmony_ci	<reg32 offset="0x8095" name="GRAS_SU_POLY_OFFSET_SCALE" type="float"/>
1603bf215546Sopenharmony_ci	<reg32 offset="0x8096" name="GRAS_SU_POLY_OFFSET_OFFSET" type="float"/>
1604bf215546Sopenharmony_ci	<reg32 offset="0x8097" name="GRAS_SU_POLY_OFFSET_OFFSET_CLAMP" type="float"/>
1605bf215546Sopenharmony_ci	<!-- duplicates RB_DEPTH_BUFFER_INFO: -->
1606bf215546Sopenharmony_ci	<reg32 offset="0x8098" name="GRAS_SU_DEPTH_BUFFER_INFO">
1607bf215546Sopenharmony_ci		<bitfield name="DEPTH_FORMAT" low="0" high="2" type="a6xx_depth_format"/>
1608bf215546Sopenharmony_ci		<bitfield name="UNK3" pos="3"/>
1609bf215546Sopenharmony_ci	</reg32>
1610bf215546Sopenharmony_ci
1611bf215546Sopenharmony_ci	<reg32 offset="0x8099" name="GRAS_SU_CONSERVATIVE_RAS_CNTL">
1612bf215546Sopenharmony_ci		<bitfield name="CONSERVATIVERASEN" pos="0" type="boolean"/>
1613bf215546Sopenharmony_ci		<bitfield name="SHIFTAMOUNT" low="1" high="2"/>
1614bf215546Sopenharmony_ci		<bitfield name="INNERCONSERVATIVERASEN" pos="3" type="boolean"/>
1615bf215546Sopenharmony_ci		<bitfield name="UNK4" low="4" high="5"/>
1616bf215546Sopenharmony_ci	</reg32>
1617bf215546Sopenharmony_ci	<reg32 offset="0x809a" name="GRAS_SU_PATH_RENDERING_CNTL">
1618bf215546Sopenharmony_ci		<bitfield name="UNK0" pos="0" type="boolean"/>
1619bf215546Sopenharmony_ci		<bitfield name="LINELENGTHEN" pos="1" type="boolean"/>
1620bf215546Sopenharmony_ci	</reg32>
1621bf215546Sopenharmony_ci
1622bf215546Sopenharmony_ci	<bitset name="a6xx_gras_layer_cntl" inline="yes">
1623bf215546Sopenharmony_ci		<bitfield name="WRITES_LAYER" pos="0" type="boolean"/>
1624bf215546Sopenharmony_ci		<bitfield name="WRITES_VIEW" pos="1" type="boolean"/>
1625bf215546Sopenharmony_ci	</bitset>
1626bf215546Sopenharmony_ci	<reg32 offset="0x809b" name="GRAS_VS_LAYER_CNTL" type="a6xx_gras_layer_cntl"/>
1627bf215546Sopenharmony_ci	<reg32 offset="0x809c" name="GRAS_GS_LAYER_CNTL" type="a6xx_gras_layer_cntl"/>
1628bf215546Sopenharmony_ci	<reg32 offset="0x809d" name="GRAS_DS_LAYER_CNTL" type="a6xx_gras_layer_cntl"/>
1629bf215546Sopenharmony_ci	<!-- 0x809e/0x809f invalid -->
1630bf215546Sopenharmony_ci
1631bf215546Sopenharmony_ci	<enum name="a6xx_sequenced_thread_dist">
1632bf215546Sopenharmony_ci		<value value="0x0" name="DIST_SCREEN_COORD"/>
1633bf215546Sopenharmony_ci		<value value="0x1" name="DIST_ALL_TO_RB0"/>
1634bf215546Sopenharmony_ci	</enum>
1635bf215546Sopenharmony_ci
1636bf215546Sopenharmony_ci	<enum name="a6xx_single_prim_mode">
1637bf215546Sopenharmony_ci		<value value="0x0" name="NO_FLUSH"/>
1638bf215546Sopenharmony_ci		<doc>
1639bf215546Sopenharmony_ci			In addition to FLUSH_PER_OVERLAP, guarantee that UCHE
1640bf215546Sopenharmony_ci			and CCU don't get out of sync when fetching the previous
1641bf215546Sopenharmony_ci			value for the current pixel. With NO_FLUSH, there's the
1642bf215546Sopenharmony_ci			possibility that the flags for the current pixel are
1643bf215546Sopenharmony_ci			flushed before the data or vice-versa, leading to
1644bf215546Sopenharmony_ci			texture fetches via UCHE getting out of sync values.
1645bf215546Sopenharmony_ci			This mode should eliminate that. It's used in bypass
1646bf215546Sopenharmony_ci			mode for coherent blending
1647bf215546Sopenharmony_ci			(GL_KHR_blend_equation_advanced_coherent) as well as
1648bf215546Sopenharmony_ci			non-coherent blending.
1649bf215546Sopenharmony_ci		</doc>
1650bf215546Sopenharmony_ci		<value value="0x1" name="FLUSH_PER_OVERLAP_AND_OVERWRITE"/>
1651bf215546Sopenharmony_ci		<doc>
1652bf215546Sopenharmony_ci			Invalidate UCHE and wait for any pending work to finish
1653bf215546Sopenharmony_ci			if there was possibly an overlapping primitive prior to
1654bf215546Sopenharmony_ci			the current one. This is similar to a combination of
1655bf215546Sopenharmony_ci			GRAS_SC_CONTROL::INJECT_L2_INVALIDATE_EVENT and
1656bf215546Sopenharmony_ci			WAIT_RB_IDLE_ALL_TRI on a3xx. It's used in GMEM mode for
1657bf215546Sopenharmony_ci			coherent blending
1658bf215546Sopenharmony_ci			(GL_KHR_blend_equation_advanced_coherent).
1659bf215546Sopenharmony_ci		</doc>
1660bf215546Sopenharmony_ci		<value value="0x3" name="FLUSH_PER_OVERLAP"/>
1661bf215546Sopenharmony_ci	</enum>
1662bf215546Sopenharmony_ci
1663bf215546Sopenharmony_ci	<!-- this probably has the same meaning as a3xx GRAS_SC_CONTROL::RASTER_MODE -->
1664bf215546Sopenharmony_ci	<enum name="a6xx_raster_mode">
1665bf215546Sopenharmony_ci		<value value="0x0" name="TYPE_TILED"/>
1666bf215546Sopenharmony_ci		<value value="0x1" name="TYPE_WRITER"/>
1667bf215546Sopenharmony_ci	</enum>
1668bf215546Sopenharmony_ci
1669bf215546Sopenharmony_ci	<!-- I'm guessing this is the same as a3xx -->
1670bf215546Sopenharmony_ci	<enum name="a6xx_raster_direction">
1671bf215546Sopenharmony_ci		<value value="0x0" name="LR_TB"/>
1672bf215546Sopenharmony_ci		<value value="0x1" name="RL_TB"/>
1673bf215546Sopenharmony_ci		<value value="0x2" name="LR_BT"/>
1674bf215546Sopenharmony_ci		<value value="0x3" name="RB_BT"/>
1675bf215546Sopenharmony_ci	</enum>
1676bf215546Sopenharmony_ci
1677bf215546Sopenharmony_ci	<reg32 offset="0x80a0" name="GRAS_SC_CNTL">
1678bf215546Sopenharmony_ci		<bitfield name="CCUSINGLECACHELINESIZE" low="0" high="2"/>
1679bf215546Sopenharmony_ci		<bitfield name="SINGLE_PRIM_MODE" low="3" high="4" type="a6xx_single_prim_mode"/>
1680bf215546Sopenharmony_ci		<bitfield name="RASTER_MODE" pos="5" type="a6xx_raster_mode"/>
1681bf215546Sopenharmony_ci		<bitfield name="RASTER_DIRECTION" low="6" high="7" type="a6xx_raster_direction"/>
1682bf215546Sopenharmony_ci		<bitfield name="SEQUENCED_THREAD_DISTRIBUTION" pos="8" type="a6xx_sequenced_thread_dist"/>
1683bf215546Sopenharmony_ci		<!-- CCUSINGLECACHELINESIZE is ignored unless bit 9 is set -->
1684bf215546Sopenharmony_ci		<bitfield name="UNK9" low="9" high="11"/>
1685bf215546Sopenharmony_ci		<bitfield name="EARLYVIZOUTEN" pos="12" type="boolean"/>
1686bf215546Sopenharmony_ci	</reg32>
1687bf215546Sopenharmony_ci
1688bf215546Sopenharmony_ci	<enum name="a6xx_render_mode">
1689bf215546Sopenharmony_ci		<value value="0x0" name="RENDERING_PASS"/>
1690bf215546Sopenharmony_ci		<value value="0x1" name="BINNING_PASS"/>
1691bf215546Sopenharmony_ci	</enum>
1692bf215546Sopenharmony_ci
1693bf215546Sopenharmony_ci	<enum name="a6xx_buffers_location">
1694bf215546Sopenharmony_ci		<value value="0" name="BUFFERS_IN_GMEM"/>
1695bf215546Sopenharmony_ci		<value value="3" name="BUFFERS_IN_SYSMEM"/>
1696bf215546Sopenharmony_ci	</enum>
1697bf215546Sopenharmony_ci
1698bf215546Sopenharmony_ci	<reg32 offset="0x80a1" name="GRAS_BIN_CONTROL">
1699bf215546Sopenharmony_ci		<bitfield name="BINW" low="0" high="5" shr="5" type="uint"/>
1700bf215546Sopenharmony_ci		<bitfield name="BINH" low="8" high="14" shr="4" type="uint"/>
1701bf215546Sopenharmony_ci		<bitfield name="RENDER_MODE" low="18" high="20" type="a6xx_render_mode"/>
1702bf215546Sopenharmony_ci		<bitfield name="FORCE_LRZ_WRITE_DIS" pos="21" type="boolean"/>
1703bf215546Sopenharmony_ci		<bitfield name="BUFFERS_LOCATION" low="22" high="23" type="a6xx_buffers_location"/>
1704bf215546Sopenharmony_ci		<bitfield name="LRZ_FEEDBACK_ZMODE_MASK" low="24" high="26"/>
1705bf215546Sopenharmony_ci		<bitfield name="UNK27" pos="27"/>
1706bf215546Sopenharmony_ci	</reg32>
1707bf215546Sopenharmony_ci
1708bf215546Sopenharmony_ci	<reg32 offset="0x80a2" name="GRAS_RAS_MSAA_CNTL">
1709bf215546Sopenharmony_ci		<bitfield name="SAMPLES" low="0" high="1" type="a3xx_msaa_samples"/>
1710bf215546Sopenharmony_ci		<bitfield name="UNK2" pos="2"/>
1711bf215546Sopenharmony_ci		<bitfield name="UNK3" pos="3"/>
1712bf215546Sopenharmony_ci	</reg32>
1713bf215546Sopenharmony_ci	<reg32 offset="0x80a3" name="GRAS_DEST_MSAA_CNTL">
1714bf215546Sopenharmony_ci		<bitfield name="SAMPLES" low="0" high="1" type="a3xx_msaa_samples"/>
1715bf215546Sopenharmony_ci		<bitfield name="MSAA_DISABLE" pos="2" type="boolean"/>
1716bf215546Sopenharmony_ci	</reg32>
1717bf215546Sopenharmony_ci
1718bf215546Sopenharmony_ci	<bitset name="a6xx_sample_config" inline="yes">
1719bf215546Sopenharmony_ci		<bitfield name="UNK0" pos="0"/>
1720bf215546Sopenharmony_ci		<bitfield name="LOCATION_ENABLE" pos="1" type="boolean"/>
1721bf215546Sopenharmony_ci	</bitset>
1722bf215546Sopenharmony_ci
1723bf215546Sopenharmony_ci	<bitset name="a6xx_sample_locations" inline="yes">
1724bf215546Sopenharmony_ci		<bitfield name="SAMPLE_0_X" low="0" high="3" radix="4" type="fixed"/>
1725bf215546Sopenharmony_ci		<bitfield name="SAMPLE_0_Y" low="4" high="7" radix="4" type="fixed"/>
1726bf215546Sopenharmony_ci		<bitfield name="SAMPLE_1_X" low="8" high="11" radix="4" type="fixed"/>
1727bf215546Sopenharmony_ci		<bitfield name="SAMPLE_1_Y" low="12" high="15" radix="4" type="fixed"/>
1728bf215546Sopenharmony_ci		<bitfield name="SAMPLE_2_X" low="16" high="19" radix="4" type="fixed"/>
1729bf215546Sopenharmony_ci		<bitfield name="SAMPLE_2_Y" low="20" high="23" radix="4" type="fixed"/>
1730bf215546Sopenharmony_ci		<bitfield name="SAMPLE_3_X" low="24" high="27" radix="4" type="fixed"/>
1731bf215546Sopenharmony_ci		<bitfield name="SAMPLE_3_Y" low="28" high="31" radix="4" type="fixed"/>
1732bf215546Sopenharmony_ci	</bitset>
1733bf215546Sopenharmony_ci
1734bf215546Sopenharmony_ci	<reg32 offset="0x80a4" name="GRAS_SAMPLE_CONFIG" type="a6xx_sample_config"/>
1735bf215546Sopenharmony_ci	<reg32 offset="0x80a5" name="GRAS_SAMPLE_LOCATION_0" type="a6xx_sample_locations"/>
1736bf215546Sopenharmony_ci	<reg32 offset="0x80a6" name="GRAS_SAMPLE_LOCATION_1" type="a6xx_sample_locations"/>
1737bf215546Sopenharmony_ci	<!-- 0x80a7-0x80ae invalid -->
1738bf215546Sopenharmony_ci	<reg32 offset="0x80af" name="GRAS_UNKNOWN_80AF" pos="0"/>
1739bf215546Sopenharmony_ci
1740bf215546Sopenharmony_ci	<bitset name="a6xx_scissor_xy" inline="yes">
1741bf215546Sopenharmony_ci		<bitfield name="X" low="0" high="15" type="uint"/>
1742bf215546Sopenharmony_ci		<bitfield name="Y" low="16" high="31" type="uint"/>
1743bf215546Sopenharmony_ci	</bitset>
1744bf215546Sopenharmony_ci	<array offset="0x80b0" name="GRAS_SC_SCREEN_SCISSOR" stride="2" length="16">
1745bf215546Sopenharmony_ci		<reg32 offset="0" name="TL" type="a6xx_scissor_xy"/>
1746bf215546Sopenharmony_ci		<reg32 offset="1" name="BR" type="a6xx_scissor_xy"/>
1747bf215546Sopenharmony_ci	</array>
1748bf215546Sopenharmony_ci	<array offset="0x80d0" name="GRAS_SC_VIEWPORT_SCISSOR" stride="2" length="16">
1749bf215546Sopenharmony_ci		<reg32 offset="0" name="TL" type="a6xx_scissor_xy"/>
1750bf215546Sopenharmony_ci		<reg32 offset="1" name="BR" type="a6xx_scissor_xy"/>
1751bf215546Sopenharmony_ci	</array>
1752bf215546Sopenharmony_ci
1753bf215546Sopenharmony_ci	<reg32 offset="0x80f0" name="GRAS_SC_WINDOW_SCISSOR_TL" type="a6xx_reg_xy"/>
1754bf215546Sopenharmony_ci	<reg32 offset="0x80f1" name="GRAS_SC_WINDOW_SCISSOR_BR" type="a6xx_reg_xy"/>
1755bf215546Sopenharmony_ci	<!-- 0x80f2-0x80ff invalid -->
1756bf215546Sopenharmony_ci
1757bf215546Sopenharmony_ci	<enum name="a6xx_lrz_dir_status">
1758bf215546Sopenharmony_ci		<value value="0x1" name="LRZ_DIR_LE"/>
1759bf215546Sopenharmony_ci		<value value="0x2" name="LRZ_DIR_GE"/>
1760bf215546Sopenharmony_ci		<value value="0x3" name="LRZ_DIR_INVALID"/>
1761bf215546Sopenharmony_ci	</enum>
1762bf215546Sopenharmony_ci
1763bf215546Sopenharmony_ci	<reg32 offset="0x8100" name="GRAS_LRZ_CNTL">
1764bf215546Sopenharmony_ci		<bitfield name="ENABLE" pos="0" type="boolean"/>
1765bf215546Sopenharmony_ci		<doc>LRZ write also disabled for blend/etc.</doc>
1766bf215546Sopenharmony_ci		<bitfield name="LRZ_WRITE" pos="1" type="boolean"/>
1767bf215546Sopenharmony_ci		<doc>update MAX instead of MIN value, ie. GL_GREATER/GL_GEQUAL</doc>
1768bf215546Sopenharmony_ci		<bitfield name="GREATER" pos="2" type="boolean"/>
1769bf215546Sopenharmony_ci		<doc>
1770bf215546Sopenharmony_ci			Clears the LRZ block being touched to:
1771bf215546Sopenharmony_ci			- 0.0 if GREATER
1772bf215546Sopenharmony_ci			- 1.0 if LESS
1773bf215546Sopenharmony_ci		</doc>
1774bf215546Sopenharmony_ci		<bitfield name="FC_ENABLE" pos="3" type="boolean"/>
1775bf215546Sopenharmony_ci		<!-- set when depth-test + depth-write enabled -->
1776bf215546Sopenharmony_ci		<bitfield name="Z_TEST_ENABLE" pos="4" type="boolean"/>
1777bf215546Sopenharmony_ci		<bitfield name="Z_BOUNDS_ENABLE" pos="5" type="boolean"/>
1778bf215546Sopenharmony_ci		<bitfield name="DIR" low="6" high="7" type="a6xx_lrz_dir_status"/>
1779bf215546Sopenharmony_ci		<doc>
1780bf215546Sopenharmony_ci			If DISABLE_ON_WRONG_DIR enabled - write new LRZ direction into
1781bf215546Sopenharmony_ci			buffer, in case of mismatched direction writes 0 (disables LRZ).
1782bf215546Sopenharmony_ci		</doc>
1783bf215546Sopenharmony_ci		<bitfield name="DIR_WRITE" pos="8" type="boolean"/>
1784bf215546Sopenharmony_ci		<doc>
1785bf215546Sopenharmony_ci			Disable LRZ based on previous direction and the current one.
1786bf215546Sopenharmony_ci			If DIR_WRITE is not enabled - there is no write to direction buffer.
1787bf215546Sopenharmony_ci		</doc>
1788bf215546Sopenharmony_ci		<bitfield name="DISABLE_ON_WRONG_DIR" pos="9" type="boolean"/>
1789bf215546Sopenharmony_ci	</reg32>
1790bf215546Sopenharmony_ci
1791bf215546Sopenharmony_ci	<enum name="a6xx_fragcoord_sample_mode">
1792bf215546Sopenharmony_ci		<value value="0" name="FRAGCOORD_CENTER"/>
1793bf215546Sopenharmony_ci		<value value="3" name="FRAGCOORD_SAMPLE"/>
1794bf215546Sopenharmony_ci	</enum>
1795bf215546Sopenharmony_ci
1796bf215546Sopenharmony_ci	<reg32 offset="0x8101" name="GRAS_LRZ_PS_INPUT_CNTL" low="0" high="2">
1797bf215546Sopenharmony_ci		<bitfield name="SAMPLEID" pos="0" type="boolean"/>
1798bf215546Sopenharmony_ci		<bitfield name="FRAGCOORDSAMPLEMODE" low="1" high="2" type="a6xx_fragcoord_sample_mode"/>
1799bf215546Sopenharmony_ci	</reg32>
1800bf215546Sopenharmony_ci
1801bf215546Sopenharmony_ci	<reg32 offset="0x8102" name="GRAS_LRZ_MRT_BUF_INFO_0">
1802bf215546Sopenharmony_ci		<bitfield name="COLOR_FORMAT" low="0" high="7" type="a6xx_format"/>
1803bf215546Sopenharmony_ci	</reg32>
1804bf215546Sopenharmony_ci	<reg64 offset="0x8103" name="GRAS_LRZ_BUFFER_BASE" align="256" type="waddress"/>
1805bf215546Sopenharmony_ci	<reg32 offset="0x8105" name="GRAS_LRZ_BUFFER_PITCH">
1806bf215546Sopenharmony_ci		<!-- TODO: fix the shr fields -->
1807bf215546Sopenharmony_ci		<bitfield name="PITCH" low="0" high="7" shr="5" type="uint"/>
1808bf215546Sopenharmony_ci		<bitfield name="ARRAY_PITCH" low="10" high="28" shr="4" type="uint"/>
1809bf215546Sopenharmony_ci	</reg32>
1810bf215546Sopenharmony_ci
1811bf215546Sopenharmony_ci	<!--
1812bf215546Sopenharmony_ci	The LRZ "fast clear" buffer is initialized to zero's by blob, and
1813bf215546Sopenharmony_ci	read/written when GRAS_LRZ_CNTL.FC_ENABLE (b3) is set.  It appears
1814bf215546Sopenharmony_ci	to store 1b/block.  It appears that '0' means block has original
1815bf215546Sopenharmony_ci	depth clear value, and '1' means that the corresponding block in
1816bf215546Sopenharmony_ci	LRZ has been modified.  Ignoring alignment/padding, the size is
1817bf215546Sopenharmony_ci	given by the formula:
1818bf215546Sopenharmony_ci
1819bf215546Sopenharmony_ci		// calculate LRZ size from depth size:
1820bf215546Sopenharmony_ci		if (nr_samples == 4) {
1821bf215546Sopenharmony_ci			width *= 2;
1822bf215546Sopenharmony_ci			height *= 2;
1823bf215546Sopenharmony_ci		} else if (nr_samples == 2) {
1824bf215546Sopenharmony_ci			height *= 2;
1825bf215546Sopenharmony_ci		}
1826bf215546Sopenharmony_ci
1827bf215546Sopenharmony_ci		lrz_width = div_round_up(width, 8);
1828bf215546Sopenharmony_ci		lrz_heigh = div_round_up(height, 8);
1829bf215546Sopenharmony_ci
1830bf215546Sopenharmony_ci		// calculate # of blocks:
1831bf215546Sopenharmony_ci		nblocksx = div_round_up(lrz_width, 16);
1832bf215546Sopenharmony_ci		nblocksy = div_round_up(lrz_height, 4);
1833bf215546Sopenharmony_ci
1834bf215546Sopenharmony_ci		// fast-clear buffer is 1bit/block:
1835bf215546Sopenharmony_ci		fc_sz = div_round_up(nblocksx * nblocksy, 8);
1836bf215546Sopenharmony_ci
1837bf215546Sopenharmony_ci	In practice the blob seems to switch off FC_ENABLE once the size
1838bf215546Sopenharmony_ci	increases beyond 1 page.  Not sure if that is an actual limit or
1839bf215546Sopenharmony_ci	not.
1840bf215546Sopenharmony_ci	 -->
1841bf215546Sopenharmony_ci	<reg64 offset="0x8106" name="GRAS_LRZ_FAST_CLEAR_BUFFER_BASE" align="64" type="waddress"/>
1842bf215546Sopenharmony_ci	<!-- 0x8108 invalid -->
1843bf215546Sopenharmony_ci	<reg32 offset="0x8109" name="GRAS_SAMPLE_CNTL">
1844bf215546Sopenharmony_ci		<bitfield name="PER_SAMP_MODE" pos="0" type="boolean"/>
1845bf215546Sopenharmony_ci	</reg32>
1846bf215546Sopenharmony_ci	<!--
1847bf215546Sopenharmony_ci	LRZ buffer represents a single array layer + mip level, and there is
1848bf215546Sopenharmony_ci	a single buffer per depth image. Thus to reuse LRZ between renderpasses
1849bf215546Sopenharmony_ci	it is necessary to track the depth view used in the past renderpass, which
1850bf215546Sopenharmony_ci	GRAS_LRZ_DEPTH_VIEW is for.
1851bf215546Sopenharmony_ci	GRAS_LRZ_CNTL checks if current value of GRAS_LRZ_DEPTH_VIEW is equal to
1852bf215546Sopenharmony_ci	the value stored in the LRZ buffer, if not - LRZ is disabled.
1853bf215546Sopenharmony_ci	-->
1854bf215546Sopenharmony_ci	<reg32 offset="0x810a" name="GRAS_LRZ_DEPTH_VIEW">
1855bf215546Sopenharmony_ci		<bitfield name="BASE_LAYER" low="0" high="10" type="uint"/>
1856bf215546Sopenharmony_ci		<bitfield name="LAYER_COUNT" low="16" high="26" type="uint"/>
1857bf215546Sopenharmony_ci		<bitfield name="BASE_MIP_LEVEL" low="28" high="31" type="uint"/>
1858bf215546Sopenharmony_ci	</reg32>
1859bf215546Sopenharmony_ci
1860bf215546Sopenharmony_ci	<!-- 0x810b-0x810f invalid -->
1861bf215546Sopenharmony_ci
1862bf215546Sopenharmony_ci	<reg32 offset="0x8110" name="GRAS_UNKNOWN_8110" low="0" high="1"/>
1863bf215546Sopenharmony_ci
1864bf215546Sopenharmony_ci	<!-- 0x8111-0x83ff invalid -->
1865bf215546Sopenharmony_ci
1866bf215546Sopenharmony_ci	<enum name="a6xx_rotation">
1867bf215546Sopenharmony_ci		<value value="0x0" name="ROTATE_0"/>
1868bf215546Sopenharmony_ci		<value value="0x1" name="ROTATE_90"/>
1869bf215546Sopenharmony_ci		<value value="0x2" name="ROTATE_180"/>
1870bf215546Sopenharmony_ci		<value value="0x3" name="ROTATE_270"/>
1871bf215546Sopenharmony_ci		<value value="0x4" name="ROTATE_HFLIP"/>
1872bf215546Sopenharmony_ci		<value value="0x5" name="ROTATE_VFLIP"/>
1873bf215546Sopenharmony_ci	</enum>
1874bf215546Sopenharmony_ci
1875bf215546Sopenharmony_ci	<bitset name="a6xx_2d_blit_cntl" inline="yes">
1876bf215546Sopenharmony_ci		<bitfield name="ROTATE" low="0" high="2" type="a6xx_rotation"/>
1877bf215546Sopenharmony_ci		<bitfield name="OVERWRITEEN" pos="3" type="boolean"/>
1878bf215546Sopenharmony_ci		<bitfield name="UNK4" low="4" high="6"/>
1879bf215546Sopenharmony_ci		<bitfield name="SOLID_COLOR" pos="7" type="boolean"/>
1880bf215546Sopenharmony_ci		<bitfield name="COLOR_FORMAT" low="8" high="15" type="a6xx_format"/>
1881bf215546Sopenharmony_ci		<bitfield name="SCISSOR" pos="16" type="boolean"/>
1882bf215546Sopenharmony_ci		<bitfield name="UNK17" low="17" high="18"/>
1883bf215546Sopenharmony_ci		<!-- required when blitting D24S8/D24X8 -->
1884bf215546Sopenharmony_ci		<bitfield name="D24S8" pos="19" type="boolean"/>
1885bf215546Sopenharmony_ci		<!-- some sort of channel mask, disabled channels are set to zero ? -->
1886bf215546Sopenharmony_ci		<bitfield name="MASK" low="20" high="23"/>
1887bf215546Sopenharmony_ci		<bitfield name="IFMT" low="24" high="28" type="a6xx_2d_ifmt"/>
1888bf215546Sopenharmony_ci		<bitfield name="RASTER_MODE" pos="29" type="a6xx_raster_mode"/>
1889bf215546Sopenharmony_ci	</bitset>
1890bf215546Sopenharmony_ci
1891bf215546Sopenharmony_ci	<reg32 offset="0x8400" name="GRAS_2D_BLIT_CNTL" type="a6xx_2d_blit_cntl"/>
1892bf215546Sopenharmony_ci	<!-- note: the low 8 bits for src coords are valid, probably fixed point
1893bf215546Sopenharmony_ci	     it would be a bit weird though, since we subtract 1 from BR coords
1894bf215546Sopenharmony_ci	     apparently signed, gallium driver uses negative coords and it works?
1895bf215546Sopenharmony_ci	 -->
1896bf215546Sopenharmony_ci	<reg32 offset="0x8401" name="GRAS_2D_SRC_TL_X" low="8" high="24" type="int"/>
1897bf215546Sopenharmony_ci	<reg32 offset="0x8402" name="GRAS_2D_SRC_BR_X" low="8" high="24" type="int"/>
1898bf215546Sopenharmony_ci	<reg32 offset="0x8403" name="GRAS_2D_SRC_TL_Y" low="8" high="24" type="int"/>
1899bf215546Sopenharmony_ci	<reg32 offset="0x8404" name="GRAS_2D_SRC_BR_Y" low="8" high="24" type="int"/>
1900bf215546Sopenharmony_ci	<reg32 offset="0x8405" name="GRAS_2D_DST_TL" type="a6xx_reg_xy"/>
1901bf215546Sopenharmony_ci	<reg32 offset="0x8406" name="GRAS_2D_DST_BR" type="a6xx_reg_xy"/>
1902bf215546Sopenharmony_ci	<reg32 offset="0x8407" name="GRAS_2D_UNKNOWN_8407" low="0" high="31"/>
1903bf215546Sopenharmony_ci	<reg32 offset="0x8408" name="GRAS_2D_UNKNOWN_8408" low="0" high="31"/>
1904bf215546Sopenharmony_ci	<reg32 offset="0x8409" name="GRAS_2D_UNKNOWN_8409" low="0" high="31"/>
1905bf215546Sopenharmony_ci	<reg32 offset="0x840a" name="GRAS_2D_RESOLVE_CNTL_1" type="a6xx_reg_xy"/>
1906bf215546Sopenharmony_ci	<reg32 offset="0x840b" name="GRAS_2D_RESOLVE_CNTL_2" type="a6xx_reg_xy"/>
1907bf215546Sopenharmony_ci	<!-- 0x840c-0x85ff invalid -->
1908bf215546Sopenharmony_ci
1909bf215546Sopenharmony_ci	<!-- always 0x880 ? (and 0 in a640/a650 traces?) -->
1910bf215546Sopenharmony_ci	<reg32 offset="0x8600" name="GRAS_DBG_ECO_CNTL">
1911bf215546Sopenharmony_ci		<bitfield name="UNK7" pos="7" type="boolean"/>
1912bf215546Sopenharmony_ci		<bitfield name="LRZCACHELOCKDIS" pos="11" type="boolean"/>
1913bf215546Sopenharmony_ci	</reg32>
1914bf215546Sopenharmony_ci	<reg32 offset="0x8601" name="GRAS_ADDR_MODE_CNTL" pos="0" type="a5xx_address_mode"/>
1915bf215546Sopenharmony_ci	<array offset="0x8610" name="GRAS_PERFCTR_TSE_SEL" stride="1" length="4"/>
1916bf215546Sopenharmony_ci	<array offset="0x8614" name="GRAS_PERFCTR_RAS_SEL" stride="1" length="4"/>
1917bf215546Sopenharmony_ci	<array offset="0x8618" name="GRAS_PERFCTR_LRZ_SEL" stride="1" length="4"/>
1918bf215546Sopenharmony_ci
1919bf215546Sopenharmony_ci	<!-- note 0x8620-0x87ff are not all invalid
1920bf215546Sopenharmony_ci	(in particular, 0x8631/0x8632 have 0x3fff3fff mask and would be xy coords)
1921bf215546Sopenharmony_ci	-->
1922bf215546Sopenharmony_ci
1923bf215546Sopenharmony_ci	<!-- same as GRAS_BIN_CONTROL, but without bit 27: -->
1924bf215546Sopenharmony_ci	<reg32 offset="0x8800" name="RB_BIN_CONTROL">
1925bf215546Sopenharmony_ci		<bitfield name="BINW" low="0" high="5" shr="5" type="uint"/>
1926bf215546Sopenharmony_ci		<bitfield name="BINH" low="8" high="14" shr="4" type="uint"/>
1927bf215546Sopenharmony_ci		<bitfield name="RENDER_MODE" low="18" high="20" type="a6xx_render_mode"/>
1928bf215546Sopenharmony_ci		<bitfield name="FORCE_LRZ_WRITE_DIS" pos="21" type="boolean"/>
1929bf215546Sopenharmony_ci		<bitfield name="BUFFERS_LOCATION" low="22" high="23" type="a6xx_buffers_location"/>
1930bf215546Sopenharmony_ci		<bitfield name="LRZ_FEEDBACK_ZMODE_MASK" low="24" high="26"/>
1931bf215546Sopenharmony_ci	</reg32>
1932bf215546Sopenharmony_ci
1933bf215546Sopenharmony_ci	<reg32 offset="0x8801" name="RB_RENDER_CNTL">
1934bf215546Sopenharmony_ci		<bitfield name="CCUSINGLECACHELINESIZE" low="3" high="5"/>
1935bf215546Sopenharmony_ci		<bitfield name="EARLYVIZOUTEN" pos="6" type="boolean"/>
1936bf215546Sopenharmony_ci		<!-- set during binning pass: -->
1937bf215546Sopenharmony_ci		<bitfield name="BINNING" pos="7" type="boolean"/>
1938bf215546Sopenharmony_ci		<bitfield name="UNK8" low="8" high="10"/>
1939bf215546Sopenharmony_ci		<bitfield name="RASTER_MODE" pos="8" type="a6xx_raster_mode"/>
1940bf215546Sopenharmony_ci		<bitfield name="RASTER_DIRECTION" low="9" high="10" type="a6xx_raster_direction"/>
1941bf215546Sopenharmony_ci		<bitfield name="CONSERVATIVERASEN" pos="11" type="boolean"/>
1942bf215546Sopenharmony_ci		<bitfield name="INNERCONSERVATIVERASEN" pos="12" type="boolean"/>
1943bf215546Sopenharmony_ci		<!-- bit seems to be set whenever depth buffer enabled: -->
1944bf215546Sopenharmony_ci		<bitfield name="FLAG_DEPTH" pos="14" type="boolean"/>
1945bf215546Sopenharmony_ci		<!-- bitmask of MRTs using UBWC flag buffer: -->
1946bf215546Sopenharmony_ci		<bitfield name="FLAG_MRTS" low="16" high="23"/>
1947bf215546Sopenharmony_ci	</reg32>
1948bf215546Sopenharmony_ci	<reg32 offset="0x8802" name="RB_RAS_MSAA_CNTL">
1949bf215546Sopenharmony_ci		<bitfield name="SAMPLES" low="0" high="1" type="a3xx_msaa_samples"/>
1950bf215546Sopenharmony_ci		<bitfield name="UNK2" pos="2"/>
1951bf215546Sopenharmony_ci		<bitfield name="UNK3" pos="3"/>
1952bf215546Sopenharmony_ci	</reg32>
1953bf215546Sopenharmony_ci	<reg32 offset="0x8803" name="RB_DEST_MSAA_CNTL">
1954bf215546Sopenharmony_ci		<bitfield name="SAMPLES" low="0" high="1" type="a3xx_msaa_samples"/>
1955bf215546Sopenharmony_ci		<bitfield name="MSAA_DISABLE" pos="2" type="boolean"/>
1956bf215546Sopenharmony_ci	</reg32>
1957bf215546Sopenharmony_ci
1958bf215546Sopenharmony_ci	<reg32 offset="0x8804" name="RB_SAMPLE_CONFIG" type="a6xx_sample_config"/>
1959bf215546Sopenharmony_ci	<reg32 offset="0x8805" name="RB_SAMPLE_LOCATION_0" type="a6xx_sample_locations"/>
1960bf215546Sopenharmony_ci	<reg32 offset="0x8806" name="RB_SAMPLE_LOCATION_1" type="a6xx_sample_locations"/>
1961bf215546Sopenharmony_ci	<!-- 0x8807-0x8808 invalid -->
1962bf215546Sopenharmony_ci	<!--
1963bf215546Sopenharmony_ci	note: maybe not actually called RB_RENDER_CONTROLn (since RB_RENDER_CNTL
1964bf215546Sopenharmony_ci	name comes from kernel and is probably right)
1965bf215546Sopenharmony_ci	 -->
1966bf215546Sopenharmony_ci	<reg32 offset="0x8809" name="RB_RENDER_CONTROL0">
1967bf215546Sopenharmony_ci		<!-- see also GRAS_CNTL -->
1968bf215546Sopenharmony_ci		<bitfield name="IJ_PERSP_PIXEL" pos="0" type="boolean"/>
1969bf215546Sopenharmony_ci		<bitfield name="IJ_PERSP_CENTROID" pos="1" type="boolean"/>
1970bf215546Sopenharmony_ci		<bitfield name="IJ_PERSP_SAMPLE" pos="2" type="boolean"/>
1971bf215546Sopenharmony_ci		<bitfield name="IJ_LINEAR_PIXEL" pos="3" type="boolean"/>
1972bf215546Sopenharmony_ci		<bitfield name="IJ_LINEAR_CENTROID" pos="4" type="boolean"/>
1973bf215546Sopenharmony_ci		<bitfield name="IJ_LINEAR_SAMPLE" pos="5" type="boolean"/>
1974bf215546Sopenharmony_ci		<bitfield name="COORD_MASK" low="6" high="9" type="hex"/>
1975bf215546Sopenharmony_ci		<bitfield name="UNK10" pos="10" type="boolean"/>
1976bf215546Sopenharmony_ci	</reg32>
1977bf215546Sopenharmony_ci	<reg32 offset="0x880a" name="RB_RENDER_CONTROL1">
1978bf215546Sopenharmony_ci		<!-- enable bits for various FS sysvalue regs: -->
1979bf215546Sopenharmony_ci		<bitfield name="SAMPLEMASK" pos="0" type="boolean"/>
1980bf215546Sopenharmony_ci		<bitfield name="UNK1" pos="1" type="boolean"/>
1981bf215546Sopenharmony_ci		<bitfield name="FACENESS" pos="2" type="boolean"/>
1982bf215546Sopenharmony_ci		<bitfield name="SAMPLEID" pos="3" type="boolean"/>
1983bf215546Sopenharmony_ci		<bitfield name="FRAGCOORDSAMPLEMODE" low="4" high="5" type="a6xx_fragcoord_sample_mode"/>
1984bf215546Sopenharmony_ci		<bitfield name="CENTERRHW" pos="6" type="boolean"/>
1985bf215546Sopenharmony_ci		<bitfield name="LINELENGTHEN" pos="7" type="boolean"/>
1986bf215546Sopenharmony_ci		<bitfield name="FOVEATION" pos="8" type="boolean"/>
1987bf215546Sopenharmony_ci	</reg32>
1988bf215546Sopenharmony_ci
1989bf215546Sopenharmony_ci	<reg32 offset="0x880b" name="RB_FS_OUTPUT_CNTL0">
1990bf215546Sopenharmony_ci		<bitfield name="DUAL_COLOR_IN_ENABLE" pos="0" type="boolean"/>
1991bf215546Sopenharmony_ci		<bitfield name="FRAG_WRITES_Z" pos="1" type="boolean"/>
1992bf215546Sopenharmony_ci		<bitfield name="FRAG_WRITES_SAMPMASK" pos="2" type="boolean"/>
1993bf215546Sopenharmony_ci		<bitfield name="FRAG_WRITES_STENCILREF" pos="3" type="boolean"/>
1994bf215546Sopenharmony_ci	</reg32>
1995bf215546Sopenharmony_ci	<reg32 offset="0x880c" name="RB_FS_OUTPUT_CNTL1">
1996bf215546Sopenharmony_ci		<bitfield name="MRT" low="0" high="3" type="uint"/>
1997bf215546Sopenharmony_ci	</reg32>
1998bf215546Sopenharmony_ci	<reg32 offset="0x880d" name="RB_RENDER_COMPONENTS">
1999bf215546Sopenharmony_ci		<bitfield name="RT0" low="0" high="3"/>
2000bf215546Sopenharmony_ci		<bitfield name="RT1" low="4" high="7"/>
2001bf215546Sopenharmony_ci		<bitfield name="RT2" low="8" high="11"/>
2002bf215546Sopenharmony_ci		<bitfield name="RT3" low="12" high="15"/>
2003bf215546Sopenharmony_ci		<bitfield name="RT4" low="16" high="19"/>
2004bf215546Sopenharmony_ci		<bitfield name="RT5" low="20" high="23"/>
2005bf215546Sopenharmony_ci		<bitfield name="RT6" low="24" high="27"/>
2006bf215546Sopenharmony_ci		<bitfield name="RT7" low="28" high="31"/>
2007bf215546Sopenharmony_ci	</reg32>
2008bf215546Sopenharmony_ci	<reg32 offset="0x880e" name="RB_DITHER_CNTL">
2009bf215546Sopenharmony_ci		<bitfield name="DITHER_MODE_MRT0" low="0"  high="1"  type="adreno_rb_dither_mode"/>
2010bf215546Sopenharmony_ci		<bitfield name="DITHER_MODE_MRT1" low="2"  high="3"  type="adreno_rb_dither_mode"/>
2011bf215546Sopenharmony_ci		<bitfield name="DITHER_MODE_MRT2" low="4"  high="5"  type="adreno_rb_dither_mode"/>
2012bf215546Sopenharmony_ci		<bitfield name="DITHER_MODE_MRT3" low="6"  high="7"  type="adreno_rb_dither_mode"/>
2013bf215546Sopenharmony_ci		<bitfield name="DITHER_MODE_MRT4" low="8"  high="9"  type="adreno_rb_dither_mode"/>
2014bf215546Sopenharmony_ci		<bitfield name="DITHER_MODE_MRT5" low="10" high="11" type="adreno_rb_dither_mode"/>
2015bf215546Sopenharmony_ci		<bitfield name="DITHER_MODE_MRT6" low="12" high="12" type="adreno_rb_dither_mode"/>
2016bf215546Sopenharmony_ci		<bitfield name="DITHER_MODE_MRT7" low="14" high="15" type="adreno_rb_dither_mode"/>
2017bf215546Sopenharmony_ci	</reg32>
2018bf215546Sopenharmony_ci	<reg32 offset="0x880f" name="RB_SRGB_CNTL">
2019bf215546Sopenharmony_ci		<!-- Same as SP_SRGB_CNTL -->
2020bf215546Sopenharmony_ci		<bitfield name="SRGB_MRT0" pos="0" type="boolean"/>
2021bf215546Sopenharmony_ci		<bitfield name="SRGB_MRT1" pos="1" type="boolean"/>
2022bf215546Sopenharmony_ci		<bitfield name="SRGB_MRT2" pos="2" type="boolean"/>
2023bf215546Sopenharmony_ci		<bitfield name="SRGB_MRT3" pos="3" type="boolean"/>
2024bf215546Sopenharmony_ci		<bitfield name="SRGB_MRT4" pos="4" type="boolean"/>
2025bf215546Sopenharmony_ci		<bitfield name="SRGB_MRT5" pos="5" type="boolean"/>
2026bf215546Sopenharmony_ci		<bitfield name="SRGB_MRT6" pos="6" type="boolean"/>
2027bf215546Sopenharmony_ci		<bitfield name="SRGB_MRT7" pos="7" type="boolean"/>
2028bf215546Sopenharmony_ci	</reg32>
2029bf215546Sopenharmony_ci
2030bf215546Sopenharmony_ci	<reg32 offset="0x8810" name="RB_SAMPLE_CNTL">
2031bf215546Sopenharmony_ci		<bitfield name="PER_SAMP_MODE" pos="0" type="boolean"/>
2032bf215546Sopenharmony_ci	</reg32>
2033bf215546Sopenharmony_ci	<reg32 offset="0x8811" name="RB_UNKNOWN_8811" low="4" high="6"/>
2034bf215546Sopenharmony_ci	<!-- 0x8812-0x8817 invalid -->
2035bf215546Sopenharmony_ci	<!-- always 0x0 ? -->
2036bf215546Sopenharmony_ci	<reg32 offset="0x8818" name="RB_UNKNOWN_8818" low="0" high="6"/>
2037bf215546Sopenharmony_ci	<!-- 0x8819-0x881e all 32 bits -->
2038bf215546Sopenharmony_ci	<reg32 offset="0x8819" name="RB_UNKNOWN_8819"/>
2039bf215546Sopenharmony_ci	<reg32 offset="0x881a" name="RB_UNKNOWN_881A"/>
2040bf215546Sopenharmony_ci	<reg32 offset="0x881b" name="RB_UNKNOWN_881B"/>
2041bf215546Sopenharmony_ci	<reg32 offset="0x881c" name="RB_UNKNOWN_881C"/>
2042bf215546Sopenharmony_ci	<reg32 offset="0x881d" name="RB_UNKNOWN_881D"/>
2043bf215546Sopenharmony_ci	<reg32 offset="0x881e" name="RB_UNKNOWN_881E"/>
2044bf215546Sopenharmony_ci	<!-- 0x881f invalid -->
2045bf215546Sopenharmony_ci	<array offset="0x8820" name="RB_MRT" stride="8" length="8">
2046bf215546Sopenharmony_ci		<reg32 offset="0x0" name="CONTROL">
2047bf215546Sopenharmony_ci			<bitfield name="BLEND" pos="0" type="boolean"/>
2048bf215546Sopenharmony_ci			<bitfield name="BLEND2" pos="1" type="boolean"/>
2049bf215546Sopenharmony_ci			<bitfield name="ROP_ENABLE" pos="2" type="boolean"/>
2050bf215546Sopenharmony_ci			<bitfield name="ROP_CODE" low="3" high="6" type="a3xx_rop_code"/>
2051bf215546Sopenharmony_ci			<bitfield name="COMPONENT_ENABLE" low="7" high="10" type="hex"/>
2052bf215546Sopenharmony_ci		</reg32>
2053bf215546Sopenharmony_ci		<reg32 offset="0x1" name="BLEND_CONTROL">
2054bf215546Sopenharmony_ci			<bitfield name="RGB_SRC_FACTOR" low="0" high="4" type="adreno_rb_blend_factor"/>
2055bf215546Sopenharmony_ci			<bitfield name="RGB_BLEND_OPCODE" low="5" high="7" type="a3xx_rb_blend_opcode"/>
2056bf215546Sopenharmony_ci			<bitfield name="RGB_DEST_FACTOR" low="8" high="12" type="adreno_rb_blend_factor"/>
2057bf215546Sopenharmony_ci			<bitfield name="ALPHA_SRC_FACTOR" low="16" high="20" type="adreno_rb_blend_factor"/>
2058bf215546Sopenharmony_ci			<bitfield name="ALPHA_BLEND_OPCODE" low="21" high="23" type="a3xx_rb_blend_opcode"/>
2059bf215546Sopenharmony_ci			<bitfield name="ALPHA_DEST_FACTOR" low="24" high="28" type="adreno_rb_blend_factor"/>
2060bf215546Sopenharmony_ci		</reg32>
2061bf215546Sopenharmony_ci		<reg32 offset="0x2" name="BUF_INFO">
2062bf215546Sopenharmony_ci			<bitfield name="COLOR_FORMAT" low="0" high="7" type="a6xx_format"/>
2063bf215546Sopenharmony_ci			<bitfield name="COLOR_TILE_MODE" low="8" high="9" type="a6xx_tile_mode"/>
2064bf215546Sopenharmony_ci			<bitfield name="UNK10" pos="10"/>
2065bf215546Sopenharmony_ci			<bitfield name="COLOR_SWAP" low="13" high="14" type="a3xx_color_swap"/>
2066bf215546Sopenharmony_ci		</reg32>
2067bf215546Sopenharmony_ci		<!--
2068bf215546Sopenharmony_ci		at least in gmem, things seem to be aligned to pitch of 64..
2069bf215546Sopenharmony_ci		maybe an artifact of tiled format used in gmem?
2070bf215546Sopenharmony_ci		 -->
2071bf215546Sopenharmony_ci		<reg32 offset="0x3" name="PITCH" shr="6" high="15" type="uint"/>
2072bf215546Sopenharmony_ci		<reg32 offset="0x4" name="ARRAY_PITCH" shr="6" high="28" type="uint"/>
2073bf215546Sopenharmony_ci		<!--
2074bf215546Sopenharmony_ci		Compared to a5xx and before, we configure both a GMEM base and
2075bf215546Sopenharmony_ci		external base.  Not sure if this is to facilitate GMEM save/
2076bf215546Sopenharmony_ci		restore for context switch, or just to simplify state setup to
2077bf215546Sopenharmony_ci		not have to care about GMEM vs BYPASS mode.
2078bf215546Sopenharmony_ci		 -->
2079bf215546Sopenharmony_ci		<!-- maybe something in low bits since alignment of 1 doesn't make sense? -->
2080bf215546Sopenharmony_ci		<reg64 offset="0x5" name="BASE" type="waddress" align="1"/>
2081bf215546Sopenharmony_ci
2082bf215546Sopenharmony_ci		<reg32 offset="0x7" name="BASE_GMEM" low="12" high="31" shr="12"/>
2083bf215546Sopenharmony_ci	</array>
2084bf215546Sopenharmony_ci
2085bf215546Sopenharmony_ci	<reg32 offset="0x8860" name="RB_BLEND_RED_F32" type="float"/>
2086bf215546Sopenharmony_ci	<reg32 offset="0x8861" name="RB_BLEND_GREEN_F32" type="float"/>
2087bf215546Sopenharmony_ci	<reg32 offset="0x8862" name="RB_BLEND_BLUE_F32" type="float"/>
2088bf215546Sopenharmony_ci	<reg32 offset="0x8863" name="RB_BLEND_ALPHA_F32" type="float"/>
2089bf215546Sopenharmony_ci	<reg32 offset="0x8864" name="RB_ALPHA_CONTROL">
2090bf215546Sopenharmony_ci		<bitfield name="ALPHA_REF" low="0" high="7" type="hex"/>
2091bf215546Sopenharmony_ci		<bitfield name="ALPHA_TEST" pos="8" type="boolean"/>
2092bf215546Sopenharmony_ci		<bitfield name="ALPHA_TEST_FUNC" low="9" high="11" type="adreno_compare_func"/>
2093bf215546Sopenharmony_ci	</reg32>
2094bf215546Sopenharmony_ci	<reg32 offset="0x8865" name="RB_BLEND_CNTL">
2095bf215546Sopenharmony_ci		<!-- per-mrt enable bit -->
2096bf215546Sopenharmony_ci		<bitfield name="ENABLE_BLEND" low="0" high="7"/>
2097bf215546Sopenharmony_ci		<bitfield name="INDEPENDENT_BLEND" pos="8" type="boolean"/>
2098bf215546Sopenharmony_ci		<bitfield name="DUAL_COLOR_IN_ENABLE" pos="9" type="boolean"/>
2099bf215546Sopenharmony_ci		<bitfield name="ALPHA_TO_COVERAGE" pos="10" type="boolean"/>
2100bf215546Sopenharmony_ci		<bitfield name="ALPHA_TO_ONE" pos="11" type="boolean"/>
2101bf215546Sopenharmony_ci		<bitfield name="SAMPLE_MASK" low="16" high="31"/>
2102bf215546Sopenharmony_ci	</reg32>
2103bf215546Sopenharmony_ci	<!-- 0x8866-0x886f invalid -->
2104bf215546Sopenharmony_ci	<reg32 offset="0x8870" name="RB_DEPTH_PLANE_CNTL">
2105bf215546Sopenharmony_ci		<bitfield name="Z_MODE" low="0" high="1" type="a6xx_ztest_mode"/>
2106bf215546Sopenharmony_ci	</reg32>
2107bf215546Sopenharmony_ci
2108bf215546Sopenharmony_ci	<reg32 offset="0x8871" name="RB_DEPTH_CNTL">
2109bf215546Sopenharmony_ci		<bitfield name="Z_TEST_ENABLE" pos="0" type="boolean"/>
2110bf215546Sopenharmony_ci		<bitfield name="Z_WRITE_ENABLE" pos="1" type="boolean"/>
2111bf215546Sopenharmony_ci		<bitfield name="ZFUNC" low="2" high="4" type="adreno_compare_func"/>
2112bf215546Sopenharmony_ci		<bitfield name="Z_CLIP_DISABLE" pos="5" type="boolean"/>
2113bf215546Sopenharmony_ci		<doc>
2114bf215546Sopenharmony_ci		Z_READ_ENABLE bit is set for zfunc other than GL_ALWAYS or GL_NEVER
2115bf215546Sopenharmony_ci		also set when Z_BOUNDS_ENABLE is set
2116bf215546Sopenharmony_ci		</doc>
2117bf215546Sopenharmony_ci		<bitfield name="Z_READ_ENABLE" pos="6" type="boolean"/>
2118bf215546Sopenharmony_ci		<bitfield name="Z_BOUNDS_ENABLE" pos="7" type="boolean"/>
2119bf215546Sopenharmony_ci	</reg32>
2120bf215546Sopenharmony_ci	<!-- duplicates GRAS_SU_DEPTH_BUFFER_INFO: -->
2121bf215546Sopenharmony_ci	<reg32 offset="0x8872" name="RB_DEPTH_BUFFER_INFO">
2122bf215546Sopenharmony_ci		<bitfield name="DEPTH_FORMAT" low="0" high="2" type="a6xx_depth_format"/>
2123bf215546Sopenharmony_ci		<bitfield name="UNK3" low="3" high="4"/>
2124bf215546Sopenharmony_ci	</reg32>
2125bf215546Sopenharmony_ci	<reg32 offset="0x8873" name="RB_DEPTH_BUFFER_PITCH" low="0" high="13" shr="6" type="uint"/>
2126bf215546Sopenharmony_ci	<reg32 offset="0x8874" name="RB_DEPTH_BUFFER_ARRAY_PITCH" low="0" high="27" shr="6" type="uint"/>
2127bf215546Sopenharmony_ci	<reg64 offset="0x8875" name="RB_DEPTH_BUFFER_BASE" type="waddress" align="64"/>
2128bf215546Sopenharmony_ci	<reg32 offset="0x8877" name="RB_DEPTH_BUFFER_BASE_GMEM" low="12" high="31" shr="12"/>
2129bf215546Sopenharmony_ci
2130bf215546Sopenharmony_ci	<reg32 offset="0x8878" name="RB_Z_BOUNDS_MIN" type="float"/>
2131bf215546Sopenharmony_ci	<reg32 offset="0x8879" name="RB_Z_BOUNDS_MAX" type="float"/>
2132bf215546Sopenharmony_ci	<!-- 0x887a-0x887f invalid -->
2133bf215546Sopenharmony_ci	<reg32 offset="0x8880" name="RB_STENCIL_CONTROL">
2134bf215546Sopenharmony_ci		<bitfield name="STENCIL_ENABLE" pos="0" type="boolean"/>
2135bf215546Sopenharmony_ci		<bitfield name="STENCIL_ENABLE_BF" pos="1" type="boolean"/>
2136bf215546Sopenharmony_ci		<!--
2137bf215546Sopenharmony_ci			set for stencil operations that require read from stencil
2138bf215546Sopenharmony_ci			buffer, but not for example for stencil clear (which does
2139bf215546Sopenharmony_ci			not require read).. so guessing this is analogous to
2140bf215546Sopenharmony_ci			READ_DEST_ENABLE for color buffer..
2141bf215546Sopenharmony_ci		 -->
2142bf215546Sopenharmony_ci		<bitfield name="STENCIL_READ" pos="2" type="boolean"/>
2143bf215546Sopenharmony_ci		<bitfield name="FUNC" low="8" high="10" type="adreno_compare_func"/>
2144bf215546Sopenharmony_ci		<bitfield name="FAIL" low="11" high="13" type="adreno_stencil_op"/>
2145bf215546Sopenharmony_ci		<bitfield name="ZPASS" low="14" high="16" type="adreno_stencil_op"/>
2146bf215546Sopenharmony_ci		<bitfield name="ZFAIL" low="17" high="19" type="adreno_stencil_op"/>
2147bf215546Sopenharmony_ci		<bitfield name="FUNC_BF" low="20" high="22" type="adreno_compare_func"/>
2148bf215546Sopenharmony_ci		<bitfield name="FAIL_BF" low="23" high="25" type="adreno_stencil_op"/>
2149bf215546Sopenharmony_ci		<bitfield name="ZPASS_BF" low="26" high="28" type="adreno_stencil_op"/>
2150bf215546Sopenharmony_ci		<bitfield name="ZFAIL_BF" low="29" high="31" type="adreno_stencil_op"/>
2151bf215546Sopenharmony_ci	</reg32>
2152bf215546Sopenharmony_ci	<reg32 offset="0x8881" name="RB_STENCIL_INFO">
2153bf215546Sopenharmony_ci		<bitfield name="SEPARATE_STENCIL" pos="0" type="boolean"/>
2154bf215546Sopenharmony_ci		<bitfield name="UNK1" pos="1" type="boolean"/>
2155bf215546Sopenharmony_ci	</reg32>
2156bf215546Sopenharmony_ci	<reg32 offset="0x8882" name="RB_STENCIL_BUFFER_PITCH" low="0" high="11" shr="6" type="uint"/>
2157bf215546Sopenharmony_ci	<reg32 offset="0x8883" name="RB_STENCIL_BUFFER_ARRAY_PITCH" low="0" high="23" shr="6" type="uint"/>
2158bf215546Sopenharmony_ci	<reg64 offset="0x8884" name="RB_STENCIL_BUFFER_BASE" type="waddress" align="64"/>
2159bf215546Sopenharmony_ci	<reg32 offset="0x8886" name="RB_STENCIL_BUFFER_BASE_GMEM" low="12" high="31" shr="12"/>
2160bf215546Sopenharmony_ci	<reg32 offset="0x8887" name="RB_STENCILREF">
2161bf215546Sopenharmony_ci		<bitfield name="REF" low="0" high="7"/>
2162bf215546Sopenharmony_ci		<bitfield name="BFREF" low="8" high="15"/>
2163bf215546Sopenharmony_ci	</reg32>
2164bf215546Sopenharmony_ci	<reg32 offset="0x8888" name="RB_STENCILMASK">
2165bf215546Sopenharmony_ci		<bitfield name="MASK" low="0" high="7"/>
2166bf215546Sopenharmony_ci		<bitfield name="BFMASK" low="8" high="15"/>
2167bf215546Sopenharmony_ci	</reg32>
2168bf215546Sopenharmony_ci	<reg32 offset="0x8889" name="RB_STENCILWRMASK">
2169bf215546Sopenharmony_ci		<bitfield name="WRMASK" low="0" high="7"/>
2170bf215546Sopenharmony_ci		<bitfield name="BFWRMASK" low="8" high="15"/>
2171bf215546Sopenharmony_ci	</reg32>
2172bf215546Sopenharmony_ci	<!-- 0x888a-0x888f invalid -->
2173bf215546Sopenharmony_ci	<reg32 offset="0x8890" name="RB_WINDOW_OFFSET" type="a6xx_reg_xy"/>
2174bf215546Sopenharmony_ci	<reg32 offset="0x8891" name="RB_SAMPLE_COUNT_CONTROL">
2175bf215546Sopenharmony_ci		<bitfield name="DISABLE" pos="0" type="boolean"/>
2176bf215546Sopenharmony_ci		<bitfield name="COPY" pos="1" type="boolean"/>
2177bf215546Sopenharmony_ci	</reg32>
2178bf215546Sopenharmony_ci	<!-- 0x8892-0x8897 invalid -->
2179bf215546Sopenharmony_ci	<reg32 offset="0x8898" name="RB_LRZ_CNTL">
2180bf215546Sopenharmony_ci		<bitfield name="ENABLE" pos="0" type="boolean"/>
2181bf215546Sopenharmony_ci	</reg32>
2182bf215546Sopenharmony_ci	<!-- 0x8899-0x88bf invalid -->
2183bf215546Sopenharmony_ci	<!-- clamps depth value for depth test/write -->
2184bf215546Sopenharmony_ci	<reg32 offset="0x88c0" name="RB_Z_CLAMP_MIN" type="float"/>
2185bf215546Sopenharmony_ci	<reg32 offset="0x88c1" name="RB_Z_CLAMP_MAX" type="float"/>
2186bf215546Sopenharmony_ci	<!-- 0x88c2-0x88cf invalid-->
2187bf215546Sopenharmony_ci	<reg32 offset="0x88d0" name="RB_UNKNOWN_88D0">
2188bf215546Sopenharmony_ci		<bitfield name="UNK0" low="0" high="12"/>
2189bf215546Sopenharmony_ci		<bitfield name="UNK16" low="16" high="26"/>
2190bf215546Sopenharmony_ci	</reg32>
2191bf215546Sopenharmony_ci	<reg32 offset="0x88d1" name="RB_BLIT_SCISSOR_TL" type="a6xx_reg_xy"/>
2192bf215546Sopenharmony_ci	<reg32 offset="0x88d2" name="RB_BLIT_SCISSOR_BR" type="a6xx_reg_xy"/>
2193bf215546Sopenharmony_ci	<!-- weird to duplicate other regs from same block?? -->
2194bf215546Sopenharmony_ci	<reg32 offset="0x88d3" name="RB_BIN_CONTROL2">
2195bf215546Sopenharmony_ci		<bitfield name="BINW" low="0" high="5" shr="5" type="uint"/>
2196bf215546Sopenharmony_ci		<bitfield name="BINH" low="8" high="14" shr="4" type="uint"/>
2197bf215546Sopenharmony_ci	</reg32>
2198bf215546Sopenharmony_ci	<reg32 offset="0x88d4" name="RB_WINDOW_OFFSET2" type="a6xx_reg_xy"/>
2199bf215546Sopenharmony_ci	<reg32 offset="0x88d5" name="RB_MSAA_CNTL">
2200bf215546Sopenharmony_ci		<bitfield name="SAMPLES" low="3" high="4" type="a3xx_msaa_samples"/>
2201bf215546Sopenharmony_ci	</reg32>
2202bf215546Sopenharmony_ci	<reg32 offset="0x88d6" name="RB_BLIT_BASE_GMEM" low="12" high="31" shr="12"/>
2203bf215546Sopenharmony_ci	<!-- s/DST_FORMAT/DST_INFO/ probably: -->
2204bf215546Sopenharmony_ci	<reg32 offset="0x88d7" name="RB_BLIT_DST_INFO">
2205bf215546Sopenharmony_ci		<bitfield name="TILE_MODE" low="0" high="1" type="a6xx_tile_mode"/>
2206bf215546Sopenharmony_ci		<bitfield name="FLAGS" pos="2" type="boolean"/>
2207bf215546Sopenharmony_ci		<bitfield name="SAMPLES" low="3" high="4" type="a3xx_msaa_samples"/>
2208bf215546Sopenharmony_ci		<bitfield name="COLOR_SWAP" low="5" high="6" type="a3xx_color_swap"/>
2209bf215546Sopenharmony_ci		<bitfield name="COLOR_FORMAT" low="7" high="14" type="a6xx_format"/>
2210bf215546Sopenharmony_ci		<bitfield name="UNK15" pos="15" type="boolean"/>
2211bf215546Sopenharmony_ci	</reg32>
2212bf215546Sopenharmony_ci	<reg64 offset="0x88d8" name="RB_BLIT_DST" type="waddress" align="64"/>
2213bf215546Sopenharmony_ci	<reg32 offset="0x88da" name="RB_BLIT_DST_PITCH" low="0" high="15" shr="6" type="uint"/>
2214bf215546Sopenharmony_ci	<!-- array-pitch is size of layer -->
2215bf215546Sopenharmony_ci	<reg32 offset="0x88db" name="RB_BLIT_DST_ARRAY_PITCH" low="0" high="28" shr="6" type="uint"/>
2216bf215546Sopenharmony_ci	<reg64 offset="0x88dc" name="RB_BLIT_FLAG_DST" type="waddress" align="64"/>
2217bf215546Sopenharmony_ci	<reg32 offset="0x88de" name="RB_BLIT_FLAG_DST_PITCH">
2218bf215546Sopenharmony_ci		<bitfield name="PITCH" low="0" high="10" shr="6" type="uint"/>
2219bf215546Sopenharmony_ci		<bitfield name="ARRAY_PITCH" low="11" high="27" shr="7" type="uint"/>
2220bf215546Sopenharmony_ci	</reg32>
2221bf215546Sopenharmony_ci
2222bf215546Sopenharmony_ci	<reg32 offset="0x88df" name="RB_BLIT_CLEAR_COLOR_DW0"/>
2223bf215546Sopenharmony_ci	<reg32 offset="0x88e0" name="RB_BLIT_CLEAR_COLOR_DW1"/>
2224bf215546Sopenharmony_ci	<reg32 offset="0x88e1" name="RB_BLIT_CLEAR_COLOR_DW2"/>
2225bf215546Sopenharmony_ci	<reg32 offset="0x88e2" name="RB_BLIT_CLEAR_COLOR_DW3"/>
2226bf215546Sopenharmony_ci
2227bf215546Sopenharmony_ci	<!-- seems somewhat similar to what we called RB_CLEAR_CNTL on a5xx: -->
2228bf215546Sopenharmony_ci	<reg32 offset="0x88e3" name="RB_BLIT_INFO">
2229bf215546Sopenharmony_ci		<bitfield name="UNK0" pos="0" type="boolean"/> <!-- s8 stencil restore/clear?  But also color restore? -->
2230bf215546Sopenharmony_ci		<bitfield name="GMEM" pos="1" type="boolean"/> <!-- set for restore and clear to gmem? -->
2231bf215546Sopenharmony_ci		<bitfield name="SAMPLE_0" pos="2" type="boolean"/> <!-- takes sample 0 instead of averaging -->
2232bf215546Sopenharmony_ci		<bitfield name="DEPTH" pos="3" type="boolean"/> <!-- z16/z32/z24s8/x24x8 clear or resolve? -->
2233bf215546Sopenharmony_ci		<doc>
2234bf215546Sopenharmony_ci			For clearing depth/stencil
2235bf215546Sopenharmony_ci				1 - depth
2236bf215546Sopenharmony_ci				2 - stencil
2237bf215546Sopenharmony_ci				3 - depth+stencil
2238bf215546Sopenharmony_ci			For clearing color buffer:
2239bf215546Sopenharmony_ci				then probably a component mask, I always see 0xf
2240bf215546Sopenharmony_ci		</doc>
2241bf215546Sopenharmony_ci		<bitfield name="CLEAR_MASK" low="4" high="7"/>
2242bf215546Sopenharmony_ci		<!-- set when this is the last resolve on a650+ -->
2243bf215546Sopenharmony_ci		<bitfield name="LAST" low="8" high="9"/>
2244bf215546Sopenharmony_ci		<!--
2245bf215546Sopenharmony_ci			a618 GLES: color render target number being resolved for RM6_RESOLVE, 0x8 for depth, 0x9 for separate stencil.
2246bf215546Sopenharmony_ci			a618 VK: 0x8 for depth RM6_RESOLVE, 0x9 for separate stencil, 0 otherwise.
2247bf215546Sopenharmony_ci
2248bf215546Sopenharmony_ci			We believe this is related to concurrent resolves
2249bf215546Sopenharmony_ci		 -->
2250bf215546Sopenharmony_ci		<bitfield name="BUFFER_ID" low="12" high="15"/>
2251bf215546Sopenharmony_ci	</reg32>
2252bf215546Sopenharmony_ci	<!-- 0x88e4-0x88ef invalid -->
2253bf215546Sopenharmony_ci	<!-- always 0x0 ? -->
2254bf215546Sopenharmony_ci	<reg32 offset="0x88f0" name="RB_UNKNOWN_88F0" low="0" high="11"/>
2255bf215546Sopenharmony_ci	<!-- could be for separate stencil? (or may not be a flag buffer at all) -->
2256bf215546Sopenharmony_ci	<reg64 offset="0x88f1" name="RB_UNK_FLAG_BUFFER_BASE" type="waddress" align="64"/>
2257bf215546Sopenharmony_ci	<reg32 offset="0x88f3" name="RB_UNK_FLAG_BUFFER_PITCH">
2258bf215546Sopenharmony_ci		<bitfield name="PITCH" low="0" high="10" shr="6" type="uint"/>
2259bf215546Sopenharmony_ci		<bitfield name="ARRAY_PITCH" low="11" high="23" shr="7" type="uint"/>
2260bf215546Sopenharmony_ci	</reg32>
2261bf215546Sopenharmony_ci	<reg32 offset="0x88f4" name="RB_UNKNOWN_88F4" low="0" high="2"/>
2262bf215546Sopenharmony_ci	<!-- 0x88f5-0x88ff invalid -->
2263bf215546Sopenharmony_ci	<reg64 offset="0x8900" name="RB_DEPTH_FLAG_BUFFER_BASE" type="waddress" align="64"/>
2264bf215546Sopenharmony_ci	<reg32 offset="0x8902" name="RB_DEPTH_FLAG_BUFFER_PITCH">
2265bf215546Sopenharmony_ci		<bitfield name="PITCH" low="0" high="6" shr="6" type="uint"/>
2266bf215546Sopenharmony_ci		<!-- TODO: actually part of array pitch -->
2267bf215546Sopenharmony_ci		<bitfield name="UNK8" low="8" high="10"/>
2268bf215546Sopenharmony_ci		<bitfield name="ARRAY_PITCH" low="11" high="27" shr="7" type="uint"/>
2269bf215546Sopenharmony_ci	</reg32>
2270bf215546Sopenharmony_ci	<array offset="0x8903" name="RB_MRT_FLAG_BUFFER" stride="3" length="8">
2271bf215546Sopenharmony_ci		<reg64 offset="0" name="ADDR" type="waddress" align="64"/>
2272bf215546Sopenharmony_ci		<reg32 offset="2" name="PITCH">
2273bf215546Sopenharmony_ci			<bitfield name="PITCH" low="0" high="10" shr="6" type="uint"/>
2274bf215546Sopenharmony_ci			<bitfield name="ARRAY_PITCH" low="11" high="28" shr="7" type="uint"/>
2275bf215546Sopenharmony_ci		</reg32>
2276bf215546Sopenharmony_ci	</array>
2277bf215546Sopenharmony_ci	<!-- 0x891b-0x8926 invalid -->
2278bf215546Sopenharmony_ci	<reg64 offset="0x8927" name="RB_SAMPLE_COUNT_ADDR" type="waddress" align="16"/>
2279bf215546Sopenharmony_ci	<!-- 0x8929-0x89ff invalid -->
2280bf215546Sopenharmony_ci
2281bf215546Sopenharmony_ci	<!-- TODO: there are some registers in the 0x8a00-0x8bff range -->
2282bf215546Sopenharmony_ci
2283bf215546Sopenharmony_ci	<!--
2284bf215546Sopenharmony_ci		These show up in a6xx gen3+ but so far haven't found an example of
2285bf215546Sopenharmony_ci		blob writing non-zero:
2286bf215546Sopenharmony_ci	 -->
2287bf215546Sopenharmony_ci	<reg32 offset="0x8a00" name="RB_UNKNOWN_8A00"/>
2288bf215546Sopenharmony_ci	<reg32 offset="0x8a10" name="RB_UNKNOWN_8A10"/>
2289bf215546Sopenharmony_ci	<reg32 offset="0x8a20" name="RB_UNKNOWN_8A20"/>
2290bf215546Sopenharmony_ci	<reg32 offset="0x8a30" name="RB_UNKNOWN_8A30"/>
2291bf215546Sopenharmony_ci
2292bf215546Sopenharmony_ci	<reg32 offset="0x8c00" name="RB_2D_BLIT_CNTL" type="a6xx_2d_blit_cntl"/>
2293bf215546Sopenharmony_ci	<reg32 offset="0x8c01" name="RB_2D_UNKNOWN_8C01" low="0" high="31"/>
2294bf215546Sopenharmony_ci
2295bf215546Sopenharmony_ci	<bitset name="a6xx_2d_surf_info" inline="yes">
2296bf215546Sopenharmony_ci		<bitfield name="COLOR_FORMAT" low="0" high="7" type="a6xx_format"/>
2297bf215546Sopenharmony_ci		<bitfield name="TILE_MODE" low="8" high="9" type="a6xx_tile_mode"/>
2298bf215546Sopenharmony_ci		<bitfield name="COLOR_SWAP" low="10" high="11" type="a3xx_color_swap"/>
2299bf215546Sopenharmony_ci		<bitfield name="FLAGS" pos="12" type="boolean"/>
2300bf215546Sopenharmony_ci		<bitfield name="SRGB" pos="13" type="boolean"/>
2301bf215546Sopenharmony_ci		<!-- the rest is only for src -->
2302bf215546Sopenharmony_ci		<bitfield name="SAMPLES" low="14" high="15" type="a3xx_msaa_samples"/>
2303bf215546Sopenharmony_ci		<bitfield name="FILTER" pos="16" type="boolean"/>
2304bf215546Sopenharmony_ci		<bitfield name="UNK17" pos="17" type="boolean"/>
2305bf215546Sopenharmony_ci		<bitfield name="SAMPLES_AVERAGE" pos="18" type="boolean"/>
2306bf215546Sopenharmony_ci		<bitfield name="UNK19" pos="19" type="boolean"/>
2307bf215546Sopenharmony_ci		<bitfield name="UNK20" pos="20" type="boolean"/>
2308bf215546Sopenharmony_ci		<bitfield name="UNK21" pos="21" type="boolean"/>
2309bf215546Sopenharmony_ci		<bitfield name="UNK22" pos="22" type="boolean"/>
2310bf215546Sopenharmony_ci		<bitfield name="UNK23" low="23" high="26"/>
2311bf215546Sopenharmony_ci		<bitfield name="UNK28" pos="28" type="boolean"/>
2312bf215546Sopenharmony_ci	</bitset>
2313bf215546Sopenharmony_ci
2314bf215546Sopenharmony_ci	<!-- 0x8c02-0x8c16 invalid -->
2315bf215546Sopenharmony_ci	<!-- TODO: RB_2D_DST_INFO has 17 valid bits (doesn't match a6xx_2d_surf_info) -->
2316bf215546Sopenharmony_ci	<reg32 offset="0x8c17" name="RB_2D_DST_INFO" type="a6xx_2d_surf_info"/>
2317bf215546Sopenharmony_ci	<reg64 offset="0x8c18" name="RB_2D_DST" type="waddress" align="64"/>
2318bf215546Sopenharmony_ci	<reg32 offset="0x8c1a" name="RB_2D_DST_PITCH" low="0" high="15" shr="6" type="uint"/>
2319bf215546Sopenharmony_ci	<!-- this is a guess but seems likely (for NV12/IYUV): -->
2320bf215546Sopenharmony_ci	<reg64 offset="0x8c1b" name="RB_2D_DST_PLANE1" type="waddress" align="64"/>
2321bf215546Sopenharmony_ci	<reg32 offset="0x8c1d" name="RB_2D_DST_PLANE_PITCH" low="0" high="15" shr="6" type="uint"/>
2322bf215546Sopenharmony_ci	<reg64 offset="0x8c1e" name="RB_2D_DST_PLANE2" type="waddress" align="64"/>
2323bf215546Sopenharmony_ci
2324bf215546Sopenharmony_ci	<reg64 offset="0x8c20" name="RB_2D_DST_FLAGS" type="waddress" align="64"/>
2325bf215546Sopenharmony_ci	<reg32 offset="0x8c22" name="RB_2D_DST_FLAGS_PITCH" low="0" high="7" shr="6" type="uint"/>
2326bf215546Sopenharmony_ci	<!-- this is a guess but seems likely (for NV12 with UBWC): -->
2327bf215546Sopenharmony_ci	<reg64 offset="0x8c23" name="RB_2D_DST_FLAGS_PLANE" type="waddress" align="64"/>
2328bf215546Sopenharmony_ci	<reg32 offset="0x8c25" name="RB_2D_DST_FLAGS_PLANE_PITCH" low="0" high="7" shr="6" type="uint"/>
2329bf215546Sopenharmony_ci
2330bf215546Sopenharmony_ci	<!-- TODO: 0x8c26-0x8c33 are all full 32-bit registers -->
2331bf215546Sopenharmony_ci	<!-- unlike a5xx, these are per channel values rather than packed -->
2332bf215546Sopenharmony_ci	<reg32 offset="0x8c2c" name="RB_2D_SRC_SOLID_C0"/>
2333bf215546Sopenharmony_ci	<reg32 offset="0x8c2d" name="RB_2D_SRC_SOLID_C1"/>
2334bf215546Sopenharmony_ci	<reg32 offset="0x8c2e" name="RB_2D_SRC_SOLID_C2"/>
2335bf215546Sopenharmony_ci	<reg32 offset="0x8c2f" name="RB_2D_SRC_SOLID_C3"/>
2336bf215546Sopenharmony_ci	<!-- 0x8c34-0x8dff invalid -->
2337bf215546Sopenharmony_ci
2338bf215546Sopenharmony_ci	<!-- always 0x1 ? either doesn't exist for a650 or write-only: -->
2339bf215546Sopenharmony_ci	<reg32 offset="0x8e01" name="RB_UNKNOWN_8E01"/>
2340bf215546Sopenharmony_ci	<!-- 0x8e00-0x8e03 invalid -->
2341bf215546Sopenharmony_ci	<reg32 offset="0x8e04" name="RB_UNKNOWN_8E04"/> <!-- TODO: valid mask 0xfffffeff -->
2342bf215546Sopenharmony_ci	<reg32 offset="0x8e05" name="RB_ADDR_MODE_CNTL" pos="0" type="a5xx_address_mode"/>
2343bf215546Sopenharmony_ci	<!-- 0x8e06 invalid -->
2344bf215546Sopenharmony_ci	<reg32 offset="0x8e07" name="RB_CCU_CNTL">
2345bf215546Sopenharmony_ci		<!-- GMEM offset of CCU color cache
2346bf215546Sopenharmony_ci			for GMEM rendering, we set it to GMEM size minus the minimum
2347bf215546Sopenharmony_ci			CCU color cache size. CCU color cache will be needed in some
2348bf215546Sopenharmony_ci			resolve cases, and in those cases we need to reserve the end
2349bf215546Sopenharmony_ci			of GMEM for color cache.
2350bf215546Sopenharmony_ci		-->
2351bf215546Sopenharmony_ci		<bitfield name="COLOR_OFFSET" low="23" high="31" shr="12" type="hex"/>
2352bf215546Sopenharmony_ci		<!-- GMEM offset of CCU depth cache -->
2353bf215546Sopenharmony_ci		<bitfield name="DEPTH_OFFSET" low="12" high="20" shr="12" type="hex"/>
2354bf215546Sopenharmony_ci		<bitfield name="GMEM" pos="22" type="boolean"/> <!-- set for GMEM path -->
2355bf215546Sopenharmony_ci		<!-- concurrent resolves are apparently a 2-bit enum on a650+ -->
2356bf215546Sopenharmony_ci		<bitfield name="CONCURRENT_RESOLVE" pos="2" type="boolean"/>
2357bf215546Sopenharmony_ci		<!--TODO: valid mask 0xfffffc1f -->
2358bf215546Sopenharmony_ci	</reg32>
2359bf215546Sopenharmony_ci	<reg32 offset="0x8e08" name="RB_NC_MODE_CNTL">
2360bf215546Sopenharmony_ci		<bitfield name="MODE" pos="0" type="boolean"/>
2361bf215546Sopenharmony_ci		<bitfield name="LOWER_BIT" low="1" high="2" type="uint"/>
2362bf215546Sopenharmony_ci		<bitfield name="MIN_ACCESS_LENGTH" pos="3" type="boolean"/> <!-- true=64b false=32b -->
2363bf215546Sopenharmony_ci		<bitfield name="AMSBC" pos="4" type="boolean"/>
2364bf215546Sopenharmony_ci		<bitfield name="UPPER_BIT" pos="10" type="uint"/>
2365bf215546Sopenharmony_ci		<bitfield name="RGB565_PREDICATOR" pos="11" type="boolean"/>
2366bf215546Sopenharmony_ci		<bitfield name="UNK12" low="12" high="13"/>
2367bf215546Sopenharmony_ci	</reg32>
2368bf215546Sopenharmony_ci	<!-- 0x8e09-0x8e0f invalid -->
2369bf215546Sopenharmony_ci	<array offset="0x8e10" name="RB_PERFCTR_RB_SEL" stride="1" length="8"/>
2370bf215546Sopenharmony_ci	<array offset="0x8e18" name="RB_PERFCTR_CCU_SEL" stride="1" length="5"/>
2371bf215546Sopenharmony_ci	<!-- 0x8e1d-0x8e1f invalid -->
2372bf215546Sopenharmony_ci	<!-- 0x8e20-0x8e25 more perfcntr sel? -->
2373bf215546Sopenharmony_ci	<!-- 0x8e26-0x8e27 invalid -->
2374bf215546Sopenharmony_ci	<reg32 offset="0x8e28" name="RB_UNKNOWN_8E28" low="0" high="10"/>
2375bf215546Sopenharmony_ci	<!-- 0x8e29-0x8e2b invalid -->
2376bf215546Sopenharmony_ci	<array offset="0x8e2c" name="RB_PERFCTR_CMP_SEL" stride="1" length="4"/>
2377bf215546Sopenharmony_ci	<reg32 offset="0x8e3b" name="RB_RB_SUB_BLOCK_SEL_CNTL_HOST"/>
2378bf215546Sopenharmony_ci	<reg32 offset="0x8e3d" name="RB_RB_SUB_BLOCK_SEL_CNTL_CD"/>
2379bf215546Sopenharmony_ci	<!-- 0x8e3e-0x8e4f invalid -->
2380bf215546Sopenharmony_ci	<!-- GMEM save/restore for preemption: -->
2381bf215546Sopenharmony_ci	<reg32 offset="0x8e50" name="RB_CONTEXT_SWITCH_GMEM_SAVE_RESTORE" pos="0" type="boolean"/>
2382bf215546Sopenharmony_ci	<!-- address for GMEM save/restore? -->
2383bf215546Sopenharmony_ci	<reg32 offset="0x8e51" name="RB_UNKNOWN_8E51" type="waddress" align="1"/>
2384bf215546Sopenharmony_ci	<!-- 0x8e53-0x8e7f invalid -->
2385bf215546Sopenharmony_ci	<!-- 0x8e80-0x8e83 are valid -->
2386bf215546Sopenharmony_ci	<!-- 0x8e84-0x90ff invalid -->
2387bf215546Sopenharmony_ci
2388bf215546Sopenharmony_ci	<!-- 0x9000-0x90ff invalid -->
2389bf215546Sopenharmony_ci
2390bf215546Sopenharmony_ci	<reg32 offset="0x9100" name="VPC_GS_PARAM">
2391bf215546Sopenharmony_ci		<bitfield name="LINELENGTHLOC" low="0" high="7" type="uint"/>
2392bf215546Sopenharmony_ci	</reg32>
2393bf215546Sopenharmony_ci
2394bf215546Sopenharmony_ci	<bitset name="a6xx_vpc_xs_clip_cntl" inline="yes">
2395bf215546Sopenharmony_ci		<bitfield name="CLIP_MASK" low="0" high="7" type="uint"/>
2396bf215546Sopenharmony_ci		<!-- there can be up to 8 total clip/cull distance outputs,
2397bf215546Sopenharmony_ci		     but apparenly VPC can only deal with vec4, so when there are
2398bf215546Sopenharmony_ci		     more than 4 outputs a second location needs to be programmed
2399bf215546Sopenharmony_ci		-->
2400bf215546Sopenharmony_ci		<bitfield name="CLIP_DIST_03_LOC" low="8" high="15" type="uint"/>
2401bf215546Sopenharmony_ci		<bitfield name="CLIP_DIST_47_LOC" low="16" high="23" type="uint"/>
2402bf215546Sopenharmony_ci	</bitset>
2403bf215546Sopenharmony_ci	<reg32 offset="0x9101" name="VPC_VS_CLIP_CNTL" type="a6xx_vpc_xs_clip_cntl"/>
2404bf215546Sopenharmony_ci	<reg32 offset="0x9102" name="VPC_GS_CLIP_CNTL" type="a6xx_vpc_xs_clip_cntl"/>
2405bf215546Sopenharmony_ci	<reg32 offset="0x9103" name="VPC_DS_CLIP_CNTL" type="a6xx_vpc_xs_clip_cntl"/>
2406bf215546Sopenharmony_ci
2407bf215546Sopenharmony_ci	<bitset name="a6xx_vpc_xs_layer_cntl" inline="yes">
2408bf215546Sopenharmony_ci		<bitfield name="LAYERLOC" low="0" high="7" type="uint"/>
2409bf215546Sopenharmony_ci		<bitfield name="VIEWLOC" low="8" high="15" type="uint"/>
2410bf215546Sopenharmony_ci	</bitset>
2411bf215546Sopenharmony_ci
2412bf215546Sopenharmony_ci	<reg32 offset="0x9104" name="VPC_VS_LAYER_CNTL" type="a6xx_vpc_xs_layer_cntl"/>
2413bf215546Sopenharmony_ci	<reg32 offset="0x9105" name="VPC_GS_LAYER_CNTL" type="a6xx_vpc_xs_layer_cntl"/>
2414bf215546Sopenharmony_ci	<reg32 offset="0x9106" name="VPC_DS_LAYER_CNTL" type="a6xx_vpc_xs_layer_cntl"/>
2415bf215546Sopenharmony_ci
2416bf215546Sopenharmony_ci	<reg32 offset="0x9107" name="VPC_UNKNOWN_9107">
2417bf215546Sopenharmony_ci		<!-- this mirrors PC_RASTER_CNTL::DISCARD, although it seems it's unused -->
2418bf215546Sopenharmony_ci		<bitfield name="RASTER_DISCARD" pos="0" type="boolean"/>
2419bf215546Sopenharmony_ci		<bitfield name="UNK2" pos="2" type="boolean"/>
2420bf215546Sopenharmony_ci	</reg32>
2421bf215546Sopenharmony_ci	<reg32 offset="0x9108" name="VPC_POLYGON_MODE">
2422bf215546Sopenharmony_ci		<bitfield name="MODE" low="0" high="1" type="a6xx_polygon_mode"/>
2423bf215546Sopenharmony_ci	</reg32>
2424bf215546Sopenharmony_ci	<!-- 0x9109-0x91ff invalid -->
2425bf215546Sopenharmony_ci	<array offset="0x9200" name="VPC_VARYING_INTERP" stride="1" length="8">
2426bf215546Sopenharmony_ci		<reg32 offset="0x0" name="MODE"/>
2427bf215546Sopenharmony_ci	</array>
2428bf215546Sopenharmony_ci	<array offset="0x9208" name="VPC_VARYING_PS_REPL" stride="1" length="8">
2429bf215546Sopenharmony_ci		<reg32 offset="0x0" name="MODE"/>
2430bf215546Sopenharmony_ci	</array>
2431bf215546Sopenharmony_ci
2432bf215546Sopenharmony_ci	<!-- always 0x0 -->
2433bf215546Sopenharmony_ci	<reg32 offset="0x9210" name="VPC_UNKNOWN_9210" low="0" high="31"/>
2434bf215546Sopenharmony_ci	<reg32 offset="0x9211" name="VPC_UNKNOWN_9211" low="0" high="31"/>
2435bf215546Sopenharmony_ci
2436bf215546Sopenharmony_ci	<array offset="0x9212" name="VPC_VAR" stride="1" length="4">
2437bf215546Sopenharmony_ci		<!-- one bit per varying component: -->
2438bf215546Sopenharmony_ci		<reg32 offset="0" name="DISABLE"/>
2439bf215546Sopenharmony_ci	</array>
2440bf215546Sopenharmony_ci
2441bf215546Sopenharmony_ci	<reg32 offset="0x9216" name="VPC_SO_CNTL">
2442bf215546Sopenharmony_ci		<!--
2443bf215546Sopenharmony_ci			Choose which DWORD to write to. There is an array of
2444bf215546Sopenharmony_ci			(4 * 64) DWORD's, dumped in the devcoredump at
2445bf215546Sopenharmony_ci			HLSQ_INST_RAM dword 0x400. Each DWORD corresponds to a
2446bf215546Sopenharmony_ci			(VPC location, stream) pair like so:
2447bf215546Sopenharmony_ci
2448bf215546Sopenharmony_ci			location 0, stream 0
2449bf215546Sopenharmony_ci			location 2, stream 0
2450bf215546Sopenharmony_ci			...
2451bf215546Sopenharmony_ci			location 126, stream 0
2452bf215546Sopenharmony_ci			location 0, stream 1
2453bf215546Sopenharmony_ci			location 2, stream 1
2454bf215546Sopenharmony_ci			...
2455bf215546Sopenharmony_ci			location 126, stream 1
2456bf215546Sopenharmony_ci			location 0, stream 2
2457bf215546Sopenharmony_ci			...
2458bf215546Sopenharmony_ci
2459bf215546Sopenharmony_ci			When EmitStreamVertex(N) happens, the HW goes to DWORD
2460bf215546Sopenharmony_ci			64 * N and then "executes" the next 64 DWORD's.
2461bf215546Sopenharmony_ci
2462bf215546Sopenharmony_ci			This field is auto-incremented when VPC_SO_PROG is
2463bf215546Sopenharmony_ci			written to.
2464bf215546Sopenharmony_ci		-->
2465bf215546Sopenharmony_ci		<bitfield name="ADDR" low="0" high="7" type="hex"/>
2466bf215546Sopenharmony_ci		<!-- clear all A_EN and B_EN bits for all DWORD's -->
2467bf215546Sopenharmony_ci		<bitfield name="RESET" pos="16" type="boolean"/>
2468bf215546Sopenharmony_ci	</reg32>
2469bf215546Sopenharmony_ci	<!-- special register, write multiple times to load SO program (not readable) -->
2470bf215546Sopenharmony_ci	<reg32 offset="0x9217" name="VPC_SO_PROG">
2471bf215546Sopenharmony_ci		<bitfield name="A_BUF" low="0" high="1" type="uint"/>
2472bf215546Sopenharmony_ci		<bitfield name="A_OFF" low="2" high="10" shr="2" type="uint"/>
2473bf215546Sopenharmony_ci		<bitfield name="A_EN" pos="11" type="boolean"/>
2474bf215546Sopenharmony_ci		<bitfield name="B_BUF" low="12" high="13" type="uint"/>
2475bf215546Sopenharmony_ci		<bitfield name="B_OFF" low="14" high="22" shr="2" type="uint"/>
2476bf215546Sopenharmony_ci		<bitfield name="B_EN" pos="23" type="boolean"/>
2477bf215546Sopenharmony_ci	</reg32>
2478bf215546Sopenharmony_ci
2479bf215546Sopenharmony_ci	<reg64 offset="0x9218" name="VPC_SO_STREAM_COUNTS" type="waddress" align="32"/>
2480bf215546Sopenharmony_ci
2481bf215546Sopenharmony_ci	<array offset="0x921a" name="VPC_SO" stride="7" length="4">
2482bf215546Sopenharmony_ci		<reg64 offset="0" name="BUFFER_BASE" type="waddress" align="32"/>
2483bf215546Sopenharmony_ci		<reg32 offset="2" name="BUFFER_SIZE" low="2" high="31" shr="2"/>
2484bf215546Sopenharmony_ci		<reg32 offset="3" name="BUFFER_STRIDE" low="0" high="9" shr="2"/>
2485bf215546Sopenharmony_ci		<reg32 offset="4" name="BUFFER_OFFSET" low="2" high="31" shr="2"/>
2486bf215546Sopenharmony_ci		<reg64 offset="5" name="FLUSH_BASE" type="waddress" align="32"/>
2487bf215546Sopenharmony_ci	</array>
2488bf215546Sopenharmony_ci
2489bf215546Sopenharmony_ci	<reg32 offset="0x9236" name="VPC_POINT_COORD_INVERT">
2490bf215546Sopenharmony_ci		<bitfield name="INVERT" pos="0" type="boolean"/>
2491bf215546Sopenharmony_ci	</reg32>
2492bf215546Sopenharmony_ci	<!-- 0x9237-0x92ff invalid -->
2493bf215546Sopenharmony_ci	<!-- always 0x0 ? -->
2494bf215546Sopenharmony_ci	<reg32 offset="0x9300" name="VPC_UNKNOWN_9300" low="0" high="2"/>
2495bf215546Sopenharmony_ci
2496bf215546Sopenharmony_ci	<bitset name="a6xx_vpc_xs_pack" inline="yes">
2497bf215546Sopenharmony_ci		<doc>
2498bf215546Sopenharmony_ci			num of varyings plus four for gl_Position (plus one if gl_PointSize)
2499bf215546Sopenharmony_ci			plus # of transform-feedback (streamout) varyings if using the
2500bf215546Sopenharmony_ci			hw streamout (rather than stg instructions in shader)
2501bf215546Sopenharmony_ci		</doc>
2502bf215546Sopenharmony_ci		<bitfield name="STRIDE_IN_VPC" low="0" high="7" type="uint"/>
2503bf215546Sopenharmony_ci		<bitfield name="POSITIONLOC" low="8" high="15" type="uint"/>
2504bf215546Sopenharmony_ci		<bitfield name="PSIZELOC" low="16" high="23" type="uint"/>
2505bf215546Sopenharmony_ci		<bitfield name="EXTRAPOS" low="24" high="27" type="uint">
2506bf215546Sopenharmony_ci			<doc>
2507bf215546Sopenharmony_ci				The number of extra copies of POSITION, i.e.
2508bf215546Sopenharmony_ci				number of views minus one when multi-position
2509bf215546Sopenharmony_ci				output is enabled, otherwise 0.
2510bf215546Sopenharmony_ci			</doc>
2511bf215546Sopenharmony_ci		</bitfield>
2512bf215546Sopenharmony_ci	</bitset>
2513bf215546Sopenharmony_ci	<reg32 offset="0x9301" name="VPC_VS_PACK" type="a6xx_vpc_xs_pack"/>
2514bf215546Sopenharmony_ci	<reg32 offset="0x9302" name="VPC_GS_PACK" type="a6xx_vpc_xs_pack"/>
2515bf215546Sopenharmony_ci	<reg32 offset="0x9303" name="VPC_DS_PACK" type="a6xx_vpc_xs_pack"/>
2516bf215546Sopenharmony_ci
2517bf215546Sopenharmony_ci	<reg32 offset="0x9304" name="VPC_CNTL_0">
2518bf215546Sopenharmony_ci		<bitfield name="NUMNONPOSVAR" low="0" high="7" type="uint"/>
2519bf215546Sopenharmony_ci		<!-- for fixed-function (i.e. no GS) gl_PrimitiveID in FS -->
2520bf215546Sopenharmony_ci		<bitfield name="PRIMIDLOC" low="8" high="15" type="uint"/>
2521bf215546Sopenharmony_ci		<bitfield name="VARYING" pos="16" type="boolean"/>
2522bf215546Sopenharmony_ci		<bitfield name="VIEWIDLOC" low="24" high="31" type="uint">
2523bf215546Sopenharmony_ci			<doc>
2524bf215546Sopenharmony_ci				This VPC location will be overwritten with
2525bf215546Sopenharmony_ci				ViewID when multiview is enabled. It's used when
2526bf215546Sopenharmony_ci				fragment shaders read ViewID. It's only
2527bf215546Sopenharmony_ci				strictly required for multi-position output,
2528bf215546Sopenharmony_ci				where the same VS invocation is used for all the
2529bf215546Sopenharmony_ci				views at once, but it can be used when multi-pos
2530bf215546Sopenharmony_ci				output is disabled too, to avoid having to pass
2531bf215546Sopenharmony_ci				ViewID through the VS.
2532bf215546Sopenharmony_ci			</doc>
2533bf215546Sopenharmony_ci		</bitfield>
2534bf215546Sopenharmony_ci	</reg32>
2535bf215546Sopenharmony_ci
2536bf215546Sopenharmony_ci	<reg32 offset="0x9305" name="VPC_SO_STREAM_CNTL">
2537bf215546Sopenharmony_ci		<!--
2538bf215546Sopenharmony_ci		It's offset by 1, and 0 means "disabled"
2539bf215546Sopenharmony_ci		-->
2540bf215546Sopenharmony_ci		<bitfield name="BUF0_STREAM" low="0" high="2" type="uint"/>
2541bf215546Sopenharmony_ci		<bitfield name="BUF1_STREAM" low="3" high="5" type="uint"/>
2542bf215546Sopenharmony_ci		<bitfield name="BUF2_STREAM" low="6" high="8" type="uint"/>
2543bf215546Sopenharmony_ci		<bitfield name="BUF3_STREAM" low="9" high="11" type="uint"/>
2544bf215546Sopenharmony_ci		<bitfield name="STREAM_ENABLE" low="15" high="18" type="hex"/>
2545bf215546Sopenharmony_ci	</reg32>
2546bf215546Sopenharmony_ci	<reg32 offset="0x9306" name="VPC_SO_DISABLE">
2547bf215546Sopenharmony_ci		<bitfield name="DISABLE" pos="0" type="boolean"/>
2548bf215546Sopenharmony_ci	</reg32>
2549bf215546Sopenharmony_ci	<!-- 0x9307-0x95ff invalid -->
2550bf215546Sopenharmony_ci
2551bf215546Sopenharmony_ci	<!-- TODO: 0x9600-0x97ff range -->
2552bf215546Sopenharmony_ci	<reg32 offset="0x9600" name="VPC_UNKNOWN_9600"/> <!-- always 0x0 ? TODO: 0x1fbf37ff valid mask -->
2553bf215546Sopenharmony_ci	<reg32 offset="0x9601" name="VPC_ADDR_MODE_CNTL" pos="0" type="a5xx_address_mode"/>
2554bf215546Sopenharmony_ci	<reg32 offset="0x9602" name="VPC_UNKNOWN_9602" pos="0"/> <!-- always 0x0 ? -->
2555bf215546Sopenharmony_ci	<reg32 offset="0x9603" name="VPC_UNKNOWN_9603" low="0" high="26"/>
2556bf215546Sopenharmony_ci	<array offset="0x9604" name="VPC_PERFCTR_VPC_SEL" stride="1" length="6"/>
2557bf215546Sopenharmony_ci	<!-- 0x960a-0x9623 invalid -->
2558bf215546Sopenharmony_ci	<!-- TODO: regs from 0x9624-0x963a -->
2559bf215546Sopenharmony_ci	<!-- 0x963b-0x97ff invalid -->
2560bf215546Sopenharmony_ci
2561bf215546Sopenharmony_ci	<reg32 offset="0x9800" name="PC_TESS_NUM_VERTEX" low="0" high="5" type="uint"/>
2562bf215546Sopenharmony_ci
2563bf215546Sopenharmony_ci	<!-- always 0x0 ? -->
2564bf215546Sopenharmony_ci	<reg32 offset="0x9801" name="PC_HS_INPUT_SIZE">
2565bf215546Sopenharmony_ci		<bitfield name="SIZE" low="0" high="10" type="uint"/>
2566bf215546Sopenharmony_ci		<bitfield name="UNK13" pos="13"/>
2567bf215546Sopenharmony_ci	</reg32>
2568bf215546Sopenharmony_ci
2569bf215546Sopenharmony_ci	<enum name="a6xx_tess_spacing">
2570bf215546Sopenharmony_ci		<value value="0x0" name="TESS_EQUAL"/>
2571bf215546Sopenharmony_ci		<value value="0x2" name="TESS_FRACTIONAL_ODD"/>
2572bf215546Sopenharmony_ci		<value value="0x3" name="TESS_FRACTIONAL_EVEN"/>
2573bf215546Sopenharmony_ci	</enum>
2574bf215546Sopenharmony_ci	<enum name="a6xx_tess_output">
2575bf215546Sopenharmony_ci		<value value="0x0" name="TESS_POINTS"/>
2576bf215546Sopenharmony_ci		<value value="0x1" name="TESS_LINES"/>
2577bf215546Sopenharmony_ci		<value value="0x2" name="TESS_CW_TRIS"/>
2578bf215546Sopenharmony_ci		<value value="0x3" name="TESS_CCW_TRIS"/>
2579bf215546Sopenharmony_ci	</enum>
2580bf215546Sopenharmony_ci	<reg32 offset="0x9802" name="PC_TESS_CNTL">
2581bf215546Sopenharmony_ci		<bitfield name="SPACING" low="0" high="1" type="a6xx_tess_spacing"/>
2582bf215546Sopenharmony_ci		<bitfield name="OUTPUT" low="2" high="3" type="a6xx_tess_output"/>
2583bf215546Sopenharmony_ci	</reg32>
2584bf215546Sopenharmony_ci
2585bf215546Sopenharmony_ci	<reg32 offset="0x9803" name="PC_RESTART_INDEX" low="0" high="31" type="uint"/>
2586bf215546Sopenharmony_ci	<reg32 offset="0x9804" name="PC_MODE_CNTL" low="0" high="7"/>
2587bf215546Sopenharmony_ci
2588bf215546Sopenharmony_ci	<reg32 offset="0x9805" name="PC_POWER_CNTL" low="0" high="2"/>
2589bf215546Sopenharmony_ci
2590bf215546Sopenharmony_ci	<!-- probably a mirror of VFD_CONTROL_6 -->
2591bf215546Sopenharmony_ci	<reg32 offset="0x9806" name="PC_PRIMID_PASSTHRU" pos="0" type="boolean"/>
2592bf215546Sopenharmony_ci
2593bf215546Sopenharmony_ci	<!-- New in a6xx gen3+ -->
2594bf215546Sopenharmony_ci	<reg32 offset="0x9808" name="PC_SO_STREAM_CNTL">
2595bf215546Sopenharmony_ci		<bitfield name="STREAM_ENABLE" pos="15" type="boolean"/>
2596bf215546Sopenharmony_ci	</reg32>
2597bf215546Sopenharmony_ci
2598bf215546Sopenharmony_ci	<reg32 offset="0x980a" name="PC_DGEN_SU_CONSERVATIVE_RAS_CNTL">
2599bf215546Sopenharmony_ci		<bitfield name="CONSERVATIVERASEN" pos="0" type="boolean"/>
2600bf215546Sopenharmony_ci	</reg32>
2601bf215546Sopenharmony_ci	<!-- 0x980b-0x983f invalid -->
2602bf215546Sopenharmony_ci
2603bf215546Sopenharmony_ci	<!-- 0x9840 - 0x9842 are not readable -->
2604bf215546Sopenharmony_ci	<reg32 offset="0x9840" name="PC_DRAW_CMD">
2605bf215546Sopenharmony_ci		<bitfield name="STATE_ID" low="0" high="7"/>
2606bf215546Sopenharmony_ci	</reg32>
2607bf215546Sopenharmony_ci
2608bf215546Sopenharmony_ci	<reg32 offset="0x9841" name="PC_DISPATCH_CMD">
2609bf215546Sopenharmony_ci		<bitfield name="STATE_ID" low="0" high="7"/>
2610bf215546Sopenharmony_ci	</reg32>
2611bf215546Sopenharmony_ci
2612bf215546Sopenharmony_ci	<reg32 offset="0x9842" name="PC_EVENT_CMD">
2613bf215546Sopenharmony_ci		<!-- I think only the low bit is actually used? -->
2614bf215546Sopenharmony_ci		<bitfield name="STATE_ID" low="16" high="23"/>
2615bf215546Sopenharmony_ci		<bitfield name="EVENT" low="0" high="6" type="vgt_event_type"/>
2616bf215546Sopenharmony_ci	</reg32>
2617bf215546Sopenharmony_ci
2618bf215546Sopenharmony_ci	<!--
2619bf215546Sopenharmony_ci		0x9880 written in a lot of places by SQE, same value gets written
2620bf215546Sopenharmony_ci		to control reg 0x12a.  Set by CP_SET_MARKER, so lets name it after
2621bf215546Sopenharmony_ci		that
2622bf215546Sopenharmony_ci	 -->
2623bf215546Sopenharmony_ci	<reg32 offset="0x9880" name="PC_MARKER"/>
2624bf215546Sopenharmony_ci
2625bf215546Sopenharmony_ci	<!-- 0x9843-0x997f invalid -->
2626bf215546Sopenharmony_ci
2627bf215546Sopenharmony_ci	<reg32 offset="0x9981" name="PC_POLYGON_MODE">
2628bf215546Sopenharmony_ci		<bitfield name="MODE" low="0" high="1" type="a6xx_polygon_mode"/>
2629bf215546Sopenharmony_ci	</reg32>
2630bf215546Sopenharmony_ci
2631bf215546Sopenharmony_ci	<reg32 offset="0x9980" name="PC_RASTER_CNTL">
2632bf215546Sopenharmony_ci		<!-- which stream to send to GRAS -->
2633bf215546Sopenharmony_ci		<bitfield name="STREAM" low="0" high="1" type="uint"/>
2634bf215546Sopenharmony_ci		<!-- discard primitives before rasterization -->
2635bf215546Sopenharmony_ci		<bitfield name="DISCARD" pos="2" type="boolean"/>
2636bf215546Sopenharmony_ci	</reg32>
2637bf215546Sopenharmony_ci
2638bf215546Sopenharmony_ci	<!-- 0x9982-0x9aff invalid -->
2639bf215546Sopenharmony_ci
2640bf215546Sopenharmony_ci	<reg32 offset="0x9b00" name="PC_PRIMITIVE_CNTL_0">
2641bf215546Sopenharmony_ci		<bitfield name="PRIMITIVE_RESTART" pos="0" type="boolean"/>
2642bf215546Sopenharmony_ci		<!-- maybe?  b1 seems always set, so just assume it is for now: -->
2643bf215546Sopenharmony_ci		<bitfield name="PROVOKING_VTX_LAST" pos="1" type="boolean"/>
2644bf215546Sopenharmony_ci		<bitfield name="TESS_UPPER_LEFT_DOMAIN_ORIGIN" pos="2" type="boolean"/>
2645bf215546Sopenharmony_ci		<bitfield name="UNK3" pos="3" type="boolean"/>
2646bf215546Sopenharmony_ci	</reg32>
2647bf215546Sopenharmony_ci
2648bf215546Sopenharmony_ci	<bitset name="a6xx_xs_out_cntl" inline="yes">
2649bf215546Sopenharmony_ci		<doc>
2650bf215546Sopenharmony_ci			num of varyings plus four for gl_Position (plus one if gl_PointSize)
2651bf215546Sopenharmony_ci			plus # of transform-feedback (streamout) varyings if using the
2652bf215546Sopenharmony_ci			hw streamout (rather than stg instructions in shader)
2653bf215546Sopenharmony_ci		</doc>
2654bf215546Sopenharmony_ci		<bitfield name="STRIDE_IN_VPC" low="0" high="7" type="uint"/>
2655bf215546Sopenharmony_ci		<bitfield name="PSIZE" pos="8" type="boolean"/>
2656bf215546Sopenharmony_ci		<bitfield name="LAYER" pos="9" type="boolean"/>
2657bf215546Sopenharmony_ci		<bitfield name="VIEW" pos="10" type="boolean"/>
2658bf215546Sopenharmony_ci		<!-- note: PC_VS_OUT_CNTL doesn't have the PRIMITIVE_ID bit -->
2659bf215546Sopenharmony_ci		<bitfield name="PRIMITIVE_ID" pos="11" type="boolean"/>
2660bf215546Sopenharmony_ci		<bitfield name="CLIP_MASK" low="16" high="23" type="uint"/>
2661bf215546Sopenharmony_ci	</bitset>
2662bf215546Sopenharmony_ci
2663bf215546Sopenharmony_ci	<reg32 offset="0x9b01" name="PC_VS_OUT_CNTL" type="a6xx_xs_out_cntl"/>
2664bf215546Sopenharmony_ci	<reg32 offset="0x9b02" name="PC_GS_OUT_CNTL" type="a6xx_xs_out_cntl"/>
2665bf215546Sopenharmony_ci	<!-- since HS can't output anything, only PRIMITIVE_ID is valid -->
2666bf215546Sopenharmony_ci	<reg32 offset="0x9b03" name="PC_HS_OUT_CNTL" type="a6xx_xs_out_cntl"/>
2667bf215546Sopenharmony_ci	<reg32 offset="0x9b04" name="PC_DS_OUT_CNTL" type="a6xx_xs_out_cntl"/>
2668bf215546Sopenharmony_ci
2669bf215546Sopenharmony_ci	<reg32 offset="0x9b05" name="PC_PRIMITIVE_CNTL_5">
2670bf215546Sopenharmony_ci		<doc>
2671bf215546Sopenharmony_ci		  geometry shader
2672bf215546Sopenharmony_ci		</doc>
2673bf215546Sopenharmony_ci		<!-- TODO: first 16 bits are valid so something is wrong or missing here -->
2674bf215546Sopenharmony_ci		<bitfield name="GS_VERTICES_OUT" low="0" high="7" type="uint"/>
2675bf215546Sopenharmony_ci		<bitfield name="GS_INVOCATIONS" low="10" high="14" type="uint"/>
2676bf215546Sopenharmony_ci		<bitfield name="LINELENGTHEN" pos="15" type="boolean"/>
2677bf215546Sopenharmony_ci		<bitfield name="GS_OUTPUT" low="16" high="17" type="a6xx_tess_output"/>
2678bf215546Sopenharmony_ci		<bitfield name="UNK18" pos="18"/>
2679bf215546Sopenharmony_ci	</reg32>
2680bf215546Sopenharmony_ci
2681bf215546Sopenharmony_ci	<reg32 offset="0x9b06" name="PC_PRIMITIVE_CNTL_6">
2682bf215546Sopenharmony_ci		<doc>
2683bf215546Sopenharmony_ci		  size in vec4s of per-primitive storage for gs. TODO: not actually in VPC
2684bf215546Sopenharmony_ci		</doc>
2685bf215546Sopenharmony_ci		<bitfield name="STRIDE_IN_VPC" low="0" high="10" type="uint"/>
2686bf215546Sopenharmony_ci	</reg32>
2687bf215546Sopenharmony_ci
2688bf215546Sopenharmony_ci	<bitset name="a6xx_multiview_cntl" inline="yes">
2689bf215546Sopenharmony_ci		<bitfield name="ENABLE" pos="0" type="boolean"/>
2690bf215546Sopenharmony_ci		<bitfield name="DISABLEMULTIPOS" pos="1" type="boolean">
2691bf215546Sopenharmony_ci			<doc>
2692bf215546Sopenharmony_ci				Multi-position output lets the last geometry
2693bf215546Sopenharmony_ci				stage shader write multiple copies of
2694bf215546Sopenharmony_ci				gl_Position. If disabled then the VS is run once
2695bf215546Sopenharmony_ci				for each view, and ViewID is passed as a
2696bf215546Sopenharmony_ci				register to the VS.
2697bf215546Sopenharmony_ci			</doc>
2698bf215546Sopenharmony_ci		</bitfield>
2699bf215546Sopenharmony_ci		<bitfield name="VIEWS" low="2" high="6" type="uint"/>
2700bf215546Sopenharmony_ci	</bitset>
2701bf215546Sopenharmony_ci
2702bf215546Sopenharmony_ci	<reg32 offset="0x9b07" name="PC_MULTIVIEW_CNTL" type="a6xx_multiview_cntl"/>
2703bf215546Sopenharmony_ci	<!-- mask of enabled views, doesn't exist on A630 -->
2704bf215546Sopenharmony_ci	<reg32 offset="0x9b08" name="PC_MULTIVIEW_MASK" type="hex" low="0" high="15"/>
2705bf215546Sopenharmony_ci	<!-- 0x9b09-0x9bff invalid -->
2706bf215546Sopenharmony_ci	<reg32 offset="0x9c00" name="PC_2D_EVENT_CMD">
2707bf215546Sopenharmony_ci		<!-- special register (but note first 8 bits can be written/read) -->
2708bf215546Sopenharmony_ci		<bitfield name="EVENT" low="0" high="6" type="vgt_event_type"/>
2709bf215546Sopenharmony_ci		<bitfield name="STATE_ID" low="8" high="15"/>
2710bf215546Sopenharmony_ci	</reg32>
2711bf215546Sopenharmony_ci	<!-- 0x9c01-0x9dff invalid -->
2712bf215546Sopenharmony_ci	<!-- TODO: 0x9e00-0xa000 range incomplete -->
2713bf215546Sopenharmony_ci	<reg32 offset="0x9e00" name="PC_DBG_ECO_CNTL"/>
2714bf215546Sopenharmony_ci	<reg32 offset="0x9e01" name="PC_ADDR_MODE_CNTL" type="a5xx_address_mode"/>
2715bf215546Sopenharmony_ci	<reg64 offset="0x9e04" name="PC_DRAW_INDX_BASE"/>
2716bf215546Sopenharmony_ci	<reg32 offset="0x9e06" name="PC_DRAW_FIRST_INDX" type="uint"/>
2717bf215546Sopenharmony_ci	<reg32 offset="0x9e07" name="PC_DRAW_MAX_INDICES" type="uint"/>
2718bf215546Sopenharmony_ci	<reg64 offset="0x9e08" name="PC_TESSFACTOR_ADDR" type="waddress" align="32"/>
2719bf215546Sopenharmony_ci
2720bf215546Sopenharmony_ci	<reg32 offset="0x9e0b" name="PC_DRAW_INITIATOR" type="vgt_draw_initiator_a4xx">
2721bf215546Sopenharmony_ci		<doc>
2722bf215546Sopenharmony_ci			Possibly not really "initiating" the draw but the layout is similar
2723bf215546Sopenharmony_ci			to VGT_DRAW_INITIATOR on older gens
2724bf215546Sopenharmony_ci		</doc>
2725bf215546Sopenharmony_ci	</reg32>
2726bf215546Sopenharmony_ci	<reg32 offset="0x9e0c" name="PC_DRAW_NUM_INSTANCES" type="uint"/>
2727bf215546Sopenharmony_ci	<reg32 offset="0x9e0d" name="PC_DRAW_NUM_INDICES" type="uint"/>
2728bf215546Sopenharmony_ci
2729bf215546Sopenharmony_ci	<!-- These match the contents of CP_SET_BIN_DATA (not written directly) -->
2730bf215546Sopenharmony_ci	<reg32 offset="0x9e11" name="PC_VSTREAM_CONTROL">
2731bf215546Sopenharmony_ci		<bitfield name="UNK0" low="0" high="15"/>
2732bf215546Sopenharmony_ci		<bitfield name="VSC_SIZE" low="16" high="21" type="uint"/>
2733bf215546Sopenharmony_ci		<bitfield name="VSC_N" low="22" high="26" type="uint"/>
2734bf215546Sopenharmony_ci	</reg32>
2735bf215546Sopenharmony_ci	<reg64 offset="0x9e12" name="PC_BIN_PRIM_STRM" type="waddress" align="32"/>
2736bf215546Sopenharmony_ci	<reg64 offset="0x9e14" name="PC_BIN_DRAW_STRM" type="waddress" align="32"/>
2737bf215546Sopenharmony_ci
2738bf215546Sopenharmony_ci	<reg32 offset="0x9e1c" name="PC_VISIBILITY_OVERRIDE">
2739bf215546Sopenharmony_ci		<doc>Written by CP_SET_VISIBILITY_OVERRIDE handler</doc>
2740bf215546Sopenharmony_ci		<bitfield name="OVERRIDE" pos="0" type="boolean"/>
2741bf215546Sopenharmony_ci	</reg32>
2742bf215546Sopenharmony_ci
2743bf215546Sopenharmony_ci	<array offset="0x9e34" name="PC_PERFCTR_PC_SEL" stride="1" length="8"/>
2744bf215546Sopenharmony_ci
2745bf215546Sopenharmony_ci	<!-- always 0x0 -->
2746bf215546Sopenharmony_ci	<reg32 offset="0x9e72" name="PC_UNKNOWN_9E72"/>
2747bf215546Sopenharmony_ci
2748bf215546Sopenharmony_ci	<reg32 offset="0xa000" name="VFD_CONTROL_0">
2749bf215546Sopenharmony_ci		<bitfield name="FETCH_CNT" low="0" high="5" type="uint"/>
2750bf215546Sopenharmony_ci		<bitfield name="DECODE_CNT" low="8" high="13" type="uint"/>
2751bf215546Sopenharmony_ci	</reg32>
2752bf215546Sopenharmony_ci	<reg32 offset="0xa001" name="VFD_CONTROL_1">
2753bf215546Sopenharmony_ci		<bitfield name="REGID4VTX" low="0" high="7" type="a3xx_regid"/>
2754bf215546Sopenharmony_ci		<bitfield name="REGID4INST" low="8" high="15" type="a3xx_regid"/>
2755bf215546Sopenharmony_ci		<bitfield name="REGID4PRIMID" low="16" high="23" type="a3xx_regid"/>
2756bf215546Sopenharmony_ci		<!-- only used for VS in non-multi-position-output case -->
2757bf215546Sopenharmony_ci		<bitfield name="REGID4VIEWID" low="24" high="31" type="a3xx_regid"/>
2758bf215546Sopenharmony_ci	</reg32>
2759bf215546Sopenharmony_ci	<reg32 offset="0xa002" name="VFD_CONTROL_2">
2760bf215546Sopenharmony_ci		<bitfield name="REGID_HSRELPATCHID" low="0" high="7" type="a3xx_regid">
2761bf215546Sopenharmony_ci			<doc>
2762bf215546Sopenharmony_ci				This is the ID of the current patch within the
2763bf215546Sopenharmony_ci				subdraw, used to calculate the offset of the
2764bf215546Sopenharmony_ci				patch within the HS->DS buffers. When a draw is
2765bf215546Sopenharmony_ci				split into multiple subdraws then this differs
2766bf215546Sopenharmony_ci				from gl_PrimitiveID on the second, third, etc.
2767bf215546Sopenharmony_ci				subdraws.
2768bf215546Sopenharmony_ci			</doc>
2769bf215546Sopenharmony_ci		</bitfield>
2770bf215546Sopenharmony_ci		<bitfield name="REGID_INVOCATIONID" low="8" high="15" type="a3xx_regid"/>
2771bf215546Sopenharmony_ci	</reg32>
2772bf215546Sopenharmony_ci	<reg32 offset="0xa003" name="VFD_CONTROL_3">
2773bf215546Sopenharmony_ci		<bitfield name="REGID_DSPRIMID" low="0" high="7" type="a3xx_regid"/>
2774bf215546Sopenharmony_ci		<bitfield name="REGID_DSRELPATCHID" low="8" high="15" type="a3xx_regid"/>
2775bf215546Sopenharmony_ci		<bitfield name="REGID_TESSX" low="16" high="23" type="a3xx_regid"/>
2776bf215546Sopenharmony_ci		<bitfield name="REGID_TESSY" low="24" high="31" type="a3xx_regid"/>
2777bf215546Sopenharmony_ci	</reg32>
2778bf215546Sopenharmony_ci	<reg32 offset="0xa004" name="VFD_CONTROL_4">
2779bf215546Sopenharmony_ci		<bitfield name="UNK0" low="0" high="7" type="a3xx_regid"/>
2780bf215546Sopenharmony_ci	</reg32>
2781bf215546Sopenharmony_ci	<reg32 offset="0xa005" name="VFD_CONTROL_5">
2782bf215546Sopenharmony_ci		<bitfield name="REGID_GSHEADER" low="0" high="7" type="a3xx_regid"/>
2783bf215546Sopenharmony_ci		<bitfield name="UNK8" low="8" high="15" type="a3xx_regid"/>
2784bf215546Sopenharmony_ci	</reg32>
2785bf215546Sopenharmony_ci	<reg32 offset="0xa006" name="VFD_CONTROL_6">
2786bf215546Sopenharmony_ci		<!--
2787bf215546Sopenharmony_ci			True if gl_PrimitiveID is read via the FS and there is
2788bf215546Sopenharmony_ci			no matching write from the GS, and therefore it needs to
2789bf215546Sopenharmony_ci			be passed through via fixed-function logic.
2790bf215546Sopenharmony_ci		-->
2791bf215546Sopenharmony_ci		<bitfield name="PRIMID_PASSTHRU" pos="0" type="boolean"/>
2792bf215546Sopenharmony_ci	</reg32>
2793bf215546Sopenharmony_ci
2794bf215546Sopenharmony_ci	<reg32 offset="0xa007" name="VFD_MODE_CNTL">
2795bf215546Sopenharmony_ci		<bitfield name="RENDER_MODE" low="0" high="2" type="a6xx_render_mode"/>
2796bf215546Sopenharmony_ci	</reg32>
2797bf215546Sopenharmony_ci
2798bf215546Sopenharmony_ci	<reg32 offset="0xa008" name="VFD_MULTIVIEW_CNTL" type="a6xx_multiview_cntl"/>
2799bf215546Sopenharmony_ci	<reg32 offset="0xa009" name="VFD_ADD_OFFSET">
2800bf215546Sopenharmony_ci		<!-- add VFD_INDEX_OFFSET to REGID4VTX -->
2801bf215546Sopenharmony_ci		<bitfield name="VERTEX" pos="0" type="boolean"/>
2802bf215546Sopenharmony_ci		<!-- add VFD_INSTANCE_START_OFFSET to REGID4INST -->
2803bf215546Sopenharmony_ci		<bitfield name="INSTANCE" pos="1" type="boolean"/>
2804bf215546Sopenharmony_ci	</reg32>
2805bf215546Sopenharmony_ci
2806bf215546Sopenharmony_ci	<reg32 offset="0xa00e" name="VFD_INDEX_OFFSET"/>
2807bf215546Sopenharmony_ci	<reg32 offset="0xa00f" name="VFD_INSTANCE_START_OFFSET"/>
2808bf215546Sopenharmony_ci	<array offset="0xa010" name="VFD_FETCH" stride="4" length="32">
2809bf215546Sopenharmony_ci		<reg64 offset="0x0" name="BASE" type="address" align="1"/>
2810bf215546Sopenharmony_ci		<reg32 offset="0x2" name="SIZE" type="uint"/>
2811bf215546Sopenharmony_ci		<reg32 offset="0x3" name="STRIDE" low="0" high="11" type="uint"/>
2812bf215546Sopenharmony_ci	</array>
2813bf215546Sopenharmony_ci	<array offset="0xa090" name="VFD_DECODE" stride="2" length="32">
2814bf215546Sopenharmony_ci		<reg32 offset="0x0" name="INSTR">
2815bf215546Sopenharmony_ci			<!-- IDX and byte OFFSET into VFD_FETCH -->
2816bf215546Sopenharmony_ci			<bitfield name="IDX" low="0" high="4" type="uint"/>
2817bf215546Sopenharmony_ci			<bitfield name="OFFSET" low="5" high="16"/>
2818bf215546Sopenharmony_ci			<bitfield name="INSTANCED" pos="17" type="boolean"/>
2819bf215546Sopenharmony_ci			<bitfield name="FORMAT" low="20" high="27" type="a6xx_format"/>
2820bf215546Sopenharmony_ci			<bitfield name="SWAP" low="28" high="29" type="a3xx_color_swap"/>
2821bf215546Sopenharmony_ci			<bitfield name="UNK30" pos="30" type="boolean"/>
2822bf215546Sopenharmony_ci			<bitfield name="FLOAT" pos="31" type="boolean"/>
2823bf215546Sopenharmony_ci		</reg32>
2824bf215546Sopenharmony_ci		<reg32 offset="0x1" name="STEP_RATE" type="uint"/>
2825bf215546Sopenharmony_ci	</array>
2826bf215546Sopenharmony_ci	<array offset="0xa0d0" name="VFD_DEST_CNTL" stride="1" length="32">
2827bf215546Sopenharmony_ci		<reg32 offset="0x0" name="INSTR">
2828bf215546Sopenharmony_ci			<bitfield name="WRITEMASK" low="0" high="3" type="hex"/>
2829bf215546Sopenharmony_ci			<bitfield name="REGID" low="4" high="11" type="a3xx_regid"/>
2830bf215546Sopenharmony_ci		</reg32>
2831bf215546Sopenharmony_ci	</array>
2832bf215546Sopenharmony_ci
2833bf215546Sopenharmony_ci	<reg32 offset="0xa0f8" name="VFD_POWER_CNTL" low="0" high="2"/>
2834bf215546Sopenharmony_ci
2835bf215546Sopenharmony_ci	<reg32 offset="0xa601" name="VFD_ADDR_MODE_CNTL" type="a5xx_address_mode"/>
2836bf215546Sopenharmony_ci	<array offset="0xa610" name="VFD_PERFCTR_VFD_SEL" stride="1" length="8"/>
2837bf215546Sopenharmony_ci
2838bf215546Sopenharmony_ci	<!--
2839bf215546Sopenharmony_ci	Note: this seems to always be paired with another bit in another
2840bf215546Sopenharmony_ci	block.
2841bf215546Sopenharmony_ci	-->
2842bf215546Sopenharmony_ci	<enum name="a6xx_threadsize">
2843bf215546Sopenharmony_ci		<value value="0" name="THREAD64"/>
2844bf215546Sopenharmony_ci		<value value="1" name="THREAD128"/>
2845bf215546Sopenharmony_ci	</enum>
2846bf215546Sopenharmony_ci
2847bf215546Sopenharmony_ci	<bitset name="a6xx_sp_xs_ctrl_reg0" inline="yes">
2848bf215546Sopenharmony_ci		<!-- if set to SINGLE, only use 1 concurrent wave on each SP -->
2849bf215546Sopenharmony_ci		<bitfield name="THREADMODE" pos="0" type="a3xx_threadmode"/>
2850bf215546Sopenharmony_ci		<!--
2851bf215546Sopenharmony_ci		When b31 set we just see FULLREGFOOTPRINT set.  The pattern of
2852bf215546Sopenharmony_ci		used registers is a bit odd too:
2853bf215546Sopenharmony_ci			- used (half): 0-15 68-179 (cnt=128, max=179)
2854bf215546Sopenharmony_ci			- 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>
2855bf215546Sopenharmony_ci		whereas we usually see a (mostly) contiguous range of regs used.  But if
2856bf215546Sopenharmony_ci		I merge the full and half ranges (ie. rN counts as hr(N*2) and hr(N*2+1)),
2857bf215546Sopenharmony_ci		then:
2858bf215546Sopenharmony_ci			- used (merged): 0-191 (cnt=192, max=191)
2859bf215546Sopenharmony_ci		So I think if b31 is set, then the half precision registers overlap
2860bf215546Sopenharmony_ci		the full precision registers.  (Which seems like a pretty sensible
2861bf215546Sopenharmony_ci		feature, actually I'm not sure when you *wouldn't* want to use that,
2862bf215546Sopenharmony_ci		since it gives register allocation more flexibility)
2863bf215546Sopenharmony_ci		 -->
2864bf215546Sopenharmony_ci		<bitfield name="HALFREGFOOTPRINT" low="1" high="6" type="uint"/>
2865bf215546Sopenharmony_ci		<bitfield name="FULLREGFOOTPRINT" low="7" high="12" type="uint"/>
2866bf215546Sopenharmony_ci		<!-- could it be a low bit of branchstack? -->
2867bf215546Sopenharmony_ci		<bitfield name="UNK13" pos="13" type="boolean"/>
2868bf215546Sopenharmony_ci		<!-- seems to be nesting level for flow control:.. -->
2869bf215546Sopenharmony_ci		<bitfield name="BRANCHSTACK" low="14" high="19" type="uint"/>
2870bf215546Sopenharmony_ci	</bitset>
2871bf215546Sopenharmony_ci
2872bf215546Sopenharmony_ci	<bitset name="a6xx_sp_xs_config" inline="yes">
2873bf215546Sopenharmony_ci		<!--
2874bf215546Sopenharmony_ci		Each of these are set if the given resource type is used
2875bf215546Sopenharmony_ci		with the Vulkan/bindless binding model.
2876bf215546Sopenharmony_ci		-->
2877bf215546Sopenharmony_ci		<bitfield name="BINDLESS_TEX" pos="0" type="boolean"/>
2878bf215546Sopenharmony_ci		<bitfield name="BINDLESS_SAMP" pos="1" type="boolean"/>
2879bf215546Sopenharmony_ci		<bitfield name="BINDLESS_IBO" pos="2" type="boolean"/>
2880bf215546Sopenharmony_ci		<bitfield name="BINDLESS_UBO" pos="3" type="boolean"/>
2881bf215546Sopenharmony_ci
2882bf215546Sopenharmony_ci		<bitfield name="ENABLED" pos="8" type="boolean"/>
2883bf215546Sopenharmony_ci		<!--
2884bf215546Sopenharmony_ci		number of textures and samplers.. these might be swapped, with GL I
2885bf215546Sopenharmony_ci		always see the same value for both.
2886bf215546Sopenharmony_ci		 -->
2887bf215546Sopenharmony_ci		<bitfield name="NTEX" low="9" high="16" type="uint"/>
2888bf215546Sopenharmony_ci		<bitfield name="NSAMP" low="17" high="21" type="uint"/>
2889bf215546Sopenharmony_ci		<bitfield name="NIBO" low="22" high="28" type="uint"/>
2890bf215546Sopenharmony_ci	</bitset>
2891bf215546Sopenharmony_ci
2892bf215546Sopenharmony_ci	<bitset name="a6xx_sp_xs_prim_cntl" inline="yes">
2893bf215546Sopenharmony_ci		<!-- # of VS outputs including pos/psize -->
2894bf215546Sopenharmony_ci		<bitfield name="OUT" low="0" high="5" type="uint"/>
2895bf215546Sopenharmony_ci		<!-- FLAGS_REGID only for GS -->
2896bf215546Sopenharmony_ci		<bitfield name="FLAGS_REGID" low="6" high="13" type="a3xx_regid"/>
2897bf215546Sopenharmony_ci	</bitset>
2898bf215546Sopenharmony_ci
2899bf215546Sopenharmony_ci	<reg32 offset="0xa800" name="SP_VS_CTRL_REG0" type="a6xx_sp_xs_ctrl_reg0">
2900bf215546Sopenharmony_ci		<!--
2901bf215546Sopenharmony_ci		This field actually controls all geometry stages. TCS, TES, and
2902bf215546Sopenharmony_ci		GS must have the same mergedregs setting as VS.
2903bf215546Sopenharmony_ci		-->
2904bf215546Sopenharmony_ci		<bitfield name="MERGEDREGS" pos="20" type="boolean"/>
2905bf215546Sopenharmony_ci		<!--
2906bf215546Sopenharmony_ci		Creates a separate preamble-only thread?
2907bf215546Sopenharmony_ci
2908bf215546Sopenharmony_ci		Early preamble has the following limitations:
2909bf215546Sopenharmony_ci		- Only shared, a1, and consts regs could be used
2910bf215546Sopenharmony_ci		  (accessing other regs would result in GPU fault);
2911bf215546Sopenharmony_ci		- No cat5/cat6, only stc/ldc variants are working;
2912bf215546Sopenharmony_ci		- Values writen to shared regs are not accessible by the rest
2913bf215546Sopenharmony_ci		  of the shader;
2914bf215546Sopenharmony_ci		- Instructions before shps are also considered to be a part of
2915bf215546Sopenharmony_ci		  early preamble;
2916bf215546Sopenharmony_ci
2917bf215546Sopenharmony_ci		Note, for all shaders from d3d11 games blob produced preambles
2918bf215546Sopenharmony_ci		compatible with early preamble mode.
2919bf215546Sopenharmony_ci		-->
2920bf215546Sopenharmony_ci		<bitfield name="EARLYPREAMBLE" pos="21" type="boolean"/>
2921bf215546Sopenharmony_ci	</reg32>
2922bf215546Sopenharmony_ci	<!-- bitmask of true/false conditions for VS brac.N instructions,
2923bf215546Sopenharmony_ci	     bit N corresponds to brac.N -->
2924bf215546Sopenharmony_ci	<reg32 offset="0xa801" name="SP_VS_BRANCH_COND" type="hex"/>
2925bf215546Sopenharmony_ci	<!-- # of VS outputs including pos/psize -->
2926bf215546Sopenharmony_ci	<reg32 offset="0xa802" name="SP_VS_PRIMITIVE_CNTL" type="a6xx_sp_xs_prim_cntl"/>
2927bf215546Sopenharmony_ci	<array offset="0xa803" name="SP_VS_OUT" stride="1" length="16">
2928bf215546Sopenharmony_ci		<reg32 offset="0x0" name="REG">
2929bf215546Sopenharmony_ci			<bitfield name="A_REGID" low="0" high="7" type="a3xx_regid"/>
2930bf215546Sopenharmony_ci			<bitfield name="A_COMPMASK" low="8" high="11" type="hex"/>
2931bf215546Sopenharmony_ci			<bitfield name="B_REGID" low="16" high="23" type="a3xx_regid"/>
2932bf215546Sopenharmony_ci			<bitfield name="B_COMPMASK" low="24" high="27" type="hex"/>
2933bf215546Sopenharmony_ci		</reg32>
2934bf215546Sopenharmony_ci	</array>
2935bf215546Sopenharmony_ci	<!--
2936bf215546Sopenharmony_ci	Starting with a5xx, position/psize outputs from shader end up in the
2937bf215546Sopenharmony_ci	SP_VS_OUT map, with highest OUTLOCn position.  (Generally they are
2938bf215546Sopenharmony_ci	the last entries too, except when gl_PointCoord is used, blob inserts
2939bf215546Sopenharmony_ci	an extra varying after, but with a lower OUTLOC position.  If present,
2940bf215546Sopenharmony_ci	psize is last, preceded by position.
2941bf215546Sopenharmony_ci	 -->
2942bf215546Sopenharmony_ci	<array offset="0xa813" name="SP_VS_VPC_DST" stride="1" length="8">
2943bf215546Sopenharmony_ci		<reg32 offset="0x0" name="REG">
2944bf215546Sopenharmony_ci			<bitfield name="OUTLOC0" low="0" high="7" type="uint"/>
2945bf215546Sopenharmony_ci			<bitfield name="OUTLOC1" low="8" high="15" type="uint"/>
2946bf215546Sopenharmony_ci			<bitfield name="OUTLOC2" low="16" high="23" type="uint"/>
2947bf215546Sopenharmony_ci			<bitfield name="OUTLOC3" low="24" high="31" type="uint"/>
2948bf215546Sopenharmony_ci		</reg32>
2949bf215546Sopenharmony_ci	</array>
2950bf215546Sopenharmony_ci
2951bf215546Sopenharmony_ci	<bitset name="a6xx_sp_xs_pvt_mem_param" inline="yes">
2952bf215546Sopenharmony_ci		<bitfield name="MEMSIZEPERITEM" low="0" high="7" shr="9">
2953bf215546Sopenharmony_ci			<doc>The size of memory that ldp/stp can address.</doc>
2954bf215546Sopenharmony_ci		</bitfield>
2955bf215546Sopenharmony_ci		<bitfield name="HWSTACKSIZEPERTHREAD" low="24" high="31">
2956bf215546Sopenharmony_ci                        <doc>
2957bf215546Sopenharmony_ci				Seems to be the same as a3xx. The maximum stack
2958bf215546Sopenharmony_ci				size in units of 4 calls, so a call depth of 7
2959bf215546Sopenharmony_ci				would result in a value of 2.
2960bf215546Sopenharmony_ci				TODO: What's the actual size per call, i.e. the
2961bf215546Sopenharmony_ci				size of the PC? a3xx docs say it's 16 bits
2962bf215546Sopenharmony_ci				there, but the length register now takes 28 bits
2963bf215546Sopenharmony_ci				so it's probably been bumped to 32 bits.
2964bf215546Sopenharmony_ci                        </doc>
2965bf215546Sopenharmony_ci		</bitfield>
2966bf215546Sopenharmony_ci	</bitset>
2967bf215546Sopenharmony_ci
2968bf215546Sopenharmony_ci	<bitset name="a6xx_sp_xs_pvt_mem_size" inline="yes">
2969bf215546Sopenharmony_ci		<bitfield name="TOTALPVTMEMSIZE" low="0" high="17" shr="12"/>
2970bf215546Sopenharmony_ci		<bitfield name="PERWAVEMEMLAYOUT" pos="31" type="boolean">
2971bf215546Sopenharmony_ci			<doc>
2972bf215546Sopenharmony_ci				There are four indices used to compute the
2973bf215546Sopenharmony_ci				private memory location for an access:
2974bf215546Sopenharmony_ci
2975bf215546Sopenharmony_ci				- stp/ldp offset
2976bf215546Sopenharmony_ci				- fiber id
2977bf215546Sopenharmony_ci				- wavefront id (a swizzled version of what "getwid" returns)
2978bf215546Sopenharmony_ci				- SP ID (the same as what "getspid" returns)
2979bf215546Sopenharmony_ci
2980bf215546Sopenharmony_ci				The stride for the SP ID is always set by
2981bf215546Sopenharmony_ci				TOTALPVTMEMSIZE. In the per-wave layout, the
2982bf215546Sopenharmony_ci				indices are used in this order:
2983bf215546Sopenharmony_ci
2984bf215546Sopenharmony_ci				- offset % 4 (offset within dword)
2985bf215546Sopenharmony_ci				- fiber id
2986bf215546Sopenharmony_ci				- offset / 4
2987bf215546Sopenharmony_ci				- wavefront id
2988bf215546Sopenharmony_ci				- SP ID
2989bf215546Sopenharmony_ci
2990bf215546Sopenharmony_ci				and the stride for the wavefront ID is
2991bf215546Sopenharmony_ci				MEMSIZEPERITEM, multiplied by 128 (fibers per
2992bf215546Sopenharmony_ci				wavefront). In the per-fiber layout, the indices
2993bf215546Sopenharmony_ci				are used in this order:
2994bf215546Sopenharmony_ci
2995bf215546Sopenharmony_ci				- offset
2996bf215546Sopenharmony_ci				- fiber id % 4
2997bf215546Sopenharmony_ci				- wavefront id
2998bf215546Sopenharmony_ci				- fiber id / 4
2999bf215546Sopenharmony_ci				- SP ID
3000bf215546Sopenharmony_ci
3001bf215546Sopenharmony_ci				and the stride for the fiber id/wavefront id
3002bf215546Sopenharmony_ci				combo is MEMSIZEPERITEM.
3003bf215546Sopenharmony_ci
3004bf215546Sopenharmony_ci				Note: Accesses of more than 1 dword do not work
3005bf215546Sopenharmony_ci				with per-fiber layout. The blob will fall back
3006bf215546Sopenharmony_ci				to per-wave instead.
3007bf215546Sopenharmony_ci			</doc>
3008bf215546Sopenharmony_ci		</bitfield>
3009bf215546Sopenharmony_ci	</bitset>
3010bf215546Sopenharmony_ci
3011bf215546Sopenharmony_ci	<bitset name="a6xx_sp_xs_pvt_mem_hw_stack_offset" inline="yes">
3012bf215546Sopenharmony_ci		<doc>
3013bf215546Sopenharmony_ci			This seems to be be the equivalent of HWSTACKOFFSET in
3014bf215546Sopenharmony_ci			a3xx. The ldp/stp offset formula above isn't affected by
3015bf215546Sopenharmony_ci			HWSTACKSIZEPERTHREAD at all, so the HW return address
3016bf215546Sopenharmony_ci			stack seems to be after all the normal per-SP private
3017bf215546Sopenharmony_ci			memory.
3018bf215546Sopenharmony_ci		</doc>
3019bf215546Sopenharmony_ci		<bitfield name="OFFSET" low="0" high="18" shr="11"/>
3020bf215546Sopenharmony_ci	</bitset>
3021bf215546Sopenharmony_ci
3022bf215546Sopenharmony_ci	<reg32 offset="0xa81b" name="SP_VS_OBJ_FIRST_EXEC_OFFSET" type="uint"/>
3023bf215546Sopenharmony_ci	<reg64 offset="0xa81c" name="SP_VS_OBJ_START" type="address" align="32"/>
3024bf215546Sopenharmony_ci	<reg32 offset="0xa81e" name="SP_VS_PVT_MEM_PARAM" type="a6xx_sp_xs_pvt_mem_param"/>
3025bf215546Sopenharmony_ci	<reg64 offset="0xa81f" name="SP_VS_PVT_MEM_ADDR" type="waddress" align="32"/>
3026bf215546Sopenharmony_ci	<reg32 offset="0xa821" name="SP_VS_PVT_MEM_SIZE" type="a6xx_sp_xs_pvt_mem_size"/>
3027bf215546Sopenharmony_ci	<reg32 offset="0xa822" name="SP_VS_TEX_COUNT" low="0" high="7" type="uint"/>
3028bf215546Sopenharmony_ci	<reg32 offset="0xa823" name="SP_VS_CONFIG" type="a6xx_sp_xs_config"/>
3029bf215546Sopenharmony_ci	<reg32 offset="0xa824" name="SP_VS_INSTRLEN" low="0" high="27" type="uint"/>
3030bf215546Sopenharmony_ci	<reg32 offset="0xa825" name="SP_VS_PVT_MEM_HW_STACK_OFFSET" type="a6xx_sp_xs_pvt_mem_hw_stack_offset"/>
3031bf215546Sopenharmony_ci
3032bf215546Sopenharmony_ci	<reg32 offset="0xa830" name="SP_HS_CTRL_REG0" type="a6xx_sp_xs_ctrl_reg0">
3033bf215546Sopenharmony_ci		<!-- There is no mergedregs bit, that comes from the VS. -->
3034bf215546Sopenharmony_ci		<bitfield name="EARLYPREAMBLE" pos="20" type="boolean"/>
3035bf215546Sopenharmony_ci	</reg32>
3036bf215546Sopenharmony_ci	<!--
3037bf215546Sopenharmony_ci	Total size of local storage in dwords divided by the wave size.
3038bf215546Sopenharmony_ci	The maximum value is 64. With the wave size being always 64 for HS,
3039bf215546Sopenharmony_ci	the maximum size of local storage should be:
3040bf215546Sopenharmony_ci	 64 (wavesize) * 64 (SP_HS_WAVE_INPUT_SIZE) * 4 = 16k
3041bf215546Sopenharmony_ci	-->
3042bf215546Sopenharmony_ci	<reg32 offset="0xa831" name="SP_HS_WAVE_INPUT_SIZE" low="0" high="7" type="uint"/>
3043bf215546Sopenharmony_ci	<reg32 offset="0xa832" name="SP_HS_BRANCH_COND" type="hex"/>
3044bf215546Sopenharmony_ci
3045bf215546Sopenharmony_ci	<!-- TODO: exact same layout as 0xa81b-0xa825 -->
3046bf215546Sopenharmony_ci	<reg32 offset="0xa833" name="SP_HS_OBJ_FIRST_EXEC_OFFSET" type="uint"/>
3047bf215546Sopenharmony_ci	<reg64 offset="0xa834" name="SP_HS_OBJ_START" type="address" align="32"/>
3048bf215546Sopenharmony_ci	<reg32 offset="0xa836" name="SP_HS_PVT_MEM_PARAM" type="a6xx_sp_xs_pvt_mem_param"/>
3049bf215546Sopenharmony_ci	<reg64 offset="0xa837" name="SP_HS_PVT_MEM_ADDR" type="waddress" align="32"/>
3050bf215546Sopenharmony_ci	<reg32 offset="0xa839" name="SP_HS_PVT_MEM_SIZE" type="a6xx_sp_xs_pvt_mem_size"/>
3051bf215546Sopenharmony_ci	<reg32 offset="0xa83a" name="SP_HS_TEX_COUNT" low="0" high="7" type="uint"/>
3052bf215546Sopenharmony_ci	<reg32 offset="0xa83b" name="SP_HS_CONFIG" type="a6xx_sp_xs_config"/>
3053bf215546Sopenharmony_ci	<reg32 offset="0xa83c" name="SP_HS_INSTRLEN" low="0" high="27" type="uint"/>
3054bf215546Sopenharmony_ci	<reg32 offset="0xa83d" name="SP_HS_PVT_MEM_HW_STACK_OFFSET" type="a6xx_sp_xs_pvt_mem_hw_stack_offset"/>
3055bf215546Sopenharmony_ci
3056bf215546Sopenharmony_ci	<reg32 offset="0xa840" name="SP_DS_CTRL_REG0" type="a6xx_sp_xs_ctrl_reg0">
3057bf215546Sopenharmony_ci		<!-- There is no mergedregs bit, that comes from the VS. -->
3058bf215546Sopenharmony_ci		<bitfield name="EARLYPREAMBLE" pos="20" type="boolean"/>
3059bf215546Sopenharmony_ci	</reg32>
3060bf215546Sopenharmony_ci	<reg32 offset="0xa841" name="SP_DS_BRANCH_COND" type="hex"/>
3061bf215546Sopenharmony_ci
3062bf215546Sopenharmony_ci	<!-- TODO: exact same layout as 0xa802-0xa81a -->
3063bf215546Sopenharmony_ci	<reg32 offset="0xa842" name="SP_DS_PRIMITIVE_CNTL" type="a6xx_sp_xs_prim_cntl"/>
3064bf215546Sopenharmony_ci	<array offset="0xa843" name="SP_DS_OUT" stride="1" length="16">
3065bf215546Sopenharmony_ci		<reg32 offset="0x0" name="REG">
3066bf215546Sopenharmony_ci			<bitfield name="A_REGID" low="0" high="7" type="a3xx_regid"/>
3067bf215546Sopenharmony_ci			<bitfield name="A_COMPMASK" low="8" high="11" type="hex"/>
3068bf215546Sopenharmony_ci			<bitfield name="B_REGID" low="16" high="23" type="a3xx_regid"/>
3069bf215546Sopenharmony_ci			<bitfield name="B_COMPMASK" low="24" high="27" type="hex"/>
3070bf215546Sopenharmony_ci		</reg32>
3071bf215546Sopenharmony_ci	</array>
3072bf215546Sopenharmony_ci	<array offset="0xa853" name="SP_DS_VPC_DST" stride="1" length="8">
3073bf215546Sopenharmony_ci		<reg32 offset="0x0" name="REG">
3074bf215546Sopenharmony_ci			<bitfield name="OUTLOC0" low="0" high="7" type="uint"/>
3075bf215546Sopenharmony_ci			<bitfield name="OUTLOC1" low="8" high="15" type="uint"/>
3076bf215546Sopenharmony_ci			<bitfield name="OUTLOC2" low="16" high="23" type="uint"/>
3077bf215546Sopenharmony_ci			<bitfield name="OUTLOC3" low="24" high="31" type="uint"/>
3078bf215546Sopenharmony_ci		</reg32>
3079bf215546Sopenharmony_ci	</array>
3080bf215546Sopenharmony_ci
3081bf215546Sopenharmony_ci	<!-- TODO: exact same layout as 0xa81b-0xa825 -->
3082bf215546Sopenharmony_ci	<reg32 offset="0xa85b" name="SP_DS_OBJ_FIRST_EXEC_OFFSET" type="uint"/>
3083bf215546Sopenharmony_ci	<reg64 offset="0xa85c" name="SP_DS_OBJ_START" type="address" align="32"/>
3084bf215546Sopenharmony_ci	<reg32 offset="0xa85e" name="SP_DS_PVT_MEM_PARAM" type="a6xx_sp_xs_pvt_mem_param"/>
3085bf215546Sopenharmony_ci	<reg64 offset="0xa85f" name="SP_DS_PVT_MEM_ADDR" type="waddress" align="32"/>
3086bf215546Sopenharmony_ci	<reg32 offset="0xa861" name="SP_DS_PVT_MEM_SIZE" type="a6xx_sp_xs_pvt_mem_size"/>
3087bf215546Sopenharmony_ci	<reg32 offset="0xa862" name="SP_DS_TEX_COUNT" low="0" high="7" type="uint"/>
3088bf215546Sopenharmony_ci	<reg32 offset="0xa863" name="SP_DS_CONFIG" type="a6xx_sp_xs_config"/>
3089bf215546Sopenharmony_ci	<reg32 offset="0xa864" name="SP_DS_INSTRLEN" low="0" high="27" type="uint"/>
3090bf215546Sopenharmony_ci	<reg32 offset="0xa865" name="SP_DS_PVT_MEM_HW_STACK_OFFSET" type="a6xx_sp_xs_pvt_mem_hw_stack_offset"/>
3091bf215546Sopenharmony_ci
3092bf215546Sopenharmony_ci	<reg32 offset="0xa870" name="SP_GS_CTRL_REG0" type="a6xx_sp_xs_ctrl_reg0">
3093bf215546Sopenharmony_ci		<!-- There is no mergedregs bit, that comes from the VS. -->
3094bf215546Sopenharmony_ci		<bitfield name="EARLYPREAMBLE" pos="20" type="boolean"/>
3095bf215546Sopenharmony_ci	</reg32>
3096bf215546Sopenharmony_ci	<reg32 offset="0xa871" name="SP_GS_PRIM_SIZE" low="0" high="7" type="uint">
3097bf215546Sopenharmony_ci		<doc>
3098bf215546Sopenharmony_ci			Normally the size of the output of the last stage in
3099bf215546Sopenharmony_ci			dwords. It should be programmed as follows:
3100bf215546Sopenharmony_ci
3101bf215546Sopenharmony_ci			size less than 63    - size
3102bf215546Sopenharmony_ci			size of 63 (?) or 64 - 63
3103bf215546Sopenharmony_ci			size greater than 64 - 64
3104bf215546Sopenharmony_ci
3105bf215546Sopenharmony_ci			What to program when the size is 61-63 is a guess, but
3106bf215546Sopenharmony_ci			both the blob and ir3 align the size to 4 dword's so it
3107bf215546Sopenharmony_ci			doesn't matter in practice.
3108bf215546Sopenharmony_ci		</doc>
3109bf215546Sopenharmony_ci	</reg32>
3110bf215546Sopenharmony_ci	<reg32 offset="0xa872" name="SP_GS_BRANCH_COND" type="hex"/>
3111bf215546Sopenharmony_ci
3112bf215546Sopenharmony_ci	<!-- TODO: exact same layout as 0xa802-0xa81a -->
3113bf215546Sopenharmony_ci	<reg32 offset="0xa873" name="SP_GS_PRIMITIVE_CNTL" type="a6xx_sp_xs_prim_cntl"/>
3114bf215546Sopenharmony_ci	<array offset="0xa874" name="SP_GS_OUT" stride="1" length="16">
3115bf215546Sopenharmony_ci		<reg32 offset="0x0" name="REG">
3116bf215546Sopenharmony_ci			<bitfield name="A_REGID" low="0" high="7" type="a3xx_regid"/>
3117bf215546Sopenharmony_ci			<bitfield name="A_COMPMASK" low="8" high="11" type="hex"/>
3118bf215546Sopenharmony_ci			<bitfield name="B_REGID" low="16" high="23" type="a3xx_regid"/>
3119bf215546Sopenharmony_ci			<bitfield name="B_COMPMASK" low="24" high="27" type="hex"/>
3120bf215546Sopenharmony_ci		</reg32>
3121bf215546Sopenharmony_ci	</array>
3122bf215546Sopenharmony_ci
3123bf215546Sopenharmony_ci	<array offset="0xa884" name="SP_GS_VPC_DST" stride="1" length="8">
3124bf215546Sopenharmony_ci		<reg32 offset="0x0" name="REG">
3125bf215546Sopenharmony_ci			<bitfield name="OUTLOC0" low="0" high="7" type="uint"/>
3126bf215546Sopenharmony_ci			<bitfield name="OUTLOC1" low="8" high="15" type="uint"/>
3127bf215546Sopenharmony_ci			<bitfield name="OUTLOC2" low="16" high="23" type="uint"/>
3128bf215546Sopenharmony_ci			<bitfield name="OUTLOC3" low="24" high="31" type="uint"/>
3129bf215546Sopenharmony_ci		</reg32>
3130bf215546Sopenharmony_ci	</array>
3131bf215546Sopenharmony_ci
3132bf215546Sopenharmony_ci	<!-- TODO: exact same layout as 0xa81b-0xa825 -->
3133bf215546Sopenharmony_ci	<reg32 offset="0xa88c" name="SP_GS_OBJ_FIRST_EXEC_OFFSET" type="uint"/>
3134bf215546Sopenharmony_ci	<reg64 offset="0xa88d" name="SP_GS_OBJ_START" type="address" align="32"/>
3135bf215546Sopenharmony_ci	<reg32 offset="0xa88f" name="SP_GS_PVT_MEM_PARAM" type="a6xx_sp_xs_pvt_mem_param"/>
3136bf215546Sopenharmony_ci	<reg64 offset="0xa890" name="SP_GS_PVT_MEM_ADDR" type="waddress" align="32"/>
3137bf215546Sopenharmony_ci	<reg32 offset="0xa892" name="SP_GS_PVT_MEM_SIZE" type="a6xx_sp_xs_pvt_mem_size"/>
3138bf215546Sopenharmony_ci	<reg32 offset="0xa893" name="SP_GS_TEX_COUNT" low="0" high="7" type="uint"/>
3139bf215546Sopenharmony_ci	<reg32 offset="0xa894" name="SP_GS_CONFIG" type="a6xx_sp_xs_config"/>
3140bf215546Sopenharmony_ci	<reg32 offset="0xa895" name="SP_GS_INSTRLEN" low="0" high="27" type="uint"/>
3141bf215546Sopenharmony_ci	<reg32 offset="0xa896" name="SP_GS_PVT_MEM_HW_STACK_OFFSET" type="a6xx_sp_xs_pvt_mem_hw_stack_offset"/>
3142bf215546Sopenharmony_ci
3143bf215546Sopenharmony_ci	<reg64 offset="0xa8a0" name="SP_VS_TEX_SAMP" type="address" align="16"/>
3144bf215546Sopenharmony_ci	<reg64 offset="0xa8a2" name="SP_HS_TEX_SAMP" type="address" align="16"/>
3145bf215546Sopenharmony_ci	<reg64 offset="0xa8a4" name="SP_DS_TEX_SAMP" type="address" align="16"/>
3146bf215546Sopenharmony_ci	<reg64 offset="0xa8a6" name="SP_GS_TEX_SAMP" type="address" align="16"/>
3147bf215546Sopenharmony_ci	<reg64 offset="0xa8a8" name="SP_VS_TEX_CONST" type="address" align="64"/>
3148bf215546Sopenharmony_ci	<reg64 offset="0xa8aa" name="SP_HS_TEX_CONST" type="address" align="64"/>
3149bf215546Sopenharmony_ci	<reg64 offset="0xa8ac" name="SP_DS_TEX_CONST" type="address" align="64"/>
3150bf215546Sopenharmony_ci	<reg64 offset="0xa8ae" name="SP_GS_TEX_CONST" type="address" align="64"/>
3151bf215546Sopenharmony_ci
3152bf215546Sopenharmony_ci	<!-- TODO: 4 unknown bool registers 0xa8c0-0xa8c3 -->
3153bf215546Sopenharmony_ci
3154bf215546Sopenharmony_ci	<reg32 offset="0xa980" name="SP_FS_CTRL_REG0" type="a6xx_sp_xs_ctrl_reg0">
3155bf215546Sopenharmony_ci		<bitfield name="THREADSIZE" pos="20" type="a6xx_threadsize"/>
3156bf215546Sopenharmony_ci		<bitfield name="UNK21" pos="21" type="boolean"/>
3157bf215546Sopenharmony_ci		<bitfield name="VARYING" pos="22" type="boolean"/>
3158bf215546Sopenharmony_ci		<bitfield name="DIFF_FINE" pos="23" type="boolean"/>
3159bf215546Sopenharmony_ci		<!-- note: vk blob uses bit24 -->
3160bf215546Sopenharmony_ci		<bitfield name="UNK24" pos="24" type="boolean"/>
3161bf215546Sopenharmony_ci		<bitfield name="UNK25" pos="25" type="boolean"/>
3162bf215546Sopenharmony_ci		<bitfield name="PIXLODENABLE" pos="26" type="boolean"/>
3163bf215546Sopenharmony_ci		<bitfield name="UNK27" pos="27" type="boolean"/>
3164bf215546Sopenharmony_ci		<bitfield name="EARLYPREAMBLE" pos="28" type="boolean"/>
3165bf215546Sopenharmony_ci		<bitfield name="MERGEDREGS" pos="31" type="boolean"/>
3166bf215546Sopenharmony_ci	</reg32>
3167bf215546Sopenharmony_ci	<reg32 offset="0xa981" name="SP_FS_BRANCH_COND" type="hex"/>
3168bf215546Sopenharmony_ci	<reg32 offset="0xa982" name="SP_FS_OBJ_FIRST_EXEC_OFFSET" type="uint"/>
3169bf215546Sopenharmony_ci	<reg64 offset="0xa983" name="SP_FS_OBJ_START" type="address" align="32"/>
3170bf215546Sopenharmony_ci	<reg32 offset="0xa985" name="SP_FS_PVT_MEM_PARAM" type="a6xx_sp_xs_pvt_mem_param"/>
3171bf215546Sopenharmony_ci	<reg64 offset="0xa986" name="SP_FS_PVT_MEM_ADDR" type="waddress" align="32"/>
3172bf215546Sopenharmony_ci	<reg32 offset="0xa988" name="SP_FS_PVT_MEM_SIZE" type="a6xx_sp_xs_pvt_mem_size"/>
3173bf215546Sopenharmony_ci
3174bf215546Sopenharmony_ci	<reg32 offset="0xa989" name="SP_BLEND_CNTL">
3175bf215546Sopenharmony_ci		<!-- per-mrt enable bit -->
3176bf215546Sopenharmony_ci		<bitfield name="ENABLE_BLEND" low="0" high="7"/>
3177bf215546Sopenharmony_ci		<bitfield name="UNK8" pos="8" type="boolean"/>
3178bf215546Sopenharmony_ci		<bitfield name="DUAL_COLOR_IN_ENABLE" pos="9" type="boolean"/>
3179bf215546Sopenharmony_ci		<bitfield name="ALPHA_TO_COVERAGE" pos="10" type="boolean"/>
3180bf215546Sopenharmony_ci	</reg32>
3181bf215546Sopenharmony_ci	<reg32 offset="0xa98a" name="SP_SRGB_CNTL">
3182bf215546Sopenharmony_ci		<!-- Same as RB_SRGB_CNTL -->
3183bf215546Sopenharmony_ci		<bitfield name="SRGB_MRT0" pos="0" type="boolean"/>
3184bf215546Sopenharmony_ci		<bitfield name="SRGB_MRT1" pos="1" type="boolean"/>
3185bf215546Sopenharmony_ci		<bitfield name="SRGB_MRT2" pos="2" type="boolean"/>
3186bf215546Sopenharmony_ci		<bitfield name="SRGB_MRT3" pos="3" type="boolean"/>
3187bf215546Sopenharmony_ci		<bitfield name="SRGB_MRT4" pos="4" type="boolean"/>
3188bf215546Sopenharmony_ci		<bitfield name="SRGB_MRT5" pos="5" type="boolean"/>
3189bf215546Sopenharmony_ci		<bitfield name="SRGB_MRT6" pos="6" type="boolean"/>
3190bf215546Sopenharmony_ci		<bitfield name="SRGB_MRT7" pos="7" type="boolean"/>
3191bf215546Sopenharmony_ci	</reg32>
3192bf215546Sopenharmony_ci	<reg32 offset="0xa98b" name="SP_FS_RENDER_COMPONENTS">
3193bf215546Sopenharmony_ci		<bitfield name="RT0" low="0" high="3"/>
3194bf215546Sopenharmony_ci		<bitfield name="RT1" low="4" high="7"/>
3195bf215546Sopenharmony_ci		<bitfield name="RT2" low="8" high="11"/>
3196bf215546Sopenharmony_ci		<bitfield name="RT3" low="12" high="15"/>
3197bf215546Sopenharmony_ci		<bitfield name="RT4" low="16" high="19"/>
3198bf215546Sopenharmony_ci		<bitfield name="RT5" low="20" high="23"/>
3199bf215546Sopenharmony_ci		<bitfield name="RT6" low="24" high="27"/>
3200bf215546Sopenharmony_ci		<bitfield name="RT7" low="28" high="31"/>
3201bf215546Sopenharmony_ci	</reg32>
3202bf215546Sopenharmony_ci	<reg32 offset="0xa98c" name="SP_FS_OUTPUT_CNTL0">
3203bf215546Sopenharmony_ci		<bitfield name="DUAL_COLOR_IN_ENABLE" pos="0" type="boolean"/>
3204bf215546Sopenharmony_ci		<bitfield name="DEPTH_REGID" low="8" high="15" type="a3xx_regid"/>
3205bf215546Sopenharmony_ci		<bitfield name="SAMPMASK_REGID" low="16" high="23" type="a3xx_regid"/>
3206bf215546Sopenharmony_ci		<bitfield name="STENCILREF_REGID" low="24" high="31" type="a3xx_regid"/>
3207bf215546Sopenharmony_ci	</reg32>
3208bf215546Sopenharmony_ci	<reg32 offset="0xa98d" name="SP_FS_OUTPUT_CNTL1">
3209bf215546Sopenharmony_ci		<bitfield name="MRT" low="0" high="3" type="uint"/>
3210bf215546Sopenharmony_ci	</reg32>
3211bf215546Sopenharmony_ci
3212bf215546Sopenharmony_ci	<array offset="0xa98e" name="SP_FS_OUTPUT" stride="1" length="8">
3213bf215546Sopenharmony_ci		<doc>per MRT</doc>
3214bf215546Sopenharmony_ci		<reg32 offset="0x0" name="REG">
3215bf215546Sopenharmony_ci			<bitfield name="REGID" low="0" high="7" type="a3xx_regid"/>
3216bf215546Sopenharmony_ci			<bitfield name="HALF_PRECISION" pos="8" type="boolean"/>
3217bf215546Sopenharmony_ci		</reg32>
3218bf215546Sopenharmony_ci	</array>
3219bf215546Sopenharmony_ci
3220bf215546Sopenharmony_ci	<array offset="0xa996" name="SP_FS_MRT" stride="1" length="8">
3221bf215546Sopenharmony_ci		<reg32 offset="0" name="REG">
3222bf215546Sopenharmony_ci			<bitfield name="COLOR_FORMAT" low="0" high="7" type="a6xx_format"/>
3223bf215546Sopenharmony_ci			<bitfield name="COLOR_SINT" pos="8" type="boolean"/>
3224bf215546Sopenharmony_ci			<bitfield name="COLOR_UINT" pos="9" type="boolean"/>
3225bf215546Sopenharmony_ci			<bitfield name="UNK10" pos="10" type="boolean"/>
3226bf215546Sopenharmony_ci		</reg32>
3227bf215546Sopenharmony_ci	</array>
3228bf215546Sopenharmony_ci
3229bf215546Sopenharmony_ci	<reg32 offset="0xa99e" name="SP_FS_PREFETCH_CNTL">
3230bf215546Sopenharmony_ci		<!-- unknown bits 0x7fc0 always set -->
3231bf215546Sopenharmony_ci		<bitfield name="COUNT" low="0" high="2" type="uint"/>
3232bf215546Sopenharmony_ci		<!-- b3 set if no other use of varyings in the shader itself.. maybe alternative to dummy bary.f? -->
3233bf215546Sopenharmony_ci		<bitfield name="UNK3" pos="3" type="boolean"/>
3234bf215546Sopenharmony_ci		<bitfield name="UNK4" low="4" high="11" type="a3xx_regid"/>
3235bf215546Sopenharmony_ci		<bitfield name="UNK12" low="12" high="14"/>
3236bf215546Sopenharmony_ci	</reg32>
3237bf215546Sopenharmony_ci	<array offset="0xa99f" name="SP_FS_PREFETCH" stride="1" length="4">
3238bf215546Sopenharmony_ci		<reg32 offset="0" name="CMD">
3239bf215546Sopenharmony_ci			<bitfield name="SRC" low="0" high="6" type="uint"/>
3240bf215546Sopenharmony_ci			<bitfield name="SAMP_ID" low="7" high="10" type="uint"/>
3241bf215546Sopenharmony_ci			<bitfield name="TEX_ID" low="11" high="15" type="uint"/>
3242bf215546Sopenharmony_ci			<bitfield name="DST" low="16" high="21" type="a3xx_regid"/>
3243bf215546Sopenharmony_ci			<bitfield name="WRMASK" low="22" high="25" type="hex"/>
3244bf215546Sopenharmony_ci			<bitfield name="HALF" pos="26" type="boolean"/>
3245bf215546Sopenharmony_ci			<!--
3246bf215546Sopenharmony_ci			CMD seems always 0x4??  3d, textureProj, textureLod seem to
3247bf215546Sopenharmony_ci			skip pre-fetch.. TODO test texelFetch
3248bf215546Sopenharmony_ci                        CMD is 0x6 when the Vulkan mode is enabled, and
3249bf215546Sopenharmony_ci                        TEX_ID/SAMP_ID refer to the descriptor sets while the
3250bf215546Sopenharmony_ci                        indices come from SP_FS_BINDLESS_PREFETCH[n]
3251bf215546Sopenharmony_ci			 -->
3252bf215546Sopenharmony_ci			<bitfield name="CMD" low="27" high="31"/>
3253bf215546Sopenharmony_ci		</reg32>
3254bf215546Sopenharmony_ci	</array>
3255bf215546Sopenharmony_ci	<array offset="0xa9a3" name="SP_FS_BINDLESS_PREFETCH" stride="1" length="4">
3256bf215546Sopenharmony_ci		<reg32 offset="0" name="CMD">
3257bf215546Sopenharmony_ci			<bitfield name="SAMP_ID" low="0" high="15" type="uint"/>
3258bf215546Sopenharmony_ci			<bitfield name="TEX_ID" low="16" high="31" type="uint"/>
3259bf215546Sopenharmony_ci		</reg32>
3260bf215546Sopenharmony_ci	</array>
3261bf215546Sopenharmony_ci	<reg32 offset="0xa9a7" name="SP_FS_TEX_COUNT" low="0" high="7" type="uint"/>
3262bf215546Sopenharmony_ci	<reg32 offset="0xa9a8" name="SP_UNKNOWN_A9A8" low="0" high="16" /> <!-- always 0x0 ? -->
3263bf215546Sopenharmony_ci	<reg32 offset="0xa9a9" name="SP_FS_PVT_MEM_HW_STACK_OFFSET" type="a6xx_sp_xs_pvt_mem_hw_stack_offset"/>
3264bf215546Sopenharmony_ci
3265bf215546Sopenharmony_ci	<!-- TODO: unknown bool register at 0xa9aa, likely same as 0xa8c0-0xa8c3 but for FS -->
3266bf215546Sopenharmony_ci
3267bf215546Sopenharmony_ci
3268bf215546Sopenharmony_ci
3269bf215546Sopenharmony_ci
3270bf215546Sopenharmony_ci	<reg32 offset="0xa9b0" name="SP_CS_CTRL_REG0" type="a6xx_sp_xs_ctrl_reg0">
3271bf215546Sopenharmony_ci		<bitfield name="THREADSIZE" pos="20" type="a6xx_threadsize"/>
3272bf215546Sopenharmony_ci		<!-- seems to make SP use less concurrent threads when possible? -->
3273bf215546Sopenharmony_ci		<bitfield name="UNK21" pos="21" type="boolean"/>
3274bf215546Sopenharmony_ci		<!-- has a small impact on performance, not clear what it does -->
3275bf215546Sopenharmony_ci		<bitfield name="UNK22" pos="22" type="boolean"/>
3276bf215546Sopenharmony_ci		<bitfield name="EARLYPREAMBLE" pos="23" type="boolean"/>
3277bf215546Sopenharmony_ci		<bitfield name="MERGEDREGS" pos="31" type="boolean"/>
3278bf215546Sopenharmony_ci	</reg32>
3279bf215546Sopenharmony_ci
3280bf215546Sopenharmony_ci	<!-- set for compute shaders -->
3281bf215546Sopenharmony_ci	<reg32 offset="0xa9b1" name="SP_CS_UNKNOWN_A9B1">
3282bf215546Sopenharmony_ci		<bitfield name="SHARED_SIZE" low="0" high="4" type="uint">
3283bf215546Sopenharmony_ci			<doc>
3284bf215546Sopenharmony_ci				If 0 - all 32k of shared storage is enabled, otherwise
3285bf215546Sopenharmony_ci				(SHARED_SIZE + 1) * 1k is enabled.
3286bf215546Sopenharmony_ci				The ldl/stl offset seems to be rewritten to 0 when it is beyond
3287bf215546Sopenharmony_ci				this limit. This is different from ldlw/stlw, which wraps at
3288bf215546Sopenharmony_ci				64k (and has 36k of storage on A640 - reads between 36k-64k
3289bf215546Sopenharmony_ci				always return 0)
3290bf215546Sopenharmony_ci			</doc>
3291bf215546Sopenharmony_ci		</bitfield>
3292bf215546Sopenharmony_ci		<bitfield name="UNK5" pos="5" type="boolean"/>
3293bf215546Sopenharmony_ci		<!-- always 1 ? -->
3294bf215546Sopenharmony_ci		<bitfield name="UNK6" pos="6" type="boolean"/>
3295bf215546Sopenharmony_ci	</reg32>
3296bf215546Sopenharmony_ci	<reg32 offset="0xa9b2" name="SP_CS_BRANCH_COND" type="hex"/>
3297bf215546Sopenharmony_ci	<reg32 offset="0xa9b3" name="SP_CS_OBJ_FIRST_EXEC_OFFSET" type="uint"/>
3298bf215546Sopenharmony_ci	<reg64 offset="0xa9b4" name="SP_CS_OBJ_START" type="address" align="32"/>
3299bf215546Sopenharmony_ci	<reg32 offset="0xa9b6" name="SP_CS_PVT_MEM_PARAM" type="a6xx_sp_xs_pvt_mem_param"/>
3300bf215546Sopenharmony_ci	<reg64 offset="0xa9b7" name="SP_CS_PVT_MEM_ADDR" align="32"/>
3301bf215546Sopenharmony_ci	<reg32 offset="0xa9b9" name="SP_CS_PVT_MEM_SIZE" type="a6xx_sp_xs_pvt_mem_size"/>
3302bf215546Sopenharmony_ci	<reg32 offset="0xa9ba" name="SP_CS_TEX_COUNT" low="0" high="7" type="uint"/>
3303bf215546Sopenharmony_ci	<reg32 offset="0xa9bb" name="SP_CS_CONFIG" type="a6xx_sp_xs_config"/>
3304bf215546Sopenharmony_ci	<reg32 offset="0xa9bc" name="SP_CS_INSTRLEN" low="0" high="27" type="uint"/>
3305bf215546Sopenharmony_ci	<reg32 offset="0xa9bd" name="SP_CS_PVT_MEM_HW_STACK_OFFSET" type="a6xx_sp_xs_pvt_mem_hw_stack_offset"/>
3306bf215546Sopenharmony_ci
3307bf215546Sopenharmony_ci	<!-- new in a6xx gen4, matches HLSQ_CS_CNTL_0 -->
3308bf215546Sopenharmony_ci	<reg32 offset="0xa9c2" name="SP_CS_CNTL_0">
3309bf215546Sopenharmony_ci		<bitfield name="WGIDCONSTID" low="0" high="7" type="a3xx_regid"/>
3310bf215546Sopenharmony_ci		<bitfield name="WGSIZECONSTID" low="8" high="15" type="a3xx_regid"/>
3311bf215546Sopenharmony_ci		<bitfield name="WGOFFSETCONSTID" low="16" high="23" type="a3xx_regid"/>
3312bf215546Sopenharmony_ci		<bitfield name="LOCALIDREGID" low="24" high="31" type="a3xx_regid"/>
3313bf215546Sopenharmony_ci	</reg32>
3314bf215546Sopenharmony_ci	<!-- new in a6xx gen4, matches HLSQ_CS_CNTL_1 -->
3315bf215546Sopenharmony_ci	<reg32 offset="0xa9c3" name="SP_CS_CNTL_1">
3316bf215546Sopenharmony_ci		<!-- gl_LocalInvocationIndex -->
3317bf215546Sopenharmony_ci		<bitfield name="LINEARLOCALIDREGID" low="0" high="7" type="a3xx_regid"/>
3318bf215546Sopenharmony_ci		<!-- a650 has 6 "SP cores" (but 3 "SP"). this makes it use only
3319bf215546Sopenharmony_ci		     one of those 6 "SP cores" -->
3320bf215546Sopenharmony_ci		<bitfield name="SINGLE_SP_CORE" pos="8" type="boolean"/>
3321bf215546Sopenharmony_ci		<!-- Must match SP_CS_CTRL -->
3322bf215546Sopenharmony_ci		<bitfield name="THREADSIZE" pos="9" type="a6xx_threadsize"/>
3323bf215546Sopenharmony_ci		<!-- 1 thread per wave (ignored if bit9 set) -->
3324bf215546Sopenharmony_ci		<bitfield name="THREADSIZE_SCALAR" pos="10" type="boolean"/>
3325bf215546Sopenharmony_ci	</reg32>
3326bf215546Sopenharmony_ci
3327bf215546Sopenharmony_ci	<!-- TODO: two 64kb aligned addresses at a9d0/a9d2 -->
3328bf215546Sopenharmony_ci
3329bf215546Sopenharmony_ci	<reg64 offset="0xa9e0" name="SP_FS_TEX_SAMP" type="address" align="16"/>
3330bf215546Sopenharmony_ci	<reg64 offset="0xa9e2" name="SP_CS_TEX_SAMP" type="address" align="16"/>
3331bf215546Sopenharmony_ci	<reg64 offset="0xa9e4" name="SP_FS_TEX_CONST" type="address" align="64"/>
3332bf215546Sopenharmony_ci	<reg64 offset="0xa9e6" name="SP_CS_TEX_CONST" type="address" align="64"/>
3333bf215546Sopenharmony_ci
3334bf215546Sopenharmony_ci	<array offset="0xa9e8" name="SP_CS_BINDLESS_BASE" stride="2" length="5">
3335bf215546Sopenharmony_ci		<!-- TODO: probably align=64 with 6 flags bits in the low bits ? -->
3336bf215546Sopenharmony_ci		<reg64 offset="0" name="ADDR" type="address"/>
3337bf215546Sopenharmony_ci	</array>
3338bf215546Sopenharmony_ci
3339bf215546Sopenharmony_ci	<!--
3340bf215546Sopenharmony_ci	IBO state for compute shader:
3341bf215546Sopenharmony_ci	 -->
3342bf215546Sopenharmony_ci	<reg64 offset="0xa9f2" name="SP_CS_IBO" type="address" align="16"/>
3343bf215546Sopenharmony_ci	<reg32 offset="0xaa00" name="SP_CS_IBO_COUNT" low="0" high="6" type="uint"/>
3344bf215546Sopenharmony_ci
3345bf215546Sopenharmony_ci	<!--
3346bf215546Sopenharmony_ci                This enum is probably similar in purpose to SNORMMODE on a3xx,
3347bf215546Sopenharmony_ci                minus the snorm stuff, i.e. it controls what happens with an
3348bf215546Sopenharmony_ci                out-of-bounds isam/isamm. GL and Vulkan robustness require us to
3349bf215546Sopenharmony_ci                return 0 on out-of-bound textureFetch().
3350bf215546Sopenharmony_ci	-->
3351bf215546Sopenharmony_ci	<enum name="a6xx_isam_mode">
3352bf215546Sopenharmony_ci		<value value="0x2" name="ISAMMODE_GL"/>
3353bf215546Sopenharmony_ci	</enum>
3354bf215546Sopenharmony_ci
3355bf215546Sopenharmony_ci	<reg32 offset="0xab00" name="SP_MODE_CONTROL">
3356bf215546Sopenharmony_ci	  <!--
3357bf215546Sopenharmony_ci	  When set, half register loads from the constant file will
3358bf215546Sopenharmony_ci	  load a 32-bit value (so hc0.y loads the same value as c0.y)
3359bf215546Sopenharmony_ci	  and implicitly convert it to 16b (f2f16, or u2u16, based on
3360bf215546Sopenharmony_ci	  operand type).  When unset, half register loads from the
3361bf215546Sopenharmony_ci	  constant file will load 16 bits from the packed constant
3362bf215546Sopenharmony_ci	  file (so hc0.y loads the top 16 bits of the value of c0.x)
3363bf215546Sopenharmony_ci	  -->
3364bf215546Sopenharmony_ci		<bitfield name="CONSTANT_DEMOTION_ENABLE" pos="0" type="boolean"/>
3365bf215546Sopenharmony_ci		<bitfield name="ISAMMODE" low="1" high="2" type="a6xx_isam_mode"/>
3366bf215546Sopenharmony_ci		<bitfield name="SHARED_CONSTS_ENABLE" pos="3" type="boolean"/> <!-- see HLSQ_SHARED_CONSTS -->
3367bf215546Sopenharmony_ci	</reg32>
3368bf215546Sopenharmony_ci
3369bf215546Sopenharmony_ci	<reg32 offset="0xab04" name="SP_FS_CONFIG" type="a6xx_sp_xs_config"/>
3370bf215546Sopenharmony_ci	<reg32 offset="0xab05" name="SP_FS_INSTRLEN" low="0" high="27" type="uint"/>
3371bf215546Sopenharmony_ci
3372bf215546Sopenharmony_ci	<array offset="0xab10" name="SP_BINDLESS_BASE" stride="2" length="5">
3373bf215546Sopenharmony_ci		<!-- TODO: probably align=64 with 6 flags bits in the low bits? -->
3374bf215546Sopenharmony_ci		<reg64 offset="0" name="ADDR" type="address"/>
3375bf215546Sopenharmony_ci	</array>
3376bf215546Sopenharmony_ci
3377bf215546Sopenharmony_ci	<!--
3378bf215546Sopenharmony_ci	Combined IBO state for 3d pipe, used for Image and SSBO write/atomic
3379bf215546Sopenharmony_ci	instructions VS/HS/DS/GS/FS.  See SP_CS_IBO_* for compute shaders.
3380bf215546Sopenharmony_ci	 -->
3381bf215546Sopenharmony_ci	<reg64 offset="0xab1a" name="SP_IBO" type="address" align="16"/>
3382bf215546Sopenharmony_ci	<reg32 offset="0xab20" name="SP_IBO_COUNT" low="0" high="6" type="uint"/>
3383bf215546Sopenharmony_ci
3384bf215546Sopenharmony_ci	<reg32 offset="0xacc0" name="SP_2D_DST_FORMAT">
3385bf215546Sopenharmony_ci		<bitfield name="NORM" pos="0" type="boolean"/>
3386bf215546Sopenharmony_ci		<bitfield name="SINT" pos="1" type="boolean"/>
3387bf215546Sopenharmony_ci		<bitfield name="UINT" pos="2" type="boolean"/>
3388bf215546Sopenharmony_ci		<!-- looks like HW only cares about the base type of this format,
3389bf215546Sopenharmony_ci		     which matches the ifmt? -->
3390bf215546Sopenharmony_ci		<bitfield name="COLOR_FORMAT" low="3" high="10" type="a6xx_format"/>
3391bf215546Sopenharmony_ci		<!-- set when ifmt is R2D_UNORM8_SRGB -->
3392bf215546Sopenharmony_ci		<bitfield name="SRGB" pos="11" type="boolean"/>
3393bf215546Sopenharmony_ci		<!-- some sort of channel mask, not sure what it is for -->
3394bf215546Sopenharmony_ci		<bitfield name="MASK" low="12" high="15"/>
3395bf215546Sopenharmony_ci	</reg32>
3396bf215546Sopenharmony_ci
3397bf215546Sopenharmony_ci	<reg32 offset="0xae00" name="SP_UNKNOWN_AE00"/>
3398bf215546Sopenharmony_ci	<reg32 offset="0xae01" name="SP_ADDR_MODE_CNTL" pos="0" type="a5xx_address_mode"/>
3399bf215546Sopenharmony_ci	<reg32 offset="0xae02" name="SP_NC_MODE_CNTL">
3400bf215546Sopenharmony_ci		<!-- TODO: valid bits 0x3c3f, see kernel -->
3401bf215546Sopenharmony_ci	</reg32>
3402bf215546Sopenharmony_ci	<reg32 offset="0xae03" name="SP_CHICKEN_BITS"/>
3403bf215546Sopenharmony_ci	<reg32 offset="0xae04" name="SP_FLOAT_CNTL">
3404bf215546Sopenharmony_ci		<bitfield name="F16_NO_INF" pos="3" type="boolean"/>
3405bf215546Sopenharmony_ci	</reg32>
3406bf215546Sopenharmony_ci
3407bf215546Sopenharmony_ci	<reg32 offset="0xae0f" name="SP_PERFCTR_ENABLE">
3408bf215546Sopenharmony_ci		<!-- some perfcntrs are affected by a per-stage enable bit
3409bf215546Sopenharmony_ci		     (PERF_SP_ALU_WORKING_CYCLES for example)
3410bf215546Sopenharmony_ci		     TODO: verify position of HS/DS/GS bits -->
3411bf215546Sopenharmony_ci		<bitfield name="VS" pos="0" type="boolean"/>
3412bf215546Sopenharmony_ci		<bitfield name="HS" pos="1" type="boolean"/>
3413bf215546Sopenharmony_ci		<bitfield name="DS" pos="2" type="boolean"/>
3414bf215546Sopenharmony_ci		<bitfield name="GS" pos="3" type="boolean"/>
3415bf215546Sopenharmony_ci		<bitfield name="FS" pos="4" type="boolean"/>
3416bf215546Sopenharmony_ci		<bitfield name="CS" pos="5" type="boolean"/>
3417bf215546Sopenharmony_ci	</reg32>
3418bf215546Sopenharmony_ci	<array offset="0xae10" name="SP_PERFCTR_SP_SEL" stride="1" length="24"/>
3419bf215546Sopenharmony_ci	<!-- TODO: there are 4 more percntr select registers (0xae28-0xae2b) -->
3420bf215546Sopenharmony_ci	<!-- TODO: there are a few unknown registers in the 0xae30-0xae52 range -->
3421bf215546Sopenharmony_ci	<reg32 offset="0xbe22" name="SP_CONTEXT_SWITCH_GFX_PREEMPTION_SAFE_MODE"/>
3422bf215546Sopenharmony_ci
3423bf215546Sopenharmony_ci	<!--
3424bf215546Sopenharmony_ci	The downstream kernel calls the debug cluster of registers
3425bf215546Sopenharmony_ci	"a6xx_sp_ps_tp_cluster" but this actually specifies the border
3426bf215546Sopenharmony_ci	color base for compute shaders.
3427bf215546Sopenharmony_ci	-->
3428bf215546Sopenharmony_ci	<reg64 offset="0xb180" name="SP_PS_TP_BORDER_COLOR_BASE_ADDR" type="address" align="128"/>
3429bf215546Sopenharmony_ci	<reg32 offset="0xb182" name="SP_UNKNOWN_B182" low="0" high="2"/>
3430bf215546Sopenharmony_ci	<reg32 offset="0xb183" name="SP_UNKNOWN_B183" low="0" high="23"/>
3431bf215546Sopenharmony_ci
3432bf215546Sopenharmony_ci	<reg32 offset="0xb190" name="SP_UNKNOWN_B190"/>
3433bf215546Sopenharmony_ci	<reg32 offset="0xb191" name="SP_UNKNOWN_B191"/>
3434bf215546Sopenharmony_ci
3435bf215546Sopenharmony_ci	<!-- could be all the stuff below here is actually TPL1?? -->
3436bf215546Sopenharmony_ci
3437bf215546Sopenharmony_ci	<reg32 offset="0xb300" name="SP_TP_RAS_MSAA_CNTL">
3438bf215546Sopenharmony_ci		<bitfield name="SAMPLES" low="0" high="1" type="a3xx_msaa_samples"/>
3439bf215546Sopenharmony_ci		<bitfield name="UNK2" low="2" high="3"/>
3440bf215546Sopenharmony_ci	</reg32>
3441bf215546Sopenharmony_ci	<reg32 offset="0xb301" name="SP_TP_DEST_MSAA_CNTL">
3442bf215546Sopenharmony_ci		<bitfield name="SAMPLES" low="0" high="1" type="a3xx_msaa_samples"/>
3443bf215546Sopenharmony_ci		<bitfield name="MSAA_DISABLE" pos="2" type="boolean"/>
3444bf215546Sopenharmony_ci	</reg32>
3445bf215546Sopenharmony_ci
3446bf215546Sopenharmony_ci	<!-- looks to work in the same way as a5xx: -->
3447bf215546Sopenharmony_ci	<reg64 offset="0xb302" name="SP_TP_BORDER_COLOR_BASE_ADDR" type="address" align="128"/>
3448bf215546Sopenharmony_ci	<reg32 offset="0xb304" name="SP_TP_SAMPLE_CONFIG" type="a6xx_sample_config"/>
3449bf215546Sopenharmony_ci	<reg32 offset="0xb305" name="SP_TP_SAMPLE_LOCATION_0" type="a6xx_sample_locations"/>
3450bf215546Sopenharmony_ci	<reg32 offset="0xb306" name="SP_TP_SAMPLE_LOCATION_1" type="a6xx_sample_locations"/>
3451bf215546Sopenharmony_ci	<reg32 offset="0xb307" name="SP_TP_WINDOW_OFFSET" type="a6xx_reg_xy"/>
3452bf215546Sopenharmony_ci	<reg32 offset="0xb309" name="SP_TP_MODE_CNTL">
3453bf215546Sopenharmony_ci		<bitfield name="ISAMMODE" low="0" high="1" type="a6xx_isam_mode"/>
3454bf215546Sopenharmony_ci		<bitfield name="UNK3" low="2" high="7"/>
3455bf215546Sopenharmony_ci	</reg32>
3456bf215546Sopenharmony_ci
3457bf215546Sopenharmony_ci	<!--
3458bf215546Sopenharmony_ci	Equiv to corresponding RB_2D_SRC_* regs on a5xx.. which were either
3459bf215546Sopenharmony_ci	badly named or the functionality moved in a6xx.  But downstream kernel
3460bf215546Sopenharmony_ci	calls this "a6xx_sp_ps_tp_2d_cluster"
3461bf215546Sopenharmony_ci	 -->
3462bf215546Sopenharmony_ci	<reg32 offset="0xb4c0" name="SP_PS_2D_SRC_INFO" type="a6xx_2d_surf_info"/>
3463bf215546Sopenharmony_ci	<reg32 offset="0xb4c1" name="SP_PS_2D_SRC_SIZE">
3464bf215546Sopenharmony_ci		<bitfield name="WIDTH" low="0" high="14" type="uint"/>
3465bf215546Sopenharmony_ci		<bitfield name="HEIGHT" low="15" high="29" type="uint"/>
3466bf215546Sopenharmony_ci	</reg32>
3467bf215546Sopenharmony_ci	<reg64 offset="0xb4c2" name="SP_PS_2D_SRC" type="address" align="16"/>
3468bf215546Sopenharmony_ci	<reg32 offset="0xb4c4" name="SP_PS_2D_SRC_PITCH">
3469bf215546Sopenharmony_ci		<bitfield name="UNK0" low="0" high="8"/>
3470bf215546Sopenharmony_ci		<bitfield name="PITCH" low="9" high="23" shr="6" type="uint"/>
3471bf215546Sopenharmony_ci	</reg32>
3472bf215546Sopenharmony_ci
3473bf215546Sopenharmony_ci	<!-- planes for NV12, etc. (TODO: not tested) -->
3474bf215546Sopenharmony_ci	<reg64 offset="0xb4c5" name="SP_PS_2D_SRC_PLANE1" type="address" align="16"/>
3475bf215546Sopenharmony_ci	<reg32 offset="0xb4c7" name="SP_PS_2D_SRC_PLANE_PITCH" low="0" high="11" shr="6" type="uint"/>
3476bf215546Sopenharmony_ci	<reg64 offset="0xb4c8" name="SP_PS_2D_SRC_PLANE2" type="address" align="16"/>
3477bf215546Sopenharmony_ci
3478bf215546Sopenharmony_ci	<reg64 offset="0xb4ca" name="SP_PS_2D_SRC_FLAGS" type="address" align="16"/>
3479bf215546Sopenharmony_ci	<reg32 offset="0xb4cc" name="SP_PS_2D_SRC_FLAGS_PITCH" low="0" high="7" shr="6" type="uint"/>
3480bf215546Sopenharmony_ci
3481bf215546Sopenharmony_ci	<reg32 offset="0xb4cd" name="SP_PS_UNKNOWN_B4CD" low="6" high="31"/>
3482bf215546Sopenharmony_ci	<reg32 offset="0xb4ce" name="SP_PS_UNKNOWN_B4CE" low="0" high="31"/>
3483bf215546Sopenharmony_ci	<reg32 offset="0xb4cf" name="SP_PS_UNKNOWN_B4CF" low="0" high="30"/>
3484bf215546Sopenharmony_ci	<reg32 offset="0xb4d0" name="SP_PS_UNKNOWN_B4D0" low="0" high="29"/>
3485bf215546Sopenharmony_ci	<reg32 offset="0xb4d1" name="SP_WINDOW_OFFSET" type="a6xx_reg_xy"/>
3486bf215546Sopenharmony_ci
3487bf215546Sopenharmony_ci	<!-- always 0x100000 or 0x1000000? -->
3488bf215546Sopenharmony_ci	<reg32 offset="0xb600" name="TPL1_DBG_ECO_CNTL" low="0" high="25"/>
3489bf215546Sopenharmony_ci	<reg32 offset="0xb601" name="TPL1_ADDR_MODE_CNTL" type="a5xx_address_mode"/>
3490bf215546Sopenharmony_ci	<reg32 offset="0xb602" name="TPL1_UNKNOWN_B602" low="0" high="7" type="uint"/>
3491bf215546Sopenharmony_ci	<reg32 offset="0xb604" name="TPL1_NC_MODE_CNTL">
3492bf215546Sopenharmony_ci		<bitfield name="MODE" pos="0" type="boolean"/>
3493bf215546Sopenharmony_ci		<bitfield name="LOWER_BIT" low="1" high="2" type="uint"/>
3494bf215546Sopenharmony_ci		<bitfield name="MIN_ACCESS_LENGTH" pos="3" type="boolean"/> <!-- true=64b false=32b -->
3495bf215546Sopenharmony_ci		<bitfield name="UPPER_BIT" pos="4" type="uint"/>
3496bf215546Sopenharmony_ci		<bitfield name="UNK6" low="6" high="7"/>
3497bf215546Sopenharmony_ci	</reg32>
3498bf215546Sopenharmony_ci	<reg32 offset="0xb605" name="TPL1_UNKNOWN_B605" low="0" high="7" type="uint"/> <!-- always 0x0 or 0x44 ? -->
3499bf215546Sopenharmony_ci	<reg32 offset="0xb608" name="TPL1_BICUBIC_WEIGHTS_TABLE_0" low="0" high="29"/>
3500bf215546Sopenharmony_ci	<reg32 offset="0xb609" name="TPL1_BICUBIC_WEIGHTS_TABLE_1" low="0" high="29"/>
3501bf215546Sopenharmony_ci	<reg32 offset="0xb60a" name="TPL1_BICUBIC_WEIGHTS_TABLE_2" low="0" high="29"/>
3502bf215546Sopenharmony_ci	<reg32 offset="0xb60b" name="TPL1_BICUBIC_WEIGHTS_TABLE_3" low="0" high="29"/>
3503bf215546Sopenharmony_ci	<reg32 offset="0xb60c" name="TPL1_BICUBIC_WEIGHTS_TABLE_4" low="0" high="29"/>
3504bf215546Sopenharmony_ci	<array offset="0xb610" name="TPL1_PERFCTR_TP_SEL" stride="1" length="12"/>
3505bf215546Sopenharmony_ci
3506bf215546Sopenharmony_ci	<!-- TODO: 4 more perfcntr sel at 0xb620 ? -->
3507bf215546Sopenharmony_ci
3508bf215546Sopenharmony_ci	<bitset name="a6xx_hlsq_xs_cntl" inline="yes">
3509bf215546Sopenharmony_ci		<bitfield name="CONSTLEN" low="0" high="7" shr="2" type="uint"/>
3510bf215546Sopenharmony_ci		<bitfield name="ENABLED" pos="8" type="boolean"/>
3511bf215546Sopenharmony_ci	</bitset>
3512bf215546Sopenharmony_ci
3513bf215546Sopenharmony_ci	<reg32 offset="0xb800" name="HLSQ_VS_CNTL" type="a6xx_hlsq_xs_cntl"/>
3514bf215546Sopenharmony_ci	<reg32 offset="0xb801" name="HLSQ_HS_CNTL" type="a6xx_hlsq_xs_cntl"/>
3515bf215546Sopenharmony_ci	<reg32 offset="0xb802" name="HLSQ_DS_CNTL" type="a6xx_hlsq_xs_cntl"/>
3516bf215546Sopenharmony_ci	<reg32 offset="0xb803" name="HLSQ_GS_CNTL" type="a6xx_hlsq_xs_cntl"/>
3517bf215546Sopenharmony_ci
3518bf215546Sopenharmony_ci	<reg32 offset="0xb820" name="HLSQ_LOAD_STATE_GEOM_CMD"/>
3519bf215546Sopenharmony_ci	<reg64 offset="0xb821" name="HLSQ_LOAD_STATE_GEOM_EXT_SRC_ADDR" align="16" type="address"/>
3520bf215546Sopenharmony_ci	<reg32 offset="0xb823" name="HLSQ_LOAD_STATE_GEOM_DATA"/>
3521bf215546Sopenharmony_ci
3522bf215546Sopenharmony_ci	<reg32 offset="0xb980" name="HLSQ_FS_CNTL_0">
3523bf215546Sopenharmony_ci		<!-- must match SP_FS_CTRL -->
3524bf215546Sopenharmony_ci		<bitfield name="THREADSIZE" pos="0" type="a6xx_threadsize"/>
3525bf215546Sopenharmony_ci		<bitfield name="VARYINGS" pos="1" type="boolean"/>
3526bf215546Sopenharmony_ci		<bitfield name="UNK2" low="2" high="11"/>
3527bf215546Sopenharmony_ci	</reg32>
3528bf215546Sopenharmony_ci	<reg32 offset="0xb981" name="HLSQ_UNKNOWN_B981" pos="0" type="boolean"/> <!-- never used by blob -->
3529bf215546Sopenharmony_ci
3530bf215546Sopenharmony_ci	<reg32 offset="0xb982" name="HLSQ_CONTROL_1_REG" low="0" high="2">
3531bf215546Sopenharmony_ci		<!-- TODO: have test cases with either 0x3 or 0x7 -->
3532bf215546Sopenharmony_ci	</reg32>
3533bf215546Sopenharmony_ci	<reg32 offset="0xb983" name="HLSQ_CONTROL_2_REG">
3534bf215546Sopenharmony_ci		<bitfield name="FACEREGID" low="0" high="7" type="a3xx_regid"/>
3535bf215546Sopenharmony_ci		<!-- SAMPLEID is loaded into a half-precision register: -->
3536bf215546Sopenharmony_ci		<bitfield name="SAMPLEID" low="8" high="15" type="a3xx_regid"/>
3537bf215546Sopenharmony_ci		<bitfield name="SAMPLEMASK" low="16" high="23" type="a3xx_regid"/>
3538bf215546Sopenharmony_ci		<bitfield name="CENTERRHW" low="24" high="31" type="a3xx_regid"/>
3539bf215546Sopenharmony_ci	</reg32>
3540bf215546Sopenharmony_ci	<reg32 offset="0xb984" name="HLSQ_CONTROL_3_REG">
3541bf215546Sopenharmony_ci		<!-- register loaded with position (bary.f) -->
3542bf215546Sopenharmony_ci		<bitfield name="IJ_PERSP_PIXEL" low="0" high="7" type="a3xx_regid"/>
3543bf215546Sopenharmony_ci		<bitfield name="IJ_LINEAR_PIXEL" low="8" high="15" type="a3xx_regid"/>
3544bf215546Sopenharmony_ci		<bitfield name="IJ_PERSP_CENTROID" low="16" high="23" type="a3xx_regid"/>
3545bf215546Sopenharmony_ci		<bitfield name="IJ_LINEAR_CENTROID" low="24" high="31" type="a3xx_regid"/>
3546bf215546Sopenharmony_ci	</reg32>
3547bf215546Sopenharmony_ci	<reg32 offset="0xb985" name="HLSQ_CONTROL_4_REG">
3548bf215546Sopenharmony_ci		<bitfield name="IJ_PERSP_SAMPLE" low="0" high="7" type="a3xx_regid"/>
3549bf215546Sopenharmony_ci		<bitfield name="IJ_LINEAR_SAMPLE" low="8" high="15" type="a3xx_regid"/>
3550bf215546Sopenharmony_ci		<bitfield name="XYCOORDREGID" low="16" high="23" type="a3xx_regid"/>
3551bf215546Sopenharmony_ci		<bitfield name="ZWCOORDREGID" low="24" high="31" type="a3xx_regid"/>
3552bf215546Sopenharmony_ci	</reg32>
3553bf215546Sopenharmony_ci	<reg32 offset="0xb986" name="HLSQ_CONTROL_5_REG">
3554bf215546Sopenharmony_ci		<bitfield name="LINELENGTHREGID" low="0" high="7" type="a3xx_regid"/>
3555bf215546Sopenharmony_ci		<bitfield name="FOVEATIONQUALITYREGID" low="8" high="15" type="a3xx_regid"/>
3556bf215546Sopenharmony_ci	</reg32>
3557bf215546Sopenharmony_ci	<reg32 offset="0xb987" name="HLSQ_CS_CNTL" type="a6xx_hlsq_xs_cntl"/>
3558bf215546Sopenharmony_ci
3559bf215546Sopenharmony_ci	<!-- TODO: what does KERNELDIM do exactly (blob sets it differently from turnip) -->
3560bf215546Sopenharmony_ci	<reg32 offset="0xb990" name="HLSQ_CS_NDRANGE_0">
3561bf215546Sopenharmony_ci		<bitfield name="KERNELDIM" low="0" high="1" type="uint"/>
3562bf215546Sopenharmony_ci		<!-- localsize is value minus one: -->
3563bf215546Sopenharmony_ci		<bitfield name="LOCALSIZEX" low="2" high="11" type="uint"/>
3564bf215546Sopenharmony_ci		<bitfield name="LOCALSIZEY" low="12" high="21" type="uint"/>
3565bf215546Sopenharmony_ci		<bitfield name="LOCALSIZEZ" low="22" high="31" type="uint"/>
3566bf215546Sopenharmony_ci	</reg32>
3567bf215546Sopenharmony_ci	<reg32 offset="0xb991" name="HLSQ_CS_NDRANGE_1">
3568bf215546Sopenharmony_ci		<bitfield name="GLOBALSIZE_X" low="0" high="31" type="uint"/>
3569bf215546Sopenharmony_ci	</reg32>
3570bf215546Sopenharmony_ci	<reg32 offset="0xb992" name="HLSQ_CS_NDRANGE_2">
3571bf215546Sopenharmony_ci		<bitfield name="GLOBALOFF_X" low="0" high="31" type="uint"/>
3572bf215546Sopenharmony_ci	</reg32>
3573bf215546Sopenharmony_ci	<reg32 offset="0xb993" name="HLSQ_CS_NDRANGE_3">
3574bf215546Sopenharmony_ci		<bitfield name="GLOBALSIZE_Y" low="0" high="31" type="uint"/>
3575bf215546Sopenharmony_ci	</reg32>
3576bf215546Sopenharmony_ci	<reg32 offset="0xb994" name="HLSQ_CS_NDRANGE_4">
3577bf215546Sopenharmony_ci		<bitfield name="GLOBALOFF_Y" low="0" high="31" type="uint"/>
3578bf215546Sopenharmony_ci	</reg32>
3579bf215546Sopenharmony_ci	<reg32 offset="0xb995" name="HLSQ_CS_NDRANGE_5">
3580bf215546Sopenharmony_ci		<bitfield name="GLOBALSIZE_Z" low="0" high="31" type="uint"/>
3581bf215546Sopenharmony_ci	</reg32>
3582bf215546Sopenharmony_ci	<reg32 offset="0xb996" name="HLSQ_CS_NDRANGE_6">
3583bf215546Sopenharmony_ci		<bitfield name="GLOBALOFF_Z" low="0" high="31" type="uint"/>
3584bf215546Sopenharmony_ci	</reg32>
3585bf215546Sopenharmony_ci	<reg32 offset="0xb997" name="HLSQ_CS_CNTL_0">
3586bf215546Sopenharmony_ci		<!-- these are all vec3. first 3 need to be high regs
3587bf215546Sopenharmony_ci		     WGSIZECONSTID is the local size (from HLSQ_CS_NDRANGE_0)
3588bf215546Sopenharmony_ci		     WGOFFSETCONSTID is WGIDCONSTID*WGSIZECONSTID
3589bf215546Sopenharmony_ci		-->
3590bf215546Sopenharmony_ci		<bitfield name="WGIDCONSTID" low="0" high="7" type="a3xx_regid"/>
3591bf215546Sopenharmony_ci		<bitfield name="WGSIZECONSTID" low="8" high="15" type="a3xx_regid"/>
3592bf215546Sopenharmony_ci		<bitfield name="WGOFFSETCONSTID" low="16" high="23" type="a3xx_regid"/>
3593bf215546Sopenharmony_ci		<bitfield name="LOCALIDREGID" low="24" high="31" type="a3xx_regid"/>
3594bf215546Sopenharmony_ci	</reg32>
3595bf215546Sopenharmony_ci	<reg32 offset="0xb998" name="HLSQ_CS_CNTL_1">
3596bf215546Sopenharmony_ci		<!-- gl_LocalInvocationIndex -->
3597bf215546Sopenharmony_ci		<bitfield name="LINEARLOCALIDREGID" low="0" high="7" type="a3xx_regid"/>
3598bf215546Sopenharmony_ci		<!-- a650 has 6 "SP cores" (but 3 "SP"). this makes it use only
3599bf215546Sopenharmony_ci		     one of those 6 "SP cores" -->
3600bf215546Sopenharmony_ci		<bitfield name="SINGLE_SP_CORE" pos="8" type="boolean"/>
3601bf215546Sopenharmony_ci		<!-- Must match SP_CS_CTRL -->
3602bf215546Sopenharmony_ci		<bitfield name="THREADSIZE" pos="9" type="a6xx_threadsize"/>
3603bf215546Sopenharmony_ci		<!-- 1 thread per wave (ignored if bit9 set) -->
3604bf215546Sopenharmony_ci		<bitfield name="THREADSIZE_SCALAR" pos="10" type="boolean"/>
3605bf215546Sopenharmony_ci	</reg32>
3606bf215546Sopenharmony_ci	<!--note: vulkan blob doesn't use these -->
3607bf215546Sopenharmony_ci	<reg32 offset="0xb999" name="HLSQ_CS_KERNEL_GROUP_X"/>
3608bf215546Sopenharmony_ci	<reg32 offset="0xb99a" name="HLSQ_CS_KERNEL_GROUP_Y"/>
3609bf215546Sopenharmony_ci	<reg32 offset="0xb99b" name="HLSQ_CS_KERNEL_GROUP_Z"/>
3610bf215546Sopenharmony_ci
3611bf215546Sopenharmony_ci	<reg32 offset="0xb9a0" name="HLSQ_LOAD_STATE_FRAG_CMD"/>
3612bf215546Sopenharmony_ci	<reg64 offset="0xb9a1" name="HLSQ_LOAD_STATE_FRAG_EXT_SRC_ADDR" align="16" type="address"/>
3613bf215546Sopenharmony_ci	<reg32 offset="0xb9a3" name="HLSQ_LOAD_STATE_FRAG_DATA"/>
3614bf215546Sopenharmony_ci
3615bf215546Sopenharmony_ci	<!-- mirror of SP_CS_BINDLESS_BASE -->
3616bf215546Sopenharmony_ci	<array offset="0xb9c0" name="HLSQ_CS_BINDLESS_BASE" stride="2" length="5">
3617bf215546Sopenharmony_ci		<!-- 64 alignment, 2 low bits for unknown flags (always 0x3 when enabled?) -->
3618bf215546Sopenharmony_ci		<reg64 offset="0" name="ADDR" type="waddress"/>
3619bf215546Sopenharmony_ci	</array>
3620bf215546Sopenharmony_ci
3621bf215546Sopenharmony_ci	<!-- new in a6xx gen4, mirror of SP_CS_UNKNOWN_A9B1? -->
3622bf215546Sopenharmony_ci	<reg32 offset="0xb9d0" name="HLSQ_CS_UNKNOWN_B9D0">
3623bf215546Sopenharmony_ci		<bitfield name="SHARED_SIZE" low="0" high="4" type="uint"/>
3624bf215546Sopenharmony_ci		<bitfield name="UNK5" pos="5" type="boolean"/>
3625bf215546Sopenharmony_ci		<!-- always 1 ? -->
3626bf215546Sopenharmony_ci		<bitfield name="UNK6" pos="6" type="boolean"/>
3627bf215546Sopenharmony_ci	</reg32>
3628bf215546Sopenharmony_ci
3629bf215546Sopenharmony_ci	<reg32 offset="0xbb00" name="HLSQ_DRAW_CMD">
3630bf215546Sopenharmony_ci		<bitfield name="STATE_ID" low="0" high="7"/>
3631bf215546Sopenharmony_ci	</reg32>
3632bf215546Sopenharmony_ci
3633bf215546Sopenharmony_ci	<reg32 offset="0xbb01" name="HLSQ_DISPATCH_CMD">
3634bf215546Sopenharmony_ci		<bitfield name="STATE_ID" low="0" high="7"/>
3635bf215546Sopenharmony_ci	</reg32>
3636bf215546Sopenharmony_ci
3637bf215546Sopenharmony_ci	<reg32 offset="0xbb02" name="HLSQ_EVENT_CMD">
3638bf215546Sopenharmony_ci		<!-- I think only the low bit is actually used? -->
3639bf215546Sopenharmony_ci		<bitfield name="STATE_ID" low="16" high="23"/>
3640bf215546Sopenharmony_ci		<bitfield name="EVENT" low="0" high="6" type="vgt_event_type"/>
3641bf215546Sopenharmony_ci	</reg32>
3642bf215546Sopenharmony_ci
3643bf215546Sopenharmony_ci	<reg32 offset="0xbb08" name="HLSQ_INVALIDATE_CMD">
3644bf215546Sopenharmony_ci		<doc>
3645bf215546Sopenharmony_ci			This register clears pending loads queued up by
3646bf215546Sopenharmony_ci			CP_LOAD_STATE6. Each bit resets a particular kind(s) of
3647bf215546Sopenharmony_ci			CP_LOAD_STATE6.
3648bf215546Sopenharmony_ci		</doc>
3649bf215546Sopenharmony_ci
3650bf215546Sopenharmony_ci		<!-- per-stage state: shader, non-bindless UBO, textures, and samplers -->
3651bf215546Sopenharmony_ci		<bitfield name="VS_STATE" pos="0" type="boolean"/>
3652bf215546Sopenharmony_ci		<bitfield name="HS_STATE" pos="1" type="boolean"/>
3653bf215546Sopenharmony_ci		<bitfield name="DS_STATE" pos="2" type="boolean"/>
3654bf215546Sopenharmony_ci		<bitfield name="GS_STATE" pos="3" type="boolean"/>
3655bf215546Sopenharmony_ci		<bitfield name="FS_STATE" pos="4" type="boolean"/>
3656bf215546Sopenharmony_ci		<bitfield name="CS_STATE" pos="5" type="boolean"/>
3657bf215546Sopenharmony_ci
3658bf215546Sopenharmony_ci		<bitfield name="CS_IBO" pos="6" type="boolean"/>
3659bf215546Sopenharmony_ci		<bitfield name="GFX_IBO" pos="7" type="boolean"/>
3660bf215546Sopenharmony_ci
3661bf215546Sopenharmony_ci		<!-- Note: these only do something when HLSQ_SHARED_CONSTS is set to 1 -->
3662bf215546Sopenharmony_ci		<bitfield name="CS_SHARED_CONST" pos="19" type="boolean"/>
3663bf215546Sopenharmony_ci		<bitfield name="GFX_SHARED_CONST" pos="8" type="boolean"/>
3664bf215546Sopenharmony_ci
3665bf215546Sopenharmony_ci		<!-- SS6_BINDLESS: one bit per bindless base -->
3666bf215546Sopenharmony_ci		<bitfield name="CS_BINDLESS" low="9" high="13" type="hex"/>
3667bf215546Sopenharmony_ci		<bitfield name="GFX_BINDLESS" low="14" high="18" type="hex"/>
3668bf215546Sopenharmony_ci	</reg32>
3669bf215546Sopenharmony_ci
3670bf215546Sopenharmony_ci	<reg32 offset="0xbb10" name="HLSQ_FS_CNTL" type="a6xx_hlsq_xs_cntl"/>
3671bf215546Sopenharmony_ci
3672bf215546Sopenharmony_ci	<reg32 offset="0xbb11" name="HLSQ_SHARED_CONSTS">
3673bf215546Sopenharmony_ci		<doc>
3674bf215546Sopenharmony_ci			Shared constants are intended to be used for Vulkan push
3675bf215546Sopenharmony_ci			constants. When enabled, 8 vec4's are reserved in the FS
3676bf215546Sopenharmony_ci			const pool and 16 in the geometry const pool although
3677bf215546Sopenharmony_ci			only 8 are actually used (why?) and they are mapped to
3678bf215546Sopenharmony_ci			c504-c511 in each stage. Both VS and FS shared consts
3679bf215546Sopenharmony_ci			are written using ST6_CONSTANTS/SB6_IBO, so that both
3680bf215546Sopenharmony_ci			the geometry and FS shared consts can be written at once
3681bf215546Sopenharmony_ci			by using CP_LOAD_STATE6 rather than
3682bf215546Sopenharmony_ci			CP_LOAD_STATE6_FRAG/CP_LOAD_STATE6_GEOM. In addition
3683bf215546Sopenharmony_ci			DST_OFF and NUM_UNIT are in units of dwords instead of
3684bf215546Sopenharmony_ci			vec4's.
3685bf215546Sopenharmony_ci
3686bf215546Sopenharmony_ci			There is also a separate shared constant pool for CS,
3687bf215546Sopenharmony_ci			which is loaded through CP_LOAD_STATE6_FRAG with
3688bf215546Sopenharmony_ci			ST6_UBO/ST6_IBO. However the only real difference for CS
3689bf215546Sopenharmony_ci			is the dword units.
3690bf215546Sopenharmony_ci		</doc>
3691bf215546Sopenharmony_ci		<bitfield name="ENABLE" pos="0" type="boolean"/>
3692bf215546Sopenharmony_ci	</reg32>
3693bf215546Sopenharmony_ci
3694bf215546Sopenharmony_ci	<!-- mirror of SP_BINDLESS_BASE -->
3695bf215546Sopenharmony_ci	<array offset="0xbb20" name="HLSQ_BINDLESS_BASE" stride="2" length="5">
3696bf215546Sopenharmony_ci		<!-- align 64 with two LSB for unknown flags (always 0x3 enabled) -->
3697bf215546Sopenharmony_ci		<reg64 offset="0" name="ADDR" type="address"/>
3698bf215546Sopenharmony_ci	</array>
3699bf215546Sopenharmony_ci
3700bf215546Sopenharmony_ci	<reg32 offset="0xbd80" name="HLSQ_2D_EVENT_CMD">
3701bf215546Sopenharmony_ci		<bitfield name="STATE_ID" low="8" high="15"/>
3702bf215546Sopenharmony_ci		<bitfield name="EVENT" low="0" high="6" type="vgt_event_type"/>
3703bf215546Sopenharmony_ci	</reg32>
3704bf215546Sopenharmony_ci
3705bf215546Sopenharmony_ci	<reg32 offset="0xbe00" name="HLSQ_UNKNOWN_BE00"/> <!-- all bits valid except bit 29 -->
3706bf215546Sopenharmony_ci	<reg32 offset="0xbe01" name="HLSQ_UNKNOWN_BE01" low="4" high="6"/>
3707bf215546Sopenharmony_ci	<reg32 offset="0xbe04" name="HLSQ_UNKNOWN_BE04"/>
3708bf215546Sopenharmony_ci	<reg32 offset="0xbe05" name="HLSQ_ADDR_MODE_CNTL" type="a5xx_address_mode"/>
3709bf215546Sopenharmony_ci	<reg32 offset="0xbe08" name="HLSQ_UNKNOWN_BE08" low="0" high="15"/>
3710bf215546Sopenharmony_ci	<array offset="0xbe10" name="HLSQ_PERFCTR_HLSQ_SEL" stride="1" length="6"/>
3711bf215546Sopenharmony_ci
3712bf215546Sopenharmony_ci	<!-- TODO: some valid registers between 0xbe20 and 0xbe33 -->
3713bf215546Sopenharmony_ci	<reg32 offset="0xbe22" name="HLSQ_CONTEXT_SWITCH_GFX_PREEMPTION_SAFE_MODE"/>
3714bf215546Sopenharmony_ci
3715bf215546Sopenharmony_ci	<!--
3716bf215546Sopenharmony_ci		These special registers signal the beginning/end of an event
3717bf215546Sopenharmony_ci		sequence. The sequence used internally for an event looks like:
3718bf215546Sopenharmony_ci		- write EVENT_CMD pipe register
3719bf215546Sopenharmony_ci		- write CP_EVENT_START
3720bf215546Sopenharmony_ci		- write HLSQ_EVENT_CMD with event or HLSQ_DRAW_CMD
3721bf215546Sopenharmony_ci		- write PC_EVENT_CMD with event or PC_DRAW_CMD
3722bf215546Sopenharmony_ci		- write HLSQ_EVENT_CMD(CONTEXT_DONE)
3723bf215546Sopenharmony_ci		- write PC_EVENT_CMD(CONTEXT_DONE)
3724bf215546Sopenharmony_ci		- write CP_EVENT_END
3725bf215546Sopenharmony_ci		Writing to CP_EVENT_END seems to actually trigger the context roll
3726bf215546Sopenharmony_ci	-->
3727bf215546Sopenharmony_ci	<reg32 offset="0xd600" name="CP_EVENT_START">
3728bf215546Sopenharmony_ci		<bitfield name="STATE_ID" low="0" high="7"/>
3729bf215546Sopenharmony_ci	</reg32>
3730bf215546Sopenharmony_ci	<reg32 offset="0xd601" name="CP_EVENT_END">
3731bf215546Sopenharmony_ci		<bitfield name="STATE_ID" low="0" high="7"/>
3732bf215546Sopenharmony_ci	</reg32>
3733bf215546Sopenharmony_ci	<reg32 offset="0xd700" name="CP_2D_EVENT_START">
3734bf215546Sopenharmony_ci		<bitfield name="STATE_ID" low="0" high="7"/>
3735bf215546Sopenharmony_ci	</reg32>
3736bf215546Sopenharmony_ci	<reg32 offset="0xd701" name="CP_2D_EVENT_END">
3737bf215546Sopenharmony_ci		<bitfield name="STATE_ID" low="0" high="7"/>
3738bf215546Sopenharmony_ci	</reg32>
3739bf215546Sopenharmony_ci</domain>
3740bf215546Sopenharmony_ci
3741bf215546Sopenharmony_ci<!-- Seems basically the same as a5xx, maybe move to common.xml.. -->
3742bf215546Sopenharmony_ci<domain name="A6XX_TEX_SAMP" width="32">
3743bf215546Sopenharmony_ci	<doc>Texture sampler dwords</doc>
3744bf215546Sopenharmony_ci	<enum name="a6xx_tex_filter"> <!-- same as a4xx? -->
3745bf215546Sopenharmony_ci		<value name="A6XX_TEX_NEAREST" value="0"/>
3746bf215546Sopenharmony_ci		<value name="A6XX_TEX_LINEAR" value="1"/>
3747bf215546Sopenharmony_ci		<value name="A6XX_TEX_ANISO" value="2"/>
3748bf215546Sopenharmony_ci		<value name="A6XX_TEX_CUBIC" value="3"/> <!-- a650 only -->
3749bf215546Sopenharmony_ci	</enum>
3750bf215546Sopenharmony_ci	<enum name="a6xx_tex_clamp"> <!-- same as a4xx? -->
3751bf215546Sopenharmony_ci		<value name="A6XX_TEX_REPEAT" value="0"/>
3752bf215546Sopenharmony_ci		<value name="A6XX_TEX_CLAMP_TO_EDGE" value="1"/>
3753bf215546Sopenharmony_ci		<value name="A6XX_TEX_MIRROR_REPEAT" value="2"/>
3754bf215546Sopenharmony_ci		<value name="A6XX_TEX_CLAMP_TO_BORDER" value="3"/>
3755bf215546Sopenharmony_ci		<value name="A6XX_TEX_MIRROR_CLAMP" value="4"/>
3756bf215546Sopenharmony_ci	</enum>
3757bf215546Sopenharmony_ci	<enum name="a6xx_tex_aniso"> <!-- same as a4xx? -->
3758bf215546Sopenharmony_ci		<value name="A6XX_TEX_ANISO_1" value="0"/>
3759bf215546Sopenharmony_ci		<value name="A6XX_TEX_ANISO_2" value="1"/>
3760bf215546Sopenharmony_ci		<value name="A6XX_TEX_ANISO_4" value="2"/>
3761bf215546Sopenharmony_ci		<value name="A6XX_TEX_ANISO_8" value="3"/>
3762bf215546Sopenharmony_ci		<value name="A6XX_TEX_ANISO_16" value="4"/>
3763bf215546Sopenharmony_ci	</enum>
3764bf215546Sopenharmony_ci	<enum name="a6xx_reduction_mode">
3765bf215546Sopenharmony_ci		<value name="A6XX_REDUCTION_MODE_AVERAGE" value="0"/>
3766bf215546Sopenharmony_ci		<value name="A6XX_REDUCTION_MODE_MIN" value="1"/>
3767bf215546Sopenharmony_ci		<value name="A6XX_REDUCTION_MODE_MAX" value="2"/>
3768bf215546Sopenharmony_ci	</enum>
3769bf215546Sopenharmony_ci
3770bf215546Sopenharmony_ci	<reg32 offset="0" name="0">
3771bf215546Sopenharmony_ci		<bitfield name="MIPFILTER_LINEAR_NEAR" pos="0" type="boolean"/>
3772bf215546Sopenharmony_ci		<bitfield name="XY_MAG" low="1" high="2" type="a6xx_tex_filter"/>
3773bf215546Sopenharmony_ci		<bitfield name="XY_MIN" low="3" high="4" type="a6xx_tex_filter"/>
3774bf215546Sopenharmony_ci		<bitfield name="WRAP_S" low="5" high="7" type="a6xx_tex_clamp"/>
3775bf215546Sopenharmony_ci		<bitfield name="WRAP_T" low="8" high="10" type="a6xx_tex_clamp"/>
3776bf215546Sopenharmony_ci		<bitfield name="WRAP_R" low="11" high="13" type="a6xx_tex_clamp"/>
3777bf215546Sopenharmony_ci		<bitfield name="ANISO" low="14" high="16" type="a6xx_tex_aniso"/>
3778bf215546Sopenharmony_ci		<bitfield name="LOD_BIAS" low="19" high="31" type="fixed" radix="8"/><!-- no idea how many bits for real -->
3779bf215546Sopenharmony_ci	</reg32>
3780bf215546Sopenharmony_ci	<reg32 offset="1" name="1">
3781bf215546Sopenharmony_ci		<bitfield name="CLAMPENABLE" pos="0" type="boolean">
3782bf215546Sopenharmony_ci			<doc>
3783bf215546Sopenharmony_ci				clamp result to [0, 1] if the format is unorm or
3784bf215546Sopenharmony_ci				[-1, 1] if the format is snorm, *after*
3785bf215546Sopenharmony_ci				filtering. Has no effect for other formats.
3786bf215546Sopenharmony_ci			</doc>
3787bf215546Sopenharmony_ci		</bitfield>
3788bf215546Sopenharmony_ci		<bitfield name="COMPARE_FUNC" low="1" high="3" type="adreno_compare_func"/>
3789bf215546Sopenharmony_ci		<bitfield name="CUBEMAPSEAMLESSFILTOFF" pos="4" type="boolean"/>
3790bf215546Sopenharmony_ci		<bitfield name="UNNORM_COORDS" pos="5" type="boolean"/>
3791bf215546Sopenharmony_ci		<bitfield name="MIPFILTER_LINEAR_FAR" pos="6" type="boolean"/>
3792bf215546Sopenharmony_ci		<bitfield name="MAX_LOD" low="8" high="19" type="ufixed" radix="8"/>
3793bf215546Sopenharmony_ci		<bitfield name="MIN_LOD" low="20" high="31" type="ufixed" radix="8"/>
3794bf215546Sopenharmony_ci	</reg32>
3795bf215546Sopenharmony_ci	<reg32 offset="2" name="2">
3796bf215546Sopenharmony_ci		<bitfield name="REDUCTION_MODE" low="0" high="1" type="a6xx_reduction_mode"/>
3797bf215546Sopenharmony_ci		<bitfield name="CHROMA_LINEAR" pos="5" type="boolean"/>
3798bf215546Sopenharmony_ci		<bitfield name="BCOLOR" low="7" high="31"/>
3799bf215546Sopenharmony_ci	</reg32>
3800bf215546Sopenharmony_ci	<reg32 offset="3" name="3"/>
3801bf215546Sopenharmony_ci</domain>
3802bf215546Sopenharmony_ci
3803bf215546Sopenharmony_ci<domain name="A6XX_TEX_CONST" width="32">
3804bf215546Sopenharmony_ci	<doc>Texture constant dwords</doc>
3805bf215546Sopenharmony_ci	<enum name="a6xx_tex_swiz"> <!-- same as a4xx? -->
3806bf215546Sopenharmony_ci		<value name="A6XX_TEX_X" value="0"/>
3807bf215546Sopenharmony_ci		<value name="A6XX_TEX_Y" value="1"/>
3808bf215546Sopenharmony_ci		<value name="A6XX_TEX_Z" value="2"/>
3809bf215546Sopenharmony_ci		<value name="A6XX_TEX_W" value="3"/>
3810bf215546Sopenharmony_ci		<value name="A6XX_TEX_ZERO" value="4"/>
3811bf215546Sopenharmony_ci		<value name="A6XX_TEX_ONE" value="5"/>
3812bf215546Sopenharmony_ci	</enum>
3813bf215546Sopenharmony_ci	<enum name="a6xx_tex_type"> <!-- same as a4xx? -->
3814bf215546Sopenharmony_ci		<value name="A6XX_TEX_1D" value="0"/>
3815bf215546Sopenharmony_ci		<value name="A6XX_TEX_2D" value="1"/>
3816bf215546Sopenharmony_ci		<value name="A6XX_TEX_CUBE" value="2"/>
3817bf215546Sopenharmony_ci		<value name="A6XX_TEX_3D" value="3"/>
3818bf215546Sopenharmony_ci		<value name="A6XX_TEX_BUFFER" value="4"/>
3819bf215546Sopenharmony_ci	</enum>
3820bf215546Sopenharmony_ci	<reg32 offset="0" name="0">
3821bf215546Sopenharmony_ci		<bitfield name="TILE_MODE" low="0" high="1" type="a6xx_tile_mode"/>
3822bf215546Sopenharmony_ci		<bitfield name="SRGB" pos="2" type="boolean"/>
3823bf215546Sopenharmony_ci		<bitfield name="SWIZ_X" low="4" high="6" type="a6xx_tex_swiz"/>
3824bf215546Sopenharmony_ci		<bitfield name="SWIZ_Y" low="7" high="9" type="a6xx_tex_swiz"/>
3825bf215546Sopenharmony_ci		<bitfield name="SWIZ_Z" low="10" high="12" type="a6xx_tex_swiz"/>
3826bf215546Sopenharmony_ci		<bitfield name="SWIZ_W" low="13" high="15" type="a6xx_tex_swiz"/>
3827bf215546Sopenharmony_ci		<bitfield name="MIPLVLS" low="16" high="19" type="uint"/>
3828bf215546Sopenharmony_ci		<!-- overlaps with MIPLVLS -->
3829bf215546Sopenharmony_ci		<bitfield name="CHROMA_MIDPOINT_X" pos="16" type="boolean"/>
3830bf215546Sopenharmony_ci		<bitfield name="CHROMA_MIDPOINT_Y" pos="18" type="boolean"/>
3831bf215546Sopenharmony_ci		<bitfield name="SAMPLES" low="20" high="21" type="a3xx_msaa_samples"/>
3832bf215546Sopenharmony_ci		<bitfield name="FMT" low="22" high="29" type="a6xx_format"/>
3833bf215546Sopenharmony_ci		<!--
3834bf215546Sopenharmony_ci			Why is the swap needed in addition to SWIZ_*? The swap
3835bf215546Sopenharmony_ci			is performed before border color replacement, while the
3836bf215546Sopenharmony_ci			swizzle is applied after after it.
3837bf215546Sopenharmony_ci		-->
3838bf215546Sopenharmony_ci		<bitfield name="SWAP" low="30" high="31" type="a3xx_color_swap"/>
3839bf215546Sopenharmony_ci	</reg32>
3840bf215546Sopenharmony_ci	<reg32 offset="1" name="1">
3841bf215546Sopenharmony_ci		<bitfield name="WIDTH" low="0" high="14" type="uint"/>
3842bf215546Sopenharmony_ci		<bitfield name="HEIGHT" low="15" high="29" type="uint"/>
3843bf215546Sopenharmony_ci	</reg32>
3844bf215546Sopenharmony_ci	<reg32 offset="2" name="2">
3845bf215546Sopenharmony_ci		<!--
3846bf215546Sopenharmony_ci		b4 and b31 set for buffer/ssbo case, in which case low 15 bits
3847bf215546Sopenharmony_ci		of size encoded in WIDTH, and high 15 bits encoded in HEIGHT
3848bf215546Sopenharmony_ci
3849bf215546Sopenharmony_ci		b31 is probably the 'BUFFER' bit.. it is the one that changes
3850bf215546Sopenharmony_ci		behavior of texture in dEQP-GLES31.functional.texture.texture_buffer.render.as_fragment_texture.buffer_size_131071
3851bf215546Sopenharmony_ci		 -->
3852bf215546Sopenharmony_ci		<bitfield name="BUFFER" pos="4" type="boolean"/>
3853bf215546Sopenharmony_ci                <!-- minimum pitch (for mipmap levels): log2(pitchalign / 64) -->
3854bf215546Sopenharmony_ci		<bitfield name="PITCHALIGN" low="0" high="3" type="uint"/>
3855bf215546Sopenharmony_ci		<doc>Pitch in bytes (so actually stride)</doc>
3856bf215546Sopenharmony_ci		<bitfield name="PITCH" low="7" high="28" type="uint"/>
3857bf215546Sopenharmony_ci		<bitfield name="TYPE" low="29" high="31" type="a6xx_tex_type"/>
3858bf215546Sopenharmony_ci	</reg32>
3859bf215546Sopenharmony_ci	<reg32 offset="3" name="3">
3860bf215546Sopenharmony_ci		<!--
3861bf215546Sopenharmony_ci		ARRAY_PITCH is basically LAYERSZ for the first mipmap level, and
3862bf215546Sopenharmony_ci		for 3d textures (laid out mipmap level first) MIN_LAYERSZ is the
3863bf215546Sopenharmony_ci		layer size at the point that it stops being reduced moving to
3864bf215546Sopenharmony_ci		higher (smaller) mipmap levels
3865bf215546Sopenharmony_ci		 -->
3866bf215546Sopenharmony_ci		<bitfield name="ARRAY_PITCH" low="0" high="13" shr="12" type="uint"/>
3867bf215546Sopenharmony_ci		<bitfield name="MIN_LAYERSZ" low="23" high="26" shr="12"/>
3868bf215546Sopenharmony_ci		<!--
3869bf215546Sopenharmony_ci		by default levels with w < 16 are linear
3870bf215546Sopenharmony_ci		TILE_ALL makes all levels have tiling
3871bf215546Sopenharmony_ci		seems required when using UBWC, since all levels have UBWC (can possibly be disabled?)
3872bf215546Sopenharmony_ci		 -->
3873bf215546Sopenharmony_ci		<bitfield name="TILE_ALL" pos="27" type="boolean"/>
3874bf215546Sopenharmony_ci		<bitfield name="FLAG" pos="28" type="boolean"/>
3875bf215546Sopenharmony_ci	</reg32>
3876bf215546Sopenharmony_ci	<!-- for 2-3 plane format, BASE is flag buffer address (if enabled)
3877bf215546Sopenharmony_ci	     the address of the non-flag base buffer is determined automatically,
3878bf215546Sopenharmony_ci	     and must follow the flag buffer
3879bf215546Sopenharmony_ci	 -->
3880bf215546Sopenharmony_ci	<reg32 offset="4" name="4">
3881bf215546Sopenharmony_ci		<bitfield name="BASE_LO" low="5" high="31" shr="5"/>
3882bf215546Sopenharmony_ci	</reg32>
3883bf215546Sopenharmony_ci	<reg32 offset="5" name="5">
3884bf215546Sopenharmony_ci		<bitfield name="BASE_HI" low="0" high="16"/>
3885bf215546Sopenharmony_ci		<bitfield name="DEPTH" low="17" high="29" type="uint"/>
3886bf215546Sopenharmony_ci	</reg32>
3887bf215546Sopenharmony_ci	<reg32 offset="6" name="6">
3888bf215546Sopenharmony_ci		<!-- overlaps with PLANE_PITCH -->
3889bf215546Sopenharmony_ci		<bitfield name="MIN_LOD_CLAMP" low="0" high="11" type="ufixed" radix="8"/>
3890bf215546Sopenharmony_ci		<!-- pitch for plane 2 / plane 3 -->
3891bf215546Sopenharmony_ci		<bitfield name="PLANE_PITCH" low="8" high="31" type="uint"/>
3892bf215546Sopenharmony_ci	</reg32>
3893bf215546Sopenharmony_ci	<!-- 7/8 is plane 2 address for planar formats -->
3894bf215546Sopenharmony_ci	<reg32 offset="7" name="7">
3895bf215546Sopenharmony_ci		<bitfield name="FLAG_LO" low="5" high="31" shr="5"/>
3896bf215546Sopenharmony_ci	</reg32>
3897bf215546Sopenharmony_ci	<reg32 offset="8" name="8">
3898bf215546Sopenharmony_ci		<bitfield name="FLAG_HI" low="0" high="16"/>
3899bf215546Sopenharmony_ci	</reg32>
3900bf215546Sopenharmony_ci	<!-- 9/10 is plane 3 address for planar formats -->
3901bf215546Sopenharmony_ci	<reg32 offset="9" name="9">
3902bf215546Sopenharmony_ci		<bitfield name="FLAG_BUFFER_ARRAY_PITCH" low="0" high="16" shr="4" type="uint"/>
3903bf215546Sopenharmony_ci	</reg32>
3904bf215546Sopenharmony_ci	<reg32 offset="10" name="10">
3905bf215546Sopenharmony_ci		<bitfield name="FLAG_BUFFER_PITCH" low="0" high="6" shr="6" type="uint"/>
3906bf215546Sopenharmony_ci		<!-- log2 size of the first level, required for mipmapping -->
3907bf215546Sopenharmony_ci		<bitfield name="FLAG_BUFFER_LOGW" low="8" high="11" type="uint"/>
3908bf215546Sopenharmony_ci		<bitfield name="FLAG_BUFFER_LOGH" low="12" high="15" type="uint"/>
3909bf215546Sopenharmony_ci	</reg32>
3910bf215546Sopenharmony_ci	<reg32 offset="11" name="11"/>
3911bf215546Sopenharmony_ci	<reg32 offset="12" name="12"/>
3912bf215546Sopenharmony_ci	<reg32 offset="13" name="13"/>
3913bf215546Sopenharmony_ci	<reg32 offset="14" name="14"/>
3914bf215546Sopenharmony_ci	<reg32 offset="15" name="15"/>
3915bf215546Sopenharmony_ci</domain>
3916bf215546Sopenharmony_ci
3917bf215546Sopenharmony_ci<domain name="A6XX_UBO" width="32">
3918bf215546Sopenharmony_ci	<reg32 offset="0" name="0">
3919bf215546Sopenharmony_ci		<bitfield name="BASE_LO" low="0" high="31"/>
3920bf215546Sopenharmony_ci	</reg32>
3921bf215546Sopenharmony_ci	<reg32 offset="1" name="1">
3922bf215546Sopenharmony_ci		<bitfield name="BASE_HI" low="0" high="16"/>
3923bf215546Sopenharmony_ci		<bitfield name="SIZE" low="17" high="31"/> <!-- size in vec4 (4xDWORD) units -->
3924bf215546Sopenharmony_ci	</reg32>
3925bf215546Sopenharmony_ci</domain>
3926bf215546Sopenharmony_ci
3927bf215546Sopenharmony_ci<domain name="A6XX_PDC" width="32">
3928bf215546Sopenharmony_ci	<reg32 offset="0x1140" name="GPU_ENABLE_PDC"/>
3929bf215546Sopenharmony_ci	<reg32 offset="0x1148" name="GPU_SEQ_START_ADDR"/>
3930bf215546Sopenharmony_ci	<reg32 offset="0x1540" name="GPU_TCS0_CONTROL"/>
3931bf215546Sopenharmony_ci	<reg32 offset="0x1541" name="GPU_TCS0_CMD_ENABLE_BANK"/>
3932bf215546Sopenharmony_ci	<reg32 offset="0x1542" name="GPU_TCS0_CMD_WAIT_FOR_CMPL_BANK"/>
3933bf215546Sopenharmony_ci	<reg32 offset="0x1543" name="GPU_TCS0_CMD0_MSGID"/>
3934bf215546Sopenharmony_ci	<reg32 offset="0x1544" name="GPU_TCS0_CMD0_ADDR"/>
3935bf215546Sopenharmony_ci	<reg32 offset="0x1545" name="GPU_TCS0_CMD0_DATA"/>
3936bf215546Sopenharmony_ci	<reg32 offset="0x1572" name="GPU_TCS1_CONTROL"/>
3937bf215546Sopenharmony_ci	<reg32 offset="0x1573" name="GPU_TCS1_CMD_ENABLE_BANK"/>
3938bf215546Sopenharmony_ci	<reg32 offset="0x1574" name="GPU_TCS1_CMD_WAIT_FOR_CMPL_BANK"/>
3939bf215546Sopenharmony_ci	<reg32 offset="0x1575" name="GPU_TCS1_CMD0_MSGID"/>
3940bf215546Sopenharmony_ci	<reg32 offset="0x1576" name="GPU_TCS1_CMD0_ADDR"/>
3941bf215546Sopenharmony_ci	<reg32 offset="0x1577" name="GPU_TCS1_CMD0_DATA"/>
3942bf215546Sopenharmony_ci	<reg32 offset="0x15A4" name="GPU_TCS2_CONTROL"/>
3943bf215546Sopenharmony_ci	<reg32 offset="0x15A5" name="GPU_TCS2_CMD_ENABLE_BANK"/>
3944bf215546Sopenharmony_ci	<reg32 offset="0x15A6" name="GPU_TCS2_CMD_WAIT_FOR_CMPL_BANK"/>
3945bf215546Sopenharmony_ci	<reg32 offset="0x15A7" name="GPU_TCS2_CMD0_MSGID"/>
3946bf215546Sopenharmony_ci	<reg32 offset="0x15A8" name="GPU_TCS2_CMD0_ADDR"/>
3947bf215546Sopenharmony_ci	<reg32 offset="0x15A9" name="GPU_TCS2_CMD0_DATA"/>
3948bf215546Sopenharmony_ci	<reg32 offset="0x15D6" name="GPU_TCS3_CONTROL"/>
3949bf215546Sopenharmony_ci	<reg32 offset="0x15D7" name="GPU_TCS3_CMD_ENABLE_BANK"/>
3950bf215546Sopenharmony_ci	<reg32 offset="0x15D8" name="GPU_TCS3_CMD_WAIT_FOR_CMPL_BANK"/>
3951bf215546Sopenharmony_ci	<reg32 offset="0x15D9" name="GPU_TCS3_CMD0_MSGID"/>
3952bf215546Sopenharmony_ci	<reg32 offset="0x15DA" name="GPU_TCS3_CMD0_ADDR"/>
3953bf215546Sopenharmony_ci	<reg32 offset="0x15DB" name="GPU_TCS3_CMD0_DATA"/>
3954bf215546Sopenharmony_ci</domain>
3955bf215546Sopenharmony_ci
3956bf215546Sopenharmony_ci<domain name="A6XX_PDC_GPU_SEQ" width="32">
3957bf215546Sopenharmony_ci	<reg32 offset="0x0" name="MEM_0"/>
3958bf215546Sopenharmony_ci</domain>
3959bf215546Sopenharmony_ci
3960bf215546Sopenharmony_ci<domain name="A6XX_CX_DBGC" width="32">
3961bf215546Sopenharmony_ci	<reg32 offset="0x0000" name="CFG_DBGBUS_SEL_A">
3962bf215546Sopenharmony_ci		<bitfield high="7" low="0" name="PING_INDEX"/>
3963bf215546Sopenharmony_ci		<bitfield high="15" low="8" name="PING_BLK_SEL"/>
3964bf215546Sopenharmony_ci	</reg32>
3965bf215546Sopenharmony_ci	<reg32 offset="0x0001" name="CFG_DBGBUS_SEL_B"/>
3966bf215546Sopenharmony_ci	<reg32 offset="0x0002" name="CFG_DBGBUS_SEL_C"/>
3967bf215546Sopenharmony_ci	<reg32 offset="0x0003" name="CFG_DBGBUS_SEL_D"/>
3968bf215546Sopenharmony_ci	<reg32 offset="0x0004" name="CFG_DBGBUS_CNTLT">
3969bf215546Sopenharmony_ci		<bitfield high="5" low="0" name="TRACEEN"/>
3970bf215546Sopenharmony_ci		<bitfield high="14" low="12" name="GRANU"/>
3971bf215546Sopenharmony_ci		<bitfield high="31" low="28" name="SEGT"/>
3972bf215546Sopenharmony_ci	</reg32>
3973bf215546Sopenharmony_ci	<reg32 offset="0x0005" name="CFG_DBGBUS_CNTLM">
3974bf215546Sopenharmony_ci		<bitfield high="27" low="24" name="ENABLE"/>
3975bf215546Sopenharmony_ci	</reg32>
3976bf215546Sopenharmony_ci	<reg32 offset="0x0008" name="CFG_DBGBUS_IVTL_0"/>
3977bf215546Sopenharmony_ci	<reg32 offset="0x0009" name="CFG_DBGBUS_IVTL_1"/>
3978bf215546Sopenharmony_ci	<reg32 offset="0x000a" name="CFG_DBGBUS_IVTL_2"/>
3979bf215546Sopenharmony_ci	<reg32 offset="0x000b" name="CFG_DBGBUS_IVTL_3"/>
3980bf215546Sopenharmony_ci	<reg32 offset="0x000c" name="CFG_DBGBUS_MASKL_0"/>
3981bf215546Sopenharmony_ci	<reg32 offset="0x000d" name="CFG_DBGBUS_MASKL_1"/>
3982bf215546Sopenharmony_ci	<reg32 offset="0x000e" name="CFG_DBGBUS_MASKL_2"/>
3983bf215546Sopenharmony_ci	<reg32 offset="0x000f" name="CFG_DBGBUS_MASKL_3"/>
3984bf215546Sopenharmony_ci	<reg32 offset="0x0010" name="CFG_DBGBUS_BYTEL_0">
3985bf215546Sopenharmony_ci		<bitfield high="3" low="0" name="BYTEL0"/>
3986bf215546Sopenharmony_ci		<bitfield high="7" low="4" name="BYTEL1"/>
3987bf215546Sopenharmony_ci		<bitfield high="11" low="8" name="BYTEL2"/>
3988bf215546Sopenharmony_ci		<bitfield high="15" low="12" name="BYTEL3"/>
3989bf215546Sopenharmony_ci		<bitfield high="19" low="16" name="BYTEL4"/>
3990bf215546Sopenharmony_ci		<bitfield high="23" low="20" name="BYTEL5"/>
3991bf215546Sopenharmony_ci		<bitfield high="27" low="24" name="BYTEL6"/>
3992bf215546Sopenharmony_ci		<bitfield high="31" low="28" name="BYTEL7"/>
3993bf215546Sopenharmony_ci	</reg32>
3994bf215546Sopenharmony_ci	<reg32 offset="0x0011" name="CFG_DBGBUS_BYTEL_1">
3995bf215546Sopenharmony_ci		<bitfield high="3" low="0" name="BYTEL8"/>
3996bf215546Sopenharmony_ci		<bitfield high="7" low="4" name="BYTEL9"/>
3997bf215546Sopenharmony_ci		<bitfield high="11" low="8" name="BYTEL10"/>
3998bf215546Sopenharmony_ci		<bitfield high="15" low="12" name="BYTEL11"/>
3999bf215546Sopenharmony_ci		<bitfield high="19" low="16" name="BYTEL12"/>
4000bf215546Sopenharmony_ci		<bitfield high="23" low="20" name="BYTEL13"/>
4001bf215546Sopenharmony_ci		<bitfield high="27" low="24" name="BYTEL14"/>
4002bf215546Sopenharmony_ci		<bitfield high="31" low="28" name="BYTEL15"/>
4003bf215546Sopenharmony_ci	</reg32>
4004bf215546Sopenharmony_ci
4005bf215546Sopenharmony_ci	<reg32 offset="0x002f" name="CFG_DBGBUS_TRACE_BUF1"/>
4006bf215546Sopenharmony_ci	<reg32 offset="0x0030" name="CFG_DBGBUS_TRACE_BUF2"/>
4007bf215546Sopenharmony_ci</domain>
4008bf215546Sopenharmony_ci
4009bf215546Sopenharmony_ci<domain name="A6XX_CX_MISC" width="32">
4010bf215546Sopenharmony_ci	<reg32 offset="0x0001" name="SYSTEM_CACHE_CNTL_0"/>
4011bf215546Sopenharmony_ci	<reg32 offset="0x0002" name="SYSTEM_CACHE_CNTL_1"/>
4012bf215546Sopenharmony_ci</domain>
4013bf215546Sopenharmony_ci
4014bf215546Sopenharmony_ci</database>
4015