From 3dc43c4c026bb6d4d19b610d73a4a46ad600e740 Mon Sep 17 00:00:00 2001 From: Lionel Landwerlin Date: Thu, 5 Mar 2026 12:53:04 +0200 Subject: [PATCH] anv: disable slab allocator with memoryMapPlaced We cannot support mapping from a GEM object at an offset != 0 with a placed virtual address. We would need a new kernel uAPI to support this. Signed-off-by: Lionel Landwerlin Cc: mesa-stable --- src/intel/vulkan/anv_slab_bo.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/intel/vulkan/anv_slab_bo.c b/src/intel/vulkan/anv_slab_bo.c index 0a7af377cfc..cef941705e7 100644 --- a/src/intel/vulkan/anv_slab_bo.c +++ b/src/intel/vulkan/anv_slab_bo.c @@ -31,6 +31,15 @@ static enum anv_bo_slab_heap anv_bo_alloc_flags_to_slab_heap(struct anv_device *device, enum anv_bo_alloc_flags alloc_flags) { + /* Until we have a uAPI to map memory from a GEM object at an offset, we + * cannot use a slab allocator for VkDeviceMemory host visible. + */ + if (device->vk.enabled_features.memoryMapPlaced && + !(alloc_flags & ANV_BO_ALLOC_MAPPED) && + (alloc_flags & (ANV_BO_ALLOC_HOST_CACHED_COHERENT | + ANV_BO_ALLOC_LOCAL_MEM_CPU_VISIBLE))) + return ANV_BO_SLAB_NOT_SUPPORTED; + enum anv_bo_alloc_flags not_supported = ANV_BO_ALLOC_32BIT_ADDRESS | ANV_BO_ALLOC_EXTERNAL | ANV_BO_ALLOC_CAPTURE |