diff --git a/.pick_status.json b/.pick_status.json index 404425c80c1..39af840b371 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -2384,7 +2384,7 @@ "description": "nir/lower_printf: fix missing singleton add", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": null, "notes": null diff --git a/src/compiler/nir/nir_lower_printf.c b/src/compiler/nir/nir_lower_printf.c index 677c3061321..bf2ce1f6212 100644 --- a/src/compiler/nir/nir_lower_printf.c +++ b/src/compiler/nir/nir_lower_printf.c @@ -76,6 +76,7 @@ lower_printf_intrin(nir_builder *b, nir_intrinsic_instr *prntf, void *_options) */ assert(fmt_str_id - 1 < b->shader->printf_info_count && "must be in-bounds"); + u_printf_singleton_add(&b->shader->printf_info[fmt_str_id - 1], 1); uint32_t hash = u_printf_hash(&b->shader->printf_info[fmt_str_id - 1]); fmt_str_id = hash; } diff --git a/src/compiler/spirv/vtn_bindgen2.c b/src/compiler/spirv/vtn_bindgen2.c index a28c0c6e33e..ace8e9076ec 100644 --- a/src/compiler/spirv/vtn_bindgen2.c +++ b/src/compiler/spirv/vtn_bindgen2.c @@ -329,6 +329,7 @@ main(int argc, char **argv) } glsl_type_singleton_init_or_ref(); + u_printf_singleton_init_or_ref(); for (unsigned i = 0; i < 2; ++i) { FILE *fp = i ? fp_c : fp_h; @@ -456,6 +457,7 @@ main(int argc, char **argv) fprintf(fp_c, " static vtn_bindgen_dummy vtn_bindgen_dummy_instance;\n"); fprintf(fp_c, "}\n"); + u_printf_singleton_decref(); glsl_type_singleton_decref(); fclose(fp_c); fclose(fp_h); diff --git a/src/panfrost/clc/pan_compile.c b/src/panfrost/clc/pan_compile.c index 63d78698c22..3743f1d805f 100644 --- a/src/panfrost/clc/pan_compile.c +++ b/src/panfrost/clc/pan_compile.c @@ -27,6 +27,7 @@ #include "panfrost/util/pan_ir.h" #include "util/macros.h" #include "util/u_dynarray.h" +#include "util/u_printf.h" #include static const struct spirv_to_nir_options spirv_options = { @@ -320,6 +321,7 @@ main(int argc, const char **argv) } glsl_type_singleton_init_or_ref(); + u_printf_singleton_init_or_ref(); /* POSIX basename can modify the content of the path */ char *tmp_out_h_path = strdup(output_h_path); @@ -467,6 +469,7 @@ main(int argc, const char **argv) nir_precomp_print_binary_map(fp_c, nir, library_name, target_name, remap_variant); + u_printf_singleton_decref(); glsl_type_singleton_decref(); fclose(fp_c); fclose(fp_h); @@ -475,6 +478,7 @@ main(int argc, const char **argv) return 0; invalid_precomp: + u_printf_singleton_decref(); glsl_type_singleton_decref(); fp_c_open_failed: fclose(fp_h);