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.