TODO now there seem to be two buffers of VSC data (both referenced by
CP_SET_BIN_DATA packet. Not sure what this new DATA2 one is, but seems
to have the larger pitch.
+
+ The "DATA2" buffer is probably actually the main visibility stream; it
+ is at least the larger of the two.
+
+ For VSC_DATA_PITCH, 0x20 actually seems to be sufficient (although blob
+ uses something somewhat larger) for many cases, although required value
+ can ramp up somewhat higher. Values less than 0x20 trigger GPU hangs
+ even with small amount of geometry (so possibly 0x20 is minimum
+ alignment or something like that). So far I can't seem to find any-
+ thing that needs values larger than 0x20
-->
<reg32 offset="0x0c30" name="VSC_PIPE_DATA2_ADDRESS_LO"/>
<reg32 offset="0x0c31" name="VSC_PIPE_DATA2_ADDRESS_HI"/>
<reg32 offset="0x0c36" name="VSC_PIPE_DATA_PITCH"/>
<reg32 offset="0x0c37" name="VSC_PIPE_DATA_ARRAY_PITCH" shr="4" type="uint"/>
- <!--
- note, also a range starting at 0x0c58, one or the other probably
- corresponds to the new "VSC_XXX" thing, whatever it is..
- -->
+ <array offset="0x0c38" name="VSC_STATE" stride="1" length="32">
+ <doc>
+ Seems to be a bitmap of which tiles mapped to the VSC
+ pipe contain geometry.
+
+ I suppose we can connect a maximum of 32 tiles to a
+ single VSC pipe.
+ </doc>
+ <reg32 offset="0x0" name="REG"/>
+ </array>
+
+ <array offset="0x0c58" name="VSC_SIZE2" stride="1" length="32">
+ <doc>
+ Has the size of data written to corresponding VSC_DATA2
+ buffer.
+ </doc>
+ <reg32 offset="0x0" name="REG"/>
+ </array>
+
<array offset="0x0c78" name="VSC_SIZE" stride="1" length="32">
<doc>
Has the size of data written to corresponding VSC pipe, ie.
<value name="LRZ_FLUSH" value="38" variants="A5XX,A6XX"/>
<value name="UNK_2C" value="44" variants="A5XX"/>
<value name="UNK_2D" value="45" variants="A5XX"/>
+
+ <!-- a6xx events -->
+ <value name="CACHE_INVALIDATE" value="49" variants="A6XX"/>
</enum>
<enum name="pc_di_primtype">
</reg32>
</domain>
+<!-- I *think* this existed at least as far back as a4xx -->
+<domain name="CP_COND_REG_EXEC" width="32">
+ <reg32 offset="0" name="0">
+ <bitfield name="UNK28" pos="28" type="boolean"/>
+ </reg32>
+ <reg32 offset="1" name="1">
+ <bitfield name="DWORDS" low="0" high="31" type="uint"/>
+ </reg32>
+</domain>
+
</database>