mesa/src/intel/vulkan/xe
Matthew Brost 2a053b2e60 anv/xe: Bind queue per anv_queue
The Xe uAPI is designed to use bind queues such that binds without input
dependencies (sync objects) do not block on binds with input
dependencies.

For example:

- Bind A (sparse) is submitted with a list of input dependencies.
- Bind B (immediate) is subsequently submitted without a list of input
  dependencies.

If Bind A and Bind B share a single bind queue, Bind B will not be
scheduled until Bind A completes. Using individual bind queues decouples
Bind A and Bind B, allowing Bind B to make immediate progress.

This change creates a separate bind queue for each ANV queue, enabling
support for sparse bindings that may have input dependencies.

v2:
 - Bail on bind queue creation failure (Linoel)
 - Only create bind queue if VK_QUEUE_SPARSE_BINDING_BIT is set (Jose)
v3:
 - Add comment around submit->queue usage (Jose)

Signed-off-by: Matthew Brost <matthew.brost@intel.com>
Reviewed-by: José Roberto de Souza <jose.souza@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/32873>
2025-01-14 14:39:53 +00:00
..
anv_batch_chain.c anv: Check VkResult main batch buffer before start companion batch buffer 2025-01-09 13:47:28 +00:00
anv_batch_chain.h anv: make device initialization more asynchronous 2024-06-13 08:29:25 +00:00
anv_device.c anv: don't expose the compressed memory types when DEBUG_NO_CCS 2024-08-05 18:36:46 +00:00
anv_device.h anv: hide exec_flags selection inside the i915 backend 2023-07-13 17:12:26 +00:00
anv_kmd_backend.c anv/xe: Bind queue per anv_queue 2025-01-14 14:39:53 +00:00
anv_queue.c anv/xe: Bind queue per anv_queue 2025-01-14 14:39:53 +00:00
anv_queue.h anv: Optimize vkQueueWaitIdle() on Xe KMD 2024-09-19 23:12:45 +00:00