turnip: copy disasm strings for pipeline executables

A single compiled_shaders instance could be reused by several
pipelines, but strings from disasm info could be stolen only once.
So now we have to copy them.

Fixes crashes when using RenderDoc.

Fixes: 05329d7f9a
("tu: Implement pipeline caching with shared Vulkan cache")

Signed-off-by: Danylo Piliaiev <dpiliaiev@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17053>
This commit is contained in:
Danylo Piliaiev 2022-06-15 17:35:39 +03:00 committed by Marge Bot
parent 9df7ad0320
commit 10f6191fb5
1 changed files with 2 additions and 5 deletions

View File

@ -2470,14 +2470,11 @@ static void
tu_append_executable(struct tu_pipeline *pipeline, struct ir3_shader_variant *variant,
char *nir_from_spirv)
{
ralloc_steal(pipeline->executables_mem_ctx, variant->disasm_info.nir);
ralloc_steal(pipeline->executables_mem_ctx, variant->disasm_info.disasm);
struct tu_pipeline_executable exe = {
.stage = variant->type,
.nir_from_spirv = nir_from_spirv,
.nir_final = variant->disasm_info.nir,
.disasm = variant->disasm_info.disasm,
.nir_final = ralloc_strdup(pipeline->executables_mem_ctx, variant->disasm_info.nir),
.disasm = ralloc_strdup(pipeline->executables_mem_ctx, variant->disasm_info.disasm),
.stats = variant->info,
.is_binning = variant->binning_pass,
};