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:
@@ -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. */
|
||||
|
||||
@@ -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");
|
||||
|
||||
@@ -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_);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user