From 81b3dea9937baefd19d1791e1a592eec443f9085 Mon Sep 17 00:00:00 2001 From: Lionel Landwerlin Date: Thu, 19 Oct 2023 16:48:26 +0300 Subject: [PATCH] nir/clone: fix missing printf_info clone Signed-off-by: Lionel Landwerlin Cc: mesa-stable Reviewed-by: Karol Herbst Part-of: --- src/compiler/nir/nir_clone.c | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/src/compiler/nir/nir_clone.c b/src/compiler/nir/nir_clone.c index 02571203c54..c8373bc7991 100644 --- a/src/compiler/nir/nir_clone.c +++ b/src/compiler/nir/nir_clone.c @@ -687,6 +687,32 @@ clone_function(clone_state *state, const nir_function *fxn, nir_shader *ns) return nfxn; } +static u_printf_info * +clone_printf_info(void *mem_ctx, const nir_shader *s) +{ + u_printf_info *infos = ralloc_array(mem_ctx, u_printf_info, s->printf_info_count); + + for (unsigned i = 0; i < s->printf_info_count; i++) { + const u_printf_info *src_info = &s->printf_info[i]; + + infos[i].num_args = src_info->num_args; + infos[i].arg_sizes = ralloc_size(mem_ctx, + sizeof(infos[i].arg_sizes[0]) * + src_info->num_args); + memcpy(infos[i].arg_sizes, src_info->arg_sizes, + sizeof(infos[i].arg_sizes[0]) * src_info->num_args); + + + infos[i].string_size = src_info->string_size; + infos[i].strings = ralloc_size(mem_ctx, + src_info->string_size); + memcpy(infos[i].strings, src_info->strings, + src_info->string_size); + } + + return infos; +} + nir_shader * nir_shader_clone(void *mem_ctx, const nir_shader *s) { @@ -734,6 +760,11 @@ nir_shader_clone(void *mem_ctx, const nir_shader *s) memcpy(ns->xfb_info, s->xfb_info, size); } + if (s->printf_info_count > 0) { + ns->printf_info = clone_printf_info(ns, s); + ns->printf_info_count = s->printf_info_count; + } + free_clone_state(&state); return ns;