From 01ba4867fa277628f53f03bfb140a89e030e572d Mon Sep 17 00:00:00 2001 From: Icenowy Zheng Date: Mon, 13 Apr 2026 13:39:48 +0800 Subject: [PATCH] pvr: skip emitting query program when copy result / reset with 0 queries When calling vkResetQueryPool() or vkCmdCopyQueryPoolResults() with a queryCount of 0, currently a query compute program with workgroup size 0*1*1 will be emited, which is ridiculous and will be rejected by some assertion in pvr_compute_generate_control_stream() . As the operation should be noop when queryCount is 0, the functions can and should just return in such cases. Fixes: 0aa9f32b95e6 ("pvr: Implement vkCmdResetQueryPool API.") Fixes: b6e8e1cf372f ("pvr: Implement vkCmdCopyQueryPoolResults API.") Signed-off-by: Icenowy Zheng Reviewed-by: Nick Hamilton Part-of: --- src/imagination/vulkan/pvr_arch_cmd_query.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/imagination/vulkan/pvr_arch_cmd_query.c b/src/imagination/vulkan/pvr_arch_cmd_query.c index 36bc1fd3781..139089a60b4 100644 --- a/src/imagination/vulkan/pvr_arch_cmd_query.c +++ b/src/imagination/vulkan/pvr_arch_cmd_query.c @@ -22,6 +22,9 @@ void PVR_PER_ARCH(CmdResetQueryPool)(VkCommandBuffer commandBuffer, PVR_CHECK_COMMAND_BUFFER_BUILDING_STATE(cmd_buffer); + if (queryCount == 0) + return; + query_info.type = PVR_QUERY_TYPE_RESET_QUERY_POOL; query_info.reset_query_pool.query_pool = queryPool; @@ -81,6 +84,9 @@ void PVR_PER_ARCH(CmdCopyQueryPoolResults)(VkCommandBuffer commandBuffer, PVR_CHECK_COMMAND_BUFFER_BUILDING_STATE(cmd_buffer); + if (queryCount == 0) + return; + query_info.type = PVR_QUERY_TYPE_COPY_QUERY_RESULTS; query_info.copy_query_results.query_pool = queryPool;