pvr: skip emitting query program when copy result / reset with 0 queries
Some checks are pending
macOS-CI / macOS-CI (dri) (push) Waiting to run
macOS-CI / macOS-CI (xlib) (push) Waiting to run

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: 0aa9f32b95 ("pvr: Implement vkCmdResetQueryPool API.")
Fixes: b6e8e1cf37 ("pvr: Implement vkCmdCopyQueryPoolResults API.")
Signed-off-by: Icenowy Zheng <zhengxingda@iscas.ac.cn>
Reviewed-by: Nick Hamilton <nick.hamilton@imgtec.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/40911>
This commit is contained in:
Icenowy Zheng 2026-04-13 13:39:48 +08:00 committed by Marge Bot
parent e0b5724e85
commit 01ba4867fa

View file

@ -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;