Quick answer: Vulkan validation flagging buffer device address mismatch? Buffer must be created with VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT and the device must have the feature enabled.
A bindless renderer uses buffer device addresses; validation aborts on the first use because the buffer wasn’t flagged.
Buffer Usage Flag
VkBufferCreateInfo info = {};
info.usage = VK_BUFFER_USAGE_STORAGE_BUFFER_BIT |
VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT;Without the address bit, getting a device address fails.
Allocator Configuration
VMA / your custom allocator must allocate memory with VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT when needed. Otherwise the address isn’t stable.
Feature Enable
Enable VK_KHR_buffer_device_address at device creation. Without the feature, the function is null-ptr at runtime.
Address Stable
Buffer device addresses are stable across the buffer’s lifetime. Stored in your descriptor systems; release when the buffer is destroyed.
Verifying
Validation silent. Buffer device addresses resolved in shaders produce expected data.
“Buffer device address requires buffer flag, memory flag, and feature enable. Three checks.”
Centralize buffer creation in a tiny helper — flags don’t drift if there’s one place that sets them.