From e58f39fe2cbabe0a8545fa15c819834b7beb2b2a Mon Sep 17 00:00:00 2001 From: Emma Anholt Date: Fri, 30 May 2025 10:37:53 -0700 Subject: [PATCH] ir3: Store the sha1 string of the compiled shader in the shader info. I want to use this for matching shaders to tracepoints, but you don't know at compile time if the tracepoint will be enabled. So we just always save it. Part-of: --- src/freedreno/ir3/ir3_shader.c | 16 +++++++--------- src/freedreno/ir3/ir3_shader.h | 2 ++ 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/freedreno/ir3/ir3_shader.c b/src/freedreno/ir3/ir3_shader.c index 0a2825de94c..527e2e97736 100644 --- a/src/freedreno/ir3/ir3_shader.c +++ b/src/freedreno/ir3/ir3_shader.c @@ -393,16 +393,14 @@ assemble_variant(struct ir3_shader_variant *v, bool internal) { v->bin = ir3_shader_assemble(v); + unsigned char sha1[21]; + _mesa_sha1_compute(v->bin, v->info.size, sha1); + _mesa_sha1_format(v->sha1_str, sha1); + bool dbg_enabled = shader_debug_enabled(v->type, internal); if (dbg_enabled || ir3_shader_override_path || v->disasm_info.write_disasm) { - unsigned char sha1[21]; - char sha1buf[41]; - - _mesa_sha1_compute(v->bin, v->info.size, sha1); - _mesa_sha1_format(sha1buf, sha1); - bool shader_overridden = - ir3_shader_override_path && try_override_shader_variant(v, sha1buf); + ir3_shader_override_path && try_override_shader_variant(v, v->sha1_str); if (v->disasm_info.write_disasm) { char *stream_data = NULL; @@ -412,7 +410,7 @@ assemble_variant(struct ir3_shader_variant *v, bool internal) fprintf(stream, "Native code%s for unnamed %s shader %s with sha1 %s:\n", shader_overridden ? " (overridden)" : "", ir3_shader_stage(v), - v->name, sha1buf); + v->name, v->sha1_str); ir3_shader_disasm(v, v->bin, stream); fclose(stream); @@ -431,7 +429,7 @@ assemble_variant(struct ir3_shader_variant *v, bool internal) fprintf(stream, "Native code%s for unnamed %s shader %s with sha1 %s:\n", shader_overridden ? " (overridden)" : "", ir3_shader_stage(v), - v->name, sha1buf); + v->name, v->sha1_str); if (v->type == MESA_SHADER_FRAGMENT) fprintf(stream, "SIMD0\n"); ir3_shader_disasm(v, v->bin, stream); diff --git a/src/freedreno/ir3/ir3_shader.h b/src/freedreno/ir3/ir3_shader.h index a7c317e4e9e..825ae79b08e 100644 --- a/src/freedreno/ir3/ir3_shader.h +++ b/src/freedreno/ir3/ir3_shader.h @@ -694,6 +694,8 @@ struct ir3_shader_variant { struct ir3_info info; + char sha1_str[SHA1_DIGEST_STRING_LENGTH]; + struct ir3_shader_options shader_options; uint32_t constant_data_size;