A handle is not storage
A VkBuffer describes a size and intended usages. Device memory supplies backing storage. Binding connects the buffer to a compatible region of that allocation. These are separate operations because many resources can share a larger allocation. Query memory requirements, respect the returned size and alignment, and intersect the requirement bitmask with memory types that satisfy your policy. Do not interpret the first memory type as “normal RAM.”
Host-visible means the CPU can map the allocation. Host-coherent changes explicit cache-management requirements. Device-local describes a placement property, not a universal ban on CPU access. Your AMD laptop may expose several combinations; use its report rather than treating every discrete or integrated device alike. Keep a memory budget, validate count × stride before multiplication, and report an allocation failure without publishing a half-built mesh.
For the first implementation, understand one manually bound buffer. For a growing renderer, evaluate Vulkan Memory Allocator instead of accumulating an unreviewed general allocator. Suballocation reduces expensive allocation churn, but introduces alignment, lifetime, fragmentation, and aliasing responsibilities. A sophisticated allocator cannot infer that your GPU is finished with a range.
