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:
parent
9df7ad0320
commit
10f6191fb5
|
@ -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,
|
||||
};
|
||||
|
|
Loading…
Reference in New Issue