From 6738fb88d35649ce5e2d3648a3cb6a6700d922ba Mon Sep 17 00:00:00 2001 From: Emma Anholt Date: Mon, 11 May 2026 16:37:06 -0700 Subject: [PATCH] ir3: Deduplicate shader disassembly generation. Part-of: --- src/freedreno/ir3/ir3_shader.c | 28 +++++++++------------------- 1 file changed, 9 insertions(+), 19 deletions(-) diff --git a/src/freedreno/ir3/ir3_shader.c b/src/freedreno/ir3/ir3_shader.c index 5bae4c46da9..d6bd4d68161 100644 --- a/src/freedreno/ir3/ir3_shader.c +++ b/src/freedreno/ir3/ir3_shader.c @@ -408,7 +408,7 @@ assemble_variant(struct ir3_shader_variant *v, bool internal) bool shader_overridden = ir3_shader_override_path && try_override_shader_variant(v, v->blake3_str); - if (v->disasm_info.write_disasm) { + if (v->disasm_info.write_disasm || dbg_enabled || shader_overridden) { char *stream_data = NULL; size_t stream_size = 0; FILE *stream = open_memstream(&stream_data, &stream_size); @@ -421,25 +421,15 @@ assemble_variant(struct ir3_shader_variant *v, bool internal) fclose(stream); - v->disasm_info.disasm = ralloc_size(v, stream_size + 1); - memcpy(v->disasm_info.disasm, stream_data, stream_size); - v->disasm_info.disasm[stream_size] = 0; - free(stream_data); - } + if (v->disasm_info.write_disasm) { + v->disasm_info.disasm = ralloc_size(v, stream_size + 1); + memcpy(v->disasm_info.disasm, stream_data, stream_size); + v->disasm_info.disasm[stream_size] = 0; + } + if (dbg_enabled || shader_overridden) { + mesa_log_multiline(MESA_LOG_INFO, stream_data); + } - if (dbg_enabled || shader_overridden) { - char *stream_data = NULL; - size_t stream_size = 0; - FILE *stream = open_memstream(&stream_data, &stream_size); - - fprintf(stream, - "Native code%s for unnamed %s shader %s with blake3 %s:\n", - shader_overridden ? " (overridden)" : "", ir3_shader_stage(v), - v->name, v->blake3_str); - ir3_shader_disasm(v, v->bin, stream); - fclose(stream); - - mesa_log_multiline(MESA_LOG_INFO, stream_data); free(stream_data); } }