From 64e3b8d66b9d4103ff815606ff20b39246418122 Mon Sep 17 00:00:00 2001 From: Connor Abbott Date: Fri, 17 Apr 2020 15:28:10 +0200 Subject: [PATCH] tu: Use tu_cs_add_entries() with non-render-pass secondaries Even though vkCmdRenderPassBegin() isn't allowed inside a secondary command buffer, vkCmdDispatch() is, and we emit an IB with compute dispatches, which means that if the secondary command buffer records a vkCmdDispatch() then we'll have an IB inside an IB, which is illegal. Fixes hangs in e.g. dEQP-VK.api.command_buffers.record_simul_use_secondary_one_primary. Part-of: --- src/freedreno/vulkan/tu_cmd_buffer.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/freedreno/vulkan/tu_cmd_buffer.c b/src/freedreno/vulkan/tu_cmd_buffer.c index d89a553fd9f..7df98b34e05 100644 --- a/src/freedreno/vulkan/tu_cmd_buffer.c +++ b/src/freedreno/vulkan/tu_cmd_buffer.c @@ -2189,7 +2189,7 @@ tu_CmdExecuteCommands(VkCommandBuffer commandBuffer, MSM_SUBMIT_BO_READ | MSM_SUBMIT_BO_DUMP); } - tu_cs_emit_call(&cmd->cs, &secondary->cs); + tu_cs_add_entries(&cmd->cs, &secondary->cs); } } cmd->state.dirty = ~0u; /* TODO: set dirty only what needs to be */ -- 2.30.2