You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Currently, the vertex attributes and indices loaded via load_scene are copied into buffers created with the VMA_MEMORY_USAGE_CPU_TO_GPU-flag.
Using dedicated staging buffers to have that data in buffers with the VMA_MEMORY_USAGE_GPU_ONLY-flag is supposed to be more efficient.
Images loaded via load_scene and vertices and indices loaded via load_model are already using that approach.
Note: all the VMA_MEMORY_USAGE* flags we're using are marked as obsolete!
Should we adjust our usage according to https://gpuopen-librariesandsdks.github.io/VulkanMemoryAllocator/html/usage_patterns.html?
Or should we continue with our current usage?
Or should we introduce some simple DeviceMemoryManager that would explicitly use the VkMemoryPropertyFlagBits (or vk::MemoryPropertyFlags).
The text was updated successfully, but these errors were encountered:
The version of the VMA in use is fairly out of date. It appears to be a development version of 3.0.0, but from 2020, while 3.0.0 itself wasn't released until 2022, and 3.0.1 shortly after that.
I'm working on a PR that will update to the 3.0.1 release tag, and will default all parameters of type VmaMemoryUsage to VMA_MEMORY_USAGE_AUTO. This should cause the VMA to automatically infer what kind of memory it should allocate from a combination of the buffer/image usage flags and the VmaAllocationCreateFlags. Staging buffers created should be created with VMA_ALLOCATION_CREATE_MAPPED_BIT | VMA_ALLOCATION_CREATE_HOST_ACCESS_SEQUENTIAL_WRITE_BIT and if the destination buffer is created with VMA_MEMORY_USAGE_AUTO and doesn't include a mapping bit it should automatically get memory from a device-only pool.
Actually, I suspect part of the problem is that both HPPBuffer and Buffer automatically default to VMA_ALLOCATION_CREATE_MAPPED_BIT, which typically forces host memory.
Unfortunately this means this PR will be more complicated than I thought, because I can't make it a drop in replacement if that parameters is changing from VMA_ALLOCATION_CREATE_MAPPED_BIT to 0.
Currently, the vertex attributes and indices loaded via load_scene are copied into buffers created with the
VMA_MEMORY_USAGE_CPU_TO_GPU
-flag.Using dedicated staging buffers to have that data in buffers with the
VMA_MEMORY_USAGE_GPU_ONLY
-flag is supposed to be more efficient.Images loaded via load_scene and vertices and indices loaded via load_model are already using that approach.
Note: all the VMA_MEMORY_USAGE* flags we're using are marked as obsolete!
Should we adjust our usage according to https://gpuopen-librariesandsdks.github.io/VulkanMemoryAllocator/html/usage_patterns.html?
Or should we continue with our current usage?
Or should we introduce some simple DeviceMemoryManager that would explicitly use the
VkMemoryPropertyFlagBits
(orvk::MemoryPropertyFlags
).The text was updated successfully, but these errors were encountered: