From 01445cca550acadce161a876fa82e2c26de4e45f 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 (cherry picked from commit 36f34a72c1cbca7656d8fe0c6bbc5b9308303ace) Part-of: --- .pick_status.json | 2 +- src/imagination/ci/bxs-4-64-fails.txt | 1 - src/imagination/vulkan/pvr_arch_cmd_buffer.c | 4 ++-- 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index 7bceccdc8cb..4d6216d0ec9 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -5704,7 +5704,7 @@ "description": "pvr: finalize query_indices array after ending last sub_cmd", "nominated": true, "nomination_type": 2, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "2b1992a0005b2342afd53dc21eb01288dddee6b5", "notes": null diff --git a/src/imagination/ci/bxs-4-64-fails.txt b/src/imagination/ci/bxs-4-64-fails.txt index 949910aa6ba..c24f34dcd37 100644 --- a/src/imagination/ci/bxs-4-64-fails.txt +++ b/src/imagination/ci/bxs-4-64-fails.txt @@ -147,7 +147,6 @@ dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed58,Fail dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed59_multiview,Fail dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed59,Fail dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed6_multiview,Fail -dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed6,Fail dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed60_multiview,Fail dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed60,Fail dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.random.seed61_multiview,Fail diff --git a/src/imagination/vulkan/pvr_arch_cmd_buffer.c b/src/imagination/vulkan/pvr_arch_cmd_buffer.c index 68943d818df..bcee7736a38 100644 --- a/src/imagination/vulkan/pvr_arch_cmd_buffer.c +++ b/src/imagination/vulkan/pvr_arch_cmd_buffer.c @@ -9806,11 +9806,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); }