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<enum name="a3xx_tile_mode">
10bf215546Sopenharmony_ci	<value name="LINEAR" value="0"/>
11bf215546Sopenharmony_ci	<value name="TILE_4X4" value="1"/>    <!-- "normal" case for textures -->
12bf215546Sopenharmony_ci	<value name="TILE_32X32" value="2"/>  <!-- only used in GMEM -->
13bf215546Sopenharmony_ci	<value name="TILE_4X2" value="3"/>    <!-- only used for CrCb -->
14bf215546Sopenharmony_ci</enum>
15bf215546Sopenharmony_ci
16bf215546Sopenharmony_ci<enum name="a3xx_state_block_id">
17bf215546Sopenharmony_ci	<value name="HLSQ_BLOCK_ID_TP_TEX" value="2"/>
18bf215546Sopenharmony_ci	<value name="HLSQ_BLOCK_ID_TP_MIPMAP" value="3"/>
19bf215546Sopenharmony_ci	<value name="HLSQ_BLOCK_ID_SP_VS" value="4"/>
20bf215546Sopenharmony_ci	<value name="HLSQ_BLOCK_ID_SP_FS" value="6"/>
21bf215546Sopenharmony_ci</enum>
22bf215546Sopenharmony_ci
23bf215546Sopenharmony_ci<enum name="a3xx_cache_opcode">
24bf215546Sopenharmony_ci	<value name="INVALIDATE" value="1"/>
25bf215546Sopenharmony_ci</enum>
26bf215546Sopenharmony_ci
27bf215546Sopenharmony_ci<enum name="a3xx_vtx_fmt">
28bf215546Sopenharmony_ci	<value name="VFMT_32_FLOAT" value="0x0"/>
29bf215546Sopenharmony_ci	<value name="VFMT_32_32_FLOAT" value="0x1"/>
30bf215546Sopenharmony_ci	<value name="VFMT_32_32_32_FLOAT" value="0x2"/>
31bf215546Sopenharmony_ci	<value name="VFMT_32_32_32_32_FLOAT" value="0x3"/>
32bf215546Sopenharmony_ci
33bf215546Sopenharmony_ci	<value name="VFMT_16_FLOAT" value="0x4"/>
34bf215546Sopenharmony_ci	<value name="VFMT_16_16_FLOAT" value="0x5"/>
35bf215546Sopenharmony_ci	<value name="VFMT_16_16_16_FLOAT" value="0x6"/>
36bf215546Sopenharmony_ci	<value name="VFMT_16_16_16_16_FLOAT" value="0x7"/>
37bf215546Sopenharmony_ci
38bf215546Sopenharmony_ci	<value name="VFMT_32_FIXED" value="0x8"/>
39bf215546Sopenharmony_ci	<value name="VFMT_32_32_FIXED" value="0x9"/>
40bf215546Sopenharmony_ci	<value name="VFMT_32_32_32_FIXED" value="0xa"/>
41bf215546Sopenharmony_ci	<value name="VFMT_32_32_32_32_FIXED" value="0xb"/>
42bf215546Sopenharmony_ci
43bf215546Sopenharmony_ci	<value name="VFMT_16_SINT" value="0x10"/>
44bf215546Sopenharmony_ci	<value name="VFMT_16_16_SINT" value="0x11"/>
45bf215546Sopenharmony_ci	<value name="VFMT_16_16_16_SINT" value="0x12"/>
46bf215546Sopenharmony_ci	<value name="VFMT_16_16_16_16_SINT" value="0x13"/>
47bf215546Sopenharmony_ci	<value name="VFMT_16_UINT" value="0x14"/>
48bf215546Sopenharmony_ci	<value name="VFMT_16_16_UINT" value="0x15"/>
49bf215546Sopenharmony_ci	<value name="VFMT_16_16_16_UINT" value="0x16"/>
50bf215546Sopenharmony_ci	<value name="VFMT_16_16_16_16_UINT" value="0x17"/>
51bf215546Sopenharmony_ci	<value name="VFMT_16_SNORM" value="0x18"/>
52bf215546Sopenharmony_ci	<value name="VFMT_16_16_SNORM" value="0x19"/>
53bf215546Sopenharmony_ci	<value name="VFMT_16_16_16_SNORM" value="0x1a"/>
54bf215546Sopenharmony_ci	<value name="VFMT_16_16_16_16_SNORM" value="0x1b"/>
55bf215546Sopenharmony_ci	<value name="VFMT_16_UNORM" value="0x1c"/>
56bf215546Sopenharmony_ci	<value name="VFMT_16_16_UNORM" value="0x1d"/>
57bf215546Sopenharmony_ci	<value name="VFMT_16_16_16_UNORM" value="0x1e"/>
58bf215546Sopenharmony_ci	<value name="VFMT_16_16_16_16_UNORM" value="0x1f"/>
59bf215546Sopenharmony_ci
60bf215546Sopenharmony_ci	<!-- seems to be no NORM variants for 32bit.. -->
61bf215546Sopenharmony_ci	<value name="VFMT_32_UINT" value="0x20"/>
62bf215546Sopenharmony_ci	<value name="VFMT_32_32_UINT" value="0x21"/>
63bf215546Sopenharmony_ci	<value name="VFMT_32_32_32_UINT" value="0x22"/>
64bf215546Sopenharmony_ci	<value name="VFMT_32_32_32_32_UINT" value="0x23"/>
65bf215546Sopenharmony_ci	<value name="VFMT_32_SINT" value="0x24"/>
66bf215546Sopenharmony_ci	<value name="VFMT_32_32_SINT" value="0x25"/>
67bf215546Sopenharmony_ci	<value name="VFMT_32_32_32_SINT" value="0x26"/>
68bf215546Sopenharmony_ci	<value name="VFMT_32_32_32_32_SINT" value="0x27"/>
69bf215546Sopenharmony_ci
70bf215546Sopenharmony_ci	<value name="VFMT_8_UINT" value="0x28"/>
71bf215546Sopenharmony_ci	<value name="VFMT_8_8_UINT" value="0x29"/>
72bf215546Sopenharmony_ci	<value name="VFMT_8_8_8_UINT" value="0x2a"/>
73bf215546Sopenharmony_ci	<value name="VFMT_8_8_8_8_UINT" value="0x2b"/>
74bf215546Sopenharmony_ci	<value name="VFMT_8_UNORM" value="0x2c"/>
75bf215546Sopenharmony_ci	<value name="VFMT_8_8_UNORM" value="0x2d"/>
76bf215546Sopenharmony_ci	<value name="VFMT_8_8_8_UNORM" value="0x2e"/>
77bf215546Sopenharmony_ci	<value name="VFMT_8_8_8_8_UNORM" value="0x2f"/>
78bf215546Sopenharmony_ci	<value name="VFMT_8_SINT" value="0x30"/>
79bf215546Sopenharmony_ci	<value name="VFMT_8_8_SINT" value="0x31"/>
80bf215546Sopenharmony_ci	<value name="VFMT_8_8_8_SINT" value="0x32"/>
81bf215546Sopenharmony_ci	<value name="VFMT_8_8_8_8_SINT" value="0x33"/>
82bf215546Sopenharmony_ci	<value name="VFMT_8_SNORM" value="0x34"/>
83bf215546Sopenharmony_ci	<value name="VFMT_8_8_SNORM" value="0x35"/>
84bf215546Sopenharmony_ci	<value name="VFMT_8_8_8_SNORM" value="0x36"/>
85bf215546Sopenharmony_ci	<value name="VFMT_8_8_8_8_SNORM" value="0x37"/>
86bf215546Sopenharmony_ci	<value name="VFMT_10_10_10_2_UINT" value="0x38"/>
87bf215546Sopenharmony_ci	<value name="VFMT_10_10_10_2_UNORM" value="0x39"/>
88bf215546Sopenharmony_ci	<value name="VFMT_10_10_10_2_SINT" value="0x3a"/>
89bf215546Sopenharmony_ci	<value name="VFMT_10_10_10_2_SNORM" value="0x3b"/>
90bf215546Sopenharmony_ci	<value name="VFMT_2_10_10_10_UINT" value="0x3c"/>
91bf215546Sopenharmony_ci	<value name="VFMT_2_10_10_10_UNORM" value="0x3d"/>
92bf215546Sopenharmony_ci	<value name="VFMT_2_10_10_10_SINT" value="0x3e"/>
93bf215546Sopenharmony_ci	<value name="VFMT_2_10_10_10_SNORM" value="0x3f"/>
94bf215546Sopenharmony_ci
95bf215546Sopenharmony_ci	<value name="VFMT_NONE" value="0xff"/>
96bf215546Sopenharmony_ci</enum>
97bf215546Sopenharmony_ci
98bf215546Sopenharmony_ci<enum name="a3xx_tex_fmt">
99bf215546Sopenharmony_ci	<value name="TFMT_5_6_5_UNORM" value="0x4"/>
100bf215546Sopenharmony_ci	<value name="TFMT_5_5_5_1_UNORM" value="0x5"/>
101bf215546Sopenharmony_ci	<value name="TFMT_4_4_4_4_UNORM" value="0x7"/>
102bf215546Sopenharmony_ci	<value name="TFMT_Z16_UNORM" value="0x9"/>
103bf215546Sopenharmony_ci	<value name="TFMT_X8Z24_UNORM" value="0xa"/>
104bf215546Sopenharmony_ci	<value name="TFMT_Z32_FLOAT" value="0xb"/>
105bf215546Sopenharmony_ci
106bf215546Sopenharmony_ci	<!--
107bf215546Sopenharmony_ci		The NV12 tiled/linear formats seem to require gang'd sampler
108bf215546Sopenharmony_ci		slots (ie. sampler state N plus N+1) for Y and UV planes.
109bf215546Sopenharmony_ci		They fetch yuv in single sam instruction, but still require
110bf215546Sopenharmony_ci		colorspace conversion in the shader.
111bf215546Sopenharmony_ci	 -->
112bf215546Sopenharmony_ci	<value name="TFMT_UV_64X32" value="0x10"/>
113bf215546Sopenharmony_ci	<value name="TFMT_VU_64X32" value="0x11"/>
114bf215546Sopenharmony_ci	<value name="TFMT_Y_64X32" value="0x12"/>
115bf215546Sopenharmony_ci	<value name="TFMT_NV12_64X32" value="0x13"/>
116bf215546Sopenharmony_ci	<value name="TFMT_UV_LINEAR" value="0x14"/>
117bf215546Sopenharmony_ci	<value name="TFMT_VU_LINEAR" value="0x15"/>
118bf215546Sopenharmony_ci	<value name="TFMT_Y_LINEAR" value="0x16"/>
119bf215546Sopenharmony_ci	<value name="TFMT_NV12_LINEAR" value="0x17"/>
120bf215546Sopenharmony_ci	<value name="TFMT_I420_Y" value="0x18"/>
121bf215546Sopenharmony_ci	<value name="TFMT_I420_U" value="0x1a"/>
122bf215546Sopenharmony_ci	<value name="TFMT_I420_V" value="0x1b"/>
123bf215546Sopenharmony_ci
124bf215546Sopenharmony_ci	<value name="TFMT_ATC_RGB" value="0x20"/>
125bf215546Sopenharmony_ci	<value name="TFMT_ATC_RGBA_EXPLICIT" value="0x21"/>
126bf215546Sopenharmony_ci	<value name="TFMT_ETC1" value="0x22"/>
127bf215546Sopenharmony_ci	<value name="TFMT_ATC_RGBA_INTERPOLATED" value="0x23"/>
128bf215546Sopenharmony_ci
129bf215546Sopenharmony_ci	<value name="TFMT_DXT1" value="0x24"/>
130bf215546Sopenharmony_ci	<value name="TFMT_DXT3" value="0x25"/>
131bf215546Sopenharmony_ci	<value name="TFMT_DXT5" value="0x26"/>
132bf215546Sopenharmony_ci
133bf215546Sopenharmony_ci	<value name="TFMT_2_10_10_10_UNORM" value="0x28"/>
134bf215546Sopenharmony_ci	<value name="TFMT_10_10_10_2_UNORM" value="0x29"/>
135bf215546Sopenharmony_ci	<value name="TFMT_9_9_9_E5_FLOAT" value="0x2a"/>
136bf215546Sopenharmony_ci	<value name="TFMT_11_11_10_FLOAT" value="0x2b"/>
137bf215546Sopenharmony_ci	<value name="TFMT_A8_UNORM" value="0x2c"/>    <!-- GL_ALPHA -->
138bf215546Sopenharmony_ci	<value name="TFMT_L8_UNORM" value="0x2d"/>
139bf215546Sopenharmony_ci	<value name="TFMT_L8_A8_UNORM" value="0x2f"/> <!-- GL_LUMINANCE_ALPHA -->
140bf215546Sopenharmony_ci
141bf215546Sopenharmony_ci	<!--
142bf215546Sopenharmony_ci		NOTE: GL_ALPHA and GL_LUMINANCE_ALPHA aren't handled in a similar way
143bf215546Sopenharmony_ci		to float16, float32.. but they seem to use non-standard swizzle too..
144bf215546Sopenharmony_ci		perhaps we can ditch that if the pattern follows of 0xn0, 0xn1, 0xn2,
145bf215546Sopenharmony_ci		0xn3 for 1, 2, 3, 4 components respectively..
146bf215546Sopenharmony_ci
147bf215546Sopenharmony_ci		Only formats filled in below are the ones that have been observed by
148bf215546Sopenharmony_ci		the blob or tested.. you can guess what the missing ones are..
149bf215546Sopenharmony_ci	 -->
150bf215546Sopenharmony_ci
151bf215546Sopenharmony_ci	<value name="TFMT_8_UNORM" value="0x30"/>     <!-- GL_LUMINANCE -->
152bf215546Sopenharmony_ci	<value name="TFMT_8_8_UNORM" value="0x31"/>
153bf215546Sopenharmony_ci	<value name="TFMT_8_8_8_UNORM" value="0x32"/>
154bf215546Sopenharmony_ci	<value name="TFMT_8_8_8_8_UNORM" value="0x33"/>
155bf215546Sopenharmony_ci
156bf215546Sopenharmony_ci	<value name="TFMT_8_SNORM" value="0x34"/>
157bf215546Sopenharmony_ci	<value name="TFMT_8_8_SNORM" value="0x35"/>
158bf215546Sopenharmony_ci	<value name="TFMT_8_8_8_SNORM" value="0x36"/>
159bf215546Sopenharmony_ci	<value name="TFMT_8_8_8_8_SNORM" value="0x37"/>
160bf215546Sopenharmony_ci
161bf215546Sopenharmony_ci	<value name="TFMT_8_UINT" value="0x38"/>
162bf215546Sopenharmony_ci	<value name="TFMT_8_8_UINT" value="0x39"/>
163bf215546Sopenharmony_ci	<value name="TFMT_8_8_8_UINT" value="0x3a"/>
164bf215546Sopenharmony_ci	<value name="TFMT_8_8_8_8_UINT" value="0x3b"/>
165bf215546Sopenharmony_ci
166bf215546Sopenharmony_ci	<value name="TFMT_8_SINT" value="0x3c"/>
167bf215546Sopenharmony_ci	<value name="TFMT_8_8_SINT" value="0x3d"/>
168bf215546Sopenharmony_ci	<value name="TFMT_8_8_8_SINT" value="0x3e"/>
169bf215546Sopenharmony_ci	<value name="TFMT_8_8_8_8_SINT" value="0x3f"/>
170bf215546Sopenharmony_ci
171bf215546Sopenharmony_ci	<value name="TFMT_16_FLOAT" value="0x40"/>
172bf215546Sopenharmony_ci	<value name="TFMT_16_16_FLOAT" value="0x41"/>
173bf215546Sopenharmony_ci	<!-- TFMT_FLOAT_16_16_16 -->
174bf215546Sopenharmony_ci	<value name="TFMT_16_16_16_16_FLOAT" value="0x43"/>
175bf215546Sopenharmony_ci
176bf215546Sopenharmony_ci	<value name="TFMT_16_UINT" value="0x44"/>
177bf215546Sopenharmony_ci	<value name="TFMT_16_16_UINT" value="0x45"/>
178bf215546Sopenharmony_ci	<value name="TFMT_16_16_16_16_UINT" value="0x47"/>
179bf215546Sopenharmony_ci
180bf215546Sopenharmony_ci	<value name="TFMT_16_SINT" value="0x48"/>
181bf215546Sopenharmony_ci	<value name="TFMT_16_16_SINT" value="0x49"/>
182bf215546Sopenharmony_ci	<value name="TFMT_16_16_16_16_SINT" value="0x4b"/>
183bf215546Sopenharmony_ci
184bf215546Sopenharmony_ci	<value name="TFMT_16_UNORM" value="0x4c"/>
185bf215546Sopenharmony_ci	<value name="TFMT_16_16_UNORM" value="0x4d"/>
186bf215546Sopenharmony_ci	<value name="TFMT_16_16_16_16_UNORM" value="0x4f"/>
187bf215546Sopenharmony_ci
188bf215546Sopenharmony_ci	<value name="TFMT_16_SNORM" value="0x50"/>
189bf215546Sopenharmony_ci	<value name="TFMT_16_16_SNORM" value="0x51"/>
190bf215546Sopenharmony_ci	<value name="TFMT_16_16_16_16_SNORM" value="0x53"/>
191bf215546Sopenharmony_ci
192bf215546Sopenharmony_ci	<value name="TFMT_32_FLOAT" value="0x54"/>
193bf215546Sopenharmony_ci	<value name="TFMT_32_32_FLOAT" value="0x55"/>
194bf215546Sopenharmony_ci	<!-- TFMT_32_32_32_FLOAT -->
195bf215546Sopenharmony_ci	<value name="TFMT_32_32_32_32_FLOAT" value="0x57"/>
196bf215546Sopenharmony_ci
197bf215546Sopenharmony_ci	<value name="TFMT_32_UINT" value="0x58"/>
198bf215546Sopenharmony_ci	<value name="TFMT_32_32_UINT" value="0x59"/>
199bf215546Sopenharmony_ci	<value name="TFMT_32_32_32_32_UINT" value="0x5b"/>
200bf215546Sopenharmony_ci
201bf215546Sopenharmony_ci	<value name="TFMT_32_SINT" value="0x5c"/>
202bf215546Sopenharmony_ci	<value name="TFMT_32_32_SINT" value="0x5d"/>
203bf215546Sopenharmony_ci	<value name="TFMT_32_32_32_32_SINT" value="0x5f"/>
204bf215546Sopenharmony_ci
205bf215546Sopenharmony_ci	<value name="TFMT_2_10_10_10_UINT" value="0x60"/>
206bf215546Sopenharmony_ci	<value name="TFMT_10_10_10_2_UINT" value="0x61"/>
207bf215546Sopenharmony_ci
208bf215546Sopenharmony_ci	<value name="TFMT_ETC2_RG11_SNORM" value="0x70"/>
209bf215546Sopenharmony_ci	<value name="TFMT_ETC2_RG11_UNORM" value="0x71"/>
210bf215546Sopenharmony_ci	<value name="TFMT_ETC2_R11_SNORM" value="0x72"/>
211bf215546Sopenharmony_ci	<value name="TFMT_ETC2_R11_UNORM" value="0x73"/>
212bf215546Sopenharmony_ci	<value name="TFMT_ETC2_RGBA8" value="0x74"/>
213bf215546Sopenharmony_ci	<value name="TFMT_ETC2_RGB8A1" value="0x75"/>
214bf215546Sopenharmony_ci	<value name="TFMT_ETC2_RGB8" value="0x76"/>
215bf215546Sopenharmony_ci
216bf215546Sopenharmony_ci	<value name="TFMT_NONE" value="0xff"/>
217bf215546Sopenharmony_ci</enum>
218bf215546Sopenharmony_ci
219bf215546Sopenharmony_ci<enum name="a3xx_color_fmt">
220bf215546Sopenharmony_ci	<value name="RB_R5G6B5_UNORM"       value="0x00"/>
221bf215546Sopenharmony_ci	<value name="RB_R5G5B5A1_UNORM"     value="0x01"/>
222bf215546Sopenharmony_ci	<value name="RB_R4G4B4A4_UNORM"     value="0x03"/>
223bf215546Sopenharmony_ci	<value name="RB_R8G8B8_UNORM"	    value="0x04"/>
224bf215546Sopenharmony_ci	<value name="RB_R8G8B8A8_UNORM"	    value="0x08"/>
225bf215546Sopenharmony_ci	<value name="RB_R8G8B8A8_SNORM"	    value="0x09"/>
226bf215546Sopenharmony_ci	<value name="RB_R8G8B8A8_UINT"	    value="0x0a"/>
227bf215546Sopenharmony_ci	<value name="RB_R8G8B8A8_SINT"	    value="0x0b"/>
228bf215546Sopenharmony_ci	<value name="RB_R8G8_UNORM"	    value="0x0c"/>
229bf215546Sopenharmony_ci	<value name="RB_R8G8_SNORM"	    value="0x0d"/>
230bf215546Sopenharmony_ci	<value name="RB_R8G8_UINT"	    value="0x0e"/>
231bf215546Sopenharmony_ci	<value name="RB_R8G8_SINT"	    value="0x0f"/>
232bf215546Sopenharmony_ci	<value name="RB_R10G10B10A2_UNORM"  value="0x10"/>
233bf215546Sopenharmony_ci	<value name="RB_A2R10G10B10_UNORM"  value="0x11"/>
234bf215546Sopenharmony_ci	<value name="RB_R10G10B10A2_UINT"   value="0x12"/>
235bf215546Sopenharmony_ci	<value name="RB_A2R10G10B10_UINT"   value="0x13"/>
236bf215546Sopenharmony_ci
237bf215546Sopenharmony_ci	<value name="RB_A8_UNORM"	    value="0x14"/>
238bf215546Sopenharmony_ci	<value name="RB_R8_UNORM"	    value="0x15"/>
239bf215546Sopenharmony_ci
240bf215546Sopenharmony_ci	<value name="RB_R16_FLOAT"          value="0x18"/>
241bf215546Sopenharmony_ci	<value name="RB_R16G16_FLOAT"       value="0x19"/>
242bf215546Sopenharmony_ci	<value name="RB_R16G16B16A16_FLOAT" value="0x1b"/> <!-- GL_HALF_FLOAT_OES -->
243bf215546Sopenharmony_ci	<value name="RB_R11G11B10_FLOAT"    value="0x1c"/>
244bf215546Sopenharmony_ci
245bf215546Sopenharmony_ci	<value name="RB_R16_SNORM"          value="0x20"/>
246bf215546Sopenharmony_ci	<value name="RB_R16G16_SNORM"       value="0x21"/>
247bf215546Sopenharmony_ci	<value name="RB_R16G16B16A16_SNORM" value="0x23"/>
248bf215546Sopenharmony_ci
249bf215546Sopenharmony_ci	<value name="RB_R16_UNORM"          value="0x24"/>
250bf215546Sopenharmony_ci	<value name="RB_R16G16_UNORM"       value="0x25"/>
251bf215546Sopenharmony_ci	<value name="RB_R16G16B16A16_UNORM" value="0x27"/>
252bf215546Sopenharmony_ci
253bf215546Sopenharmony_ci	<value name="RB_R16_SINT"	    value="0x28"/>
254bf215546Sopenharmony_ci	<value name="RB_R16G16_SINT"	    value="0x29"/>
255bf215546Sopenharmony_ci	<value name="RB_R16G16B16A16_SINT"  value="0x2b"/>
256bf215546Sopenharmony_ci
257bf215546Sopenharmony_ci	<value name="RB_R16_UINT"	    value="0x2c"/>
258bf215546Sopenharmony_ci	<value name="RB_R16G16_UINT"	    value="0x2d"/>
259bf215546Sopenharmony_ci	<value name="RB_R16G16B16A16_UINT"  value="0x2f"/>
260bf215546Sopenharmony_ci
261bf215546Sopenharmony_ci	<value name="RB_R32_FLOAT"          value="0x30"/>
262bf215546Sopenharmony_ci	<value name="RB_R32G32_FLOAT"       value="0x31"/>
263bf215546Sopenharmony_ci	<value name="RB_R32G32B32A32_FLOAT" value="0x33"/> <!-- GL_FLOAT -->
264bf215546Sopenharmony_ci
265bf215546Sopenharmony_ci	<value name="RB_R32_SINT"	    value="0x34"/>
266bf215546Sopenharmony_ci	<value name="RB_R32G32_SINT"	    value="0x35"/>
267bf215546Sopenharmony_ci	<value name="RB_R32G32B32A32_SINT"  value="0x37"/>
268bf215546Sopenharmony_ci
269bf215546Sopenharmony_ci	<value name="RB_R32_UINT"	    value="0x38"/>
270bf215546Sopenharmony_ci	<value name="RB_R32G32_UINT"	    value="0x39"/>
271bf215546Sopenharmony_ci	<value name="RB_R32G32B32A32_UINT"  value="0x3b"/>
272bf215546Sopenharmony_ci
273bf215546Sopenharmony_ci	<value name="RB_NONE"               value="0xff"/>
274bf215546Sopenharmony_ci</enum>
275bf215546Sopenharmony_ci
276bf215546Sopenharmony_ci<enum name="a3xx_cp_perfcounter_select">
277bf215546Sopenharmony_ci	<value value="0x00" name="CP_ALWAYS_COUNT"/>
278bf215546Sopenharmony_ci	<value value="0x03" name="CP_AHB_PFPTRANS_WAIT"/>
279bf215546Sopenharmony_ci	<value value="0x06" name="CP_AHB_NRTTRANS_WAIT"/>
280bf215546Sopenharmony_ci	<value value="0x08" name="CP_CSF_NRT_READ_WAIT"/>
281bf215546Sopenharmony_ci	<value value="0x09" name="CP_CSF_I1_FIFO_FULL"/>
282bf215546Sopenharmony_ci	<value value="0x0a" name="CP_CSF_I2_FIFO_FULL"/>
283bf215546Sopenharmony_ci	<value value="0x0b" name="CP_CSF_ST_FIFO_FULL"/>
284bf215546Sopenharmony_ci	<value value="0x0c" name="CP_RESERVED_12"/>
285bf215546Sopenharmony_ci	<value value="0x0d" name="CP_CSF_RING_ROQ_FULL"/>
286bf215546Sopenharmony_ci	<value value="0x0e" name="CP_CSF_I1_ROQ_FULL"/>
287bf215546Sopenharmony_ci	<value value="0x0f" name="CP_CSF_I2_ROQ_FULL"/>
288bf215546Sopenharmony_ci	<value value="0x10" name="CP_CSF_ST_ROQ_FULL"/>
289bf215546Sopenharmony_ci	<value value="0x11" name="CP_RESERVED_17"/>
290bf215546Sopenharmony_ci	<value value="0x12" name="CP_MIU_TAG_MEM_FULL"/>
291bf215546Sopenharmony_ci	<value value="0x16" name="CP_MIU_NRT_WRITE_STALLED"/>
292bf215546Sopenharmony_ci	<value value="0x17" name="CP_MIU_NRT_READ_STALLED"/>
293bf215546Sopenharmony_ci	<value value="0x1a" name="CP_ME_REGS_RB_DONE_FIFO_FULL"/>
294bf215546Sopenharmony_ci	<value value="0x1b" name="CP_ME_REGS_VS_EVENT_FIFO_FULL"/>
295bf215546Sopenharmony_ci	<value value="0x1c" name="CP_ME_REGS_PS_EVENT_FIFO_FULL"/>
296bf215546Sopenharmony_ci	<value value="0x1d" name="CP_ME_REGS_CF_EVENT_FIFO_FULL"/>
297bf215546Sopenharmony_ci	<value value="0x1e" name="CP_ME_MICRO_RB_STARVED"/>
298bf215546Sopenharmony_ci	<value value="0x28" name="CP_AHB_RBBM_DWORD_SENT"/>
299bf215546Sopenharmony_ci	<value value="0x29" name="CP_ME_BUSY_CLOCKS"/>
300bf215546Sopenharmony_ci	<value value="0x2a" name="CP_ME_WAIT_CONTEXT_AVAIL"/>
301bf215546Sopenharmony_ci	<value value="0x2b" name="CP_PFP_TYPE0_PACKET"/>
302bf215546Sopenharmony_ci	<value value="0x2c" name="CP_PFP_TYPE3_PACKET"/>
303bf215546Sopenharmony_ci	<value value="0x2d" name="CP_CSF_RB_WPTR_NEQ_RPTR"/>
304bf215546Sopenharmony_ci	<value value="0x2e" name="CP_CSF_I1_SIZE_NEQ_ZERO"/>
305bf215546Sopenharmony_ci	<value value="0x2f" name="CP_CSF_I2_SIZE_NEQ_ZERO"/>
306bf215546Sopenharmony_ci	<value value="0x30" name="CP_CSF_RBI1I2_FETCHING"/>
307bf215546Sopenharmony_ci</enum>
308bf215546Sopenharmony_ci
309bf215546Sopenharmony_ci<enum name="a3xx_gras_tse_perfcounter_select">
310bf215546Sopenharmony_ci	<value value="0x00" name="GRAS_TSEPERF_INPUT_PRIM"/>
311bf215546Sopenharmony_ci	<value value="0x01" name="GRAS_TSEPERF_INPUT_NULL_PRIM"/>
312bf215546Sopenharmony_ci	<value value="0x02" name="GRAS_TSEPERF_TRIVAL_REJ_PRIM"/>
313bf215546Sopenharmony_ci	<value value="0x03" name="GRAS_TSEPERF_CLIPPED_PRIM"/>
314bf215546Sopenharmony_ci	<value value="0x04" name="GRAS_TSEPERF_NEW_PRIM"/>
315bf215546Sopenharmony_ci	<value value="0x05" name="GRAS_TSEPERF_ZERO_AREA_PRIM"/>
316bf215546Sopenharmony_ci	<value value="0x06" name="GRAS_TSEPERF_FACENESS_CULLED_PRIM"/>
317bf215546Sopenharmony_ci	<value value="0x07" name="GRAS_TSEPERF_ZERO_PIXEL_PRIM"/>
318bf215546Sopenharmony_ci	<value value="0x08" name="GRAS_TSEPERF_OUTPUT_NULL_PRIM"/>
319bf215546Sopenharmony_ci	<value value="0x09" name="GRAS_TSEPERF_OUTPUT_VISIBLE_PRIM"/>
320bf215546Sopenharmony_ci	<value value="0x0a" name="GRAS_TSEPERF_PRE_CLIP_PRIM"/>
321bf215546Sopenharmony_ci	<value value="0x0b" name="GRAS_TSEPERF_POST_CLIP_PRIM"/>
322bf215546Sopenharmony_ci	<value value="0x0c" name="GRAS_TSEPERF_WORKING_CYCLES"/>
323bf215546Sopenharmony_ci	<value value="0x0d" name="GRAS_TSEPERF_PC_STARVE"/>
324bf215546Sopenharmony_ci	<value value="0x0e" name="GRAS_TSERASPERF_STALL"/>
325bf215546Sopenharmony_ci</enum>
326bf215546Sopenharmony_ci
327bf215546Sopenharmony_ci<enum name="a3xx_gras_ras_perfcounter_select">
328bf215546Sopenharmony_ci	<value value="0x00" name="GRAS_RASPERF_16X16_TILES"/>
329bf215546Sopenharmony_ci	<value value="0x01" name="GRAS_RASPERF_8X8_TILES"/>
330bf215546Sopenharmony_ci	<value value="0x02" name="GRAS_RASPERF_4X4_TILES"/>
331bf215546Sopenharmony_ci	<value value="0x03" name="GRAS_RASPERF_WORKING_CYCLES"/>
332bf215546Sopenharmony_ci	<value value="0x04" name="GRAS_RASPERF_STALL_CYCLES_BY_RB"/>
333bf215546Sopenharmony_ci	<value value="0x05" name="GRAS_RASPERF_STALL_CYCLES_BY_VSC"/>
334bf215546Sopenharmony_ci	<value value="0x06" name="GRAS_RASPERF_STARVE_CYCLES_BY_TSE"/>
335bf215546Sopenharmony_ci</enum>
336bf215546Sopenharmony_ci
337bf215546Sopenharmony_ci<enum name="a3xx_hlsq_perfcounter_select">
338bf215546Sopenharmony_ci	<value value="0x00" name="HLSQ_PERF_SP_VS_CONSTANT"/>
339bf215546Sopenharmony_ci	<value value="0x01" name="HLSQ_PERF_SP_VS_INSTRUCTIONS"/>
340bf215546Sopenharmony_ci	<value value="0x02" name="HLSQ_PERF_SP_FS_CONSTANT"/>
341bf215546Sopenharmony_ci	<value value="0x03" name="HLSQ_PERF_SP_FS_INSTRUCTIONS"/>
342bf215546Sopenharmony_ci	<value value="0x04" name="HLSQ_PERF_TP_STATE"/>
343bf215546Sopenharmony_ci	<value value="0x05" name="HLSQ_PERF_QUADS"/>
344bf215546Sopenharmony_ci	<value value="0x06" name="HLSQ_PERF_PIXELS"/>
345bf215546Sopenharmony_ci	<value value="0x07" name="HLSQ_PERF_VERTICES"/>
346bf215546Sopenharmony_ci	<value value="0x08" name="HLSQ_PERF_FS8_THREADS"/>
347bf215546Sopenharmony_ci	<value value="0x09" name="HLSQ_PERF_FS16_THREADS"/>
348bf215546Sopenharmony_ci	<value value="0x0a" name="HLSQ_PERF_FS32_THREADS"/>
349bf215546Sopenharmony_ci	<value value="0x0b" name="HLSQ_PERF_VS8_THREADS"/>
350bf215546Sopenharmony_ci	<value value="0x0c" name="HLSQ_PERF_VS16_THREADS"/>
351bf215546Sopenharmony_ci	<value value="0x0d" name="HLSQ_PERF_SP_VS_DATA_BYTES"/>
352bf215546Sopenharmony_ci	<value value="0x0e" name="HLSQ_PERF_SP_FS_DATA_BYTES"/>
353bf215546Sopenharmony_ci	<value value="0x0f" name="HLSQ_PERF_ACTIVE_CYCLES"/>
354bf215546Sopenharmony_ci	<value value="0x10" name="HLSQ_PERF_STALL_CYCLES_SP_STATE"/>
355bf215546Sopenharmony_ci	<value value="0x11" name="HLSQ_PERF_STALL_CYCLES_SP_VS"/>
356bf215546Sopenharmony_ci	<value value="0x12" name="HLSQ_PERF_STALL_CYCLES_SP_FS"/>
357bf215546Sopenharmony_ci	<value value="0x13" name="HLSQ_PERF_STALL_CYCLES_UCHE"/>
358bf215546Sopenharmony_ci	<value value="0x14" name="HLSQ_PERF_RBBM_LOAD_CYCLES"/>
359bf215546Sopenharmony_ci	<value value="0x15" name="HLSQ_PERF_DI_TO_VS_START_SP0"/>
360bf215546Sopenharmony_ci	<value value="0x16" name="HLSQ_PERF_DI_TO_FS_START_SP0"/>
361bf215546Sopenharmony_ci	<value value="0x17" name="HLSQ_PERF_VS_START_TO_DONE_SP0"/>
362bf215546Sopenharmony_ci	<value value="0x18" name="HLSQ_PERF_FS_START_TO_DONE_SP0"/>
363bf215546Sopenharmony_ci	<value value="0x19" name="HLSQ_PERF_SP_STATE_COPY_CYCLES_VS"/>
364bf215546Sopenharmony_ci	<value value="0x1a" name="HLSQ_PERF_SP_STATE_COPY_CYCLES_FS"/>
365bf215546Sopenharmony_ci	<value value="0x1b" name="HLSQ_PERF_UCHE_LATENCY_CYCLES"/>
366bf215546Sopenharmony_ci	<value value="0x1c" name="HLSQ_PERF_UCHE_LATENCY_COUNT"/>
367bf215546Sopenharmony_ci</enum>
368bf215546Sopenharmony_ci
369bf215546Sopenharmony_ci<enum name="a3xx_pc_perfcounter_select">
370bf215546Sopenharmony_ci	<value value="0x00" name="PC_PCPERF_VISIBILITY_STREAMS"/>
371bf215546Sopenharmony_ci	<value value="0x01" name="PC_PCPERF_TOTAL_INSTANCES"/>
372bf215546Sopenharmony_ci	<value value="0x02" name="PC_PCPERF_PRIMITIVES_PC_VPC"/>
373bf215546Sopenharmony_ci	<value value="0x03" name="PC_PCPERF_PRIMITIVES_KILLED_BY_VS"/>
374bf215546Sopenharmony_ci	<value value="0x04" name="PC_PCPERF_PRIMITIVES_VISIBLE_BY_VS"/>
375bf215546Sopenharmony_ci	<value value="0x05" name="PC_PCPERF_DRAWCALLS_KILLED_BY_VS"/>
376bf215546Sopenharmony_ci	<value value="0x06" name="PC_PCPERF_DRAWCALLS_VISIBLE_BY_VS"/>
377bf215546Sopenharmony_ci	<value value="0x07" name="PC_PCPERF_VERTICES_TO_VFD"/>
378bf215546Sopenharmony_ci	<value value="0x08" name="PC_PCPERF_REUSED_VERTICES"/>
379bf215546Sopenharmony_ci	<value value="0x09" name="PC_PCPERF_CYCLES_STALLED_BY_VFD"/>
380bf215546Sopenharmony_ci	<value value="0x0a" name="PC_PCPERF_CYCLES_STALLED_BY_TSE"/>
381bf215546Sopenharmony_ci	<value value="0x0b" name="PC_PCPERF_CYCLES_STALLED_BY_VBIF"/>
382bf215546Sopenharmony_ci	<value value="0x0c" name="PC_PCPERF_CYCLES_IS_WORKING"/>
383bf215546Sopenharmony_ci</enum>
384bf215546Sopenharmony_ci
385bf215546Sopenharmony_ci<enum name="a3xx_rb_perfcounter_select">
386bf215546Sopenharmony_ci	<value value="0x00" name="RB_RBPERF_ACTIVE_CYCLES_ANY"/>
387bf215546Sopenharmony_ci	<value value="0x01" name="RB_RBPERF_ACTIVE_CYCLES_ALL"/>
388bf215546Sopenharmony_ci	<value value="0x02" name="RB_RBPERF_STARVE_CYCLES_BY_SP"/>
389bf215546Sopenharmony_ci	<value value="0x03" name="RB_RBPERF_STARVE_CYCLES_BY_RAS"/>
390bf215546Sopenharmony_ci	<value value="0x04" name="RB_RBPERF_STARVE_CYCLES_BY_MARB"/>
391bf215546Sopenharmony_ci	<value value="0x05" name="RB_RBPERF_STALL_CYCLES_BY_MARB"/>
392bf215546Sopenharmony_ci	<value value="0x06" name="RB_RBPERF_STALL_CYCLES_BY_HLSQ"/>
393bf215546Sopenharmony_ci	<value value="0x07" name="RB_RBPERF_RB_MARB_DATA"/>
394bf215546Sopenharmony_ci	<value value="0x08" name="RB_RBPERF_SP_RB_QUAD"/>
395bf215546Sopenharmony_ci	<value value="0x09" name="RB_RBPERF_RAS_EARLY_Z_QUADS"/>
396bf215546Sopenharmony_ci	<value value="0x0a" name="RB_RBPERF_GMEM_CH0_READ"/>
397bf215546Sopenharmony_ci	<value value="0x0b" name="RB_RBPERF_GMEM_CH1_READ"/>
398bf215546Sopenharmony_ci	<value value="0x0c" name="RB_RBPERF_GMEM_CH0_WRITE"/>
399bf215546Sopenharmony_ci	<value value="0x0d" name="RB_RBPERF_GMEM_CH1_WRITE"/>
400bf215546Sopenharmony_ci	<value value="0x0e" name="RB_RBPERF_CP_CONTEXT_DONE"/>
401bf215546Sopenharmony_ci	<value value="0x0f" name="RB_RBPERF_CP_CACHE_FLUSH"/>
402bf215546Sopenharmony_ci	<value value="0x10" name="RB_RBPERF_CP_ZPASS_DONE"/>
403bf215546Sopenharmony_ci</enum>
404bf215546Sopenharmony_ci
405bf215546Sopenharmony_ci<enum name="a3xx_rbbm_perfcounter_select">
406bf215546Sopenharmony_ci	<value value="0" name="RBBM_ALAWYS_ON"/>
407bf215546Sopenharmony_ci	<value value="1" name="RBBM_VBIF_BUSY"/>
408bf215546Sopenharmony_ci	<value value="2" name="RBBM_TSE_BUSY"/>
409bf215546Sopenharmony_ci	<value value="3" name="RBBM_RAS_BUSY"/>
410bf215546Sopenharmony_ci	<value value="4" name="RBBM_PC_DCALL_BUSY"/>
411bf215546Sopenharmony_ci	<value value="5" name="RBBM_PC_VSD_BUSY"/>
412bf215546Sopenharmony_ci	<value value="6" name="RBBM_VFD_BUSY"/>
413bf215546Sopenharmony_ci	<value value="7" name="RBBM_VPC_BUSY"/>
414bf215546Sopenharmony_ci	<value value="8" name="RBBM_UCHE_BUSY"/>
415bf215546Sopenharmony_ci	<value value="9" name="RBBM_VSC_BUSY"/>
416bf215546Sopenharmony_ci	<value value="10" name="RBBM_HLSQ_BUSY"/>
417bf215546Sopenharmony_ci	<value value="11" name="RBBM_ANY_RB_BUSY"/>
418bf215546Sopenharmony_ci	<value value="12" name="RBBM_ANY_TEX_BUSY"/>
419bf215546Sopenharmony_ci	<value value="13" name="RBBM_ANY_USP_BUSY"/>
420bf215546Sopenharmony_ci	<value value="14" name="RBBM_ANY_MARB_BUSY"/>
421bf215546Sopenharmony_ci	<value value="15" name="RBBM_ANY_ARB_BUSY"/>
422bf215546Sopenharmony_ci	<value value="16" name="RBBM_AHB_STATUS_BUSY"/>
423bf215546Sopenharmony_ci	<value value="17" name="RBBM_AHB_STATUS_STALLED"/>
424bf215546Sopenharmony_ci	<value value="18" name="RBBM_AHB_STATUS_TXFR"/>
425bf215546Sopenharmony_ci	<value value="19" name="RBBM_AHB_STATUS_TXFR_SPLIT"/>
426bf215546Sopenharmony_ci	<value value="20" name="RBBM_AHB_STATUS_TXFR_ERROR"/>
427bf215546Sopenharmony_ci	<value value="21" name="RBBM_AHB_STATUS_LONG_STALL"/>
428bf215546Sopenharmony_ci	<value value="22" name="RBBM_RBBM_STATUS_MASKED"/>
429bf215546Sopenharmony_ci</enum>
430bf215546Sopenharmony_ci
431bf215546Sopenharmony_ci<enum name="a3xx_sp_perfcounter_select">
432bf215546Sopenharmony_ci	<value value="0x00" name="SP_LM_LOAD_INSTRUCTIONS"/>
433bf215546Sopenharmony_ci	<value value="0x01" name="SP_LM_STORE_INSTRUCTIONS"/>
434bf215546Sopenharmony_ci	<value value="0x02" name="SP_LM_ATOMICS"/>
435bf215546Sopenharmony_ci	<value value="0x03" name="SP_UCHE_LOAD_INSTRUCTIONS"/>
436bf215546Sopenharmony_ci	<value value="0x04" name="SP_UCHE_STORE_INSTRUCTIONS"/>
437bf215546Sopenharmony_ci	<value value="0x05" name="SP_UCHE_ATOMICS"/>
438bf215546Sopenharmony_ci	<value value="0x06" name="SP_VS_TEX_INSTRUCTIONS"/>
439bf215546Sopenharmony_ci	<value value="0x07" name="SP_VS_CFLOW_INSTRUCTIONS"/>
440bf215546Sopenharmony_ci	<value value="0x08" name="SP_VS_EFU_INSTRUCTIONS"/>
441bf215546Sopenharmony_ci	<value value="0x09" name="SP_VS_FULL_ALU_INSTRUCTIONS"/>
442bf215546Sopenharmony_ci	<value value="0x0a" name="SP_VS_HALF_ALU_INSTRUCTIONS"/>
443bf215546Sopenharmony_ci	<value value="0x0b" name="SP_FS_TEX_INSTRUCTIONS"/>
444bf215546Sopenharmony_ci	<value value="0x0c" name="SP_FS_CFLOW_INSTRUCTIONS"/>
445bf215546Sopenharmony_ci	<value value="0x0d" name="SP_FS_EFU_INSTRUCTIONS"/>
446bf215546Sopenharmony_ci	<value value="0x0e" name="SP_FS_FULL_ALU_INSTRUCTIONS"/>
447bf215546Sopenharmony_ci	<value value="0x0f" name="SP_FS_HALF_ALU_INSTRUCTIONS"/>
448bf215546Sopenharmony_ci	<value value="0x10" name="SP_FS_BARY_INSTRUCTIONS"/>
449bf215546Sopenharmony_ci	<value value="0x11" name="SP_VS_INSTRUCTIONS"/>
450bf215546Sopenharmony_ci	<value value="0x12" name="SP_FS_INSTRUCTIONS"/>
451bf215546Sopenharmony_ci	<value value="0x13" name="SP_ADDR_LOCK_COUNT"/>
452bf215546Sopenharmony_ci	<value value="0x14" name="SP_UCHE_READ_TRANS"/>
453bf215546Sopenharmony_ci	<value value="0x15" name="SP_UCHE_WRITE_TRANS"/>
454bf215546Sopenharmony_ci	<value value="0x16" name="SP_EXPORT_VPC_TRANS"/>
455bf215546Sopenharmony_ci	<value value="0x17" name="SP_EXPORT_RB_TRANS"/>
456bf215546Sopenharmony_ci	<value value="0x18" name="SP_PIXELS_KILLED"/>
457bf215546Sopenharmony_ci	<value value="0x19" name="SP_ICL1_REQUESTS"/>
458bf215546Sopenharmony_ci	<value value="0x1a" name="SP_ICL1_MISSES"/>
459bf215546Sopenharmony_ci	<value value="0x1b" name="SP_ICL0_REQUESTS"/>
460bf215546Sopenharmony_ci	<value value="0x1c" name="SP_ICL0_MISSES"/>
461bf215546Sopenharmony_ci	<value value="0x1d" name="SP_ALU_ACTIVE_CYCLES"/>
462bf215546Sopenharmony_ci	<value value="0x1e" name="SP_EFU_ACTIVE_CYCLES"/>
463bf215546Sopenharmony_ci	<value value="0x1f" name="SP_STALL_CYCLES_BY_VPC"/>
464bf215546Sopenharmony_ci	<value value="0x20" name="SP_STALL_CYCLES_BY_TP"/>
465bf215546Sopenharmony_ci	<value value="0x21" name="SP_STALL_CYCLES_BY_UCHE"/>
466bf215546Sopenharmony_ci	<value value="0x22" name="SP_STALL_CYCLES_BY_RB"/>
467bf215546Sopenharmony_ci	<value value="0x23" name="SP_ACTIVE_CYCLES_ANY"/>
468bf215546Sopenharmony_ci	<value value="0x24" name="SP_ACTIVE_CYCLES_ALL"/>
469bf215546Sopenharmony_ci</enum>
470bf215546Sopenharmony_ci
471bf215546Sopenharmony_ci<enum name="a3xx_tp_perfcounter_select">
472bf215546Sopenharmony_ci	<value value="0x00" name="TPL1_TPPERF_L1_REQUESTS"/>
473bf215546Sopenharmony_ci	<value value="0x01" name="TPL1_TPPERF_TP0_L1_REQUESTS"/>
474bf215546Sopenharmony_ci	<value value="0x02" name="TPL1_TPPERF_TP0_L1_MISSES"/>
475bf215546Sopenharmony_ci	<value value="0x03" name="TPL1_TPPERF_TP1_L1_REQUESTS"/>
476bf215546Sopenharmony_ci	<value value="0x04" name="TPL1_TPPERF_TP1_L1_MISSES"/>
477bf215546Sopenharmony_ci	<value value="0x05" name="TPL1_TPPERF_TP2_L1_REQUESTS"/>
478bf215546Sopenharmony_ci	<value value="0x06" name="TPL1_TPPERF_TP2_L1_MISSES"/>
479bf215546Sopenharmony_ci	<value value="0x07" name="TPL1_TPPERF_TP3_L1_REQUESTS"/>
480bf215546Sopenharmony_ci	<value value="0x08" name="TPL1_TPPERF_TP3_L1_MISSES"/>
481bf215546Sopenharmony_ci	<value value="0x09" name="TPL1_TPPERF_OUTPUT_TEXELS_POINT"/>
482bf215546Sopenharmony_ci	<value value="0x0a" name="TPL1_TPPERF_OUTPUT_TEXELS_BILINEAR"/>
483bf215546Sopenharmony_ci	<value value="0x0b" name="TPL1_TPPERF_OUTPUT_TEXELS_MIP"/>
484bf215546Sopenharmony_ci	<value value="0x0c" name="TPL1_TPPERF_OUTPUT_TEXELS_ANISO"/>
485bf215546Sopenharmony_ci	<value value="0x0d" name="TPL1_TPPERF_BILINEAR_OPS"/>
486bf215546Sopenharmony_ci	<value value="0x0e" name="TPL1_TPPERF_QUADSQUADS_OFFSET"/>
487bf215546Sopenharmony_ci	<value value="0x0f" name="TPL1_TPPERF_QUADQUADS_SHADOW"/>
488bf215546Sopenharmony_ci	<value value="0x10" name="TPL1_TPPERF_QUADS_ARRAY"/>
489bf215546Sopenharmony_ci	<value value="0x11" name="TPL1_TPPERF_QUADS_PROJECTION"/>
490bf215546Sopenharmony_ci	<value value="0x12" name="TPL1_TPPERF_QUADS_GRADIENT"/>
491bf215546Sopenharmony_ci	<value value="0x13" name="TPL1_TPPERF_QUADS_1D2D"/>
492bf215546Sopenharmony_ci	<value value="0x14" name="TPL1_TPPERF_QUADS_3DCUBE"/>
493bf215546Sopenharmony_ci	<value value="0x15" name="TPL1_TPPERF_ZERO_LOD"/>
494bf215546Sopenharmony_ci	<value value="0x16" name="TPL1_TPPERF_OUTPUT_TEXELS"/>
495bf215546Sopenharmony_ci	<value value="0x17" name="TPL1_TPPERF_ACTIVE_CYCLES_ANY"/>
496bf215546Sopenharmony_ci	<value value="0x18" name="TPL1_TPPERF_ACTIVE_CYCLES_ALL"/>
497bf215546Sopenharmony_ci	<value value="0x19" name="TPL1_TPPERF_STALL_CYCLES_BY_ARB"/>
498bf215546Sopenharmony_ci	<value value="0x1a" name="TPL1_TPPERF_LATENCY"/>
499bf215546Sopenharmony_ci	<value value="0x1b" name="TPL1_TPPERF_LATENCY_TRANS"/>
500bf215546Sopenharmony_ci</enum>
501bf215546Sopenharmony_ci
502bf215546Sopenharmony_ci<enum name="a3xx_vfd_perfcounter_select">
503bf215546Sopenharmony_ci	<value value="0" name="VFD_PERF_UCHE_BYTE_FETCHED"/>
504bf215546Sopenharmony_ci	<value value="1" name="VFD_PERF_UCHE_TRANS"/>
505bf215546Sopenharmony_ci	<value value="2" name="VFD_PERF_VPC_BYPASS_COMPONENTS"/>
506bf215546Sopenharmony_ci	<value value="3" name="VFD_PERF_FETCH_INSTRUCTIONS"/>
507bf215546Sopenharmony_ci	<value value="4" name="VFD_PERF_DECODE_INSTRUCTIONS"/>
508bf215546Sopenharmony_ci	<value value="5" name="VFD_PERF_ACTIVE_CYCLES"/>
509bf215546Sopenharmony_ci	<value value="6" name="VFD_PERF_STALL_CYCLES_UCHE"/>
510bf215546Sopenharmony_ci	<value value="7" name="VFD_PERF_STALL_CYCLES_HLSQ"/>
511bf215546Sopenharmony_ci	<value value="8" name="VFD_PERF_STALL_CYCLES_VPC_BYPASS"/>
512bf215546Sopenharmony_ci	<value value="9" name="VFD_PERF_STALL_CYCLES_VPC_ALLOC"/>
513bf215546Sopenharmony_ci</enum>
514bf215546Sopenharmony_ci
515bf215546Sopenharmony_ci<enum name="a3xx_vpc_perfcounter_select">
516bf215546Sopenharmony_ci	<value value="0" name="VPC_PERF_SP_LM_PRIMITIVES"/>
517bf215546Sopenharmony_ci	<value value="1" name="VPC_PERF_COMPONENTS_FROM_SP"/>
518bf215546Sopenharmony_ci	<value value="2" name="VPC_PERF_SP_LM_COMPONENTS"/>
519bf215546Sopenharmony_ci	<value value="3" name="VPC_PERF_ACTIVE_CYCLES"/>
520bf215546Sopenharmony_ci	<value value="4" name="VPC_PERF_STALL_CYCLES_LM"/>
521bf215546Sopenharmony_ci	<value value="5" name="VPC_PERF_STALL_CYCLES_RAS"/>
522bf215546Sopenharmony_ci</enum>
523bf215546Sopenharmony_ci
524bf215546Sopenharmony_ci<enum name="a3xx_uche_perfcounter_select">
525bf215546Sopenharmony_ci	<value value="0x00" name="UCHE_UCHEPERF_VBIF_READ_BEATS_TP"/>
526bf215546Sopenharmony_ci	<value value="0x01" name="UCHE_UCHEPERF_VBIF_READ_BEATS_VFD"/>
527bf215546Sopenharmony_ci	<value value="0x02" name="UCHE_UCHEPERF_VBIF_READ_BEATS_HLSQ"/>
528bf215546Sopenharmony_ci	<value value="0x03" name="UCHE_UCHEPERF_VBIF_READ_BEATS_MARB"/>
529bf215546Sopenharmony_ci	<value value="0x04" name="UCHE_UCHEPERF_VBIF_READ_BEATS_SP"/>
530bf215546Sopenharmony_ci	<value value="0x08" name="UCHE_UCHEPERF_READ_REQUESTS_TP"/>
531bf215546Sopenharmony_ci	<value value="0x09" name="UCHE_UCHEPERF_READ_REQUESTS_VFD"/>
532bf215546Sopenharmony_ci	<value value="0x0a" name="UCHE_UCHEPERF_READ_REQUESTS_HLSQ"/>
533bf215546Sopenharmony_ci	<value value="0x0b" name="UCHE_UCHEPERF_READ_REQUESTS_MARB"/>
534bf215546Sopenharmony_ci	<value value="0x0c" name="UCHE_UCHEPERF_READ_REQUESTS_SP"/>
535bf215546Sopenharmony_ci	<value value="0x0d" name="UCHE_UCHEPERF_WRITE_REQUESTS_MARB"/>
536bf215546Sopenharmony_ci	<value value="0x0e" name="UCHE_UCHEPERF_WRITE_REQUESTS_SP"/>
537bf215546Sopenharmony_ci	<value value="0x0f" name="UCHE_UCHEPERF_TAG_CHECK_FAILS"/>
538bf215546Sopenharmony_ci	<value value="0x10" name="UCHE_UCHEPERF_EVICTS"/>
539bf215546Sopenharmony_ci	<value value="0x11" name="UCHE_UCHEPERF_FLUSHES"/>
540bf215546Sopenharmony_ci	<value value="0x12" name="UCHE_UCHEPERF_VBIF_LATENCY_CYCLES"/>
541bf215546Sopenharmony_ci	<value value="0x13" name="UCHE_UCHEPERF_VBIF_LATENCY_SAMPLES"/>
542bf215546Sopenharmony_ci	<value value="0x14" name="UCHE_UCHEPERF_ACTIVE_CYCLES"/>
543bf215546Sopenharmony_ci</enum>
544bf215546Sopenharmony_ci
545bf215546Sopenharmony_ci<enum name="a3xx_intp_mode">
546bf215546Sopenharmony_ci	<value name="SMOOTH" value="0"/>
547bf215546Sopenharmony_ci	<value name="FLAT" value="1"/>
548bf215546Sopenharmony_ci	<value name="ZERO" value="2"/>
549bf215546Sopenharmony_ci	<value name="ONE" value="3"/>
550bf215546Sopenharmony_ci</enum>
551bf215546Sopenharmony_ci
552bf215546Sopenharmony_ci<enum name="a3xx_repl_mode">
553bf215546Sopenharmony_ci	<value name="S" value="1"/>
554bf215546Sopenharmony_ci	<value name="T" value="2"/>
555bf215546Sopenharmony_ci	<value name="ONE_T" value="3"/>
556bf215546Sopenharmony_ci</enum>
557bf215546Sopenharmony_ci
558bf215546Sopenharmony_ci<domain name="A3XX" width="32">
559bf215546Sopenharmony_ci	<!-- RBBM registers -->
560bf215546Sopenharmony_ci	<reg32 offset="0x0000" name="RBBM_HW_VERSION"/>
561bf215546Sopenharmony_ci	<reg32 offset="0x0001" name="RBBM_HW_RELEASE"/>
562bf215546Sopenharmony_ci	<reg32 offset="0x0002" name="RBBM_HW_CONFIGURATION"/>
563bf215546Sopenharmony_ci	<reg32 offset="0x0010" name="RBBM_CLOCK_CTL"/>
564bf215546Sopenharmony_ci	<reg32 offset="0x0012" name="RBBM_SP_HYST_CNT"/>
565bf215546Sopenharmony_ci	<reg32 offset="0x0018" name="RBBM_SW_RESET_CMD"/>
566bf215546Sopenharmony_ci	<reg32 offset="0x0020" name="RBBM_AHB_CTL0"/>
567bf215546Sopenharmony_ci	<reg32 offset="0x0021" name="RBBM_AHB_CTL1"/>
568bf215546Sopenharmony_ci	<reg32 offset="0x0022" name="RBBM_AHB_CMD"/>
569bf215546Sopenharmony_ci	<reg32 offset="0x0027" name="RBBM_AHB_ERROR_STATUS"/>
570bf215546Sopenharmony_ci	<reg32 offset="0x002e" name="RBBM_GPR0_CTL"/>
571bf215546Sopenharmony_ci	<reg32 offset="0x0030" name="RBBM_STATUS">
572bf215546Sopenharmony_ci		<bitfield name="HI_BUSY" pos="0" type="boolean"/>
573bf215546Sopenharmony_ci		<bitfield name="CP_ME_BUSY" pos="1" type="boolean"/>
574bf215546Sopenharmony_ci		<bitfield name="CP_PFP_BUSY" pos="2" type="boolean"/>
575bf215546Sopenharmony_ci		<bitfield name="CP_NRT_BUSY" pos="14" type="boolean"/>
576bf215546Sopenharmony_ci		<bitfield name="VBIF_BUSY" pos="15" type="boolean"/>
577bf215546Sopenharmony_ci		<bitfield name="TSE_BUSY" pos="16" type="boolean"/>
578bf215546Sopenharmony_ci		<bitfield name="RAS_BUSY" pos="17" type="boolean"/>
579bf215546Sopenharmony_ci		<bitfield name="RB_BUSY" pos="18" type="boolean"/>
580bf215546Sopenharmony_ci		<bitfield name="PC_DCALL_BUSY" pos="19" type="boolean"/>
581bf215546Sopenharmony_ci		<bitfield name="PC_VSD_BUSY" pos="20" type="boolean"/>
582bf215546Sopenharmony_ci		<bitfield name="VFD_BUSY" pos="21" type="boolean"/>
583bf215546Sopenharmony_ci		<bitfield name="VPC_BUSY" pos="22" type="boolean"/>
584bf215546Sopenharmony_ci		<bitfield name="UCHE_BUSY" pos="23" type="boolean"/>
585bf215546Sopenharmony_ci		<bitfield name="SP_BUSY" pos="24" type="boolean"/>
586bf215546Sopenharmony_ci		<bitfield name="TPL1_BUSY" pos="25" type="boolean"/>
587bf215546Sopenharmony_ci		<bitfield name="MARB_BUSY" pos="26" type="boolean"/>
588bf215546Sopenharmony_ci		<bitfield name="VSC_BUSY" pos="27" type="boolean"/>
589bf215546Sopenharmony_ci		<bitfield name="ARB_BUSY" pos="28" type="boolean"/>
590bf215546Sopenharmony_ci		<bitfield name="HLSQ_BUSY" pos="29" type="boolean"/>
591bf215546Sopenharmony_ci		<bitfield name="GPU_BUSY_NOHC" pos="30" type="boolean"/>
592bf215546Sopenharmony_ci		<bitfield name="GPU_BUSY" pos="31" type="boolean"/>
593bf215546Sopenharmony_ci	</reg32>
594bf215546Sopenharmony_ci	<!-- used in fw CP_WAIT_FOR_IDLE, similar to NQWAIT_UNTIL on a2xx: -->
595bf215546Sopenharmony_ci	<reg32 offset="0x0040" name="RBBM_NQWAIT_UNTIL"/>
596bf215546Sopenharmony_ci	<reg32 offset="0x0033" name="RBBM_WAIT_IDLE_CLOCKS_CTL"/>
597bf215546Sopenharmony_ci	<reg32 offset="0x0050" name="RBBM_INTERFACE_HANG_INT_CTL"/>
598bf215546Sopenharmony_ci	<reg32 offset="0x0051" name="RBBM_INTERFACE_HANG_MASK_CTL0"/>
599bf215546Sopenharmony_ci	<reg32 offset="0x0054" name="RBBM_INTERFACE_HANG_MASK_CTL1"/>
600bf215546Sopenharmony_ci	<reg32 offset="0x0057" name="RBBM_INTERFACE_HANG_MASK_CTL2"/>
601bf215546Sopenharmony_ci	<reg32 offset="0x005a" name="RBBM_INTERFACE_HANG_MASK_CTL3"/>
602bf215546Sopenharmony_ci
603bf215546Sopenharmony_ci	<bitset name="A3XX_INT0">
604bf215546Sopenharmony_ci		<bitfield name="RBBM_GPU_IDLE" pos="0" type="boolean"/>
605bf215546Sopenharmony_ci		<bitfield name="RBBM_AHB_ERROR" pos="1" type="boolean"/>
606bf215546Sopenharmony_ci		<bitfield name="RBBM_REG_TIMEOUT" pos="2" type="boolean"/>
607bf215546Sopenharmony_ci		<bitfield name="RBBM_ME_MS_TIMEOUT" pos="3" type="boolean"/>
608bf215546Sopenharmony_ci		<bitfield name="RBBM_PFP_MS_TIMEOUT" pos="4" type="boolean"/>
609bf215546Sopenharmony_ci		<bitfield name="RBBM_ATB_BUS_OVERFLOW" pos="5" type="boolean"/>
610bf215546Sopenharmony_ci		<bitfield name="VFD_ERROR" pos="6" type="boolean"/>
611bf215546Sopenharmony_ci		<bitfield name="CP_SW_INT" pos="7" type="boolean"/>
612bf215546Sopenharmony_ci		<bitfield name="CP_T0_PACKET_IN_IB" pos="8" type="boolean"/>
613bf215546Sopenharmony_ci		<bitfield name="CP_OPCODE_ERROR" pos="9" type="boolean"/>
614bf215546Sopenharmony_ci		<bitfield name="CP_RESERVED_BIT_ERROR" pos="10" type="boolean"/>
615bf215546Sopenharmony_ci		<bitfield name="CP_HW_FAULT" pos="11" type="boolean"/>
616bf215546Sopenharmony_ci		<bitfield name="CP_DMA" pos="12" type="boolean"/>
617bf215546Sopenharmony_ci		<bitfield name="CP_IB2_INT" pos="13" type="boolean"/>
618bf215546Sopenharmony_ci		<bitfield name="CP_IB1_INT" pos="14" type="boolean"/>
619bf215546Sopenharmony_ci		<bitfield name="CP_RB_INT" pos="15" type="boolean"/>
620bf215546Sopenharmony_ci		<bitfield name="CP_REG_PROTECT_FAULT" pos="16" type="boolean"/>
621bf215546Sopenharmony_ci		<bitfield name="CP_RB_DONE_TS" pos="17" type="boolean"/>
622bf215546Sopenharmony_ci		<bitfield name="CP_VS_DONE_TS" pos="18" type="boolean"/>
623bf215546Sopenharmony_ci		<bitfield name="CP_PS_DONE_TS" pos="19" type="boolean"/>
624bf215546Sopenharmony_ci		<bitfield name="CACHE_FLUSH_TS" pos="20" type="boolean"/>
625bf215546Sopenharmony_ci		<bitfield name="CP_AHB_ERROR_HALT" pos="21" type="boolean"/>
626bf215546Sopenharmony_ci		<bitfield name="MISC_HANG_DETECT" pos="24" type="boolean"/>
627bf215546Sopenharmony_ci		<bitfield name="UCHE_OOB_ACCESS" pos="25" type="boolean"/>
628bf215546Sopenharmony_ci	</bitset>
629bf215546Sopenharmony_ci
630bf215546Sopenharmony_ci
631bf215546Sopenharmony_ci	<!--
632bf215546Sopenharmony_ci		set in pm4 fw INVALID_JUMP_TABLE_ENTRY and CP_INTERRUPT (compare
633bf215546Sopenharmony_ci		to CP_INT_STATUS in a2xx firmware), so this seems to be the a3xx
634bf215546Sopenharmony_ci		way for fw to raise and irq:
635bf215546Sopenharmony_ci	 -->
636bf215546Sopenharmony_ci	<reg32 offset="0x0060" name="RBBM_INT_SET_CMD" type="A3XX_INT0"/>
637bf215546Sopenharmony_ci	<reg32 offset="0x0061" name="RBBM_INT_CLEAR_CMD" type="A3XX_INT0"/>
638bf215546Sopenharmony_ci	<reg32 offset="0x0063" name="RBBM_INT_0_MASK" type="A3XX_INT0"/>
639bf215546Sopenharmony_ci	<reg32 offset="0x0064" name="RBBM_INT_0_STATUS" type="A3XX_INT0"/>
640bf215546Sopenharmony_ci	<reg32 offset="0x0080" name="RBBM_PERFCTR_CTL">
641bf215546Sopenharmony_ci		<bitfield name="ENABLE" pos="0" type="boolean"/>
642bf215546Sopenharmony_ci	</reg32>
643bf215546Sopenharmony_ci	<reg32 offset="0x0081" name="RBBM_PERFCTR_LOAD_CMD0"/>
644bf215546Sopenharmony_ci	<reg32 offset="0x0082" name="RBBM_PERFCTR_LOAD_CMD1"/>
645bf215546Sopenharmony_ci	<reg32 offset="0x0084" name="RBBM_PERFCTR_LOAD_VALUE_LO"/>
646bf215546Sopenharmony_ci	<reg32 offset="0x0085" name="RBBM_PERFCTR_LOAD_VALUE_HI"/>
647bf215546Sopenharmony_ci	<reg32 offset="0x0086" name="RBBM_PERFCOUNTER0_SELECT" type="a3xx_rbbm_perfcounter_select"/>
648bf215546Sopenharmony_ci	<reg32 offset="0x0087" name="RBBM_PERFCOUNTER1_SELECT" type="a3xx_rbbm_perfcounter_select"/>
649bf215546Sopenharmony_ci	<reg32 offset="0x0088" name="RBBM_GPU_BUSY_MASKED"/>
650bf215546Sopenharmony_ci	<reg32 offset="0x0090" name="RBBM_PERFCTR_CP_0_LO"/>
651bf215546Sopenharmony_ci	<reg32 offset="0x0091" name="RBBM_PERFCTR_CP_0_HI"/>
652bf215546Sopenharmony_ci	<reg32 offset="0x0092" name="RBBM_PERFCTR_RBBM_0_LO"/>
653bf215546Sopenharmony_ci	<reg32 offset="0x0093" name="RBBM_PERFCTR_RBBM_0_HI"/>
654bf215546Sopenharmony_ci	<reg32 offset="0x0094" name="RBBM_PERFCTR_RBBM_1_LO"/>
655bf215546Sopenharmony_ci	<reg32 offset="0x0095" name="RBBM_PERFCTR_RBBM_1_HI"/>
656bf215546Sopenharmony_ci	<reg32 offset="0x0096" name="RBBM_PERFCTR_PC_0_LO"/>
657bf215546Sopenharmony_ci	<reg32 offset="0x0097" name="RBBM_PERFCTR_PC_0_HI"/>
658bf215546Sopenharmony_ci	<reg32 offset="0x0098" name="RBBM_PERFCTR_PC_1_LO"/>
659bf215546Sopenharmony_ci	<reg32 offset="0x0099" name="RBBM_PERFCTR_PC_1_HI"/>
660bf215546Sopenharmony_ci	<reg32 offset="0x009a" name="RBBM_PERFCTR_PC_2_LO"/>
661bf215546Sopenharmony_ci	<reg32 offset="0x009b" name="RBBM_PERFCTR_PC_2_HI"/>
662bf215546Sopenharmony_ci	<reg32 offset="0x009c" name="RBBM_PERFCTR_PC_3_LO"/>
663bf215546Sopenharmony_ci	<reg32 offset="0x009d" name="RBBM_PERFCTR_PC_3_HI"/>
664bf215546Sopenharmony_ci	<reg32 offset="0x009e" name="RBBM_PERFCTR_VFD_0_LO"/>
665bf215546Sopenharmony_ci	<reg32 offset="0x009f" name="RBBM_PERFCTR_VFD_0_HI"/>
666bf215546Sopenharmony_ci	<reg32 offset="0x00a0" name="RBBM_PERFCTR_VFD_1_LO"/>
667bf215546Sopenharmony_ci	<reg32 offset="0x00a1" name="RBBM_PERFCTR_VFD_1_HI"/>
668bf215546Sopenharmony_ci	<reg32 offset="0x00a2" name="RBBM_PERFCTR_HLSQ_0_LO"/>
669bf215546Sopenharmony_ci	<reg32 offset="0x00a3" name="RBBM_PERFCTR_HLSQ_0_HI"/>
670bf215546Sopenharmony_ci	<reg32 offset="0x00a4" name="RBBM_PERFCTR_HLSQ_1_LO"/>
671bf215546Sopenharmony_ci	<reg32 offset="0x00a5" name="RBBM_PERFCTR_HLSQ_1_HI"/>
672bf215546Sopenharmony_ci	<reg32 offset="0x00a6" name="RBBM_PERFCTR_HLSQ_2_LO"/>
673bf215546Sopenharmony_ci	<reg32 offset="0x00a7" name="RBBM_PERFCTR_HLSQ_2_HI"/>
674bf215546Sopenharmony_ci	<reg32 offset="0x00a8" name="RBBM_PERFCTR_HLSQ_3_LO"/>
675bf215546Sopenharmony_ci	<reg32 offset="0x00a9" name="RBBM_PERFCTR_HLSQ_3_HI"/>
676bf215546Sopenharmony_ci	<reg32 offset="0x00aa" name="RBBM_PERFCTR_HLSQ_4_LO"/>
677bf215546Sopenharmony_ci	<reg32 offset="0x00ab" name="RBBM_PERFCTR_HLSQ_4_HI"/>
678bf215546Sopenharmony_ci	<reg32 offset="0x00ac" name="RBBM_PERFCTR_HLSQ_5_LO"/>
679bf215546Sopenharmony_ci	<reg32 offset="0x00ad" name="RBBM_PERFCTR_HLSQ_5_HI"/>
680bf215546Sopenharmony_ci	<reg32 offset="0x00ae" name="RBBM_PERFCTR_VPC_0_LO"/>
681bf215546Sopenharmony_ci	<reg32 offset="0x00af" name="RBBM_PERFCTR_VPC_0_HI"/>
682bf215546Sopenharmony_ci	<reg32 offset="0x00b0" name="RBBM_PERFCTR_VPC_1_LO"/>
683bf215546Sopenharmony_ci	<reg32 offset="0x00b1" name="RBBM_PERFCTR_VPC_1_HI"/>
684bf215546Sopenharmony_ci	<reg32 offset="0x00b2" name="RBBM_PERFCTR_TSE_0_LO"/>
685bf215546Sopenharmony_ci	<reg32 offset="0x00b3" name="RBBM_PERFCTR_TSE_0_HI"/>
686bf215546Sopenharmony_ci	<reg32 offset="0x00b4" name="RBBM_PERFCTR_TSE_1_LO"/>
687bf215546Sopenharmony_ci	<reg32 offset="0x00b5" name="RBBM_PERFCTR_TSE_1_HI"/>
688bf215546Sopenharmony_ci	<reg32 offset="0x00b6" name="RBBM_PERFCTR_RAS_0_LO"/>
689bf215546Sopenharmony_ci	<reg32 offset="0x00b7" name="RBBM_PERFCTR_RAS_0_HI"/>
690bf215546Sopenharmony_ci	<reg32 offset="0x00b8" name="RBBM_PERFCTR_RAS_1_LO"/>
691bf215546Sopenharmony_ci	<reg32 offset="0x00b9" name="RBBM_PERFCTR_RAS_1_HI"/>
692bf215546Sopenharmony_ci	<reg32 offset="0x00ba" name="RBBM_PERFCTR_UCHE_0_LO"/>
693bf215546Sopenharmony_ci	<reg32 offset="0x00bb" name="RBBM_PERFCTR_UCHE_0_HI"/>
694bf215546Sopenharmony_ci	<reg32 offset="0x00bc" name="RBBM_PERFCTR_UCHE_1_LO"/>
695bf215546Sopenharmony_ci	<reg32 offset="0x00bd" name="RBBM_PERFCTR_UCHE_1_HI"/>
696bf215546Sopenharmony_ci	<reg32 offset="0x00be" name="RBBM_PERFCTR_UCHE_2_LO"/>
697bf215546Sopenharmony_ci	<reg32 offset="0x00bf" name="RBBM_PERFCTR_UCHE_2_HI"/>
698bf215546Sopenharmony_ci	<reg32 offset="0x00c0" name="RBBM_PERFCTR_UCHE_3_LO"/>
699bf215546Sopenharmony_ci	<reg32 offset="0x00c1" name="RBBM_PERFCTR_UCHE_3_HI"/>
700bf215546Sopenharmony_ci	<reg32 offset="0x00c2" name="RBBM_PERFCTR_UCHE_4_LO"/>
701bf215546Sopenharmony_ci	<reg32 offset="0x00c3" name="RBBM_PERFCTR_UCHE_4_HI"/>
702bf215546Sopenharmony_ci	<reg32 offset="0x00c4" name="RBBM_PERFCTR_UCHE_5_LO"/>
703bf215546Sopenharmony_ci	<reg32 offset="0x00c5" name="RBBM_PERFCTR_UCHE_5_HI"/>
704bf215546Sopenharmony_ci	<reg32 offset="0x00c6" name="RBBM_PERFCTR_TP_0_LO"/>
705bf215546Sopenharmony_ci	<reg32 offset="0x00c7" name="RBBM_PERFCTR_TP_0_HI"/>
706bf215546Sopenharmony_ci	<reg32 offset="0x00c8" name="RBBM_PERFCTR_TP_1_LO"/>
707bf215546Sopenharmony_ci	<reg32 offset="0x00c9" name="RBBM_PERFCTR_TP_1_HI"/>
708bf215546Sopenharmony_ci	<reg32 offset="0x00ca" name="RBBM_PERFCTR_TP_2_LO"/>
709bf215546Sopenharmony_ci	<reg32 offset="0x00cb" name="RBBM_PERFCTR_TP_2_HI"/>
710bf215546Sopenharmony_ci	<reg32 offset="0x00cc" name="RBBM_PERFCTR_TP_3_LO"/>
711bf215546Sopenharmony_ci	<reg32 offset="0x00cd" name="RBBM_PERFCTR_TP_3_HI"/>
712bf215546Sopenharmony_ci	<reg32 offset="0x00ce" name="RBBM_PERFCTR_TP_4_LO"/>
713bf215546Sopenharmony_ci	<reg32 offset="0x00cf" name="RBBM_PERFCTR_TP_4_HI"/>
714bf215546Sopenharmony_ci	<reg32 offset="0x00d0" name="RBBM_PERFCTR_TP_5_LO"/>
715bf215546Sopenharmony_ci	<reg32 offset="0x00d1" name="RBBM_PERFCTR_TP_5_HI"/>
716bf215546Sopenharmony_ci	<reg32 offset="0x00d2" name="RBBM_PERFCTR_SP_0_LO"/>
717bf215546Sopenharmony_ci	<reg32 offset="0x00d3" name="RBBM_PERFCTR_SP_0_HI"/>
718bf215546Sopenharmony_ci	<reg32 offset="0x00d4" name="RBBM_PERFCTR_SP_1_LO"/>
719bf215546Sopenharmony_ci	<reg32 offset="0x00d5" name="RBBM_PERFCTR_SP_1_HI"/>
720bf215546Sopenharmony_ci	<reg32 offset="0x00d6" name="RBBM_PERFCTR_SP_2_LO"/>
721bf215546Sopenharmony_ci	<reg32 offset="0x00d7" name="RBBM_PERFCTR_SP_2_HI"/>
722bf215546Sopenharmony_ci	<reg32 offset="0x00d8" name="RBBM_PERFCTR_SP_3_LO"/>
723bf215546Sopenharmony_ci	<reg32 offset="0x00d9" name="RBBM_PERFCTR_SP_3_HI"/>
724bf215546Sopenharmony_ci	<reg32 offset="0x00da" name="RBBM_PERFCTR_SP_4_LO"/>
725bf215546Sopenharmony_ci	<reg32 offset="0x00db" name="RBBM_PERFCTR_SP_4_HI"/>
726bf215546Sopenharmony_ci	<reg32 offset="0x00dc" name="RBBM_PERFCTR_SP_5_LO"/>
727bf215546Sopenharmony_ci	<reg32 offset="0x00dd" name="RBBM_PERFCTR_SP_5_HI"/>
728bf215546Sopenharmony_ci	<reg32 offset="0x00de" name="RBBM_PERFCTR_SP_6_LO"/>
729bf215546Sopenharmony_ci	<reg32 offset="0x00df" name="RBBM_PERFCTR_SP_6_HI"/>
730bf215546Sopenharmony_ci	<reg32 offset="0x00e0" name="RBBM_PERFCTR_SP_7_LO"/>
731bf215546Sopenharmony_ci	<reg32 offset="0x00e1" name="RBBM_PERFCTR_SP_7_HI"/>
732bf215546Sopenharmony_ci	<reg32 offset="0x00e2" name="RBBM_PERFCTR_RB_0_LO"/>
733bf215546Sopenharmony_ci	<reg32 offset="0x00e3" name="RBBM_PERFCTR_RB_0_HI"/>
734bf215546Sopenharmony_ci	<reg32 offset="0x00e4" name="RBBM_PERFCTR_RB_1_LO"/>
735bf215546Sopenharmony_ci	<reg32 offset="0x00e5" name="RBBM_PERFCTR_RB_1_HI"/>
736bf215546Sopenharmony_ci	<reg32 offset="0x00ea" name="RBBM_PERFCTR_PWR_0_LO"/>
737bf215546Sopenharmony_ci	<reg32 offset="0x00eb" name="RBBM_PERFCTR_PWR_0_HI"/>
738bf215546Sopenharmony_ci	<reg32 offset="0x00ec" name="RBBM_PERFCTR_PWR_1_LO"/>
739bf215546Sopenharmony_ci	<reg32 offset="0x00ed" name="RBBM_PERFCTR_PWR_1_HI"/>
740bf215546Sopenharmony_ci	<reg32 offset="0x0100" name="RBBM_RBBM_CTL"/>
741bf215546Sopenharmony_ci	<reg32 offset="0x0111" name="RBBM_DEBUG_BUS_CTL"/>
742bf215546Sopenharmony_ci	<reg32 offset="0x0112" name="RBBM_DEBUG_BUS_DATA_STATUS"/>
743bf215546Sopenharmony_ci
744bf215546Sopenharmony_ci	<!-- CP registers -->
745bf215546Sopenharmony_ci	<reg32 offset="0x01c9" name="CP_PFP_UCODE_ADDR"/>
746bf215546Sopenharmony_ci	<reg32 offset="0x01ca" name="CP_PFP_UCODE_DATA"/>
747bf215546Sopenharmony_ci	<reg32 offset="0x01cc" name="CP_ROQ_ADDR"/>
748bf215546Sopenharmony_ci	<reg32 offset="0x01cd" name="CP_ROQ_DATA"/>
749bf215546Sopenharmony_ci	<reg32 offset="0x01d1" name="CP_MERCIU_ADDR"/>
750bf215546Sopenharmony_ci	<reg32 offset="0x01d2" name="CP_MERCIU_DATA"/>
751bf215546Sopenharmony_ci	<reg32 offset="0x01d3" name="CP_MERCIU_DATA2"/>
752bf215546Sopenharmony_ci	<!-- see a3xx_snapshot_cp_meq().. looks like the way to dump queue between pfp and pm4 -->
753bf215546Sopenharmony_ci	<reg32 offset="0x01da" name="CP_MEQ_ADDR"/>
754bf215546Sopenharmony_ci	<reg32 offset="0x01db" name="CP_MEQ_DATA"/>
755bf215546Sopenharmony_ci	<reg32 offset="0x01f5" name="CP_WFI_PEND_CTR"/>
756bf215546Sopenharmony_ci	<reg32 offset="0x039d" name="RBBM_PM_OVERRIDE2"/>
757bf215546Sopenharmony_ci
758bf215546Sopenharmony_ci	<reg32 offset="0x0445" name="CP_PERFCOUNTER_SELECT" type="a3xx_cp_perfcounter_select"/>
759bf215546Sopenharmony_ci	<reg32 offset="0x045c" name="CP_HW_FAULT"/>
760bf215546Sopenharmony_ci	<reg32 offset="0x045e" name="CP_PROTECT_CTRL"/>
761bf215546Sopenharmony_ci	<reg32 offset="0x045f" name="CP_PROTECT_STATUS"/>
762bf215546Sopenharmony_ci	<array offset="0x0460" name="CP_PROTECT" stride="1" length="16">
763bf215546Sopenharmony_ci		<reg32 offset="0x0" name="REG"/>
764bf215546Sopenharmony_ci	</array>
765bf215546Sopenharmony_ci	<reg32 offset="0x054d" name="CP_AHB_FAULT"/>
766bf215546Sopenharmony_ci
767bf215546Sopenharmony_ci	<reg32 offset="0x0d00" name="SQ_GPR_MANAGEMENT"/>
768bf215546Sopenharmony_ci	<reg32 offset="0x0d02" name="SQ_INST_STORE_MANAGMENT"/>
769bf215546Sopenharmony_ci	<reg32 offset="0x0e1e" name="TP0_CHICKEN"/>
770bf215546Sopenharmony_ci
771bf215546Sopenharmony_ci	<!-- these I guess or either SP or HLSQ since related to shader core setup: -->
772bf215546Sopenharmony_ci	<reg32 offset="0x0e22" name="SP_GLOBAL_MEM_SIZE" type="uint">
773bf215546Sopenharmony_ci		<doc>
774bf215546Sopenharmony_ci			The pair of MEM_SIZE/ADDR registers get programmed
775bf215546Sopenharmony_ci			in sequence with the size/addr of each buffer.
776bf215546Sopenharmony_ci		</doc>
777bf215546Sopenharmony_ci	</reg32>
778bf215546Sopenharmony_ci	<reg32 offset="0x0e23" name="SP_GLOBAL_MEM_ADDR"/>
779bf215546Sopenharmony_ci
780bf215546Sopenharmony_ci	<!-- GRAS registers -->
781bf215546Sopenharmony_ci	<reg32 offset="0x2040" name="GRAS_CL_CLIP_CNTL">
782bf215546Sopenharmony_ci		<bitfield name="IJ_PERSP_CENTER" pos="12" type="boolean"/>
783bf215546Sopenharmony_ci		<bitfield name="IJ_NON_PERSP_CENTER" pos="13" type="boolean"/>
784bf215546Sopenharmony_ci		<bitfield name="IJ_PERSP_CENTROID" pos="14" type="boolean"/>
785bf215546Sopenharmony_ci		<bitfield name="IJ_NON_PERSP_CENTROID" pos="15" type="boolean"/>
786bf215546Sopenharmony_ci		<bitfield name="CLIP_DISABLE" pos="16" type="boolean"/>
787bf215546Sopenharmony_ci		<bitfield name="ZFAR_CLIP_DISABLE" pos="17" type="boolean"/>
788bf215546Sopenharmony_ci		<bitfield name="VP_CLIP_CODE_IGNORE" pos="19" type="boolean"/>
789bf215546Sopenharmony_ci		<bitfield name="VP_XFORM_DISABLE" pos="20" type="boolean"/>
790bf215546Sopenharmony_ci		<bitfield name="PERSP_DIVISION_DISABLE" pos="21" type="boolean"/>
791bf215546Sopenharmony_ci		<bitfield name="ZERO_GB_SCALE_Z" pos="22" type="boolean">
792bf215546Sopenharmony_ci			<doc>aka clip_halfz</doc>
793bf215546Sopenharmony_ci		</bitfield>
794bf215546Sopenharmony_ci		<!-- set when gl_FragCoord.z is enabled in frag shader: -->
795bf215546Sopenharmony_ci		<bitfield name="ZCOORD" pos="23" type="boolean"/>
796bf215546Sopenharmony_ci		<bitfield name="WCOORD" pos="24" type="boolean"/>
797bf215546Sopenharmony_ci		<!-- set when frag shader writes z (so early z test disabled: -->
798bf215546Sopenharmony_ci		<bitfield name="ZCLIP_DISABLE" pos="25" type="boolean"/>
799bf215546Sopenharmony_ci		<bitfield name="NUM_USER_CLIP_PLANES" low="26" high="28" type="uint"/>
800bf215546Sopenharmony_ci	</reg32>
801bf215546Sopenharmony_ci	<reg32 offset="0x2044" name="GRAS_CL_GB_CLIP_ADJ">
802bf215546Sopenharmony_ci		<bitfield name="HORZ" low="0" high="9" type="uint"/>
803bf215546Sopenharmony_ci		<bitfield name="VERT" low="10" high="19" type="uint"/>
804bf215546Sopenharmony_ci	</reg32>
805bf215546Sopenharmony_ci	<reg32 offset="0x2048" name="GRAS_CL_VPORT_XOFFSET" type="float"/>
806bf215546Sopenharmony_ci	<reg32 offset="0x2049" name="GRAS_CL_VPORT_XSCALE" type="float"/>
807bf215546Sopenharmony_ci	<reg32 offset="0x204a" name="GRAS_CL_VPORT_YOFFSET" type="float"/>
808bf215546Sopenharmony_ci	<reg32 offset="0x204b" name="GRAS_CL_VPORT_YSCALE" type="float"/>
809bf215546Sopenharmony_ci	<reg32 offset="0x204c" name="GRAS_CL_VPORT_ZOFFSET" type="float"/>
810bf215546Sopenharmony_ci	<reg32 offset="0x204d" name="GRAS_CL_VPORT_ZSCALE" type="float"/>
811bf215546Sopenharmony_ci	<reg32 offset="0x2068" name="GRAS_SU_POINT_MINMAX">
812bf215546Sopenharmony_ci		<bitfield name="MIN" low="0" high="15" type="ufixed" radix="4"/>
813bf215546Sopenharmony_ci		<bitfield name="MAX" low="16" high="31" type="ufixed" radix="4"/>
814bf215546Sopenharmony_ci	</reg32>
815bf215546Sopenharmony_ci	<reg32 offset="0x2069" name="GRAS_SU_POINT_SIZE" type="fixed" radix="4"/>
816bf215546Sopenharmony_ci	<reg32 offset="0x206c" name="GRAS_SU_POLY_OFFSET_SCALE">
817bf215546Sopenharmony_ci		<bitfield name="VAL" low="0" high="23" type="fixed" radix="20"/>
818bf215546Sopenharmony_ci		<doc>range of -8.0 to 8.0</doc>
819bf215546Sopenharmony_ci	</reg32>
820bf215546Sopenharmony_ci	<reg32 offset="0x206d" name="GRAS_SU_POLY_OFFSET_OFFSET" radix="6" type="fixed">
821bf215546Sopenharmony_ci		<doc>range of -512.0 to 512.0</doc>
822bf215546Sopenharmony_ci	</reg32>
823bf215546Sopenharmony_ci	<reg32 offset="0x2070" name="GRAS_SU_MODE_CONTROL">
824bf215546Sopenharmony_ci		<bitfield name="CULL_FRONT" pos="0" type="boolean"/>
825bf215546Sopenharmony_ci		<bitfield name="CULL_BACK" pos="1" type="boolean"/>
826bf215546Sopenharmony_ci		<bitfield name="FRONT_CW" pos="2" type="boolean"/>
827bf215546Sopenharmony_ci		<bitfield name="LINEHALFWIDTH" low="3" high="10" radix="2" type="fixed"/>
828bf215546Sopenharmony_ci		<bitfield name="POLY_OFFSET" pos="11" type="boolean"/>
829bf215546Sopenharmony_ci	</reg32>
830bf215546Sopenharmony_ci	<reg32 offset="0x2072" name="GRAS_SC_CONTROL">
831bf215546Sopenharmony_ci		<!-- complete wild-ass-guess for sizes of these bitfields.. -->
832bf215546Sopenharmony_ci		<bitfield name="RENDER_MODE" low="4" high="7" type="a3xx_render_mode"/>
833bf215546Sopenharmony_ci		<bitfield name="MSAA_SAMPLES" low="8" high="11" type="a3xx_msaa_samples"/>
834bf215546Sopenharmony_ci		<bitfield name="RASTER_MODE" low="12" high="15"/>
835bf215546Sopenharmony_ci	</reg32>
836bf215546Sopenharmony_ci
837bf215546Sopenharmony_ci	<reg32 offset="0x2074" name="GRAS_SC_SCREEN_SCISSOR_TL" type="adreno_reg_xy"/>
838bf215546Sopenharmony_ci	<reg32 offset="0x2075" name="GRAS_SC_SCREEN_SCISSOR_BR" type="adreno_reg_xy"/>
839bf215546Sopenharmony_ci	<reg32 offset="0x2079" name="GRAS_SC_WINDOW_SCISSOR_TL" type="adreno_reg_xy"/>
840bf215546Sopenharmony_ci	<reg32 offset="0x207a" name="GRAS_SC_WINDOW_SCISSOR_BR" type="adreno_reg_xy"/>
841bf215546Sopenharmony_ci
842bf215546Sopenharmony_ci	<!-- RB registers -->
843bf215546Sopenharmony_ci	<reg32 offset="0x20c0" name="RB_MODE_CONTROL">
844bf215546Sopenharmony_ci		<!-- guess on the # of bits here.. -->
845bf215546Sopenharmony_ci		<bitfield name="GMEM_BYPASS" pos="7" type="boolean"/>
846bf215546Sopenharmony_ci		<doc>
847bf215546Sopenharmony_ci			RENDER_MODE is RB_RESOLVE_PASS for gmem->mem, otherwise RB_RENDER_PASS
848bf215546Sopenharmony_ci		</doc>
849bf215546Sopenharmony_ci		<bitfield name="RENDER_MODE" low="8" high="10" type="a3xx_render_mode"/>
850bf215546Sopenharmony_ci		<bitfield name="MRT" low="12" high="13" type="uint">
851bf215546Sopenharmony_ci			<doc>render targets - 1</doc>
852bf215546Sopenharmony_ci		</bitfield>
853bf215546Sopenharmony_ci		<bitfield name="MARB_CACHE_SPLIT_MODE" pos="15" type="boolean"/>
854bf215546Sopenharmony_ci		<bitfield name="PACKER_TIMER_ENABLE" pos="16" type="boolean"/>
855bf215546Sopenharmony_ci	</reg32>
856bf215546Sopenharmony_ci	<reg32 offset="0x20c1" name="RB_RENDER_CONTROL">
857bf215546Sopenharmony_ci		<bitfield name="DUAL_COLOR_IN_ENABLE" pos="0" type="boolean"/>
858bf215546Sopenharmony_ci		<bitfield name="YUV_IN_ENABLE" pos="1" type="boolean"/>
859bf215546Sopenharmony_ci		<bitfield name="COV_VALUE_INPUT_ENABLE" pos="2" type="boolean"/>
860bf215546Sopenharmony_ci		<!-- set when gl_FrontFacing is accessed in frag shader: -->
861bf215546Sopenharmony_ci		<bitfield name="FACENESS" pos="3" type="boolean"/>
862bf215546Sopenharmony_ci		<bitfield name="BIN_WIDTH" low="4" high="11" shr="5" type="uint"/>
863bf215546Sopenharmony_ci		<bitfield name="DISABLE_COLOR_PIPE" pos="12" type="boolean"/>
864bf215546Sopenharmony_ci		<!--
865bf215546Sopenharmony_ci			ENABLE_GMEM not set on mem2gmem..  so possibly it is actually
866bf215546Sopenharmony_ci			controlling blend or readback from GMEM??
867bf215546Sopenharmony_ci		 -->
868bf215546Sopenharmony_ci		<bitfield name="ENABLE_GMEM" pos="13" type="boolean"/>
869bf215546Sopenharmony_ci		<bitfield name="COORD_MASK" low="14" high="17" type="hex"/>
870bf215546Sopenharmony_ci		<bitfield name="I_CLAMP_ENABLE" pos="19" type="boolean"/>
871bf215546Sopenharmony_ci		<bitfield name="COV_VALUE_OUTPUT_ENABLE" pos="20" type="boolean"/>
872bf215546Sopenharmony_ci		<bitfield name="ALPHA_TEST" pos="22" type="boolean"/>
873bf215546Sopenharmony_ci		<bitfield name="ALPHA_TEST_FUNC" low="24" high="26" type="adreno_compare_func"/>
874bf215546Sopenharmony_ci		<bitfield name="ALPHA_TO_COVERAGE" pos="30" type="boolean"/>
875bf215546Sopenharmony_ci		<bitfield name="ALPHA_TO_ONE" pos="31" type="boolean"/>
876bf215546Sopenharmony_ci	</reg32>
877bf215546Sopenharmony_ci	<reg32 offset="0x20c2" name="RB_MSAA_CONTROL">
878bf215546Sopenharmony_ci		<bitfield name="DISABLE" pos="10" type="boolean"/>
879bf215546Sopenharmony_ci		<bitfield name="SAMPLES" low="12" high="15" type="a3xx_msaa_samples"/>
880bf215546Sopenharmony_ci		<bitfield name="SAMPLE_MASK" low="16" high="31" type="hex"/>
881bf215546Sopenharmony_ci	</reg32>
882bf215546Sopenharmony_ci	<reg32 offset="0x20c3" name="RB_ALPHA_REF">
883bf215546Sopenharmony_ci		<bitfield name="UINT" low="8" high="15" type="hex"/>
884bf215546Sopenharmony_ci		<bitfield name="FLOAT" low="16" high="31" type="float"/>
885bf215546Sopenharmony_ci	</reg32>
886bf215546Sopenharmony_ci	<array offset="0x20c4" name="RB_MRT" stride="4" length="4">
887bf215546Sopenharmony_ci		<reg32 offset="0x0" name="CONTROL">
888bf215546Sopenharmony_ci			<bitfield name="READ_DEST_ENABLE" pos="3" type="boolean"/>
889bf215546Sopenharmony_ci			<!-- both these bits seem to get set when enabling GL_BLEND.. -->
890bf215546Sopenharmony_ci			<bitfield name="BLEND" pos="4" type="boolean"/>
891bf215546Sopenharmony_ci			<bitfield name="BLEND2" pos="5" type="boolean"/>
892bf215546Sopenharmony_ci			<bitfield name="ROP_CODE" low="8" high="11" type="a3xx_rop_code"/>
893bf215546Sopenharmony_ci			<bitfield name="DITHER_MODE" low="12" high="13" type="adreno_rb_dither_mode"/>
894bf215546Sopenharmony_ci			<bitfield name="COMPONENT_ENABLE" low="24" high="27" type="hex"/>
895bf215546Sopenharmony_ci		</reg32>
896bf215546Sopenharmony_ci		<reg32 offset="0x1" name="BUF_INFO">
897bf215546Sopenharmony_ci			<bitfield name="COLOR_FORMAT" low="0" high="5" type="a3xx_color_fmt"/>
898bf215546Sopenharmony_ci			<bitfield name="COLOR_TILE_MODE" low="6" high="7" type="a3xx_tile_mode"/>
899bf215546Sopenharmony_ci			<bitfield name="COLOR_SWAP" low="10" high="11" type="a3xx_color_swap"/>
900bf215546Sopenharmony_ci			<bitfield name="COLOR_SRGB" pos="14" type="boolean"/>
901bf215546Sopenharmony_ci			<doc>
902bf215546Sopenharmony_ci				Pitch (actually, appears to be pitch in bytes, so really is a stride)
903bf215546Sopenharmony_ci				in GMEM, so pitch of the current tile.
904bf215546Sopenharmony_ci			</doc>
905bf215546Sopenharmony_ci			<bitfield name="COLOR_BUF_PITCH" low="17" high="31" shr="5" type="uint"/>
906bf215546Sopenharmony_ci		</reg32>
907bf215546Sopenharmony_ci		<reg32 offset="0x2" name="BUF_BASE">
908bf215546Sopenharmony_ci			<doc>offset into GMEM (or system memory address in bypass mode)</doc>
909bf215546Sopenharmony_ci			<bitfield name="COLOR_BUF_BASE" low="4" high="31" shr="5" type="hex"/>
910bf215546Sopenharmony_ci		</reg32>
911bf215546Sopenharmony_ci		<reg32 offset="0x3" name="BLEND_CONTROL">
912bf215546Sopenharmony_ci			<bitfield name="RGB_SRC_FACTOR" low="0" high="4" type="adreno_rb_blend_factor"/>
913bf215546Sopenharmony_ci			<bitfield name="RGB_BLEND_OPCODE" low="5" high="7" type="a3xx_rb_blend_opcode"/>
914bf215546Sopenharmony_ci			<bitfield name="RGB_DEST_FACTOR" low="8" high="12" type="adreno_rb_blend_factor"/>
915bf215546Sopenharmony_ci			<bitfield name="ALPHA_SRC_FACTOR" low="16" high="20" type="adreno_rb_blend_factor"/>
916bf215546Sopenharmony_ci			<bitfield name="ALPHA_BLEND_OPCODE" low="21" high="23" type="a3xx_rb_blend_opcode"/>
917bf215546Sopenharmony_ci			<bitfield name="ALPHA_DEST_FACTOR" low="24" high="28" type="adreno_rb_blend_factor"/>
918bf215546Sopenharmony_ci			<bitfield name="CLAMP_ENABLE" pos="29" type="boolean"/>
919bf215546Sopenharmony_ci		</reg32>
920bf215546Sopenharmony_ci	</array>
921bf215546Sopenharmony_ci
922bf215546Sopenharmony_ci	<reg32 offset="0x20e4" name="RB_BLEND_RED">
923bf215546Sopenharmony_ci		<bitfield name="UINT" low="0" high="7" type="hex"/>
924bf215546Sopenharmony_ci		<bitfield name="FLOAT" low="16" high="31" type="float"/>
925bf215546Sopenharmony_ci	</reg32>
926bf215546Sopenharmony_ci	<reg32 offset="0x20e5" name="RB_BLEND_GREEN">
927bf215546Sopenharmony_ci		<bitfield name="UINT" low="0" high="7" type="hex"/>
928bf215546Sopenharmony_ci		<bitfield name="FLOAT" low="16" high="31" type="float"/>
929bf215546Sopenharmony_ci	</reg32>
930bf215546Sopenharmony_ci	<reg32 offset="0x20e6" name="RB_BLEND_BLUE">
931bf215546Sopenharmony_ci		<bitfield name="UINT" low="0" high="7" type="hex"/>
932bf215546Sopenharmony_ci		<bitfield name="FLOAT" low="16" high="31" type="float"/>
933bf215546Sopenharmony_ci	</reg32>
934bf215546Sopenharmony_ci	<reg32 offset="0x20e7" name="RB_BLEND_ALPHA">
935bf215546Sopenharmony_ci		<bitfield name="UINT" low="0" high="7" type="hex"/>
936bf215546Sopenharmony_ci		<bitfield name="FLOAT" low="16" high="31" type="float"/>
937bf215546Sopenharmony_ci	</reg32>
938bf215546Sopenharmony_ci
939bf215546Sopenharmony_ci	<reg32 offset="0x20e8" name="RB_CLEAR_COLOR_DW0"/>
940bf215546Sopenharmony_ci	<reg32 offset="0x20e9" name="RB_CLEAR_COLOR_DW1"/>
941bf215546Sopenharmony_ci	<reg32 offset="0x20ea" name="RB_CLEAR_COLOR_DW2"/>
942bf215546Sopenharmony_ci	<reg32 offset="0x20eb" name="RB_CLEAR_COLOR_DW3"/>
943bf215546Sopenharmony_ci	<reg32 offset="0x20ec" name="RB_COPY_CONTROL">
944bf215546Sopenharmony_ci		<!-- not sure # of bits -->
945bf215546Sopenharmony_ci		<bitfield name="MSAA_RESOLVE" low="0" high="1" type="a3xx_msaa_samples"/>
946bf215546Sopenharmony_ci		<bitfield name="DEPTHCLEAR" pos="3" type="boolean"/>
947bf215546Sopenharmony_ci		<bitfield name="MODE" low="4" high="6" type="adreno_rb_copy_control_mode"/>
948bf215546Sopenharmony_ci		<bitfield name="MSAA_SRGB_DOWNSAMPLE" pos="7" type="boolean"/>
949bf215546Sopenharmony_ci		<bitfield name="FASTCLEAR" low="8" high="11" type="hex"/>
950bf215546Sopenharmony_ci		<bitfield name="DEPTH32_RESOLVE" pos="12" type="boolean"/> <!-- enabled on a Z32F copy -->
951bf215546Sopenharmony_ci		<bitfield name="GMEM_BASE" low="14" high="31" shr="14" type="hex"/>
952bf215546Sopenharmony_ci	</reg32>
953bf215546Sopenharmony_ci	<reg32 offset="0x20ed" name="RB_COPY_DEST_BASE">
954bf215546Sopenharmony_ci		<bitfield name="BASE" low="4" high="31" shr="5" type="hex"/>
955bf215546Sopenharmony_ci	</reg32>
956bf215546Sopenharmony_ci	<reg32 offset="0x20ee" name="RB_COPY_DEST_PITCH">
957bf215546Sopenharmony_ci		<doc>actually, appears to be pitch in bytes, so really is a stride</doc>
958bf215546Sopenharmony_ci		<!-- not actually sure about max pitch... -->
959bf215546Sopenharmony_ci		<bitfield name="PITCH" low="0" high="31" shr="5" type="uint"/>
960bf215546Sopenharmony_ci	</reg32>
961bf215546Sopenharmony_ci	<reg32 offset="0x20ef" name="RB_COPY_DEST_INFO">
962bf215546Sopenharmony_ci		<bitfield name="TILE" low="0" high="1" type="a3xx_tile_mode"/>
963bf215546Sopenharmony_ci		<bitfield name="FORMAT" low="2" high="7" type="a3xx_color_fmt"/>
964bf215546Sopenharmony_ci		<bitfield name="SWAP" low="8" high="9" type="a3xx_color_swap"/>
965bf215546Sopenharmony_ci		<bitfield name="DITHER_MODE" low="10" high="11" type="adreno_rb_dither_mode"/>
966bf215546Sopenharmony_ci		<bitfield name="COMPONENT_ENABLE" low="14" high="17" type="hex"/>
967bf215546Sopenharmony_ci		<bitfield name="ENDIAN" low="18" high="20" type="adreno_rb_surface_endian"/>
968bf215546Sopenharmony_ci	</reg32>
969bf215546Sopenharmony_ci	<reg32 offset="0x2100" name="RB_DEPTH_CONTROL">
970bf215546Sopenharmony_ci		<!--
971bf215546Sopenharmony_ci			guessing that this matches a2xx with the stencil fields
972bf215546Sopenharmony_ci			moved out into RB_STENCIL_CONTROL?
973bf215546Sopenharmony_ci		 -->
974bf215546Sopenharmony_ci		<bitfield name="FRAG_WRITES_Z" pos="0" type="boolean"/>
975bf215546Sopenharmony_ci		<bitfield name="Z_TEST_ENABLE" pos="1" type="boolean"/>
976bf215546Sopenharmony_ci		<bitfield name="Z_WRITE_ENABLE" pos="2" type="boolean"/>
977bf215546Sopenharmony_ci		<bitfield name="EARLY_Z_DISABLE" pos="3" type="boolean"/>
978bf215546Sopenharmony_ci		<bitfield name="ZFUNC" low="4" high="6" type="adreno_compare_func"/>
979bf215546Sopenharmony_ci		<bitfield name="Z_CLAMP_ENABLE" pos="7" type="boolean"/>
980bf215546Sopenharmony_ci		<doc>Z_READ_ENABLE bit is set for zfunc other than GL_ALWAYS or GL_NEVER</doc>
981bf215546Sopenharmony_ci		<bitfield name="Z_READ_ENABLE" pos="31" type="boolean"/>
982bf215546Sopenharmony_ci	</reg32>
983bf215546Sopenharmony_ci	<reg32 offset="0x2101" name="RB_DEPTH_CLEAR">
984bf215546Sopenharmony_ci		<doc>seems to be always set to 0x00000000</doc>
985bf215546Sopenharmony_ci	</reg32>
986bf215546Sopenharmony_ci	<reg32 offset="0x2102" name="RB_DEPTH_INFO">
987bf215546Sopenharmony_ci		<bitfield name="DEPTH_FORMAT" low="0" high="1" type="adreno_rb_depth_format"/>
988bf215546Sopenharmony_ci		<doc>
989bf215546Sopenharmony_ci			DEPTH_BASE is offset in GMEM to depth/stencil buffer, ie
990bf215546Sopenharmony_ci			bin_w * bin_h / 1024 (possible rounded up to multiple of
991bf215546Sopenharmony_ci			something??  ie. 39 becomes 40, 78 becomes 80.. 75 becomes
992bf215546Sopenharmony_ci			80.. so maybe it needs to be multiple of 8??
993bf215546Sopenharmony_ci		</doc>
994bf215546Sopenharmony_ci		<bitfield name="DEPTH_BASE" low="11" high="31" shr="12" type="hex"/>
995bf215546Sopenharmony_ci	</reg32>
996bf215546Sopenharmony_ci	<reg32 offset="0x2103" name="RB_DEPTH_PITCH" shr="3" type="uint">
997bf215546Sopenharmony_ci		<doc>
998bf215546Sopenharmony_ci			Pitch of depth buffer or combined depth+stencil buffer
999bf215546Sopenharmony_ci			in z24s8 cases.
1000bf215546Sopenharmony_ci		</doc>
1001bf215546Sopenharmony_ci	</reg32>
1002bf215546Sopenharmony_ci	<reg32 offset="0x2104" name="RB_STENCIL_CONTROL">
1003bf215546Sopenharmony_ci		<bitfield name="STENCIL_ENABLE" pos="0" type="boolean"/>
1004bf215546Sopenharmony_ci		<bitfield name="STENCIL_ENABLE_BF" pos="1" type="boolean"/>
1005bf215546Sopenharmony_ci		<!--
1006bf215546Sopenharmony_ci			set for stencil operations that require read from stencil
1007bf215546Sopenharmony_ci			buffer, but not for example for stencil clear (which does
1008bf215546Sopenharmony_ci			not require read).. so guessing this is analogous to
1009bf215546Sopenharmony_ci			READ_DEST_ENABLE for color buffer..
1010bf215546Sopenharmony_ci		 -->
1011bf215546Sopenharmony_ci		<bitfield name="STENCIL_READ" pos="2" type="boolean"/>
1012bf215546Sopenharmony_ci		<bitfield name="FUNC" low="8" high="10" type="adreno_compare_func"/>
1013bf215546Sopenharmony_ci		<bitfield name="FAIL" low="11" high="13" type="adreno_stencil_op"/>
1014bf215546Sopenharmony_ci		<bitfield name="ZPASS" low="14" high="16" type="adreno_stencil_op"/>
1015bf215546Sopenharmony_ci		<bitfield name="ZFAIL" low="17" high="19" type="adreno_stencil_op"/>
1016bf215546Sopenharmony_ci		<bitfield name="FUNC_BF" low="20" high="22" type="adreno_compare_func"/>
1017bf215546Sopenharmony_ci		<bitfield name="FAIL_BF" low="23" high="25" type="adreno_stencil_op"/>
1018bf215546Sopenharmony_ci		<bitfield name="ZPASS_BF" low="26" high="28" type="adreno_stencil_op"/>
1019bf215546Sopenharmony_ci		<bitfield name="ZFAIL_BF" low="29" high="31" type="adreno_stencil_op"/>
1020bf215546Sopenharmony_ci	</reg32>
1021bf215546Sopenharmony_ci	<reg32 offset="0x2105" name="RB_STENCIL_CLEAR">
1022bf215546Sopenharmony_ci		<doc>seems to be always set to 0x00000000</doc>
1023bf215546Sopenharmony_ci	</reg32>
1024bf215546Sopenharmony_ci	<reg32 offset="0x2106" name="RB_STENCIL_INFO">
1025bf215546Sopenharmony_ci		<doc>Base address for stencil when not using interleaved depth/stencil</doc>
1026bf215546Sopenharmony_ci		<bitfield name="STENCIL_BASE" low="11" high="31" shr="12" type="hex"/>
1027bf215546Sopenharmony_ci	</reg32>
1028bf215546Sopenharmony_ci	<reg32 offset="0x2107" name="RB_STENCIL_PITCH" shr="3" type="uint">
1029bf215546Sopenharmony_ci		<doc>pitch of stencil buffer when not using interleaved depth/stencil</doc>
1030bf215546Sopenharmony_ci	</reg32>
1031bf215546Sopenharmony_ci	<reg32 offset="0x2108" name="RB_STENCILREFMASK" type="adreno_rb_stencilrefmask"/>
1032bf215546Sopenharmony_ci	<reg32 offset="0x2109" name="RB_STENCILREFMASK_BF" type="adreno_rb_stencilrefmask"/>
1033bf215546Sopenharmony_ci	<!-- VSC == visibility stream c?? -->
1034bf215546Sopenharmony_ci	<reg32 offset="0x210c" name="RB_LRZ_VSC_CONTROL">
1035bf215546Sopenharmony_ci		<doc>seems to be set to 0x00000002 during binning pass</doc>
1036bf215546Sopenharmony_ci		<bitfield name="BINNING_ENABLE" pos="1" type="boolean"/>
1037bf215546Sopenharmony_ci	</reg32>
1038bf215546Sopenharmony_ci	<reg32 offset="0x210e" name="RB_WINDOW_OFFSET">
1039bf215546Sopenharmony_ci		<doc>X/Y offset of current bin</doc>
1040bf215546Sopenharmony_ci		<bitfield name="X" low="0" high="15" type="uint"/>
1041bf215546Sopenharmony_ci		<bitfield name="Y" low="16" high="31" type="uint"/>
1042bf215546Sopenharmony_ci	</reg32>
1043bf215546Sopenharmony_ci	<reg32 offset="0x2110" name="RB_SAMPLE_COUNT_CONTROL">
1044bf215546Sopenharmony_ci		<bitfield name="RESET" pos="0" type="boolean"/>
1045bf215546Sopenharmony_ci		<bitfield name="COPY" pos="1" type="boolean"/>
1046bf215546Sopenharmony_ci	</reg32>
1047bf215546Sopenharmony_ci	<reg32 offset="0x2111" name="RB_SAMPLE_COUNT_ADDR"/>
1048bf215546Sopenharmony_ci	<reg32 offset="0x2114" name="RB_Z_CLAMP_MIN"/>
1049bf215546Sopenharmony_ci	<reg32 offset="0x2115" name="RB_Z_CLAMP_MAX"/>
1050bf215546Sopenharmony_ci
1051bf215546Sopenharmony_ci	<!-- PC registers -->
1052bf215546Sopenharmony_ci	<reg32 offset="0x21e1" name="VGT_BIN_BASE">
1053bf215546Sopenharmony_ci		<doc>
1054bf215546Sopenharmony_ci			seems to be where firmware writes BIN_DATA_ADDR from
1055bf215546Sopenharmony_ci			CP_SET_BIN_DATA packet..  probably should be called
1056bf215546Sopenharmony_ci			PC_BIN_BASE (just using name from yamato for now)
1057bf215546Sopenharmony_ci		</doc>
1058bf215546Sopenharmony_ci	</reg32>
1059bf215546Sopenharmony_ci	<reg32 offset="0x21e2" name="VGT_BIN_SIZE">
1060bf215546Sopenharmony_ci		<doc>probably should be PC_BIN_SIZE</doc>
1061bf215546Sopenharmony_ci	</reg32>
1062bf215546Sopenharmony_ci	<reg32 offset="0x21e4" name="PC_VSTREAM_CONTROL">
1063bf215546Sopenharmony_ci		<doc>SIZE is current pipe width * height (in tiles)</doc>
1064bf215546Sopenharmony_ci		<bitfield name="SIZE" low="16" high="21" type="uint"/>
1065bf215546Sopenharmony_ci		<doc>
1066bf215546Sopenharmony_ci			N is some sort of slot # between 0..(SIZE-1).  In case
1067bf215546Sopenharmony_ci			multiple tiles use same pipe, each tile gets unique slot #
1068bf215546Sopenharmony_ci		</doc>
1069bf215546Sopenharmony_ci		<bitfield name="N" low="22" high="26" type="uint"/>
1070bf215546Sopenharmony_ci	</reg32>
1071bf215546Sopenharmony_ci	<reg32 offset="0x21ea" name="PC_VERTEX_REUSE_BLOCK_CNTL"/>
1072bf215546Sopenharmony_ci	<reg32 offset="0x21ec" name="PC_PRIM_VTX_CNTL">
1073bf215546Sopenharmony_ci		<doc>
1074bf215546Sopenharmony_ci			STRIDE_IN_VPC: ALIGN(next_outloc - 8, 4) / 4
1075bf215546Sopenharmony_ci			(but, in cases where you'd expect 1, the blob driver uses
1076bf215546Sopenharmony_ci			2, so possibly 0 (no varying) or minimum of 2)
1077bf215546Sopenharmony_ci		</doc>
1078bf215546Sopenharmony_ci		<bitfield name="STRIDE_IN_VPC" low="0" high="4" type="uint"/>
1079bf215546Sopenharmony_ci		<bitfield name="POLYMODE_FRONT_PTYPE" low="5" high="7" type="adreno_pa_su_sc_draw"/>
1080bf215546Sopenharmony_ci		<bitfield name="POLYMODE_BACK_PTYPE" low="8" high="10" type="adreno_pa_su_sc_draw"/>
1081bf215546Sopenharmony_ci		<bitfield name="POLYMODE_ENABLE" pos="12" type="boolean"/>
1082bf215546Sopenharmony_ci		<bitfield name="PRIMITIVE_RESTART" pos="20" type="boolean"/>
1083bf215546Sopenharmony_ci		<bitfield name="PROVOKING_VTX_LAST" pos="25" type="boolean"/>
1084bf215546Sopenharmony_ci		<!-- PSIZE bit set if gl_PointSize written: -->
1085bf215546Sopenharmony_ci		<bitfield name="PSIZE" pos="26" type="boolean"/>
1086bf215546Sopenharmony_ci	</reg32>
1087bf215546Sopenharmony_ci	<reg32 offset="0x21ed" name="PC_RESTART_INDEX"/>
1088bf215546Sopenharmony_ci
1089bf215546Sopenharmony_ci	<!-- HLSQ registers -->
1090bf215546Sopenharmony_ci	<bitset name="a3xx_hlsq_vs_fs_control_reg" inline="yes">
1091bf215546Sopenharmony_ci		<bitfield name="CONSTLENGTH" low="0" high="9" type="uint"/>
1092bf215546Sopenharmony_ci		<bitfield name="CONSTSTARTOFFSET" low="12" high="20" type="uint"/>
1093bf215546Sopenharmony_ci		<bitfield name="INSTRLENGTH" low="24" high="31" type="uint"/>
1094bf215546Sopenharmony_ci	</bitset>
1095bf215546Sopenharmony_ci	<bitset name="a3xx_hlsq_const_vs_fs_presv_range_reg" inline="yes">
1096bf215546Sopenharmony_ci		<!-- are these a3xx_regid?? -->
1097bf215546Sopenharmony_ci		<bitfield name="STARTENTRY" low="0" high="8"/>
1098bf215546Sopenharmony_ci		<bitfield name="ENDENTRY" low="16" high="24"/>
1099bf215546Sopenharmony_ci	</bitset>
1100bf215546Sopenharmony_ci
1101bf215546Sopenharmony_ci	<reg32 offset="0x2200" name="HLSQ_CONTROL_0_REG">
1102bf215546Sopenharmony_ci		<bitfield name="FSTHREADSIZE" low="4" high="5" type="a3xx_threadsize"/>
1103bf215546Sopenharmony_ci		<bitfield name="FSSUPERTHREADENABLE" pos="6" type="boolean"/>
1104bf215546Sopenharmony_ci		<bitfield name="COMPUTEMODE" pos="8" type="boolean"/>
1105bf215546Sopenharmony_ci		<bitfield name="SPSHADERRESTART" pos="9" type="boolean"/>
1106bf215546Sopenharmony_ci		<bitfield name="RESERVED2" pos="10" type="boolean"/>
1107bf215546Sopenharmony_ci		<bitfield name="CYCLETIMEOUTLIMITVPC" low="12" high="23" type="uint"/>
1108bf215546Sopenharmony_ci		<bitfield name="FSONLYTEX" pos="25" type="boolean"/>
1109bf215546Sopenharmony_ci		<bitfield name="CHUNKDISABLE" pos="26" type="boolean"/>
1110bf215546Sopenharmony_ci		<bitfield name="CONSTMODE" pos="27" type="uint"/>
1111bf215546Sopenharmony_ci		<bitfield name="LAZYUPDATEDISABLE" pos="28" type="boolean"/>
1112bf215546Sopenharmony_ci		<bitfield name="SPCONSTFULLUPDATE" pos="29" type="boolean"/>
1113bf215546Sopenharmony_ci		<bitfield name="TPFULLUPDATE" pos="30" type="boolean"/>
1114bf215546Sopenharmony_ci		<bitfield name="SINGLECONTEXT" pos="31" type="boolean"/>
1115bf215546Sopenharmony_ci	</reg32>
1116bf215546Sopenharmony_ci	<reg32 offset="0x2201" name="HLSQ_CONTROL_1_REG">
1117bf215546Sopenharmony_ci		<bitfield name="VSTHREADSIZE" low="6" high="7" type="a3xx_threadsize"/>
1118bf215546Sopenharmony_ci		<bitfield name="VSSUPERTHREADENABLE" pos="8" type="boolean"/>
1119bf215546Sopenharmony_ci		<bitfield name="FRAGCOORDXYREGID" low="16" high="23" type="a3xx_regid"/>
1120bf215546Sopenharmony_ci		<bitfield name="FRAGCOORDZWREGID" low="24" high="31" type="a3xx_regid"/>
1121bf215546Sopenharmony_ci	</reg32>
1122bf215546Sopenharmony_ci	<reg32 offset="0x2202" name="HLSQ_CONTROL_2_REG">
1123bf215546Sopenharmony_ci		<bitfield name="FACENESSREGID" low="2" high="9" type="a3xx_regid"/>
1124bf215546Sopenharmony_ci		<bitfield name="COVVALUEREGID" low="18" high="25" type="a3xx_regid"/>
1125bf215546Sopenharmony_ci		<bitfield name="PRIMALLOCTHRESHOLD" low="26" high="31" type="uint"/>
1126bf215546Sopenharmony_ci	</reg32>
1127bf215546Sopenharmony_ci	<reg32 offset="0x2203" name="HLSQ_CONTROL_3_REG">
1128bf215546Sopenharmony_ci		<bitfield name="IJPERSPCENTERREGID" low="0" high="7" type="a3xx_regid"/>
1129bf215546Sopenharmony_ci		<bitfield name="IJNONPERSPCENTERREGID" low="8" high="15" type="a3xx_regid"/>
1130bf215546Sopenharmony_ci		<bitfield name="IJPERSPCENTROIDREGID" low="16" high="23" type="a3xx_regid"/>
1131bf215546Sopenharmony_ci		<bitfield name="IJNONPERSPCENTROIDREGID" low="24" high="31" type="a3xx_regid"/>
1132bf215546Sopenharmony_ci	</reg32>
1133bf215546Sopenharmony_ci	<reg32 offset="0x2204" name="HLSQ_VS_CONTROL_REG" type="a3xx_hlsq_vs_fs_control_reg"/>
1134bf215546Sopenharmony_ci	<reg32 offset="0x2205" name="HLSQ_FS_CONTROL_REG" type="a3xx_hlsq_vs_fs_control_reg"/>
1135bf215546Sopenharmony_ci	<reg32 offset="0x2206" name="HLSQ_CONST_VSPRESV_RANGE_REG" type="a3xx_hlsq_const_vs_fs_presv_range_reg"/>
1136bf215546Sopenharmony_ci	<reg32 offset="0x2207" name="HLSQ_CONST_FSPRESV_RANGE_REG" type="a3xx_hlsq_const_vs_fs_presv_range_reg"/>
1137bf215546Sopenharmony_ci	<reg32 offset="0x220a" name="HLSQ_CL_NDRANGE_0_REG">
1138bf215546Sopenharmony_ci		<bitfield name="WORKDIM" low="0" high="1" type="uint"/>
1139bf215546Sopenharmony_ci		<bitfield name="LOCALSIZE0" low="2" high="11" type="uint"/>
1140bf215546Sopenharmony_ci		<bitfield name="LOCALSIZE1" low="12" high="21" type="uint"/>
1141bf215546Sopenharmony_ci		<bitfield name="LOCALSIZE2" low="22" high="31" type="uint"/>
1142bf215546Sopenharmony_ci	</reg32>
1143bf215546Sopenharmony_ci	<array offset="0x220b" name="HLSQ_CL_GLOBAL_WORK" stride="2" length="3">
1144bf215546Sopenharmony_ci		<doc>indexed by dimension</doc>
1145bf215546Sopenharmony_ci		<reg32 offset="0" name="SIZE" type="uint"/>
1146bf215546Sopenharmony_ci		<reg32 offset="1" name="OFFSET" type="uint"/>
1147bf215546Sopenharmony_ci	</array>
1148bf215546Sopenharmony_ci	<reg32 offset="0x2211" name="HLSQ_CL_CONTROL_0_REG"/>
1149bf215546Sopenharmony_ci	<reg32 offset="0x2212" name="HLSQ_CL_CONTROL_1_REG"/>
1150bf215546Sopenharmony_ci	<reg32 offset="0x2214" name="HLSQ_CL_KERNEL_CONST_REG"/>
1151bf215546Sopenharmony_ci	<array offset="0x2215" name="HLSQ_CL_KERNEL_GROUP" stride="1" length="3">
1152bf215546Sopenharmony_ci		<doc>indexed by dimension, global_size / local_size</doc>
1153bf215546Sopenharmony_ci		<reg32 offset="0" name="RATIO" type="uint"/>
1154bf215546Sopenharmony_ci	</array>
1155bf215546Sopenharmony_ci	<reg32 offset="0x2216" name="HLSQ_CL_KERNEL_GROUP_Y_REG" type="uint"/>
1156bf215546Sopenharmony_ci	<reg32 offset="0x2217" name="HLSQ_CL_KERNEL_GROUP_Z_REG" type="uint"/>
1157bf215546Sopenharmony_ci	<reg32 offset="0x221a" name="HLSQ_CL_WG_OFFSET_REG"/>
1158bf215546Sopenharmony_ci
1159bf215546Sopenharmony_ci	<!-- VFD registers -->
1160bf215546Sopenharmony_ci	<reg32 offset="0x2240" name="VFD_CONTROL_0">
1161bf215546Sopenharmony_ci		<doc>
1162bf215546Sopenharmony_ci			TOTALATTRTOVS is # of attributes to vertex shader, in register
1163bf215546Sopenharmony_ci			slots (ie. vec4+vec3 -> 7)
1164bf215546Sopenharmony_ci		</doc>
1165bf215546Sopenharmony_ci		<bitfield name="TOTALATTRTOVS" low="0" high="17" type="uint"/>
1166bf215546Sopenharmony_ci		<bitfield name="PACKETSIZE" low="18" high="21" type="uint"/>
1167bf215546Sopenharmony_ci		<doc>STRMDECINSTRCNT is # of VFD_DECODE_INSTR registers valid</doc>
1168bf215546Sopenharmony_ci		<bitfield name="STRMDECINSTRCNT" low="22" high="26" type="uint"/>
1169bf215546Sopenharmony_ci		<doc>STRMFETCHINSTRCNT is # of VFD_FETCH_INSTR registers valid</doc>
1170bf215546Sopenharmony_ci		<bitfield name="STRMFETCHINSTRCNT" low="27" high="31" type="uint"/>
1171bf215546Sopenharmony_ci	</reg32>
1172bf215546Sopenharmony_ci	<reg32 offset="0x2241" name="VFD_CONTROL_1">
1173bf215546Sopenharmony_ci		<doc>MAXSTORAGE could be # of attributes/vbo's</doc>
1174bf215546Sopenharmony_ci		<bitfield name="MAXSTORAGE" low="0" high="3" type="uint"/>
1175bf215546Sopenharmony_ci		<bitfield name="MAXTHRESHOLD" low="4" high="7" type="uint"/>
1176bf215546Sopenharmony_ci		<bitfield name="MINTHRESHOLD" low="8" high="11" type="uint"/>
1177bf215546Sopenharmony_ci		<bitfield name="REGID4VTX" low="16" high="23" type="a3xx_regid"/>
1178bf215546Sopenharmony_ci		<bitfield name="REGID4INST" low="24" high="31" type="a3xx_regid"/>
1179bf215546Sopenharmony_ci	</reg32>
1180bf215546Sopenharmony_ci	<reg32 offset="0x2242" name="VFD_INDEX_MIN" type="uint"/>
1181bf215546Sopenharmony_ci	<reg32 offset="0x2243" name="VFD_INDEX_MAX" type="uint"/>
1182bf215546Sopenharmony_ci	<reg32 offset="0x2244" name="VFD_INSTANCEID_OFFSET" type="uint"/>
1183bf215546Sopenharmony_ci	<reg32 offset="0x2245" name="VFD_INDEX_OFFSET" type="uint"/>
1184bf215546Sopenharmony_ci	<array offset="0x2246" name="VFD_FETCH" stride="2" length="16">
1185bf215546Sopenharmony_ci		<reg32 offset="0x0" name="INSTR_0">
1186bf215546Sopenharmony_ci			<bitfield name="FETCHSIZE" low="0" high="6" type="uint"/>
1187bf215546Sopenharmony_ci			<bitfield name="BUFSTRIDE" low="7" high="15" type="uint"/>
1188bf215546Sopenharmony_ci			<bitfield name="INSTANCED" pos="16" type="boolean"/>
1189bf215546Sopenharmony_ci			<bitfield name="SWITCHNEXT" pos="17" type="boolean"/>
1190bf215546Sopenharmony_ci			<bitfield name="INDEXCODE" low="18" high="23" type="uint"/>
1191bf215546Sopenharmony_ci			<bitfield name="STEPRATE" low="24" high="31" type="uint"/>
1192bf215546Sopenharmony_ci		</reg32>
1193bf215546Sopenharmony_ci		<reg32 offset="0x1" name="INSTR_1"/>
1194bf215546Sopenharmony_ci	</array>
1195bf215546Sopenharmony_ci	<array offset="0x2266" name="VFD_DECODE" stride="1" length="16">
1196bf215546Sopenharmony_ci		<reg32 offset="0x0" name="INSTR">
1197bf215546Sopenharmony_ci			<bitfield name="WRITEMASK" low="0" high="3" type="hex"/>
1198bf215546Sopenharmony_ci			<!-- not sure if this is a bit flag and another flag above it, or?? -->
1199bf215546Sopenharmony_ci			<bitfield name="CONSTFILL" pos="4" type="boolean"/>
1200bf215546Sopenharmony_ci			<bitfield name="FORMAT" low="6" high="11" type="a3xx_vtx_fmt"/>
1201bf215546Sopenharmony_ci			<bitfield name="REGID" low="12" high="19" type="a3xx_regid"/>
1202bf215546Sopenharmony_ci			<bitfield name="INT" pos="20" type="boolean"/>
1203bf215546Sopenharmony_ci			<doc>SHIFTCNT appears to be size, ie. FLOAT_32_32_32 is 12, and BYTE_8 is 1</doc>
1204bf215546Sopenharmony_ci			<bitfield name="SWAP" low="22" high="23" type="a3xx_color_swap"/>
1205bf215546Sopenharmony_ci			<bitfield name="SHIFTCNT" low="24" high="28" type="uint"/>
1206bf215546Sopenharmony_ci			<bitfield name="LASTCOMPVALID" pos="29" type="boolean"/>
1207bf215546Sopenharmony_ci			<bitfield name="SWITCHNEXT" pos="30" type="boolean"/>
1208bf215546Sopenharmony_ci		</reg32>
1209bf215546Sopenharmony_ci	</array>
1210bf215546Sopenharmony_ci	<reg32 offset="0x227e" name="VFD_VS_THREADING_THRESHOLD">
1211bf215546Sopenharmony_ci		<bitfield name="REGID_THRESHOLD" low="0" high="3" type="uint"/>
1212bf215546Sopenharmony_ci		<!-- <bitfield name="RESERVED6" low="4" high="7" type="uint"/> -->
1213bf215546Sopenharmony_ci		<bitfield name="REGID_VTXCNT" low="8" high="15" type="a3xx_regid"/>
1214bf215546Sopenharmony_ci	</reg32>
1215bf215546Sopenharmony_ci
1216bf215546Sopenharmony_ci	<!-- VPC registers -->
1217bf215546Sopenharmony_ci	<reg32 offset="0x2280" name="VPC_ATTR">
1218bf215546Sopenharmony_ci		<bitfield name="TOTALATTR" low="0" high="8" type="uint"/>
1219bf215546Sopenharmony_ci		<!-- PSIZE bit set if gl_PointSize written: -->
1220bf215546Sopenharmony_ci		<bitfield name="PSIZE" pos="9" type="boolean"/>
1221bf215546Sopenharmony_ci		<bitfield name="THRDASSIGN" low="12" high="27" type="uint"/>
1222bf215546Sopenharmony_ci		<bitfield name="LMSIZE" low="28" high="31" type="uint"/>
1223bf215546Sopenharmony_ci	</reg32>
1224bf215546Sopenharmony_ci	<reg32 offset="0x2281" name="VPC_PACK">
1225bf215546Sopenharmony_ci		<!-- these are always seem to be set to same as TOTALATTR -->
1226bf215546Sopenharmony_ci		<bitfield name="NUMFPNONPOSVAR" low="8" high="15" type="uint"/>
1227bf215546Sopenharmony_ci		<bitfield name="NUMNONPOSVSVAR" low="16" high="23" type="uint"/>
1228bf215546Sopenharmony_ci	</reg32>
1229bf215546Sopenharmony_ci	<!--
1230bf215546Sopenharmony_ci		varying interpolate mode.  One field per scalar/component
1231bf215546Sopenharmony_ci		(since varying slots are scalar, so things don't have to
1232bf215546Sopenharmony_ci		be aligned to vec4).
1233bf215546Sopenharmony_ci		4 regs * 16 scalar components each => 16 vec4
1234bf215546Sopenharmony_ci	 -->
1235bf215546Sopenharmony_ci	<array offset="0x2282" name="VPC_VARYING_INTERP" stride="1" length="4">
1236bf215546Sopenharmony_ci		<reg32 offset="0x0" name="MODE">
1237bf215546Sopenharmony_ci			<bitfield name="C0" low="0"  high="1"  type="a3xx_intp_mode"/>
1238bf215546Sopenharmony_ci			<bitfield name="C1" low="2"  high="3"  type="a3xx_intp_mode"/>
1239bf215546Sopenharmony_ci			<bitfield name="C2" low="4"  high="5"  type="a3xx_intp_mode"/>
1240bf215546Sopenharmony_ci			<bitfield name="C3" low="6"  high="7"  type="a3xx_intp_mode"/>
1241bf215546Sopenharmony_ci			<bitfield name="C4" low="8"  high="9"  type="a3xx_intp_mode"/>
1242bf215546Sopenharmony_ci			<bitfield name="C5" low="10" high="11" type="a3xx_intp_mode"/>
1243bf215546Sopenharmony_ci			<bitfield name="C6" low="12" high="13" type="a3xx_intp_mode"/>
1244bf215546Sopenharmony_ci			<bitfield name="C7" low="14" high="15" type="a3xx_intp_mode"/>
1245bf215546Sopenharmony_ci			<bitfield name="C8" low="16" high="17" type="a3xx_intp_mode"/>
1246bf215546Sopenharmony_ci			<bitfield name="C9" low="18" high="19" type="a3xx_intp_mode"/>
1247bf215546Sopenharmony_ci			<bitfield name="CA" low="20" high="21" type="a3xx_intp_mode"/>
1248bf215546Sopenharmony_ci			<bitfield name="CB" low="22" high="23" type="a3xx_intp_mode"/>
1249bf215546Sopenharmony_ci			<bitfield name="CC" low="24" high="25" type="a3xx_intp_mode"/>
1250bf215546Sopenharmony_ci			<bitfield name="CD" low="26" high="27" type="a3xx_intp_mode"/>
1251bf215546Sopenharmony_ci			<bitfield name="CE" low="28" high="29" type="a3xx_intp_mode"/>
1252bf215546Sopenharmony_ci			<bitfield name="CF" low="30" high="31" type="a3xx_intp_mode"/>
1253bf215546Sopenharmony_ci		</reg32>
1254bf215546Sopenharmony_ci	</array>
1255bf215546Sopenharmony_ci	<array offset="0x2286" name="VPC_VARYING_PS_REPL" stride="1" length="4">
1256bf215546Sopenharmony_ci		<reg32 offset="0x0" name="MODE">
1257bf215546Sopenharmony_ci			<bitfield name="C0" low="0"  high="1"  type="a3xx_repl_mode"/>
1258bf215546Sopenharmony_ci			<bitfield name="C1" low="2"  high="3"  type="a3xx_repl_mode"/>
1259bf215546Sopenharmony_ci			<bitfield name="C2" low="4"  high="5"  type="a3xx_repl_mode"/>
1260bf215546Sopenharmony_ci			<bitfield name="C3" low="6"  high="7"  type="a3xx_repl_mode"/>
1261bf215546Sopenharmony_ci			<bitfield name="C4" low="8"  high="9"  type="a3xx_repl_mode"/>
1262bf215546Sopenharmony_ci			<bitfield name="C5" low="10" high="11" type="a3xx_repl_mode"/>
1263bf215546Sopenharmony_ci			<bitfield name="C6" low="12" high="13" type="a3xx_repl_mode"/>
1264bf215546Sopenharmony_ci			<bitfield name="C7" low="14" high="15" type="a3xx_repl_mode"/>
1265bf215546Sopenharmony_ci			<bitfield name="C8" low="16" high="17" type="a3xx_repl_mode"/>
1266bf215546Sopenharmony_ci			<bitfield name="C9" low="18" high="19" type="a3xx_repl_mode"/>
1267bf215546Sopenharmony_ci			<bitfield name="CA" low="20" high="21" type="a3xx_repl_mode"/>
1268bf215546Sopenharmony_ci			<bitfield name="CB" low="22" high="23" type="a3xx_repl_mode"/>
1269bf215546Sopenharmony_ci			<bitfield name="CC" low="24" high="25" type="a3xx_repl_mode"/>
1270bf215546Sopenharmony_ci			<bitfield name="CD" low="26" high="27" type="a3xx_repl_mode"/>
1271bf215546Sopenharmony_ci			<bitfield name="CE" low="28" high="29" type="a3xx_repl_mode"/>
1272bf215546Sopenharmony_ci			<bitfield name="CF" low="30" high="31" type="a3xx_repl_mode"/>
1273bf215546Sopenharmony_ci		</reg32>
1274bf215546Sopenharmony_ci	</array>
1275bf215546Sopenharmony_ci	<reg32 offset="0x228a" name="VPC_VARY_CYLWRAP_ENABLE_0"/>
1276bf215546Sopenharmony_ci	<reg32 offset="0x228b" name="VPC_VARY_CYLWRAP_ENABLE_1"/>
1277bf215546Sopenharmony_ci
1278bf215546Sopenharmony_ci	<!-- SP registers -->
1279bf215546Sopenharmony_ci	<bitset name="a3xx_vs_fs_length_reg" inline="yes">
1280bf215546Sopenharmony_ci		<bitfield name="SHADERLENGTH" low="0" high="31" type="uint"/>
1281bf215546Sopenharmony_ci	</bitset>
1282bf215546Sopenharmony_ci
1283bf215546Sopenharmony_ci	<bitset name="sp_vs_fs_obj_offset_reg" inline="yes">
1284bf215546Sopenharmony_ci		<bitfield name="FIRSTEXECINSTROFFSET" low="0" high="15" type="uint"/>
1285bf215546Sopenharmony_ci		<doc>
1286bf215546Sopenharmony_ci			From register spec:
1287bf215546Sopenharmony_ci			SP_FS_OBJ_OFFSET_REG.CONSTOBJECTSTARTOFFSET [16:24]: Constant object
1288bf215546Sopenharmony_ci			start offset in on chip RAM,
1289bf215546Sopenharmony_ci			128bit aligned
1290bf215546Sopenharmony_ci		</doc>
1291bf215546Sopenharmony_ci		<bitfield name="CONSTOBJECTOFFSET" low="16" high="24" type="uint"/>
1292bf215546Sopenharmony_ci		<bitfield name="SHADEROBJOFFSET" low="25" high="31" type="uint"/>
1293bf215546Sopenharmony_ci	</bitset>
1294bf215546Sopenharmony_ci
1295bf215546Sopenharmony_ci	<reg32 offset="0x22c0" name="SP_SP_CTRL_REG">
1296bf215546Sopenharmony_ci		<!-- this bit is set during resolve pass: -->
1297bf215546Sopenharmony_ci		<bitfield name="RESOLVE" pos="16" type="boolean"/>
1298bf215546Sopenharmony_ci		<bitfield name="CONSTMODE" pos="18" type="uint"/>
1299bf215546Sopenharmony_ci		<bitfield name="BINNING" pos="19" type="boolean"/>
1300bf215546Sopenharmony_ci		<bitfield name="SLEEPMODE" low="20" high="21" type="uint"/>
1301bf215546Sopenharmony_ci		<!-- L0MODE==1 when oxiliForceSpL0ModeBuffer=1 -->
1302bf215546Sopenharmony_ci		<bitfield name="L0MODE" low="22" high="23" type="uint"/>
1303bf215546Sopenharmony_ci	</reg32>
1304bf215546Sopenharmony_ci	<reg32 offset="0x22c4" name="SP_VS_CTRL_REG0">
1305bf215546Sopenharmony_ci		<bitfield name="THREADMODE" pos="0" type="a3xx_threadmode"/>
1306bf215546Sopenharmony_ci		<bitfield name="INSTRBUFFERMODE" pos="1" type="a3xx_instrbuffermode"/>
1307bf215546Sopenharmony_ci		<!-- maybe CACHEINVALID is two bits?? -->
1308bf215546Sopenharmony_ci		<bitfield name="CACHEINVALID" pos="2" type="boolean"/>
1309bf215546Sopenharmony_ci		<bitfield name="ALUSCHMODE" pos="3" type="boolean"/>
1310bf215546Sopenharmony_ci		<doc>
1311bf215546Sopenharmony_ci			The full/half register footprint is in units of four components,
1312bf215546Sopenharmony_ci			so if r0.x is used, that counts as all of r0.[xyzw] as used.
1313bf215546Sopenharmony_ci			There are separate full/half register footprint values as the
1314bf215546Sopenharmony_ci			full and half registers are independent (not overlapping).
1315bf215546Sopenharmony_ci			Presumably the thread scheduler hardware allocates the full/half
1316bf215546Sopenharmony_ci			register names from the actual physical register file and
1317bf215546Sopenharmony_ci			handles the register renaming.
1318bf215546Sopenharmony_ci		</doc>
1319bf215546Sopenharmony_ci		<bitfield name="HALFREGFOOTPRINT" low="4" high="9" type="uint"/>
1320bf215546Sopenharmony_ci		<bitfield name="FULLREGFOOTPRINT" low="10" high="15" type="uint"/>
1321bf215546Sopenharmony_ci		<bitfield name="THREADSIZE" pos="20" type="a3xx_threadsize"/>
1322bf215546Sopenharmony_ci		<bitfield name="SUPERTHREADMODE" pos="21" type="boolean"/>
1323bf215546Sopenharmony_ci		<doc>
1324bf215546Sopenharmony_ci			From regspec:
1325bf215546Sopenharmony_ci			SP_FS_CTRL_REG0.FS_LENGTH [31:24]: FS length, unit = 256bits.
1326bf215546Sopenharmony_ci			If bit31 is 1, it means overflow
1327bf215546Sopenharmony_ci			or any long shader.
1328bf215546Sopenharmony_ci		</doc>
1329bf215546Sopenharmony_ci		<bitfield name="LENGTH" low="24" high="31" type="uint"/>
1330bf215546Sopenharmony_ci	</reg32>
1331bf215546Sopenharmony_ci	<reg32 offset="0x22c5" name="SP_VS_CTRL_REG1">
1332bf215546Sopenharmony_ci		<bitfield name="CONSTLENGTH" low="0" high="9" type="uint"/>
1333bf215546Sopenharmony_ci		<!--
1334bf215546Sopenharmony_ci			not sure about full vs half const.. I can't get blob generate
1335bf215546Sopenharmony_ci			something with a mediump/lowp uniform.
1336bf215546Sopenharmony_ci		 -->
1337bf215546Sopenharmony_ci		<bitfield name="CONSTFOOTPRINT" low="10" high="19" type="uint"/>
1338bf215546Sopenharmony_ci		<bitfield name="INITIALOUTSTANDING" low="24" high="30" type="uint"/>
1339bf215546Sopenharmony_ci	</reg32>
1340bf215546Sopenharmony_ci	<reg32 offset="0x22c6" name="SP_VS_PARAM_REG">
1341bf215546Sopenharmony_ci		<bitfield name="POSREGID" low="0" high="7" type="a3xx_regid"/>
1342bf215546Sopenharmony_ci		<bitfield name="PSIZEREGID" low="8" high="15" type="a3xx_regid"/>
1343bf215546Sopenharmony_ci		<bitfield name="POS2DMODE" pos="16" type="boolean"/>
1344bf215546Sopenharmony_ci		<bitfield name="TOTALVSOUTVAR" low="20" high="24" type="uint"/>
1345bf215546Sopenharmony_ci	</reg32>
1346bf215546Sopenharmony_ci	<array offset="0x22c7" name="SP_VS_OUT" stride="1" length="8">
1347bf215546Sopenharmony_ci		<reg32 offset="0x0" name="REG">
1348bf215546Sopenharmony_ci			<bitfield name="A_REGID" low="0" high="7" type="a3xx_regid"/>
1349bf215546Sopenharmony_ci			<bitfield name="A_HALF" pos="8" type="boolean"/>
1350bf215546Sopenharmony_ci			<bitfield name="A_COMPMASK" low="9" high="12" type="hex"/>
1351bf215546Sopenharmony_ci			<bitfield name="B_REGID" low="16" high="23" type="a3xx_regid"/>
1352bf215546Sopenharmony_ci			<bitfield name="B_HALF" pos="24" type="boolean"/>
1353bf215546Sopenharmony_ci			<bitfield name="B_COMPMASK" low="25" high="28" type="hex"/>
1354bf215546Sopenharmony_ci		</reg32>
1355bf215546Sopenharmony_ci	</array>
1356bf215546Sopenharmony_ci	<array offset="0x22d0" name="SP_VS_VPC_DST" stride="1" length="4">
1357bf215546Sopenharmony_ci		<reg32 offset="0x0" name="REG">
1358bf215546Sopenharmony_ci			<doc>
1359bf215546Sopenharmony_ci				These seem to be offsets for storage of the varyings.
1360bf215546Sopenharmony_ci				Always seems to start from 8, possibly loc 0 and 4
1361bf215546Sopenharmony_ci				are for gl_Position and gl_PointSize?
1362bf215546Sopenharmony_ci			</doc>
1363bf215546Sopenharmony_ci			<bitfield name="OUTLOC0" low="0" high="6" type="uint"/>
1364bf215546Sopenharmony_ci			<bitfield name="OUTLOC1" low="8" high="14" type="uint"/>
1365bf215546Sopenharmony_ci			<bitfield name="OUTLOC2" low="16" high="22" type="uint"/>
1366bf215546Sopenharmony_ci			<bitfield name="OUTLOC3" low="24" high="30" type="uint"/>
1367bf215546Sopenharmony_ci		</reg32>
1368bf215546Sopenharmony_ci	</array>
1369bf215546Sopenharmony_ci	<reg32 offset="0x22d4" name="SP_VS_OBJ_OFFSET_REG" type="sp_vs_fs_obj_offset_reg"/>
1370bf215546Sopenharmony_ci	<doc>
1371bf215546Sopenharmony_ci		SP_VS_OBJ_START_REG contains pointer to the vertex shader program,
1372bf215546Sopenharmony_ci		immediately followed by the binning shader program (although I
1373bf215546Sopenharmony_ci		guess that is probably just re-using the same gpu buffer)
1374bf215546Sopenharmony_ci	</doc>
1375bf215546Sopenharmony_ci	<reg32 offset="0x22d5" name="SP_VS_OBJ_START_REG"/>
1376bf215546Sopenharmony_ci	<reg32 offset="0x22d6" name="SP_VS_PVT_MEM_PARAM_REG">
1377bf215546Sopenharmony_ci		<bitfield name="MEMSIZEPERITEM" low="0" high="7" type="uint"/>
1378bf215546Sopenharmony_ci		<bitfield name="HWSTACKOFFSET" low="8" high="23" type="uint"/>
1379bf215546Sopenharmony_ci		<bitfield name="HWSTACKSIZEPERTHREAD" low="24" high="31" type="uint"/>
1380bf215546Sopenharmony_ci	</reg32>
1381bf215546Sopenharmony_ci	<reg32 offset="0x22d7" name="SP_VS_PVT_MEM_ADDR_REG">
1382bf215546Sopenharmony_ci		<bitfield name="BURSTLEN" low="0" high="4"/>
1383bf215546Sopenharmony_ci		<bitfield name="SHADERSTARTADDRESS" shr="5" low="5" high="31"/>
1384bf215546Sopenharmony_ci	</reg32>
1385bf215546Sopenharmony_ci	<reg32 offset="0x22d8" name="SP_VS_PVT_MEM_SIZE_REG"/>
1386bf215546Sopenharmony_ci	<reg32 offset="0x22df" name="SP_VS_LENGTH_REG" type="a3xx_vs_fs_length_reg"/>
1387bf215546Sopenharmony_ci	<reg32 offset="0x22e0" name="SP_FS_CTRL_REG0">
1388bf215546Sopenharmony_ci		<bitfield name="THREADMODE" pos="0" type="a3xx_threadmode"/>
1389bf215546Sopenharmony_ci		<bitfield name="INSTRBUFFERMODE" pos="1" type="a3xx_instrbuffermode"/>
1390bf215546Sopenharmony_ci		<!-- maybe CACHEINVALID is two bits?? -->
1391bf215546Sopenharmony_ci		<bitfield name="CACHEINVALID" pos="2" type="boolean"/>
1392bf215546Sopenharmony_ci		<bitfield name="ALUSCHMODE" pos="3" type="boolean"/>
1393bf215546Sopenharmony_ci		<doc>
1394bf215546Sopenharmony_ci			The full/half register footprint is in units of four components,
1395bf215546Sopenharmony_ci			so if r0.x is used, that counts as all of r0.[xyzw] as used.
1396bf215546Sopenharmony_ci			There are separate full/half register footprint values as the
1397bf215546Sopenharmony_ci			full and half registers are independent (not overlapping).
1398bf215546Sopenharmony_ci			Presumably the thread scheduler hardware allocates the full/half
1399bf215546Sopenharmony_ci			register names from the actual physical register file and
1400bf215546Sopenharmony_ci			handles the register renaming.
1401bf215546Sopenharmony_ci		</doc>
1402bf215546Sopenharmony_ci		<bitfield name="HALFREGFOOTPRINT" low="4" high="9" type="uint"/>
1403bf215546Sopenharmony_ci		<bitfield name="FULLREGFOOTPRINT" low="10" high="15" type="uint"/>
1404bf215546Sopenharmony_ci		<bitfield name="FSBYPASSENABLE" pos="17" type="boolean"/>
1405bf215546Sopenharmony_ci		<bitfield name="INOUTREGOVERLAP" pos="18" type="boolean"/>
1406bf215546Sopenharmony_ci		<bitfield name="OUTORDERED" pos="19" type="boolean"/>
1407bf215546Sopenharmony_ci		<bitfield name="THREADSIZE" pos="20" type="a3xx_threadsize"/>
1408bf215546Sopenharmony_ci		<bitfield name="SUPERTHREADMODE" pos="21" type="boolean"/>
1409bf215546Sopenharmony_ci		<bitfield name="PIXLODENABLE" pos="22" type="boolean"/>
1410bf215546Sopenharmony_ci		<bitfield name="COMPUTEMODE" pos="23" type="boolean"/>
1411bf215546Sopenharmony_ci		<doc>
1412bf215546Sopenharmony_ci			From regspec:
1413bf215546Sopenharmony_ci			SP_FS_CTRL_REG0.FS_LENGTH [31:24]: FS length, unit = 256bits.
1414bf215546Sopenharmony_ci			If bit31 is 1, it means overflow
1415bf215546Sopenharmony_ci			or any long shader.
1416bf215546Sopenharmony_ci		</doc>
1417bf215546Sopenharmony_ci		<bitfield name="LENGTH" low="24" high="31" type="uint"/>
1418bf215546Sopenharmony_ci	</reg32>
1419bf215546Sopenharmony_ci	<reg32 offset="0x22e1" name="SP_FS_CTRL_REG1">
1420bf215546Sopenharmony_ci		<bitfield name="CONSTLENGTH" low="0" high="9" type="uint"/>
1421bf215546Sopenharmony_ci		<bitfield name="CONSTFOOTPRINT" low="10" high="19" type="uint"/>
1422bf215546Sopenharmony_ci		<bitfield name="INITIALOUTSTANDING" low="20" high="23" type="uint"/>
1423bf215546Sopenharmony_ci		<bitfield name="HALFPRECVAROFFSET" low="24" high="30" type="uint"/>
1424bf215546Sopenharmony_ci	</reg32>
1425bf215546Sopenharmony_ci	<reg32 offset="0x22e2" name="SP_FS_OBJ_OFFSET_REG" type="sp_vs_fs_obj_offset_reg"/>
1426bf215546Sopenharmony_ci	<doc>SP_FS_OBJ_START_REG contains pointer to fragment shader program</doc>
1427bf215546Sopenharmony_ci	<reg32 offset="0x22e3" name="SP_FS_OBJ_START_REG"/>
1428bf215546Sopenharmony_ci	<reg32 offset="0x22e4" name="SP_FS_PVT_MEM_PARAM_REG">
1429bf215546Sopenharmony_ci		<bitfield name="MEMSIZEPERITEM" low="0" high="7" type="uint"/>
1430bf215546Sopenharmony_ci		<bitfield name="HWSTACKOFFSET" low="8" high="23" type="uint"/>
1431bf215546Sopenharmony_ci		<bitfield name="HWSTACKSIZEPERTHREAD" low="24" high="31" type="uint"/>
1432bf215546Sopenharmony_ci	</reg32>
1433bf215546Sopenharmony_ci	<reg32 offset="0x22e5" name="SP_FS_PVT_MEM_ADDR_REG">
1434bf215546Sopenharmony_ci		<bitfield name="BURSTLEN" low="0" high="4"/>
1435bf215546Sopenharmony_ci		<bitfield name="SHADERSTARTADDRESS" shr="5" low="5" high="31"/>
1436bf215546Sopenharmony_ci	</reg32>
1437bf215546Sopenharmony_ci	<reg32 offset="0x22e6" name="SP_FS_PVT_MEM_SIZE_REG"/>
1438bf215546Sopenharmony_ci	<reg32 offset="0x22e8" name="SP_FS_FLAT_SHAD_MODE_REG_0">
1439bf215546Sopenharmony_ci		<doc>seems to be one bit per scalar, '1' for flat, '0' for smooth</doc>
1440bf215546Sopenharmony_ci	</reg32>
1441bf215546Sopenharmony_ci	<reg32 offset="0x22e9" name="SP_FS_FLAT_SHAD_MODE_REG_1">
1442bf215546Sopenharmony_ci		<doc>seems to be one bit per scalar, '1' for flat, '0' for smooth</doc>
1443bf215546Sopenharmony_ci	</reg32>
1444bf215546Sopenharmony_ci	<reg32 offset="0x22ec" name="SP_FS_OUTPUT_REG">
1445bf215546Sopenharmony_ci		<bitfield name="MRT" low="0" high="1" type="uint">
1446bf215546Sopenharmony_ci			<doc>render targets - 1</doc>
1447bf215546Sopenharmony_ci		</bitfield>
1448bf215546Sopenharmony_ci		<bitfield name="DEPTH_ENABLE" pos="7" type="boolean"/>
1449bf215546Sopenharmony_ci		<bitfield name="DEPTH_REGID" low="8" high="15" type="a3xx_regid"/>
1450bf215546Sopenharmony_ci	</reg32>
1451bf215546Sopenharmony_ci	<array offset="0x22f0" name="SP_FS_MRT" stride="1" length="4">
1452bf215546Sopenharmony_ci		<reg32 offset="0x0" name="REG">
1453bf215546Sopenharmony_ci			<bitfield name="REGID" low="0" high="7" type="a3xx_regid"/>
1454bf215546Sopenharmony_ci			<bitfield name="HALF_PRECISION" pos="8" type="boolean"/>
1455bf215546Sopenharmony_ci			<bitfield name="SINT" pos="10" type="boolean"/>
1456bf215546Sopenharmony_ci			<bitfield name="UINT" pos="11" type="boolean"/>
1457bf215546Sopenharmony_ci		</reg32>
1458bf215546Sopenharmony_ci	</array>
1459bf215546Sopenharmony_ci	<array offset="0x22f4" name="SP_FS_IMAGE_OUTPUT" stride="1" length="4">
1460bf215546Sopenharmony_ci		<reg32 offset="0x0" name="REG">
1461bf215546Sopenharmony_ci			<bitfield name="MRTFORMAT" low="0" high="5" type="a3xx_color_fmt"/>
1462bf215546Sopenharmony_ci		</reg32>
1463bf215546Sopenharmony_ci	</array>
1464bf215546Sopenharmony_ci	<reg32 offset="0x22ff" name="SP_FS_LENGTH_REG" type="a3xx_vs_fs_length_reg"/>
1465bf215546Sopenharmony_ci
1466bf215546Sopenharmony_ci	<reg32 offset="0x2301" name="PA_SC_AA_CONFIG"/>
1467bf215546Sopenharmony_ci	<!-- TPL1 registers -->
1468bf215546Sopenharmony_ci	<!-- assume VS/FS_TEX_OFFSET is same -->
1469bf215546Sopenharmony_ci	<bitset name="a3xx_tpl1_tp_vs_fs_tex_offset" inline="yes">
1470bf215546Sopenharmony_ci		<bitfield name="SAMPLEROFFSET" low="0" high="7" type="uint"/>
1471bf215546Sopenharmony_ci		<bitfield name="MEMOBJOFFSET" low="8" high="15" type="uint"/>
1472bf215546Sopenharmony_ci		<!-- not sure the size of this: -->
1473bf215546Sopenharmony_ci		<bitfield name="BASETABLEPTR" low="16" high="31" type="uint"/>
1474bf215546Sopenharmony_ci	</bitset>
1475bf215546Sopenharmony_ci	<reg32 offset="0x2340" name="TPL1_TP_VS_TEX_OFFSET" type="a3xx_tpl1_tp_vs_fs_tex_offset"/>
1476bf215546Sopenharmony_ci	<reg32 offset="0x2341" name="TPL1_TP_VS_BORDER_COLOR_BASE_ADDR"/>
1477bf215546Sopenharmony_ci	<reg32 offset="0x2342" name="TPL1_TP_FS_TEX_OFFSET" type="a3xx_tpl1_tp_vs_fs_tex_offset"/>
1478bf215546Sopenharmony_ci	<reg32 offset="0x2343" name="TPL1_TP_FS_BORDER_COLOR_BASE_ADDR"/>
1479bf215546Sopenharmony_ci
1480bf215546Sopenharmony_ci	<!-- VBIF registers -->
1481bf215546Sopenharmony_ci	<reg32 offset="0x3001" name="VBIF_CLKON"/>
1482bf215546Sopenharmony_ci	<reg32 offset="0x300c" name="VBIF_FIXED_SORT_EN"/>
1483bf215546Sopenharmony_ci	<reg32 offset="0x300d" name="VBIF_FIXED_SORT_SEL0"/>
1484bf215546Sopenharmony_ci	<reg32 offset="0x300e" name="VBIF_FIXED_SORT_SEL1"/>
1485bf215546Sopenharmony_ci	<reg32 offset="0x301c" name="VBIF_ABIT_SORT"/>
1486bf215546Sopenharmony_ci	<reg32 offset="0x301d" name="VBIF_ABIT_SORT_CONF"/>
1487bf215546Sopenharmony_ci	<reg32 offset="0x302a" name="VBIF_GATE_OFF_WRREQ_EN"/>
1488bf215546Sopenharmony_ci	<reg32 offset="0x302c" name="VBIF_IN_RD_LIM_CONF0"/>
1489bf215546Sopenharmony_ci	<reg32 offset="0x302d" name="VBIF_IN_RD_LIM_CONF1"/>
1490bf215546Sopenharmony_ci	<reg32 offset="0x3030" name="VBIF_IN_WR_LIM_CONF0"/>
1491bf215546Sopenharmony_ci	<reg32 offset="0x3031" name="VBIF_IN_WR_LIM_CONF1"/>
1492bf215546Sopenharmony_ci	<reg32 offset="0x3034" name="VBIF_OUT_RD_LIM_CONF0"/>
1493bf215546Sopenharmony_ci	<reg32 offset="0x3035" name="VBIF_OUT_WR_LIM_CONF0"/>
1494bf215546Sopenharmony_ci	<reg32 offset="0x3036" name="VBIF_DDR_OUT_MAX_BURST"/>
1495bf215546Sopenharmony_ci	<reg32 offset="0x303c" name="VBIF_ARB_CTL"/>
1496bf215546Sopenharmony_ci	<reg32 offset="0x3049" name="VBIF_ROUND_ROBIN_QOS_ARB"/>
1497bf215546Sopenharmony_ci	<reg32 offset="0x3058" name="VBIF_OUT_AXI_AMEMTYPE_CONF0"/>
1498bf215546Sopenharmony_ci	<reg32 offset="0x305e" name="VBIF_OUT_AXI_AOOO_EN"/>
1499bf215546Sopenharmony_ci	<reg32 offset="0x305f" name="VBIF_OUT_AXI_AOOO"/>
1500bf215546Sopenharmony_ci
1501bf215546Sopenharmony_ci	<bitset name="a3xx_vbif_perf_cnt" inline="yes">
1502bf215546Sopenharmony_ci		<bitfield name="CNT0" pos="0" type="boolean"/>
1503bf215546Sopenharmony_ci		<bitfield name="CNT1" pos="1" type="boolean"/>
1504bf215546Sopenharmony_ci		<bitfield name="PWRCNT0" pos="2" type="boolean"/>
1505bf215546Sopenharmony_ci		<bitfield name="PWRCNT1" pos="3" type="boolean"/>
1506bf215546Sopenharmony_ci		<bitfield name="PWRCNT2" pos="4" type="boolean"/>
1507bf215546Sopenharmony_ci	</bitset>
1508bf215546Sopenharmony_ci
1509bf215546Sopenharmony_ci	<reg32 offset="0x3070" name="VBIF_PERF_CNT_EN" type="a3xx_vbif_perf_cnt"/>
1510bf215546Sopenharmony_ci	<reg32 offset="0x3071" name="VBIF_PERF_CNT_CLR" type="a3xx_vbif_perf_cnt"/>
1511bf215546Sopenharmony_ci	<reg32 offset="0x3072" name="VBIF_PERF_CNT_SEL"/>
1512bf215546Sopenharmony_ci	<reg32 offset="0x3073" name="VBIF_PERF_CNT0_LO"/>
1513bf215546Sopenharmony_ci	<reg32 offset="0x3074" name="VBIF_PERF_CNT0_HI"/>
1514bf215546Sopenharmony_ci	<reg32 offset="0x3075" name="VBIF_PERF_CNT1_LO"/>
1515bf215546Sopenharmony_ci	<reg32 offset="0x3076" name="VBIF_PERF_CNT1_HI"/>
1516bf215546Sopenharmony_ci	<reg32 offset="0x3077" name="VBIF_PERF_PWR_CNT0_LO"/>
1517bf215546Sopenharmony_ci	<reg32 offset="0x3078" name="VBIF_PERF_PWR_CNT0_HI"/>
1518bf215546Sopenharmony_ci	<reg32 offset="0x3079" name="VBIF_PERF_PWR_CNT1_LO"/>
1519bf215546Sopenharmony_ci	<reg32 offset="0x307a" name="VBIF_PERF_PWR_CNT1_HI"/>
1520bf215546Sopenharmony_ci	<reg32 offset="0x307b" name="VBIF_PERF_PWR_CNT2_LO"/>
1521bf215546Sopenharmony_ci	<reg32 offset="0x307c" name="VBIF_PERF_PWR_CNT2_HI"/>
1522bf215546Sopenharmony_ci
1523bf215546Sopenharmony_ci
1524bf215546Sopenharmony_ci	<reg32 offset="0x0c01" name="VSC_BIN_SIZE">
1525bf215546Sopenharmony_ci		<bitfield name="WIDTH" low="0" high="4" shr="5" type="uint"/>
1526bf215546Sopenharmony_ci		<bitfield name="HEIGHT" low="5" high="9" shr="5" type="uint"/>
1527bf215546Sopenharmony_ci	</reg32>
1528bf215546Sopenharmony_ci
1529bf215546Sopenharmony_ci	<reg32 offset="0x0c02" name="VSC_SIZE_ADDRESS"/>
1530bf215546Sopenharmony_ci	<array offset="0x0c06" name="VSC_PIPE" stride="3" length="8">
1531bf215546Sopenharmony_ci		<reg32 offset="0x0" name="CONFIG">
1532bf215546Sopenharmony_ci			<doc>
1533bf215546Sopenharmony_ci				Configures the mapping between VSC_PIPE buffer and
1534bf215546Sopenharmony_ci				bin, X/Y specify the bin index in the horiz/vert
1535bf215546Sopenharmony_ci				direction (0,0 is upper left, 0,1 is leftmost bin
1536bf215546Sopenharmony_ci				on second row, and so on).  W/H specify the number
1537bf215546Sopenharmony_ci				of bins assigned to this VSC_PIPE in the horiz/vert
1538bf215546Sopenharmony_ci				dimension.
1539bf215546Sopenharmony_ci			</doc>
1540bf215546Sopenharmony_ci			<bitfield name="X" low="0" high="9" type="uint"/>
1541bf215546Sopenharmony_ci			<bitfield name="Y" low="10" high="19" type="uint"/>
1542bf215546Sopenharmony_ci			<bitfield name="W" low="20" high="23" type="uint"/>
1543bf215546Sopenharmony_ci			<bitfield name="H" low="24" high="27" type="uint"/>
1544bf215546Sopenharmony_ci		</reg32>
1545bf215546Sopenharmony_ci		<reg32 offset="0x1" name="DATA_ADDRESS"/>
1546bf215546Sopenharmony_ci		<reg32 offset="0x2" name="DATA_LENGTH"/>
1547bf215546Sopenharmony_ci	</array>
1548bf215546Sopenharmony_ci	<reg32 offset="0x0c3c" name="VSC_BIN_CONTROL">
1549bf215546Sopenharmony_ci		<doc>seems to be set to 0x00000001 during binning pass</doc>
1550bf215546Sopenharmony_ci		<bitfield name="BINNING_ENABLE" pos="0" type="boolean"/>
1551bf215546Sopenharmony_ci	</reg32>
1552bf215546Sopenharmony_ci	<reg32 offset="0x0c3d" name="UNKNOWN_0C3D">
1553bf215546Sopenharmony_ci		<doc>seems to be always set to 0x00000001</doc>
1554bf215546Sopenharmony_ci	</reg32>
1555bf215546Sopenharmony_ci	<reg32 offset="0x0c48" name="PC_PERFCOUNTER0_SELECT" type="a3xx_pc_perfcounter_select"/>
1556bf215546Sopenharmony_ci	<reg32 offset="0x0c49" name="PC_PERFCOUNTER1_SELECT" type="a3xx_pc_perfcounter_select"/>
1557bf215546Sopenharmony_ci	<reg32 offset="0x0c4a" name="PC_PERFCOUNTER2_SELECT" type="a3xx_pc_perfcounter_select"/>
1558bf215546Sopenharmony_ci	<reg32 offset="0x0c4b" name="PC_PERFCOUNTER3_SELECT" type="a3xx_pc_perfcounter_select"/>
1559bf215546Sopenharmony_ci	<reg32 offset="0x0c81" name="GRAS_TSE_DEBUG_ECO">
1560bf215546Sopenharmony_ci		<doc>seems to be always set to 0x00000001</doc>
1561bf215546Sopenharmony_ci	</reg32>
1562bf215546Sopenharmony_ci
1563bf215546Sopenharmony_ci	<reg32 offset="0x0c88" name="GRAS_PERFCOUNTER0_SELECT" type="a3xx_gras_tse_perfcounter_select"/>
1564bf215546Sopenharmony_ci	<reg32 offset="0x0c89" name="GRAS_PERFCOUNTER1_SELECT" type="a3xx_gras_tse_perfcounter_select"/>
1565bf215546Sopenharmony_ci	<reg32 offset="0x0c8a" name="GRAS_PERFCOUNTER2_SELECT" type="a3xx_gras_ras_perfcounter_select"/>
1566bf215546Sopenharmony_ci	<reg32 offset="0x0c8b" name="GRAS_PERFCOUNTER3_SELECT" type="a3xx_gras_ras_perfcounter_select"/>
1567bf215546Sopenharmony_ci	<array offset="0x0ca0" name="GRAS_CL_USER_PLANE" stride="4" length="6">
1568bf215546Sopenharmony_ci		<reg32 offset="0x0" name="X"/>
1569bf215546Sopenharmony_ci		<reg32 offset="0x1" name="Y"/>
1570bf215546Sopenharmony_ci		<reg32 offset="0x2" name="Z"/>
1571bf215546Sopenharmony_ci		<reg32 offset="0x3" name="W"/>
1572bf215546Sopenharmony_ci	</array>
1573bf215546Sopenharmony_ci	<reg32 offset="0x0cc0" name="RB_GMEM_BASE_ADDR"/>
1574bf215546Sopenharmony_ci	<reg32 offset="0x0cc1" name="RB_DEBUG_ECO_CONTROLS_ADDR"/>
1575bf215546Sopenharmony_ci	<reg32 offset="0x0cc6" name="RB_PERFCOUNTER0_SELECT" type="a3xx_rb_perfcounter_select"/>
1576bf215546Sopenharmony_ci	<reg32 offset="0x0cc7" name="RB_PERFCOUNTER1_SELECT" type="a3xx_rb_perfcounter_select"/>
1577bf215546Sopenharmony_ci	<reg32 offset="0x0ce0" name="RB_FRAME_BUFFER_DIMENSION">
1578bf215546Sopenharmony_ci		<bitfield name="WIDTH" low="0" high="13" type="uint"/>
1579bf215546Sopenharmony_ci		<bitfield name="HEIGHT" low="14" high="27" type="uint"/>
1580bf215546Sopenharmony_ci	</reg32>
1581bf215546Sopenharmony_ci	<reg32 offset="0x0e00" name="HLSQ_PERFCOUNTER0_SELECT" type="a3xx_hlsq_perfcounter_select"/>
1582bf215546Sopenharmony_ci	<reg32 offset="0x0e01" name="HLSQ_PERFCOUNTER1_SELECT" type="a3xx_hlsq_perfcounter_select"/>
1583bf215546Sopenharmony_ci	<reg32 offset="0x0e02" name="HLSQ_PERFCOUNTER2_SELECT" type="a3xx_hlsq_perfcounter_select"/>
1584bf215546Sopenharmony_ci	<reg32 offset="0x0e03" name="HLSQ_PERFCOUNTER3_SELECT" type="a3xx_hlsq_perfcounter_select"/>
1585bf215546Sopenharmony_ci	<reg32 offset="0x0e04" name="HLSQ_PERFCOUNTER4_SELECT" type="a3xx_hlsq_perfcounter_select"/>
1586bf215546Sopenharmony_ci	<reg32 offset="0x0e05" name="HLSQ_PERFCOUNTER5_SELECT" type="a3xx_hlsq_perfcounter_select"/>
1587bf215546Sopenharmony_ci	<reg32 offset="0x0e43" name="UNKNOWN_0E43">
1588bf215546Sopenharmony_ci		<doc>seems to be always set to 0x00000001</doc>
1589bf215546Sopenharmony_ci	</reg32>
1590bf215546Sopenharmony_ci	<reg32 offset="0x0e44" name="VFD_PERFCOUNTER0_SELECT" type="a3xx_vfd_perfcounter_select"/>
1591bf215546Sopenharmony_ci	<reg32 offset="0x0e45" name="VFD_PERFCOUNTER1_SELECT" type="a3xx_vfd_perfcounter_select"/>
1592bf215546Sopenharmony_ci	<reg32 offset="0x0e61" name="VPC_VPC_DEBUG_RAM_SEL"/>
1593bf215546Sopenharmony_ci	<reg32 offset="0x0e62" name="VPC_VPC_DEBUG_RAM_READ"/>
1594bf215546Sopenharmony_ci	<reg32 offset="0x0e64" name="VPC_PERFCOUNTER0_SELECT" type="a3xx_vpc_perfcounter_select"/>
1595bf215546Sopenharmony_ci	<reg32 offset="0x0e65" name="VPC_PERFCOUNTER1_SELECT" type="a3xx_vpc_perfcounter_select"/>
1596bf215546Sopenharmony_ci	<reg32 offset="0x0e82" name="UCHE_CACHE_MODE_CONTROL_REG"/>
1597bf215546Sopenharmony_ci	<reg32 offset="0x0e84" name="UCHE_PERFCOUNTER0_SELECT" type="a3xx_uche_perfcounter_select"/>
1598bf215546Sopenharmony_ci	<reg32 offset="0x0e85" name="UCHE_PERFCOUNTER1_SELECT" type="a3xx_uche_perfcounter_select"/>
1599bf215546Sopenharmony_ci	<reg32 offset="0x0e86" name="UCHE_PERFCOUNTER2_SELECT" type="a3xx_uche_perfcounter_select"/>
1600bf215546Sopenharmony_ci	<reg32 offset="0x0e87" name="UCHE_PERFCOUNTER3_SELECT" type="a3xx_uche_perfcounter_select"/>
1601bf215546Sopenharmony_ci	<reg32 offset="0x0e88" name="UCHE_PERFCOUNTER4_SELECT" type="a3xx_uche_perfcounter_select"/>
1602bf215546Sopenharmony_ci	<reg32 offset="0x0e89" name="UCHE_PERFCOUNTER5_SELECT" type="a3xx_uche_perfcounter_select"/>
1603bf215546Sopenharmony_ci	<reg32 offset="0x0ea0" name="UCHE_CACHE_INVALIDATE0_REG">
1604bf215546Sopenharmony_ci		<!-- might be shifted right by 5, assuming 32byte cache line size.. -->
1605bf215546Sopenharmony_ci		<bitfield name="ADDR" low="0" high="27" type="hex"/>
1606bf215546Sopenharmony_ci	</reg32>
1607bf215546Sopenharmony_ci	<reg32 offset="0x0ea1" name="UCHE_CACHE_INVALIDATE1_REG">
1608bf215546Sopenharmony_ci		<!-- might be shifted right by 5, assuming 32byte cache line size.. -->
1609bf215546Sopenharmony_ci		<bitfield name="ADDR" low="0" high="27" type="hex"/>
1610bf215546Sopenharmony_ci		<!-- I'd assume 2 bits, for FLUSH/INVALIDATE/CLEAN? -->
1611bf215546Sopenharmony_ci		<bitfield name="OPCODE" low="28" high="29" type="a3xx_cache_opcode"/>
1612bf215546Sopenharmony_ci		<bitfield name="ENTIRE_CACHE" pos="31" type="boolean"/>
1613bf215546Sopenharmony_ci	</reg32>
1614bf215546Sopenharmony_ci	<reg32 offset="0x0ea6" name="UNKNOWN_0EA6"/>
1615bf215546Sopenharmony_ci	<reg32 offset="0x0ec4" name="SP_PERFCOUNTER0_SELECT" type="a3xx_sp_perfcounter_select"/>
1616bf215546Sopenharmony_ci	<reg32 offset="0x0ec5" name="SP_PERFCOUNTER1_SELECT" type="a3xx_sp_perfcounter_select"/>
1617bf215546Sopenharmony_ci	<reg32 offset="0x0ec6" name="SP_PERFCOUNTER2_SELECT" type="a3xx_sp_perfcounter_select"/>
1618bf215546Sopenharmony_ci	<reg32 offset="0x0ec7" name="SP_PERFCOUNTER3_SELECT" type="a3xx_sp_perfcounter_select"/>
1619bf215546Sopenharmony_ci	<reg32 offset="0x0ec8" name="SP_PERFCOUNTER4_SELECT" type="a3xx_sp_perfcounter_select"/>
1620bf215546Sopenharmony_ci	<reg32 offset="0x0ec9" name="SP_PERFCOUNTER5_SELECT" type="a3xx_sp_perfcounter_select"/>
1621bf215546Sopenharmony_ci	<reg32 offset="0x0eca" name="SP_PERFCOUNTER6_SELECT" type="a3xx_sp_perfcounter_select"/>
1622bf215546Sopenharmony_ci	<reg32 offset="0x0ecb" name="SP_PERFCOUNTER7_SELECT" type="a3xx_sp_perfcounter_select"/>
1623bf215546Sopenharmony_ci	<reg32 offset="0x0ee0" name="UNKNOWN_0EE0">
1624bf215546Sopenharmony_ci		<doc>seems to be always set to 0x00000003</doc>
1625bf215546Sopenharmony_ci	</reg32>
1626bf215546Sopenharmony_ci	<reg32 offset="0x0f03" name="UNKNOWN_0F03">
1627bf215546Sopenharmony_ci		<doc>seems to be always set to 0x00000001</doc>
1628bf215546Sopenharmony_ci	</reg32>
1629bf215546Sopenharmony_ci	<reg32 offset="0x0f04" name="TP_PERFCOUNTER0_SELECT" type="a3xx_tp_perfcounter_select"/>
1630bf215546Sopenharmony_ci	<reg32 offset="0x0f05" name="TP_PERFCOUNTER1_SELECT" type="a3xx_tp_perfcounter_select"/>
1631bf215546Sopenharmony_ci	<reg32 offset="0x0f06" name="TP_PERFCOUNTER2_SELECT" type="a3xx_tp_perfcounter_select"/>
1632bf215546Sopenharmony_ci	<reg32 offset="0x0f07" name="TP_PERFCOUNTER3_SELECT" type="a3xx_tp_perfcounter_select"/>
1633bf215546Sopenharmony_ci	<reg32 offset="0x0f08" name="TP_PERFCOUNTER4_SELECT" type="a3xx_tp_perfcounter_select"/>
1634bf215546Sopenharmony_ci	<reg32 offset="0x0f09" name="TP_PERFCOUNTER5_SELECT" type="a3xx_tp_perfcounter_select"/>
1635bf215546Sopenharmony_ci
1636bf215546Sopenharmony_ci	<!-- this seems to be the register that CP_RUN_OPENCL writes: -->
1637bf215546Sopenharmony_ci	<reg32 offset="0x21f0" name="VGT_CL_INITIATOR"/>
1638bf215546Sopenharmony_ci
1639bf215546Sopenharmony_ci	<!-- seems to be same as a2xx according to fwdump.. -->
1640bf215546Sopenharmony_ci	<reg32 offset="0x21f9" name="VGT_EVENT_INITIATOR"/>
1641bf215546Sopenharmony_ci	<reg32 offset="0x21fc" name="VGT_DRAW_INITIATOR" type="vgt_draw_initiator"/>
1642bf215546Sopenharmony_ci	<reg32 offset="0x21fd" name="VGT_IMMED_DATA"/>
1643bf215546Sopenharmony_ci</domain>
1644bf215546Sopenharmony_ci
1645bf215546Sopenharmony_ci<domain name="A3XX_TEX_SAMP" width="32">
1646bf215546Sopenharmony_ci	<doc>Texture sampler dwords</doc>
1647bf215546Sopenharmony_ci	<enum name="a3xx_tex_filter">
1648bf215546Sopenharmony_ci		<value name="A3XX_TEX_NEAREST" value="0"/>
1649bf215546Sopenharmony_ci		<value name="A3XX_TEX_LINEAR" value="1"/>
1650bf215546Sopenharmony_ci		<value name="A3XX_TEX_ANISO" value="2"/>
1651bf215546Sopenharmony_ci	</enum>
1652bf215546Sopenharmony_ci	<enum name="a3xx_tex_clamp">
1653bf215546Sopenharmony_ci		<value name="A3XX_TEX_REPEAT" value="0"/>
1654bf215546Sopenharmony_ci		<value name="A3XX_TEX_CLAMP_TO_EDGE" value="1"/>
1655bf215546Sopenharmony_ci		<value name="A3XX_TEX_MIRROR_REPEAT" value="2"/>
1656bf215546Sopenharmony_ci		<value name="A3XX_TEX_CLAMP_TO_BORDER" value="3"/>
1657bf215546Sopenharmony_ci		<value name="A3XX_TEX_MIRROR_CLAMP" value="4"/>
1658bf215546Sopenharmony_ci	</enum>
1659bf215546Sopenharmony_ci	<enum name="a3xx_tex_aniso">
1660bf215546Sopenharmony_ci		<value name="A3XX_TEX_ANISO_1" value="0"/>
1661bf215546Sopenharmony_ci		<value name="A3XX_TEX_ANISO_2" value="1"/>
1662bf215546Sopenharmony_ci		<value name="A3XX_TEX_ANISO_4" value="2"/>
1663bf215546Sopenharmony_ci		<value name="A3XX_TEX_ANISO_8" value="3"/>
1664bf215546Sopenharmony_ci		<value name="A3XX_TEX_ANISO_16" value="4"/>
1665bf215546Sopenharmony_ci	</enum>
1666bf215546Sopenharmony_ci	<reg32 offset="0" name="0">
1667bf215546Sopenharmony_ci		<bitfield name="CLAMPENABLE" pos="0" type="boolean"/>
1668bf215546Sopenharmony_ci		<bitfield name="MIPFILTER_LINEAR" pos="1" type="boolean"/>
1669bf215546Sopenharmony_ci		<bitfield name="XY_MAG" low="2" high="3" type="a3xx_tex_filter"/>
1670bf215546Sopenharmony_ci		<bitfield name="XY_MIN" low="4" high="5" type="a3xx_tex_filter"/>
1671bf215546Sopenharmony_ci		<bitfield name="WRAP_S" low="6" high="8" type="a3xx_tex_clamp"/>
1672bf215546Sopenharmony_ci		<bitfield name="WRAP_T" low="9" high="11" type="a3xx_tex_clamp"/>
1673bf215546Sopenharmony_ci		<bitfield name="WRAP_R" low="12" high="14" type="a3xx_tex_clamp"/>
1674bf215546Sopenharmony_ci		<bitfield name="ANISO" low="15" high="17" type="a3xx_tex_aniso"/>
1675bf215546Sopenharmony_ci		<bitfield name="COMPARE_FUNC" low="20" high="22" type="adreno_compare_func"/>
1676bf215546Sopenharmony_ci		<bitfield name="CUBEMAPSEAMLESSFILTOFF" pos="24" type="boolean"/>
1677bf215546Sopenharmony_ci		<!-- UNNORM_COORDS == CLK_NORMALIZED_COORDS_FALSE -->
1678bf215546Sopenharmony_ci		<bitfield name="UNNORM_COORDS" pos="31" type="boolean"/>
1679bf215546Sopenharmony_ci	</reg32>
1680bf215546Sopenharmony_ci	<reg32 offset="1" name="1">
1681bf215546Sopenharmony_ci		<bitfield name="LOD_BIAS" low="0" high="10" type="fixed" radix="6"/>
1682bf215546Sopenharmony_ci		<bitfield name="MAX_LOD" low="12" high="21" type="ufixed" radix="6"/>
1683bf215546Sopenharmony_ci		<bitfield name="MIN_LOD" low="22" high="31" type="ufixed" radix="6"/>
1684bf215546Sopenharmony_ci	</reg32>
1685bf215546Sopenharmony_ci</domain>
1686bf215546Sopenharmony_ci
1687bf215546Sopenharmony_ci<domain name="A3XX_TEX_CONST" width="32">
1688bf215546Sopenharmony_ci	<doc>Texture constant dwords</doc>
1689bf215546Sopenharmony_ci	<enum name="a3xx_tex_swiz">
1690bf215546Sopenharmony_ci		<!-- same as a2xx? -->
1691bf215546Sopenharmony_ci		<value name="A3XX_TEX_X" value="0"/>
1692bf215546Sopenharmony_ci		<value name="A3XX_TEX_Y" value="1"/>
1693bf215546Sopenharmony_ci		<value name="A3XX_TEX_Z" value="2"/>
1694bf215546Sopenharmony_ci		<value name="A3XX_TEX_W" value="3"/>
1695bf215546Sopenharmony_ci		<value name="A3XX_TEX_ZERO" value="4"/>
1696bf215546Sopenharmony_ci		<value name="A3XX_TEX_ONE" value="5"/>
1697bf215546Sopenharmony_ci	</enum>
1698bf215546Sopenharmony_ci	<enum name="a3xx_tex_type">
1699bf215546Sopenharmony_ci		<value name="A3XX_TEX_1D" value="0"/>
1700bf215546Sopenharmony_ci		<value name="A3XX_TEX_2D" value="1"/>
1701bf215546Sopenharmony_ci		<value name="A3XX_TEX_CUBE" value="2"/>
1702bf215546Sopenharmony_ci		<value name="A3XX_TEX_3D" value="3"/>
1703bf215546Sopenharmony_ci	</enum>
1704bf215546Sopenharmony_ci	<enum name="a3xx_tex_msaa">
1705bf215546Sopenharmony_ci		<value name="A3XX_TPL1_MSAA1X" value="0"/>
1706bf215546Sopenharmony_ci		<value name="A3XX_TPL1_MSAA2X" value="1"/>
1707bf215546Sopenharmony_ci		<value name="A3XX_TPL1_MSAA4X" value="2"/>
1708bf215546Sopenharmony_ci		<value name="A3XX_TPL1_MSAA8X" value="3"/>
1709bf215546Sopenharmony_ci	</enum>
1710bf215546Sopenharmony_ci	<reg32 offset="0" name="0">
1711bf215546Sopenharmony_ci		<bitfield name="TILE_MODE" low="0" high="1" type="a3xx_tile_mode"/>
1712bf215546Sopenharmony_ci		<bitfield name="SRGB" pos="2" type="boolean"/>
1713bf215546Sopenharmony_ci		<bitfield name="SWIZ_X" low="4" high="6" type="a3xx_tex_swiz"/>
1714bf215546Sopenharmony_ci		<bitfield name="SWIZ_Y" low="7" high="9" type="a3xx_tex_swiz"/>
1715bf215546Sopenharmony_ci		<bitfield name="SWIZ_Z" low="10" high="12" type="a3xx_tex_swiz"/>
1716bf215546Sopenharmony_ci		<bitfield name="SWIZ_W" low="13" high="15" type="a3xx_tex_swiz"/>
1717bf215546Sopenharmony_ci		<bitfield name="MIPLVLS" low="16" high="19" type="uint"/>
1718bf215546Sopenharmony_ci		<bitfield name="MSAATEX" low="20" high="21" type="a3xx_tex_msaa"/>
1719bf215546Sopenharmony_ci		<bitfield name="FMT" low="22" high="28" type="a3xx_tex_fmt"/>
1720bf215546Sopenharmony_ci		<bitfield name="NOCONVERT" pos="29" type="boolean"/>
1721bf215546Sopenharmony_ci		<bitfield name="TYPE" low="30" high="31" type="a3xx_tex_type"/>
1722bf215546Sopenharmony_ci	</reg32>
1723bf215546Sopenharmony_ci	<reg32 offset="1" name="1">
1724bf215546Sopenharmony_ci		<bitfield name="HEIGHT" low="0" high="13" type="uint"/>
1725bf215546Sopenharmony_ci		<bitfield name="WIDTH" low="14" high="27" type="uint"/>
1726bf215546Sopenharmony_ci		<!-- minimum pitch (for mipmap levels): log2(pitchalign / 16) -->
1727bf215546Sopenharmony_ci		<bitfield name="PITCHALIGN" low="28" high="31" type="uint"/>
1728bf215546Sopenharmony_ci	</reg32>
1729bf215546Sopenharmony_ci	<reg32 offset="2" name="2">
1730bf215546Sopenharmony_ci		<doc>INDX is index of texture address(es) in MIPMAP state block</doc>
1731bf215546Sopenharmony_ci		<bitfield name="INDX" low="0" high="8" type="uint"/>
1732bf215546Sopenharmony_ci		<doc>Pitch in bytes (so actually stride)</doc>
1733bf215546Sopenharmony_ci		<bitfield name="PITCH" low="12" high="29" type="uint"/>
1734bf215546Sopenharmony_ci		<doc>SWAP bit is set for BGRA instead of RGBA</doc>
1735bf215546Sopenharmony_ci		<bitfield name="SWAP" low="30" high="31" type="a3xx_color_swap"/>
1736bf215546Sopenharmony_ci	</reg32>
1737bf215546Sopenharmony_ci	<reg32 offset="3" name="3">
1738bf215546Sopenharmony_ci		<!--
1739bf215546Sopenharmony_ci		Update: the two LAYERSZn seem not to be the same thing.
1740bf215546Sopenharmony_ci		According to Ilia's experimentation the first one goes up
1741bf215546Sopenharmony_ci		to at *least* bit 14..
1742bf215546Sopenharmony_ci		 -->
1743bf215546Sopenharmony_ci		<bitfield name="LAYERSZ1" low="0" high="16" shr="12" type="uint"/>
1744bf215546Sopenharmony_ci		<bitfield name="DEPTH" low="17" high="27" type="uint"/>
1745bf215546Sopenharmony_ci		<bitfield name="LAYERSZ2" low="28" high="31" shr="12" type="uint"/>
1746bf215546Sopenharmony_ci	</reg32>
1747bf215546Sopenharmony_ci</domain>
1748bf215546Sopenharmony_ci
1749bf215546Sopenharmony_ci</database>
1750