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 [email protected]
- Update ggml/src/ggml-vulkan/ggml-vulkan.cpp
Co-authored-by: Jeff Bolz [email protected]
- Update ggml/src/ggml-vulkan/ggml-vulkan.cpp
Co-authored-by: Jeff Bolz [email protected]
- Update ggml/src/ggml-vulkan/ggml-vulkan.cpp
Co-authored-by: Jeff Bolz [email protected]
- Update ggml/src/ggml-vulkan/ggml-vulkan.cpp
Co-authored-by: Jeff Bolz [email protected]
- Update ggml/src/ggml-vulkan/ggml-vulkan.cpp
Co-authored-by: Jeff Bolz [email protected]
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 [email protected]
Website:
macOS/iOS:
- macOS Apple Silicon (arm64)
- macOS Apple Silicon (arm64, KleidiAI enabled) DISABLED
- macOS Intel (x64)
- iOS XCFramework
Linux:
- Ubuntu x64 (CPU)
- Ubuntu arm64 (CPU)
- Ubuntu s390x (CPU)
- Ubuntu x64 (Vulkan)
- Ubuntu arm64 (Vulkan)
- Ubuntu x64 (ROCm 7.2)
- Ubuntu x64 (OpenVINO)
- Ubuntu x64 (SYCL FP32)
- Ubuntu x64 (SYCL FP16)
Android:
Windows:
- Windows x64 (CPU)
- Windows arm64 (CPU)
- Windows arm64 (OpenCL Adreno)
- Windows x64 (CUDA 12) - CUDA 12.4 DLLs
- Windows x64 (CUDA 13) - CUDA 13.3 DLLs
- Windows x64 (Vulkan)
- Windows x64 (OpenVINO)
- Windows x64 (SYCL)
- Windows x64 (HIP)
openEuler:
- DISABLED
- openEuler x86 (310p)
- openEuler x86 (910b, ACL Graph)
- openEuler aarch64 (310p)
- openEuler aarch64 (910b, ACL Graph)
UI: