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