From ae9df204e91676c6da8c0d5df7379da9d96c8cba Mon Sep 17 00:00:00 2001 From: Boris Brezillon Date: Wed, 18 Sep 2024 19:12:19 +0200 Subject: [PATCH] panvk/csf: Fix TLS pointer copy The source/destination was inverted. While at it, make this copy conditional on tlsinfo.tls.size > 0. Signed-off-by: Boris Brezillon Reviewed-by: Mary Guillemard Part-of: --- src/panfrost/vulkan/csf/panvk_vX_cmd_dispatch.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/panfrost/vulkan/csf/panvk_vX_cmd_dispatch.c b/src/panfrost/vulkan/csf/panvk_vX_cmd_dispatch.c index 6a93ae4dc5f..bc2bf2a0a98 100644 --- a/src/panfrost/vulkan/csf/panvk_vX_cmd_dispatch.c +++ b/src/panfrost/vulkan/csf/panvk_vX_cmd_dispatch.c @@ -160,12 +160,14 @@ panvk_per_arch(CmdDispatchBase)(VkCommandBuffer commandBuffer, unsigned task_increment = 0; /* Copy the global TLS pointer to the per-job TSD. */ - cs_move64_to(b, cs_scratch_reg64(b, 0), tsd.gpu); - cs_load64_to(b, cs_scratch_reg64(b, 2), cs_scratch_reg64(b, 0), 8); - cs_wait_slot(b, SB_ID(LS), false); - cs_move64_to(b, cs_scratch_reg64(b, 0), cmdbuf->state.tls.desc.gpu); - cs_store64(b, cs_scratch_reg64(b, 2), cs_scratch_reg64(b, 0), 8); - cs_wait_slot(b, SB_ID(LS), false); + if (tlsinfo.tls.size) { + cs_move64_to(b, cs_scratch_reg64(b, 0), cmdbuf->state.tls.desc.gpu); + cs_load64_to(b, cs_scratch_reg64(b, 2), cs_scratch_reg64(b, 0), 8); + cs_wait_slot(b, SB_ID(LS), false); + cs_move64_to(b, cs_scratch_reg64(b, 0), tsd.gpu); + cs_store64(b, cs_scratch_reg64(b, 2), cs_scratch_reg64(b, 0), 8); + cs_wait_slot(b, SB_ID(LS), false); + } cs_update_compute_ctx(b) { cs_move64_to(b, cs_sr_reg64(b, 0), cs_desc_state->res_table);