From: Connor Abbott Date: Fri, 17 Apr 2020 13:28:10 +0000 (+0200) Subject: tu: Use tu_cs_add_entries() with non-render-pass secondaries X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=64e3b8d66b9d4103ff815606ff20b39246418122;p=mesa.git 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: --- 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 */