asahi: Handle 3rd deflake address

Context switching is so broken. Just trying to get closer. Adding some
XML here to see if we're missing something else obvious.

Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16512>
This commit is contained in:
Alyssa Rosenzweig 2022-04-02 12:14:32 -04:00
parent 3be0314e5a
commit c61e660323
2 changed files with 16 additions and 14 deletions

View File

@ -520,7 +520,7 @@
<value name="Stencil" value="0x11"/>
</enum>
<struct name="IOGPU Header" size="192">
<struct name="IOGPU Header" size="640">
<field name="Unk 0" start="0:0" size="32" default="0x10000" type="hex"/>
<field name="Total size" start="1:0" size="32" type="uint"/>
<!-- 0x7 in 11.x -->
@ -535,6 +535,15 @@
geometry counts -->
<field name="Deflake 1" start="38:0" size="64" type="address"/>
<field name="Deflake 2" start="40:0" size="64" type="address"/>
<field name="Unk 54" start="54:0" size="32" default="0x6b0003" type="hex"/>
<field name="Unk 55" start="55:0" size="32" default="0x3a0012" type="hex"/>
<field name="Unk 56" start="56:0" size="32" default="0x1" type="hex"/>
<field name="Deflake 3" start="110:0" size="64" type="address"/>
<field name="Unk 112" start="112:0" size="32" default="0x1" type="hex"/>
<field name="Unk 114" start="114:0" size="32" default="0x1c" type="hex"/>
<field name="Unk 118" start="118:0" size="32" default="0xffffffff" type="hex"/>
<field name="Unk 119" start="119:0" size="32" default="0xffffffff" type="hex"/>
<field name="Unk 120" start="120:0" size="32" default="0xffffffff" type="hex"/>
</struct>
<struct name="IOGPU Attachment" size="24">

View File

@ -172,17 +172,9 @@ demo_cmdbuf(uint64_t *buf, size_t size,
uint32_t *map = (uint32_t *) buf;
memset(map, 0, 518 * 4);
map[54] = 0x6b0003;
map[55] = 0x3a0012;
map[56] = 1;
/* Unknown address at word 110 */
map[112] = 1;
map[114] = 0x1c;
map[118] = 0xffffffff;
map[119] = 0xffffffff;
map[120] = 0xffffffff;
uint64_t deflake_buffer = demo_zero(pool, 0x7e0);
uint64_t deflake_1 = deflake_buffer + 0x2a0;
uint64_t deflake_2 = deflake_buffer + 0x20;
uint64_t unk_buffer = demo_zero(pool, 0x1000);
uint64_t unk_buffer_2 = demo_zero(pool, 0x8000);
@ -271,8 +263,9 @@ demo_cmdbuf(uint64_t *buf, size_t size,
cfg.unknown_offset = offset_unk;
cfg.encoder = encoder_ptr;
cfg.deflake_1 = demo_zero(pool, 0x540);
cfg.deflake_2 = demo_zero(pool, 0x280);
cfg.deflake_1 = deflake_1;
cfg.deflake_2 = deflake_2;
cfg.deflake_3 = deflake_buffer;
}
return total_size;