asahi: Identify aux framebuffer data structure

Total guess at the name.

Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15482>
This commit is contained in:
Alyssa Rosenzweig 2022-02-21 12:05:00 -05:00 committed by Marge Bot
parent 535f1c1166
commit eb9da583d7
3 changed files with 16 additions and 6 deletions

View File

@ -547,6 +547,15 @@
<field name="Percent" start="5:16" size="16" type="uint"/>
</struct>
<struct name="IOGPU Aux Framebuffer" size="32">
<field name="Unk 0" start="0:0" size="32" default="0x4" type="hex"/>
<field name="Unk 1" start="2:0" size="16" default="0xc000" type="hex"/>
<field name="Z16 Unorm attachment" start="2:18" size="1" type="bool"/>
<field name="Width" start="4:0" size="32" type="uint"/>
<field name="Height" start="5:0" size="32" type="uint"/>
<field name="Pointer" start="6:0" size="64" type="address"/>
</struct>
<struct name="IOGPU Clear Z/S" size="32">
<!-- Encoded like the depth attachment -->
<field name="Depth clear value" start="2:0" size="32" type="hex"/>

View File

@ -443,6 +443,7 @@ agxdecode_cmdstream(unsigned cmdbuf_handle, unsigned map_handle, bool verbose)
DUMP_UNPACKED(IOGPU_HEADER, cmd, "IOGPU Header\n");
assert(cmd.attachment_offset_1 == cmd.attachment_offset_2);
DUMP_CL(IOGPU_AUX_FRAMEBUFFER, ((uint32_t *) cmdbuf->ptr.cpu) + 220, "Aux Framebuffer");
DUMP_CL(IOGPU_CLEAR_Z_S, ((uint32_t *) cmdbuf->ptr.cpu) + 276, "Clear Z/S");
uint32_t *attachments = (uint32_t *) ((uint8_t *) cmdbuf->ptr.cpu + cmd.attachment_offset_1);

View File

@ -89,12 +89,12 @@ demo_cmdbuf(uint64_t *buf, size_t size,
map[168] = unk_buffer & 0xFFFFFFFF;
map[169] = unk_buffer >> 32;
map[220] = 4;
map[222] = 0xc000;
map[224] = width;
map[225] = height;
map[226] = unk_buffer_2 & 0xFFFFFFFF;
map[227] = unk_buffer_2 >> 32;
agx_pack(map + 220, IOGPU_AUX_FRAMEBUFFER, cfg) {
cfg.width = width;
cfg.height = height;
cfg.z16_unorm_attachment = false;
cfg.pointer = unk_buffer_2;
}
agx_pack(map + 276, IOGPU_CLEAR_Z_S, cfg) {
cfg.depth_clear_value = fui(1.0); // 32-bit float