]> git.djapps.eu Git - pkg/ggml/sources/llama.cpp/commitdiff
vulkan: prefer host-visible memory buffers on UMA devices (#22930)
authorWinston Ma <redacted>
Tue, 16 Jun 2026 07:36:52 +0000 (15:36 +0800)
committerGitHub <redacted>
Tue, 16 Jun 2026 07:36:52 +0000 (09:36 +0200)
* implement UMA host-visible memory

* update based on 0cc4m's suggestion

ggml/src/ggml-vulkan/ggml-vulkan.cpp

index 59582e4f0fbb80062bf549481e6c36f64b418225..243ab76ee7a10c4e5b3e5c31bde1ff6f5a17bee5 100644 (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,
                                                        vk::MemoryPropertyFlagBits::eDeviceLocal});
         } else if (device->uma) {
-            // Fall back to host memory type
-            buf = ggml_vk_create_buffer(device, size, {vk::MemoryPropertyFlagBits::eDeviceLocal,
+            // On UMA, prefer host-visible memory so direct tensor borrowing works.
+            // 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});
         } else if (device->disable_host_visible_vidmem) {
             if (device->allow_sysmem_fallback) {