Original release notes
vulkan: Refactor vk_queue to use per-instance mutexes and unique handles (#23570)
- Refactor vk_queue to use per-instance mutexes and unique handles
- integrates VK_KHR_internally_synchronized_queues, abstracting the queue submission into a polymorphic interface that completely bypasses host-side mutex locking when driver-side synchronization is supported
- fix compilation error
- fix duplicate pNext chain for VkPhysicalDeviceInternallySynchronizedQueuesFeaturesKHR
- add fallback defines for VK_KHR_internally_synchronized_queues
- add null checks for queues in vk_device_struct destructor
- use unique_ptr for outer queues to enforce exclusive ownership and optimize lifetime
- use static constexpr for eInternallySynchronizedKHR
- add lock guard to ggml_vk_create_aliased_queue for thread safety
- initialize sync_query_features.internallySynchronizedQueues to VK_FALSE
- reuse sync_query_features for internallySynchronizedQueues and simplify chaining
- refactor internallySynchronizedQueues detection
- fix internallySynchronizedQueues query guard
- use eInternallySynchronizedKHR constant
- fix self-referential alias for eInternallySynchronizedKHR
- use macro for eInternallySynchronizedKHR fallback
- fix internallySynchronizedQueues query timing in ggml-vulkan.cpp to prevent device creation mismatch
- reset sync_query_features.pNext before reusing in device creation chain, also removed the redundant second probe call
- refactor internally synchronized queues detection to use chained feature query and avoid redundant API calls
- Update ggml/src/ggml-vulkan/ggml-vulkan.cpp
Co-authored-by: Jeff Bolz
- Update ggml/src/ggml-vulkan/ggml-vulkan.cpp
Co-authored-by: Jeff Bolz
- Update ggml/src/ggml-vulkan/ggml-vulkan.cpp
Co-authored-by: Jeff Bolz
- Update ggml/src/ggml-vulkan/ggml-vulkan.cpp
Co-authored-by: Jeff Bolz
- Update ggml/src/ggml-vulkan/ggml-vulkan.cpp
Co-authored-by: Jeff Bolz
- Update ggml/src/ggml-vulkan/ggml-vulkan.cpp
Co-authored-by: Jeff Bolz
- rename sync_enable_features to internally_synchronized_queues_features
- queue_flags is still computed before has_internally_synchronized_queues is set
- fix trailing whitespace
- replace eInternallySynchronizedKHR macro with static constexpr
- preserve source queue semantics in single-queue aliased transfer queue
- vulkan: fix cmd_pool access via pointer for compute_queue unique_ptr
- vulkan: lock queue during debug label emission when not internally synchronized
---------
Co-authored-by: Jeff Bolz
Website: -
UI:

