diff --git a/src/imagination/vulkan/pvr_queue.c b/src/imagination/vulkan/pvr_queue.c index 724e358871c..472fc9db983 100644 --- a/src/imagination/vulkan/pvr_queue.c +++ b/src/imagination/vulkan/pvr_queue.c @@ -847,8 +847,14 @@ static VkResult pvr_process_queue_signals(struct pvr_queue *queue, uint32_t wait_count = 0; for (uint32_t i = 0; i < PVR_JOB_TYPE_MAX; i++) { - if (!(signal_stage_src & BITFIELD_BIT(i)) || - !queue->last_job_signal_sync[i]) + /* Exception for occlusion query jobs since that's something internal, + * so the user provided syncs won't ever have it as a source stage. + */ + if (!(signal_stage_src & BITFIELD_BIT(i)) && + i != PVR_JOB_TYPE_OCCLUSION_QUERY) + continue; + + if (!queue->last_job_signal_sync[i]) continue; signal_waits[wait_count++] = (struct vk_sync_wait){