Fix: Vulkan: VMA validation errors

Fixes several validation errors when using VMA.
- Always enable buffer device address in VMA as it is already a Blender
  requirement.
- Add host access hints when host access is needed.

Pull Request: https://projects.blender.org/blender/blender/pulls/146312
This commit is contained in:
Jeroen Bakker
2025-09-15 16:47:26 +02:00
parent 4d016a7b4f
commit 1dedbe3f9a
3 changed files with 4 additions and 6 deletions

View File

@@ -271,9 +271,7 @@ void VKDevice::init_memory_allocator()
info.physicalDevice = vk_physical_device_;
info.device = vk_device_;
info.instance = vk_instance_;
if (extensions_.descriptor_buffer) {
info.flags |= VMA_ALLOCATOR_CREATE_BUFFER_DEVICE_ADDRESS_BIT;
}
info.flags = VMA_ALLOCATOR_CREATE_BUFFER_DEVICE_ADDRESS_BIT;
if (extensions_.memory_priority) {
info.flags |= VMA_ALLOCATOR_CREATE_EXT_MEMORY_PRIORITY_BIT;
}
@@ -295,7 +293,7 @@ void VKDevice::init_dummy_buffer()
VK_BUFFER_USAGE_VERTEX_BUFFER_BIT | VK_BUFFER_USAGE_TRANSFER_DST_BIT,
VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT,
VkMemoryPropertyFlags(0),
VmaAllocationCreateFlags(0),
VMA_ALLOCATION_CREATE_HOST_ACCESS_SEQUENTIAL_WRITE_BIT,
1.0f);
debug::object_label(dummy_buffer.vk_handle(), "DummyBuffer");
/* Default dummy buffer. Set the 4th element to 1 to fix missing orcos. */

View File

@@ -34,7 +34,7 @@ void VKPixelBuffer::create(bool memory_export)
VK_BUFFER_USAGE_TRANSFER_SRC_BIT | VK_BUFFER_USAGE_TRANSFER_DST_BIT,
VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT,
VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT,
VmaAllocationCreateFlags(0),
VMA_ALLOCATION_CREATE_HOST_ACCESS_SEQUENTIAL_WRITE_BIT,
0.8f,
memory_export);
debug::object_label(buffer_.vk_handle(), "PixelBuffer");

View File

@@ -41,7 +41,7 @@ void VKUniformBuffer::allocate()
VK_BUFFER_USAGE_TRANSFER_DST_BIT,
VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT,
VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT,
VmaAllocationCreateFlags(0),
VMA_ALLOCATION_CREATE_HOST_ACCESS_SEQUENTIAL_WRITE_BIT,
0.8f);
debug::object_label(buffer_.vk_handle(), name_);
}