Mesa (main): turnip: copy disasm strings for pipeline executables

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Thu Jun 16 09:07:41 UTC 2022


Module: Mesa
Branch: main
Commit: 10f6191fb5e910c3a705bf3dd850eb94b5461973
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=10f6191fb5e910c3a705bf3dd850eb94b5461973

Author: Danylo Piliaiev <dpiliaiev at igalia.com>
Date:   Wed Jun 15 17:35:39 2022 +0300

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: 05329d7f9acabbc9306c9538a30b502d4c580d38
("tu: Implement pipeline caching with shared Vulkan cache")

Signed-off-by: Danylo Piliaiev <dpiliaiev at igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17053>

---

 src/freedreno/vulkan/tu_pipeline.c | 7 ++-----
 1 file changed, 2 insertions(+), 5 deletions(-)

diff --git a/src/freedreno/vulkan/tu_pipeline.c b/src/freedreno/vulkan/tu_pipeline.c
index ecedd69a1c1..1c101891ffd 100644
--- a/src/freedreno/vulkan/tu_pipeline.c
+++ b/src/freedreno/vulkan/tu_pipeline.c
@@ -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,
    };



More information about the mesa-commit mailing list