ir3: fix parsing of texture prefetch headers

Adjust ir3 parsing rules for texture prefetches to the current state. Those
rules expect the write mask to always be present, so the disassembly
production code is adjusted accordingly.

Signed-off-by: Zan Dobersek <zdobersek@igalia.com>
Reviewed-by: Danylo Piliaiev <dpiliaiev@igalia.com>
Reviewed-by: Job Noorman <jnoorman@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/34076>
This commit is contained in:
Zan Dobersek 2025-03-14 11:26:06 +01:00 committed by Marge Bot
parent c2f4d3d139
commit 0acf46b973
2 changed files with 7 additions and 5 deletions

View file

@ -893,12 +893,16 @@ in_header: T_A_IN '(' T_REGISTER ')' T_IDENTIFIER '(' T_IDENTIFIER '=' i
out_header: T_A_OUT '(' T_REGISTER ')' T_IDENTIFIER '(' T_IDENTIFIER '=' integer ')' { }
/* The only used OPC for texture prefetches seems to be SAM */
tex_header_opc: T_OP_SAM
tex_header: T_A_TEX '(' T_REGISTER ')'
T_IDENTIFIER '=' integer ',' /* src */
T_IDENTIFIER '=' integer ',' /* bindless */
T_IDENTIFIER '=' integer ',' /* samp */
T_IDENTIFIER '=' integer ',' /* tex */
T_MOD_TEX '=' integer ',' /* tex */
T_IDENTIFIER '=' integer ',' /* wrmask */
T_IDENTIFIER '=' integer /* cmd */ { }
T_IDENTIFIER '=' tex_header_opc /* cmd */ { }
fullnop_start_section: T_A_FULLNOPSTART { is_in_fullnop_section = true; }
fullnop_end_section: T_A_FULLNOPEND { is_in_fullnop_section = false; }

View file

@ -921,9 +921,7 @@ ir3_shader_disasm(struct ir3_shader_variant *so, uint32_t *bin, FILE *out)
fprintf(out, "@in(%sr%d.%c)\tin%d",
(reg->flags & IR3_REG_HALF) ? "h" : "", (regid >> 2),
"xyzw"[regid & 0x3], i);
if (reg->wrmask > 0x1)
fprintf(out, " (wrmask=0x%x)", reg->wrmask);
fprintf(out, " (wrmask=0x%x)", reg->wrmask);
fprintf(out, "\n");
}