Module: Mesa Branch: main Commit: f2206a0eb197438b6041603f023ece06236f49cd URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=f2206a0eb197438b6041603f023ece06236f49cd
Author: Paulo Zanoni <paulo.r.zan...@intel.com> Date: Wed Oct 25 15:16:26 2023 -0700 anv/xe: allow passing extra syncs to xe_exec_process_syncs() We're going to use this in two different patches. Reviewed-by: Lionel Landwerlin <lionel.g.landwer...@intel.com> Signed-off-by: Paulo Zanoni <paulo.r.zan...@intel.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25512> --- src/intel/vulkan/xe/anv_batch_chain.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/intel/vulkan/xe/anv_batch_chain.c b/src/intel/vulkan/xe/anv_batch_chain.c index 00fc295d923..0643258632b 100644 --- a/src/intel/vulkan/xe/anv_batch_chain.c +++ b/src/intel/vulkan/xe/anv_batch_chain.c @@ -105,12 +105,14 @@ static VkResult xe_exec_process_syncs(struct anv_queue *queue, uint32_t wait_count, const struct vk_sync_wait *waits, uint32_t signal_count, const struct vk_sync_signal *signals, + uint32_t extra_sync_count, const struct drm_xe_sync *extra_syncs, struct anv_utrace_submit *utrace_submit, bool is_companion_rcs_queue, struct drm_xe_sync **ret, uint32_t *ret_count) { struct anv_device *device = queue->device; - uint32_t num_syncs = wait_count + signal_count + (utrace_submit ? 1 : 0) + + uint32_t num_syncs = wait_count + signal_count + extra_sync_count + + (utrace_submit ? 1 : 0) + ((queue->sync && !is_companion_rcs_queue) ? 1 : 0); if (!num_syncs) return VK_SUCCESS; @@ -150,6 +152,9 @@ xe_exec_process_syncs(struct anv_queue *queue, TYPE_SIGNAL); } + for (uint32_t i = 0; i < extra_sync_count; i++) + xe_syncs[count++] = extra_syncs[i]; + if (queue->sync && !is_companion_rcs_queue) { struct drm_xe_sync *xe_sync = &xe_syncs[count++]; @@ -275,6 +280,7 @@ xe_companion_rcs_queue_exec_locked(struct anv_queue *queue, result = xe_exec_process_syncs(queue, wait_count, waits, 1, &companion_sync, + 0, NULL, /* extra_syncs */ NULL /* utrace_submit */, true /* is_companion_rcs_queue */, &xe_syncs, @@ -327,6 +333,7 @@ xe_queue_exec_locked(struct anv_queue *queue, uint32_t xe_syncs_count = 0; result = xe_exec_process_syncs(queue, wait_count, waits, signal_count, signals, + 0, NULL, /* extra_syncs */ utrace_submit, false, /* is_companion_rcs_queue */ &xe_syncs, &xe_syncs_count);