From 36f34a72c1cbca7656d8fe0c6bbc5b9308303ace Mon Sep 17 00:00:00 2001 From: Icenowy Zheng Date: Wed, 8 Apr 2026 23:48:07 +0800 Subject: [PATCH] pvr: finalize query_indices array after ending last sub_cmd The last sub_cmd in the command buffer could be a graphics one, and when ending a graphics sub_cmd, the query_indices array will be checked to know whether a occlusion query starts during this graphics sub_cmd. Finalize the query_indices array after ending the last sub_cmd, otherwise the check for query initiation may have a false negative result. Fixes the `dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff. random.seed6` test case. Fixes: 2b1992a0005b ("pvr: Implement vkCmdBeginQuery API.") Signed-off-by: Icenowy Zheng Reviewed-by: Frank Binns Part-of: --- src/imagination/ci/bxs-4-64-fails.txt | 1 - src/imagination/vulkan/pvr_arch_cmd_buffer.c | 4 ++-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/src/imagination/ci/bxs-4-64-fails.txt b/src/imagination/ci/bxs-4-64-fails.txt index b21826ba982..1d5cf2db296 100644 --- a/src/imagination/ci/bxs-4-64-fails.txt +++ b/src/imagination/ci/bxs-4-64-fails.txt @@ -130,7 +130,6 @@ dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed58_multiview, dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed59,Fail dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed59_multiview,Fail dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed5_multiview,Fail -dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed6,Fail dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed60,Fail dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed60_multiview,Fail dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed61,Fail diff --git a/src/imagination/vulkan/pvr_arch_cmd_buffer.c b/src/imagination/vulkan/pvr_arch_cmd_buffer.c index 12d00415c32..9e7ccb23604 100644 --- a/src/imagination/vulkan/pvr_arch_cmd_buffer.c +++ b/src/imagination/vulkan/pvr_arch_cmd_buffer.c @@ -9813,11 +9813,11 @@ VkResult PVR_PER_ARCH(EndCommandBuffer)(VkCommandBuffer commandBuffer) /* TODO: We should be freeing all the resources, allocated for recording, * here. */ - util_dynarray_fini(&state->query_indices); - result = pvr_arch_cmd_buffer_end_sub_cmd(cmd_buffer); if (result != VK_SUCCESS) pvr_cmd_buffer_set_error_unwarned(cmd_buffer, result); + util_dynarray_fini(&state->query_indices); + return vk_command_buffer_end(&cmd_buffer->vk); }