1bf215546Sopenharmony_ci<?xml version="1.0" ?>
2bf215546Sopenharmony_ci
3bf215546Sopenharmony_ci<!--
4bf215546Sopenharmony_ciCopyright © 2022 Imagination Technologies Ltd.
5bf215546Sopenharmony_ci
6bf215546Sopenharmony_ciPermission is hereby granted, free of charge, to any person obtaining a copy
7bf215546Sopenharmony_ciof this software and associated documentation files (the "Software"), to deal
8bf215546Sopenharmony_ciin the Software without restriction, including without limitation the rights
9bf215546Sopenharmony_cito use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10bf215546Sopenharmony_cicopies of the Software, and to permit persons to whom the Software is
11bf215546Sopenharmony_cifurnished to do so, subject to the following conditions:
12bf215546Sopenharmony_ci
13bf215546Sopenharmony_ciThe above copyright notice and this permission notice (including the next
14bf215546Sopenharmony_ciparagraph) shall be included in all copies or substantial portions of the
15bf215546Sopenharmony_ciSoftware.
16bf215546Sopenharmony_ci
17bf215546Sopenharmony_ciTHE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18bf215546Sopenharmony_ciIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19bf215546Sopenharmony_ciFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20bf215546Sopenharmony_ciAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21bf215546Sopenharmony_ciLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
22bf215546Sopenharmony_ciOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
23bf215546Sopenharmony_ciSOFTWARE.
24bf215546Sopenharmony_ci-->
25bf215546Sopenharmony_ci
26bf215546Sopenharmony_ci<csbgen name="ROGUE" prefix="VDMCTRL">
27bf215546Sopenharmony_ci
28bf215546Sopenharmony_ci	<enum name="BLOCK_TYPE">
29bf215546Sopenharmony_ci		<value name="PPP_STATE_UPDATE" value="0"/>
30bf215546Sopenharmony_ci		<value name="PDS_STATE_UPDATE" value="1"/>
31bf215546Sopenharmony_ci		<value name="VDM_STATE_UPDATE" value="2"/>
32bf215546Sopenharmony_ci		<value name="INDEX_LIST"       value="3"/>
33bf215546Sopenharmony_ci		<value name="STREAM_LINK"      value="4"/>
34bf215546Sopenharmony_ci		<value name="STREAM_RETURN"    value="5"/>
35bf215546Sopenharmony_ci		<value name="STREAM_TERMINATE" value="6"/>
36bf215546Sopenharmony_ci		<value name="CONTROL"          value="7"/>
37bf215546Sopenharmony_ci	</enum>
38bf215546Sopenharmony_ci
39bf215546Sopenharmony_ci	<enum name="DM_TARGET">
40bf215546Sopenharmony_ci		<value name="VDM" value="0"/>
41bf215546Sopenharmony_ci		<value name="DDM" value="1"/>
42bf215546Sopenharmony_ci	</enum>
43bf215546Sopenharmony_ci
44bf215546Sopenharmony_ci	<enum name="FLATSHADE_CONTROL">
45bf215546Sopenharmony_ci		<value name="VERTEX_0" value="0"/>
46bf215546Sopenharmony_ci		<value name="VERTEX_1" value="1"/>
47bf215546Sopenharmony_ci		<value name="VERTEX_2" value="2"/>
48bf215546Sopenharmony_ci	</enum>
49bf215546Sopenharmony_ci
50bf215546Sopenharmony_ci	<enum name="INDEX_SIZE">
51bf215546Sopenharmony_ci		<value name="B8"  value="0"/>
52bf215546Sopenharmony_ci		<value name="B16" value="1"/>
53bf215546Sopenharmony_ci		<value name="B32" value="2"/>
54bf215546Sopenharmony_ci	</enum>
55bf215546Sopenharmony_ci
56bf215546Sopenharmony_ci	<enum name="PRIMITIVE_TOPOLOGY">
57bf215546Sopenharmony_ci		<value name="POINT_LIST"     value="0"/>
58bf215546Sopenharmony_ci		<value name="LINE_LIST"      value="1"/>
59bf215546Sopenharmony_ci		<value name="LINE_LIST_ADJ"  value="2"/>
60bf215546Sopenharmony_ci		<value name="LINE_STRIP"     value="3"/>
61bf215546Sopenharmony_ci		<value name="LINE_STRIP_ADJ" value="4"/>
62bf215546Sopenharmony_ci		<value name="LINE_LOOP"      value="5"/>
63bf215546Sopenharmony_ci		<value name="TRI_LIST"       value="6"/>
64bf215546Sopenharmony_ci		<value name="TRI_LIST_ADJ"   value="7"/>
65bf215546Sopenharmony_ci		<value name="TRI_LIST_EDGE"  value="8"/>
66bf215546Sopenharmony_ci		<value name="TRI_STRIP"      value="9"/>
67bf215546Sopenharmony_ci		<value name="TRI_STRIP_ADJ"  value="10"/>
68bf215546Sopenharmony_ci		<value name="TRI_FAN"        value="11"/>
69bf215546Sopenharmony_ci		<value name="PATCH_LIST"     value="12"/>
70bf215546Sopenharmony_ci	</enum>
71bf215546Sopenharmony_ci
72bf215546Sopenharmony_ci	<enum name="SD_TYPE">
73bf215546Sopenharmony_ci		<value name="NONE" value="0"/>
74bf215546Sopenharmony_ci		<value name="PDS"  value="1"/>
75bf215546Sopenharmony_ci		<value name="USC"  value="2"/>
76bf215546Sopenharmony_ci	</enum>
77bf215546Sopenharmony_ci
78bf215546Sopenharmony_ci	<enum name="USC_TARGET">
79bf215546Sopenharmony_ci		<value name="ALL" value="0"/>
80bf215546Sopenharmony_ci		<value name="ANY" value="1"/>
81bf215546Sopenharmony_ci	</enum>
82bf215546Sopenharmony_ci
83bf215546Sopenharmony_ci	<enum name="UVS_SCRATCH_SIZE_SELECT">
84bf215546Sopenharmony_ci		<value name="FIVE" value="0"/>
85bf215546Sopenharmony_ci		<value name="ONE"  value="1"/>
86bf215546Sopenharmony_ci	</enum>
87bf215546Sopenharmony_ci
88bf215546Sopenharmony_ci	<struct name="PPP_STATE0" length="1">
89bf215546Sopenharmony_ci		<field name="block_type" start="29" end="31" type="BLOCK_TYPE" default="PPP_STATE_UPDATE"/>
90bf215546Sopenharmony_ci		<field name="word_count" start="8" end="15" type="uint"/>
91bf215546Sopenharmony_ci		<field name="addrmsb" start="0" end="7" shift="32" type="address"/>
92bf215546Sopenharmony_ci	</struct>
93bf215546Sopenharmony_ci
94bf215546Sopenharmony_ci	<struct name="PPP_STATE1" length="1">
95bf215546Sopenharmony_ci		<field name="addrlsb" start="2" end="31" shift="2" type="address"/>
96bf215546Sopenharmony_ci	</struct>
97bf215546Sopenharmony_ci
98bf215546Sopenharmony_ci	<struct name="PDS_STATE0" length="1">
99bf215546Sopenharmony_ci		<field name="block_type" start="29" end="31" type="BLOCK_TYPE" default="PDS_STATE_UPDATE"/>
100bf215546Sopenharmony_ci		<field name="dm_target" start="28" end="28" type="DM_TARGET"/>
101bf215546Sopenharmony_ci		<field name="usc_target" start="25" end="25" type="USC_TARGET"/>
102bf215546Sopenharmony_ci		<field name="usc_common_size" start="16" end="24" type="uint">
103bf215546Sopenharmony_ci			<define name="UNIT_SIZE" value="64"/>
104bf215546Sopenharmony_ci		</field>
105bf215546Sopenharmony_ci		<field name="usc_unified_size" start="10" end="15" type="uint">
106bf215546Sopenharmony_ci			<define name="UNIT_SIZE" value="16"/>
107bf215546Sopenharmony_ci		</field>
108bf215546Sopenharmony_ci		<field name="pds_temp_size" start="6" end="9" type="uint">
109bf215546Sopenharmony_ci			<define name="UNIT_SIZE" value="16"/>
110bf215546Sopenharmony_ci		</field>
111bf215546Sopenharmony_ci		<field name="pds_data_size" start="0" end="5" type="uint">
112bf215546Sopenharmony_ci			<define name="UNIT_SIZE" value="16"/>
113bf215546Sopenharmony_ci		</field>
114bf215546Sopenharmony_ci	</struct>
115bf215546Sopenharmony_ci
116bf215546Sopenharmony_ci	<struct name="PDS_STATE1" length="1">
117bf215546Sopenharmony_ci		<!-- This is an offset actually. Note for when we auto-generate the xmls. -->
118bf215546Sopenharmony_ci		<field name="pds_data_addr" start="4" end="31" shift="4" type="address"/>
119bf215546Sopenharmony_ci		<field name="sd_type" start="2" end="3" type="SD_TYPE"/>
120bf215546Sopenharmony_ci		<field name="sd_next_type" start="0" end="1" type="SD_TYPE"/>
121bf215546Sopenharmony_ci	</struct>
122bf215546Sopenharmony_ci
123bf215546Sopenharmony_ci	<struct name="PDS_STATE2" length="1">
124bf215546Sopenharmony_ci		<!-- This is an offset actually. Note for when we auto-generate the xmls. -->
125bf215546Sopenharmony_ci		<field name="pds_code_addr" start="4" end="31" shift="4" type="address"/>
126bf215546Sopenharmony_ci	</struct>
127bf215546Sopenharmony_ci
128bf215546Sopenharmony_ci	<struct name="STREAM_LINK0" length="1">
129bf215546Sopenharmony_ci		<field name="block_type" start="29" end="31" type="BLOCK_TYPE" default="STREAM_LINK"/>
130bf215546Sopenharmony_ci		<field name="with_return" start="28" end="28" type="bool"/>
131bf215546Sopenharmony_ci		<field name="compare_present" start="27" end="27" type="bool"/>
132bf215546Sopenharmony_ci		<field name="compare_mode" start="24" end="26" type="uint"/>
133bf215546Sopenharmony_ci		<field name="compare_data" start="8" end="23" type="uint"/>
134bf215546Sopenharmony_ci		<field name="link_addrmsb" start="0" end="7" shift="32" type="address"/>
135bf215546Sopenharmony_ci	</struct>
136bf215546Sopenharmony_ci
137bf215546Sopenharmony_ci	<struct name="STREAM_LINK1" length="1">
138bf215546Sopenharmony_ci		<field name="link_addrlsb" start="2" end="31" shift="2" type="address"/>
139bf215546Sopenharmony_ci	</struct>
140bf215546Sopenharmony_ci
141bf215546Sopenharmony_ci	<struct name="STREAM_RETURN" length="1">
142bf215546Sopenharmony_ci		<field name="block_type" start="29" end="31" type="BLOCK_TYPE" default="STREAM_RETURN"/>
143bf215546Sopenharmony_ci	</struct>
144bf215546Sopenharmony_ci
145bf215546Sopenharmony_ci	<struct name="STREAM_TERMINATE" length="1">
146bf215546Sopenharmony_ci		<field name="block_type" start="29" end="31" type="BLOCK_TYPE" default="STREAM_TERMINATE"/>
147bf215546Sopenharmony_ci		<field name="context" start="0" end="0" type="bool"/>
148bf215546Sopenharmony_ci	</struct>
149bf215546Sopenharmony_ci
150bf215546Sopenharmony_ci	<struct name="VDM_STATE0" length="1">
151bf215546Sopenharmony_ci		<field name="block_type" start="29" end="31" type="BLOCK_TYPE" default="VDM_STATE_UPDATE"/>
152bf215546Sopenharmony_ci		<field name="cut_index_present" start="28" end="28" type="bool"/>
153bf215546Sopenharmony_ci		<field name="vs_data_addr_present" start="27" end="27" type="bool"/>
154bf215546Sopenharmony_ci		<field name="vs_other_present" start="26" end="26" type="bool"/>
155bf215546Sopenharmony_ci		<field name="ds_present" start="24" end="24" type="bool"/>
156bf215546Sopenharmony_ci		<field name="gs_present" start="23" end="23" type="bool"/>
157bf215546Sopenharmony_ci		<field name="hs_present" start="22" end="22" type="bool"/>
158bf215546Sopenharmony_ci		<field name="cam_size" start="7" end="14" type="uint"/>
159bf215546Sopenharmony_ci		<field name="uvs_scratch_size_select" start="6" end="6" type="UVS_SCRATCH_SIZE_SELECT"/>
160bf215546Sopenharmony_ci		<field name="cut_index_enable" start="5" end="5" type="bool"/>
161bf215546Sopenharmony_ci		<field name="tess_enable" start="4" end="4" type="bool"/>
162bf215546Sopenharmony_ci		<field name="gs_enable" start="3" end="3" type="bool"/>
163bf215546Sopenharmony_ci		<field name="flatshade_control" start="1" end="2" type="FLATSHADE_CONTROL"/>
164bf215546Sopenharmony_ci		<field name="generate_primitive_id" start="0" end="0" type="bool"/>
165bf215546Sopenharmony_ci	</struct>
166bf215546Sopenharmony_ci
167bf215546Sopenharmony_ci	<struct name="VDM_STATE1" length="1">
168bf215546Sopenharmony_ci		<field name="cut_index" start="0" end="31" type="uint"/>
169bf215546Sopenharmony_ci	</struct>
170bf215546Sopenharmony_ci
171bf215546Sopenharmony_ci	<struct name="VDM_STATE2" length="1">
172bf215546Sopenharmony_ci		<field name="vs_pds_data_base_addr" start="4" end="31" shift="4" type="address"/>
173bf215546Sopenharmony_ci	</struct>
174bf215546Sopenharmony_ci
175bf215546Sopenharmony_ci	<struct name="VDM_STATE3" length="1">
176bf215546Sopenharmony_ci		<field name="vs_pds_code_base_addr" start="4" end="31" shift="4" type="address"/>
177bf215546Sopenharmony_ci	</struct>
178bf215546Sopenharmony_ci
179bf215546Sopenharmony_ci	<struct name="VDM_STATE4" length="1">
180bf215546Sopenharmony_ci		<field name="vs_output_size" start="0" end="7" type="uint">
181bf215546Sopenharmony_ci			<define name="UNIT_SIZE" value="4"/>
182bf215546Sopenharmony_ci		</field>
183bf215546Sopenharmony_ci	</struct>
184bf215546Sopenharmony_ci
185bf215546Sopenharmony_ci	<struct name="VDM_STATE5" length="1">
186bf215546Sopenharmony_ci		<field name="vs_max_instances_ext" start="31" end="31" type="bool"/>
187bf215546Sopenharmony_ci		<field name="vs_max_instances" start="25" end="29" type="uint"/>
188bf215546Sopenharmony_ci		<field name="vs_usc_common_size" start="16" end="24" type="uint">
189bf215546Sopenharmony_ci			<define name="UNIT_SIZE" value="64"/>
190bf215546Sopenharmony_ci		</field>
191bf215546Sopenharmony_ci		<field name="vs_usc_unified_size" start="10" end="15" type="uint">
192bf215546Sopenharmony_ci			<define name="UNIT_SIZE" value="16"/>
193bf215546Sopenharmony_ci		</field>
194bf215546Sopenharmony_ci		<field name="vs_pds_temp_size" start="6" end="9" type="uint">
195bf215546Sopenharmony_ci			<define name="UNIT_SIZE" value="16"/>
196bf215546Sopenharmony_ci		</field>
197bf215546Sopenharmony_ci		<field name="vs_pds_data_size" start="0" end="5" type="uint">
198bf215546Sopenharmony_ci			<define name="UNIT_SIZE" value="16"/>
199bf215546Sopenharmony_ci		</field>
200bf215546Sopenharmony_ci	</struct>
201bf215546Sopenharmony_ci
202bf215546Sopenharmony_ci	<struct name="INDEX_LIST0" length="1">
203bf215546Sopenharmony_ci		<field name="block_type" start="29" end="31" type="BLOCK_TYPE" default="INDEX_LIST"/>
204bf215546Sopenharmony_ci		<field name="index_addr_present" start="28" end="28" type="bool"/>
205bf215546Sopenharmony_ci		<field name="index_count_present" start="27" end="27" type="bool"/>
206bf215546Sopenharmony_ci		<field name="index_instance_count_present" start="26" end="26" type="bool"/>
207bf215546Sopenharmony_ci		<field name="index_offset_present" start="25" end="25" type="bool"/>
208bf215546Sopenharmony_ci		<field name="start_present" start="24" end="24" type="bool"/>
209bf215546Sopenharmony_ci		<field name="indirect_addr_present" start="23" end="23" type="bool"/>
210bf215546Sopenharmony_ci		<field name="split_count_present" start="22" end="22" type="bool"/>
211bf215546Sopenharmony_ci		<condition type="if" check="VDM_DEGENERATE_CULLING"/>
212bf215546Sopenharmony_ci			<field name="degen_cull_enable" start="19" end="19" type="bool"/>
213bf215546Sopenharmony_ci		<condition type="endif" check="VDM_DEGENERATE_CULLING"/>
214bf215546Sopenharmony_ci		<field name="index_size" start="17" end="18" type="INDEX_SIZE"/>
215bf215546Sopenharmony_ci		<field name="patch_count" start="12" end="16" type="uint"/>
216bf215546Sopenharmony_ci		<field name="primitive_topology" start="8" end="11" type="PRIMITIVE_TOPOLOGY"/>
217bf215546Sopenharmony_ci		<field name="index_base_addrmsb" start="0" end="7" shift="32" type="address"/>
218bf215546Sopenharmony_ci	</struct>
219bf215546Sopenharmony_ci
220bf215546Sopenharmony_ci	<struct name="INDEX_LIST1" length="1">
221bf215546Sopenharmony_ci		<field name="index_base_addrlsb" start="0" end="31" shift="0" type="address"/>
222bf215546Sopenharmony_ci	</struct>
223bf215546Sopenharmony_ci
224bf215546Sopenharmony_ci	<struct name="INDEX_LIST2" length="1">
225bf215546Sopenharmony_ci		<field name="index_count" start="0" end="31" type="uint"/>
226bf215546Sopenharmony_ci	</struct>
227bf215546Sopenharmony_ci
228bf215546Sopenharmony_ci	<struct name="INDEX_LIST3" length="1">
229bf215546Sopenharmony_ci		<field name="instance_count" start="0" end="31" type="uint"/>
230bf215546Sopenharmony_ci	</struct>
231bf215546Sopenharmony_ci
232bf215546Sopenharmony_ci	<struct name="INDEX_LIST4" length="1">
233bf215546Sopenharmony_ci		<field name="index_offset" start="0" end="31" type="uint"/>
234bf215546Sopenharmony_ci	</struct>
235bf215546Sopenharmony_ci
236bf215546Sopenharmony_ci	<struct name="INDEX_LIST5" length="1">
237bf215546Sopenharmony_ci		<field name="start_index" start="0" end="31" type="uint"/>
238bf215546Sopenharmony_ci	</struct>
239bf215546Sopenharmony_ci
240bf215546Sopenharmony_ci	<struct name="INDEX_LIST6" length="1">
241bf215546Sopenharmony_ci		<field name="start_instance" start="0" end="31" type="uint"/>
242bf215546Sopenharmony_ci	</struct>
243bf215546Sopenharmony_ci
244bf215546Sopenharmony_ci	<struct name="INDEX_LIST7" length="1">
245bf215546Sopenharmony_ci		<field name="indirect_base_addrmsb" start="0" end="7" shift="32" type="address"/>
246bf215546Sopenharmony_ci	</struct>
247bf215546Sopenharmony_ci
248bf215546Sopenharmony_ci	<struct name="INDEX_LIST8" length="1">
249bf215546Sopenharmony_ci		<field name="indirect_base_addrlsb" start="2" end="31" shift="2" type="address"/>
250bf215546Sopenharmony_ci	</struct>
251bf215546Sopenharmony_ci
252bf215546Sopenharmony_ci	<struct name="INDEX_LIST9" length="1">
253bf215546Sopenharmony_ci		<field name="split_count" start="0" end="15" type="uint"/>
254bf215546Sopenharmony_ci	</struct>
255bf215546Sopenharmony_ci
256bf215546Sopenharmony_ci</csbgen>
257