A couple random things I came across either in the ISA doc or elsewhere.
There's a few null image formats added that allow pixel shaders to execute without actually writing out pixels. In the ISA doc, there's mention of a mode setting that treats exports like NOPs, which seems related. If there's some pre-processing or side effects desired from a graphics shader, this can apparently allow them to continue without actually writing out pixel data.
I forget at this point whether there's a bug flag related to export and having the EXEC mask set to zero, there seems to be a decent number of such bugs now with Wave32/64 and the various modes.
Another item of comparison between Vega and RDNA is the presence or non-presence of certain message types for s_sendmsg. Vega's ISA guide mentions the existence of two message types related to primitives.
"Early Prim Dealloc" and "GS alloc req", though the guide doesn't delve into the use cases.
However, RDNA mentions "GS alloc req" as being necessary for primitive shaders to reserve output buffer space before they can export their results.
For some reason, the "Early Prim Dealloc" message is missing from the version of the RDNA guide we have, though its number in the table is unused. Whether this had something to do with primitive shaders as well, and whether its absence can explain why some of the numbers for Navi's primitive shaders don't match Vega's marketing isn't clear.
Vega and RDNA also took out message type 1, which is an interrupt message documented in earlier guides.
There's a few null image formats added that allow pixel shaders to execute without actually writing out pixels. In the ISA doc, there's mention of a mode setting that treats exports like NOPs, which seems related. If there's some pre-processing or side effects desired from a graphics shader, this can apparently allow them to continue without actually writing out pixel data.
I forget at this point whether there's a bug flag related to export and having the EXEC mask set to zero, there seems to be a decent number of such bugs now with Wave32/64 and the various modes.
Another item of comparison between Vega and RDNA is the presence or non-presence of certain message types for s_sendmsg. Vega's ISA guide mentions the existence of two message types related to primitives.
"Early Prim Dealloc" and "GS alloc req", though the guide doesn't delve into the use cases.
However, RDNA mentions "GS alloc req" as being necessary for primitive shaders to reserve output buffer space before they can export their results.
For some reason, the "Early Prim Dealloc" message is missing from the version of the RDNA guide we have, though its number in the table is unused. Whether this had something to do with primitive shaders as well, and whether its absence can explain why some of the numbers for Navi's primitive shaders don't match Vega's marketing isn't clear.
Vega and RDNA also took out message type 1, which is an interrupt message documented in earlier guides.