asahi: add XML for cdm stream link with return

I don't know of any case of Apple's driver using this, but it seems to work. The
stream link bit is identical to VDM so that was easy, the tricky part was the
return but I bruteforced the encoding space and this is the (only) thing that
worked. So add the XML.

Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/32320>
This commit is contained in:
Alyssa Rosenzweig
2024-11-21 18:29:30 -04:00
committed by Marge Bot
parent ebdca6344e
commit 0755b6d3d5
2 changed files with 12 additions and 1 deletions

View File

@@ -984,6 +984,7 @@
<value name="Stream Link" value="1"/>
<value name="Stream Terminate" value="2"/>
<value name="Barrier" value="3"/>
<value name="Stream Return" value="4"/>
</enum>
<enum name="CDM Mode">
@@ -1065,6 +1066,7 @@
<struct name="CDM Stream Link" size="8">
<field name="Target hi" size="8" start="0" type="hex"/>
<field name="With return" size="1" start="28" type="bool"/>
<field name="Block Type" size="3" start="29" type="CDM Block Type" exact="Stream Link"/>
<field name="Target lo" size="32" start="32" type="hex"/>
</struct>
@@ -1072,6 +1074,10 @@
<struct name="CDM Stream Terminate" size="8">
<field name="Block Type" size="3" start="29" type="CDM Block Type" exact="Stream Terminate"/>
</struct>
<struct name="CDM Stream Return" size="8">
<field name="Block Type" size="3" start="29" type="CDM Block Type" exact="Stream Return"/>
</struct>
<!-- CDM commands end -->
<!--- The rest of this file is likely software defined by macOS kernel -->

View File

@@ -569,7 +569,7 @@ agxdecode_cdm(struct agxdecode_ctx *ctx, const uint8_t *map, uint64_t *link,
agx_unpack(agxdecode_dump_stream, map, CDM_STREAM_LINK, hdr);
DUMP_UNPACKED(CDM_STREAM_LINK, hdr, "Stream Link\n");
*link = hdr.target_lo | (((uint64_t)hdr.target_hi) << 32);
return STATE_LINK;
return hdr.with_return ? STATE_CALL : STATE_LINK;
}
case AGX_CDM_BLOCK_TYPE_STREAM_TERMINATE: {
@@ -577,6 +577,11 @@ agxdecode_cdm(struct agxdecode_ctx *ctx, const uint8_t *map, uint64_t *link,
return STATE_DONE;
}
case AGX_CDM_BLOCK_TYPE_STREAM_RETURN: {
DUMP_CL(CDM_STREAM_RETURN, map, "Stream Return");
return STATE_RET;
}
case AGX_CDM_BLOCK_TYPE_BARRIER: {
DUMP_CL(CDM_BARRIER, map, "Barrier");
return AGX_CDM_BARRIER_LENGTH;