pvr: wait for graphics jobs in CopyQueryPoolResults

The last graphics job, which might write to the occlusion query result,
could still be running when vkCmdCopyQueryPoolResults is called.

Additionally wait for graphics jobs before copying the results.

Fixes: 24b1e3946c ("pvr: Add support to submit occlusion query sub cmds.")
Signed-off-by: Icenowy Zheng <zhengxingda@iscas.ac.cn>
Reviewed-by: Simon Perretta <simon.perretta@imgtec.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/40884>
(cherry picked from commit 82925935d4)
This commit is contained in:
Icenowy Zheng 2026-04-10 16:55:14 +08:00 committed by Eric Engestrom
parent ab486e0b09
commit 001efa73d1
2 changed files with 3 additions and 3 deletions

View file

@ -3194,7 +3194,7 @@
"description": "pvr: wait for graphics jobs in CopyQueryPoolResults",
"nominated": true,
"nomination_type": 2,
"resolution": 0,
"resolution": 1,
"main_sha": null,
"because_sha": "24b1e3946cc7e679a31aa07bd731464c900c1df7",
"notes": null

View file

@ -118,7 +118,7 @@ void PVR_PER_ARCH(CmdCopyQueryPoolResults)(VkCommandBuffer commandBuffer,
cmd_buffer->state.current_sub_cmd->event = (struct pvr_sub_cmd_event){
.type = PVR_EVENT_TYPE_BARRIER,
.barrier = {
.wait_for_stage_mask = PVR_PIPELINE_STAGE_TRANSFER_BIT,
.wait_for_stage_mask = PVR_PIPELINE_STAGE_ALL_GRAPHICS_BITS | PVR_PIPELINE_STAGE_TRANSFER_BIT,
.wait_at_stage_mask = PVR_PIPELINE_STAGE_QUERY_BIT,
},
};
@ -138,7 +138,7 @@ void PVR_PER_ARCH(CmdCopyQueryPoolResults)(VkCommandBuffer commandBuffer,
.type = PVR_EVENT_TYPE_BARRIER,
.barrier = {
.wait_for_stage_mask = PVR_PIPELINE_STAGE_QUERY_BIT,
.wait_at_stage_mask = PVR_PIPELINE_STAGE_TRANSFER_BIT,
.wait_at_stage_mask = PVR_PIPELINE_STAGE_ALL_GRAPHICS_BITS | PVR_PIPELINE_STAGE_TRANSFER_BIT,
},
};
}