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

Reply via email to