257 lines
9.7 KiB
XML
257 lines
9.7 KiB
XML
<?xml version="1.0" ?>
|
|
|
|
<!--
|
|
Copyright © 2022 Imagination Technologies Ltd.
|
|
|
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
of this software and associated documentation files (the "Software"), to deal
|
|
in the Software without restriction, including without limitation the rights
|
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
copies of the Software, and to permit persons to whom the Software is
|
|
furnished to do so, subject to the following conditions:
|
|
|
|
The above copyright notice and this permission notice (including the next
|
|
paragraph) shall be included in all copies or substantial portions of the
|
|
Software.
|
|
|
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
SOFTWARE.
|
|
-->
|
|
|
|
<csbgen name="ROGUE" prefix="VDMCTRL">
|
|
|
|
<enum name="BLOCK_TYPE">
|
|
<value name="PPP_STATE_UPDATE" value="0"/>
|
|
<value name="PDS_STATE_UPDATE" value="1"/>
|
|
<value name="VDM_STATE_UPDATE" value="2"/>
|
|
<value name="INDEX_LIST" value="3"/>
|
|
<value name="STREAM_LINK" value="4"/>
|
|
<value name="STREAM_RETURN" value="5"/>
|
|
<value name="STREAM_TERMINATE" value="6"/>
|
|
<value name="CONTROL" value="7"/>
|
|
</enum>
|
|
|
|
<enum name="DM_TARGET">
|
|
<value name="VDM" value="0"/>
|
|
<value name="DDM" value="1"/>
|
|
</enum>
|
|
|
|
<enum name="FLATSHADE_CONTROL">
|
|
<value name="VERTEX_0" value="0"/>
|
|
<value name="VERTEX_1" value="1"/>
|
|
<value name="VERTEX_2" value="2"/>
|
|
</enum>
|
|
|
|
<enum name="INDEX_SIZE">
|
|
<value name="B8" value="0"/>
|
|
<value name="B16" value="1"/>
|
|
<value name="B32" value="2"/>
|
|
</enum>
|
|
|
|
<enum name="PRIMITIVE_TOPOLOGY">
|
|
<value name="POINT_LIST" value="0"/>
|
|
<value name="LINE_LIST" value="1"/>
|
|
<value name="LINE_LIST_ADJ" value="2"/>
|
|
<value name="LINE_STRIP" value="3"/>
|
|
<value name="LINE_STRIP_ADJ" value="4"/>
|
|
<value name="LINE_LOOP" value="5"/>
|
|
<value name="TRI_LIST" value="6"/>
|
|
<value name="TRI_LIST_ADJ" value="7"/>
|
|
<value name="TRI_LIST_EDGE" value="8"/>
|
|
<value name="TRI_STRIP" value="9"/>
|
|
<value name="TRI_STRIP_ADJ" value="10"/>
|
|
<value name="TRI_FAN" value="11"/>
|
|
<value name="PATCH_LIST" value="12"/>
|
|
</enum>
|
|
|
|
<enum name="SD_TYPE">
|
|
<value name="NONE" value="0"/>
|
|
<value name="PDS" value="1"/>
|
|
<value name="USC" value="2"/>
|
|
</enum>
|
|
|
|
<enum name="USC_TARGET">
|
|
<value name="ALL" value="0"/>
|
|
<value name="ANY" value="1"/>
|
|
</enum>
|
|
|
|
<enum name="UVS_SCRATCH_SIZE_SELECT">
|
|
<value name="FIVE" value="0"/>
|
|
<value name="ONE" value="1"/>
|
|
</enum>
|
|
|
|
<struct name="PPP_STATE0" length="1">
|
|
<field name="block_type" start="29" end="31" type="BLOCK_TYPE" default="PPP_STATE_UPDATE"/>
|
|
<field name="word_count" start="8" end="15" type="uint"/>
|
|
<field name="addrmsb" start="0" end="7" shift="32" type="address"/>
|
|
</struct>
|
|
|
|
<struct name="PPP_STATE1" length="1">
|
|
<field name="addrlsb" start="2" end="31" shift="2" type="address"/>
|
|
</struct>
|
|
|
|
<struct name="PDS_STATE0" length="1">
|
|
<field name="block_type" start="29" end="31" type="BLOCK_TYPE" default="PDS_STATE_UPDATE"/>
|
|
<field name="dm_target" start="28" end="28" type="DM_TARGET"/>
|
|
<field name="usc_target" start="25" end="25" type="USC_TARGET"/>
|
|
<field name="usc_common_size" start="16" end="24" type="uint">
|
|
<define name="UNIT_SIZE" value="64"/>
|
|
</field>
|
|
<field name="usc_unified_size" start="10" end="15" type="uint">
|
|
<define name="UNIT_SIZE" value="16"/>
|
|
</field>
|
|
<field name="pds_temp_size" start="6" end="9" type="uint">
|
|
<define name="UNIT_SIZE" value="16"/>
|
|
</field>
|
|
<field name="pds_data_size" start="0" end="5" type="uint">
|
|
<define name="UNIT_SIZE" value="16"/>
|
|
</field>
|
|
</struct>
|
|
|
|
<struct name="PDS_STATE1" length="1">
|
|
<!-- This is an offset actually. Note for when we auto-generate the xmls. -->
|
|
<field name="pds_data_addr" start="4" end="31" shift="4" type="address"/>
|
|
<field name="sd_type" start="2" end="3" type="SD_TYPE"/>
|
|
<field name="sd_next_type" start="0" end="1" type="SD_TYPE"/>
|
|
</struct>
|
|
|
|
<struct name="PDS_STATE2" length="1">
|
|
<!-- This is an offset actually. Note for when we auto-generate the xmls. -->
|
|
<field name="pds_code_addr" start="4" end="31" shift="4" type="address"/>
|
|
</struct>
|
|
|
|
<struct name="STREAM_LINK0" length="1">
|
|
<field name="block_type" start="29" end="31" type="BLOCK_TYPE" default="STREAM_LINK"/>
|
|
<field name="with_return" start="28" end="28" type="bool"/>
|
|
<field name="compare_present" start="27" end="27" type="bool"/>
|
|
<field name="compare_mode" start="24" end="26" type="uint"/>
|
|
<field name="compare_data" start="8" end="23" type="uint"/>
|
|
<field name="link_addrmsb" start="0" end="7" shift="32" type="address"/>
|
|
</struct>
|
|
|
|
<struct name="STREAM_LINK1" length="1">
|
|
<field name="link_addrlsb" start="2" end="31" shift="2" type="address"/>
|
|
</struct>
|
|
|
|
<struct name="STREAM_RETURN" length="1">
|
|
<field name="block_type" start="29" end="31" type="BLOCK_TYPE" default="STREAM_RETURN"/>
|
|
</struct>
|
|
|
|
<struct name="STREAM_TERMINATE" length="1">
|
|
<field name="block_type" start="29" end="31" type="BLOCK_TYPE" default="STREAM_TERMINATE"/>
|
|
<field name="context" start="0" end="0" type="bool"/>
|
|
</struct>
|
|
|
|
<struct name="VDM_STATE0" length="1">
|
|
<field name="block_type" start="29" end="31" type="BLOCK_TYPE" default="VDM_STATE_UPDATE"/>
|
|
<field name="cut_index_present" start="28" end="28" type="bool"/>
|
|
<field name="vs_data_addr_present" start="27" end="27" type="bool"/>
|
|
<field name="vs_other_present" start="26" end="26" type="bool"/>
|
|
<field name="ds_present" start="24" end="24" type="bool"/>
|
|
<field name="gs_present" start="23" end="23" type="bool"/>
|
|
<field name="hs_present" start="22" end="22" type="bool"/>
|
|
<field name="cam_size" start="7" end="14" type="uint"/>
|
|
<field name="uvs_scratch_size_select" start="6" end="6" type="UVS_SCRATCH_SIZE_SELECT"/>
|
|
<field name="cut_index_enable" start="5" end="5" type="bool"/>
|
|
<field name="tess_enable" start="4" end="4" type="bool"/>
|
|
<field name="gs_enable" start="3" end="3" type="bool"/>
|
|
<field name="flatshade_control" start="1" end="2" type="FLATSHADE_CONTROL"/>
|
|
<field name="generate_primitive_id" start="0" end="0" type="bool"/>
|
|
</struct>
|
|
|
|
<struct name="VDM_STATE1" length="1">
|
|
<field name="cut_index" start="0" end="31" type="uint"/>
|
|
</struct>
|
|
|
|
<struct name="VDM_STATE2" length="1">
|
|
<field name="vs_pds_data_base_addr" start="4" end="31" shift="4" type="address"/>
|
|
</struct>
|
|
|
|
<struct name="VDM_STATE3" length="1">
|
|
<field name="vs_pds_code_base_addr" start="4" end="31" shift="4" type="address"/>
|
|
</struct>
|
|
|
|
<struct name="VDM_STATE4" length="1">
|
|
<field name="vs_output_size" start="0" end="7" type="uint">
|
|
<define name="UNIT_SIZE" value="4"/>
|
|
</field>
|
|
</struct>
|
|
|
|
<struct name="VDM_STATE5" length="1">
|
|
<field name="vs_max_instances_ext" start="31" end="31" type="bool"/>
|
|
<field name="vs_max_instances" start="25" end="29" type="uint"/>
|
|
<field name="vs_usc_common_size" start="16" end="24" type="uint">
|
|
<define name="UNIT_SIZE" value="64"/>
|
|
</field>
|
|
<field name="vs_usc_unified_size" start="10" end="15" type="uint">
|
|
<define name="UNIT_SIZE" value="16"/>
|
|
</field>
|
|
<field name="vs_pds_temp_size" start="6" end="9" type="uint">
|
|
<define name="UNIT_SIZE" value="16"/>
|
|
</field>
|
|
<field name="vs_pds_data_size" start="0" end="5" type="uint">
|
|
<define name="UNIT_SIZE" value="16"/>
|
|
</field>
|
|
</struct>
|
|
|
|
<struct name="INDEX_LIST0" length="1">
|
|
<field name="block_type" start="29" end="31" type="BLOCK_TYPE" default="INDEX_LIST"/>
|
|
<field name="index_addr_present" start="28" end="28" type="bool"/>
|
|
<field name="index_count_present" start="27" end="27" type="bool"/>
|
|
<field name="index_instance_count_present" start="26" end="26" type="bool"/>
|
|
<field name="index_offset_present" start="25" end="25" type="bool"/>
|
|
<field name="start_present" start="24" end="24" type="bool"/>
|
|
<field name="indirect_addr_present" start="23" end="23" type="bool"/>
|
|
<field name="split_count_present" start="22" end="22" type="bool"/>
|
|
<condition type="if" check="VDM_DEGENERATE_CULLING"/>
|
|
<field name="degen_cull_enable" start="19" end="19" type="bool"/>
|
|
<condition type="endif" check="VDM_DEGENERATE_CULLING"/>
|
|
<field name="index_size" start="17" end="18" type="INDEX_SIZE"/>
|
|
<field name="patch_count" start="12" end="16" type="uint"/>
|
|
<field name="primitive_topology" start="8" end="11" type="PRIMITIVE_TOPOLOGY"/>
|
|
<field name="index_base_addrmsb" start="0" end="7" shift="32" type="address"/>
|
|
</struct>
|
|
|
|
<struct name="INDEX_LIST1" length="1">
|
|
<field name="index_base_addrlsb" start="0" end="31" shift="0" type="address"/>
|
|
</struct>
|
|
|
|
<struct name="INDEX_LIST2" length="1">
|
|
<field name="index_count" start="0" end="31" type="uint"/>
|
|
</struct>
|
|
|
|
<struct name="INDEX_LIST3" length="1">
|
|
<field name="instance_count" start="0" end="31" type="uint"/>
|
|
</struct>
|
|
|
|
<struct name="INDEX_LIST4" length="1">
|
|
<field name="index_offset" start="0" end="31" type="uint"/>
|
|
</struct>
|
|
|
|
<struct name="INDEX_LIST5" length="1">
|
|
<field name="start_index" start="0" end="31" type="uint"/>
|
|
</struct>
|
|
|
|
<struct name="INDEX_LIST6" length="1">
|
|
<field name="start_instance" start="0" end="31" type="uint"/>
|
|
</struct>
|
|
|
|
<struct name="INDEX_LIST7" length="1">
|
|
<field name="indirect_base_addrmsb" start="0" end="7" shift="32" type="address"/>
|
|
</struct>
|
|
|
|
<struct name="INDEX_LIST8" length="1">
|
|
<field name="indirect_base_addrlsb" start="2" end="31" shift="2" type="address"/>
|
|
</struct>
|
|
|
|
<struct name="INDEX_LIST9" length="1">
|
|
<field name="split_count" start="0" end="15" type="uint"/>
|
|
</struct>
|
|
|
|
</csbgen>
|