From a44d498287a631cbf623a3c54e7f169e4daf1171 Mon Sep 17 00:00:00 2001 From: Iago Toral Quiroga Date: Tue, 26 Apr 2022 09:07:54 +0200 Subject: [PATCH] v3dv: document Vulkan requirements for signaling operations MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Reviewed-by: Alejandro PiƱeiro Part-of: --- src/broadcom/vulkan/v3dv_queue.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/broadcom/vulkan/v3dv_queue.c b/src/broadcom/vulkan/v3dv_queue.c index d14d1b04c21..68d94129d14 100644 --- a/src/broadcom/vulkan/v3dv_queue.c +++ b/src/broadcom/vulkan/v3dv_queue.c @@ -871,6 +871,11 @@ queue_create_noop_job(struct v3dv_queue *queue) v3dv_X(device, job_emit_noop)(queue->noop_job); + /* We use no-op jobs to signal semaphores/fences. These jobs needs to be + * serialized across all hw queues to comply with Vulkan's signal operation + * order requirements, which basically require that signal operations occur + * in submission order. + */ queue->noop_job->serialize = true; return VK_SUCCESS; @@ -911,7 +916,8 @@ v3dv_queue_driver_submit(struct vk_queue *vk_queue, /* Finish by submitting a no-op job that synchronizes across all queues. * This will ensure that the signal semaphores don't get triggered until - * all work on any queue completes. + * all work on any queue completes. See Vulkan's signal operation order + * requirements. */ if (submit->signal_count > 0) { if (!queue->noop_job) {