I read a lot of articles on Vulkan memory management and all of them recommend using staging buffers for transferring to the GPU. But we can already create memory that is device local and host visible, host coherent. It is readable from GPU as well as writable from CPU.
Here is what I thought would be reasonable - Create one big buffer bound to a memory which is device local, host visible and coherent. Now for all dynamic buffers, we just keep using memory from this buffer and bind the buffer at that offset.
But in most examples, they create one host visible buffer and one gpu visible and use the copyBuffer operation for transferring. What is the advantage of this over using just one buffer which is accessible to both cpu and gpu? I am only talking about buffers, not textures.