From 1d33aee1971e75bcd97596bdcbc018bfb72f4c95 Mon Sep 17 00:00:00 2001 From: Mary Guillemard Date: Thu, 22 Aug 2024 09:39:17 +0200 Subject: [PATCH] panvk: Close batch in CmdBeginRendering if already open Because of the current event implementation, we can end up with an open batch when entering CmdBeginRendering. As a result, we now reopen a batch in that situation for now. This fix crashes various crash in "dEQP-VK.synchronization.op.single_queue.event.*". Signed-off-by: Mary Guillemard Reviewed-by: Boris Brezillon Part-of: --- src/panfrost/vulkan/jm/panvk_vX_cmd_draw.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/panfrost/vulkan/jm/panvk_vX_cmd_draw.c b/src/panfrost/vulkan/jm/panvk_vX_cmd_draw.c index 051141c413e..079513fbf3b 100644 --- a/src/panfrost/vulkan/jm/panvk_vX_cmd_draw.c +++ b/src/panfrost/vulkan/jm/panvk_vX_cmd_draw.c @@ -1759,8 +1759,12 @@ panvk_per_arch(CmdBeginRendering)(VkCommandBuffer commandBuffer, bool resuming = cmdbuf->state.gfx.render.flags & VK_RENDERING_RESUMING_BIT; - /* If we're not resuming, cur_batch should be NULL. */ - assert(!cmdbuf->cur_batch || resuming); + /* If we're not resuming, cur_batch should be NULL. + * However, this currently isn't true because of how events are implemented. + * XXX: Rewrite events to not close and open batch and add an assert here. + */ + if (cmdbuf->cur_batch && !resuming) + panvk_per_arch(cmd_close_batch)(cmdbuf); /* The opened batch might have been disrupted by a compute job. * We need to preload in that case. */