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:
@@ -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) {
|
||||||
|
|||||||
Reference in New Issue
Block a user