diff options
author | Rémi Verschelde <rverschelde@gmail.com> | 2023-12-04 23:06:04 +0100 |
---|---|---|
committer | Rémi Verschelde <rverschelde@gmail.com> | 2023-12-04 23:06:04 +0100 |
commit | a9ba8695d4ac453c5edc8339371116ea28f403aa (patch) | |
tree | f80e3016bbc70e3e94f53607cd9df0e7ed455ea2 /drivers/vulkan/rendering_device_vulkan.cpp | |
parent | 8a9e3ad8d5623bad204964795504e5cd10289dad (diff) | |
parent | 04a142cf7116c6397b0b4fb5f64951968148a8d6 (diff) | |
download | redot-engine-a9ba8695d4ac453c5edc8339371116ea28f403aa.tar.gz |
Merge pull request #84852 from Alex2782/fix_vulkan_buffer_android
Vulkan: Fix incorrect access to the buffers on Android
Diffstat (limited to 'drivers/vulkan/rendering_device_vulkan.cpp')
-rw-r--r-- | drivers/vulkan/rendering_device_vulkan.cpp | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/drivers/vulkan/rendering_device_vulkan.cpp b/drivers/vulkan/rendering_device_vulkan.cpp index d6a5748c32..23d5be869f 100644 --- a/drivers/vulkan/rendering_device_vulkan.cpp +++ b/drivers/vulkan/rendering_device_vulkan.cpp @@ -1365,6 +1365,9 @@ Error RenderingDeviceVulkan::_buffer_allocate(Buffer *p_buffer, uint32_t p_size, allocInfo.memoryTypeBits = 0; allocInfo.pool = nullptr; allocInfo.pUserData = nullptr; + if (p_mem_usage == VMA_MEMORY_USAGE_AUTO_PREFER_HOST) { + allocInfo.requiredFlags = VK_MEMORY_PROPERTY_HOST_COHERENT_BIT | VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT; + } if (p_size <= SMALL_ALLOCATION_MAX_SIZE) { uint32_t mem_type_index = 0; vmaFindMemoryTypeIndexForBufferInfo(allocator, &bufferInfo, &allocInfo, &mem_type_index); @@ -1410,7 +1413,7 @@ Error RenderingDeviceVulkan::_insert_staging_block() { VmaAllocationCreateInfo allocInfo; allocInfo.flags = VMA_ALLOCATION_CREATE_HOST_ACCESS_SEQUENTIAL_WRITE_BIT; allocInfo.usage = VMA_MEMORY_USAGE_AUTO_PREFER_HOST; - allocInfo.requiredFlags = 0; + allocInfo.requiredFlags = VK_MEMORY_PROPERTY_HOST_COHERENT_BIT | VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT; allocInfo.preferredFlags = 0; allocInfo.memoryTypeBits = 0; allocInfo.pool = nullptr; |