vulkan: prefer host-visible memory buffers on UMA devices (#22930)

* implement UMA host-visible memory

* update based on 0cc4m's suggestion
This commit is contained in:
Winston Ma
2026-06-16 09:36:52 +02:00
committed by GitHub
parent d5fb104293
commit 32120c10e3
+4 -2
View File
@@ -3080,8 +3080,10 @@ static vk_buffer ggml_vk_create_buffer_device(vk_device& device, size_t size) {
buf = ggml_vk_create_buffer(device, size, {vk::MemoryPropertyFlagBits::eHostVisible | vk::MemoryPropertyFlagBits::eHostCoherent, buf = ggml_vk_create_buffer(device, size, {vk::MemoryPropertyFlagBits::eHostVisible | vk::MemoryPropertyFlagBits::eHostCoherent,
vk::MemoryPropertyFlagBits::eDeviceLocal}); vk::MemoryPropertyFlagBits::eDeviceLocal});
} else if (device->uma) { } else if (device->uma) {
// Fall back to host memory type // On UMA, prefer host-visible memory so direct tensor borrowing works.
buf = ggml_vk_create_buffer(device, size, {vk::MemoryPropertyFlagBits::eDeviceLocal, // If unavailable, fall back to device-local memory.
buf = ggml_vk_create_buffer(device, size, {vk::MemoryPropertyFlagBits::eDeviceLocal | vk::MemoryPropertyFlagBits::eHostVisible | vk::MemoryPropertyFlagBits::eHostCoherent,
vk::MemoryPropertyFlagBits::eDeviceLocal,
vk::MemoryPropertyFlagBits::eHostVisible | vk::MemoryPropertyFlagBits::eHostCoherent}); vk::MemoryPropertyFlagBits::eHostVisible | vk::MemoryPropertyFlagBits::eHostCoherent});
} else if (device->disable_host_visible_vidmem) { } else if (device->disable_host_visible_vidmem) {
if (device->allow_sysmem_fallback) { if (device->allow_sysmem_fallback) {