Structures

VkBindBufferMemoryInfo

Structure specifying how to bind a buffer to memory

VkBindBufferMemoryInfo contains members corresponding to the parameters of vkBindBufferMemory.

The VkBindBufferMemoryInfo structure is defined as:

typedef struct VkBindBufferMemoryInfo {
    VkStructureType sType;
    const void* pNext;
    VkBuffer buffer;
    VkDeviceMemory memory;
    VkDeviceSize memoryOffset;
} VkBindBufferMemoryInfo;

or the equivalent

typedef VkBindBufferMemoryInfo VkBindBufferMemoryInfoKHR;
  • sType is a VkStructureType value identifying this structure.
  • pNext is NULL or a pointer to a structure extending this structure.
  • buffer is the buffer to be attached to memory.
  • memory is a VkDeviceMemory object describing the device memory to attach.
  • memoryOffset is the start offset of the region of memory which is to be bound to the buffer. The number of bytes returned in the VkMemoryRequirements::size member in memory, starting from memoryOffset bytes, will be bound to the specified buffer.

Valid Usage

VUID-VkBindBufferMemoryInfo-buffer-07459

buffer must not have been bound to a memory object

VUID-VkBindBufferMemoryInfo-buffer-01030

buffer must not have been created with any sparse memory binding flags

VUID-VkBindBufferMemoryInfo-memoryOffset-01031

memoryOffset must be less than the size of memory

VUID-VkBindBufferMemoryInfo-memory-01035

memory must have been allocated using one of the memory types allowed in the memoryTypeBits member of the VkMemoryRequirements structure returned from a call to vkGetBufferMemoryRequirements with buffer

VUID-VkBindBufferMemoryInfo-memoryOffset-01036

memoryOffset must be an integer multiple of the alignment member of the VkMemoryRequirements structure returned from a call to vkGetBufferMemoryRequirements with buffer

VUID-VkBindBufferMemoryInfo-size-01037

The size member of the VkMemoryRequirements structure returned from a call to vkGetBufferMemoryRequirements with buffer must be less than or equal to the size of memory minus memoryOffset

VUID-VkBindBufferMemoryInfo-buffer-01444

If buffer requires a dedicated allocation (as reported by vkGetBufferMemoryRequirements2 in VkMemoryDedicatedRequirements::requiresDedicatedAllocation for buffer), memory must have been allocated with VkMemoryDedicatedAllocateInfo::buffer equal to buffer

VUID-VkBindBufferMemoryInfo-memory-01508

If the VkMemoryAllocateInfo provided when memory was allocated included a VkMemoryDedicatedAllocateInfo structure in its pNext chain, and VkMemoryDedicatedAllocateInfo::buffer was not VK_NULL_HANDLE, then buffer must equal VkMemoryDedicatedAllocateInfo::buffer, and memoryOffset must be zero

VUID-VkBindBufferMemoryInfo-buffer-01038

If buffer was created with VkDedicatedAllocationBufferCreateInfoNV::dedicatedAllocation equal to VK_TRUE, memory must have been allocated with VkDedicatedAllocationMemoryAllocateInfoNV::buffer equal to a buffer handle created with identical creation parameters to buffer and memoryOffset must be zero

VUID-VkBindBufferMemoryInfo-apiVersion-07920

If
the [VK_KHR_dedicated_allocation](/extensions/VK_KHR_dedicated_allocation) extension is not enabled,

and buffer was not created with VkDedicatedAllocationBufferCreateInfoNV::dedicatedAllocation equal to VK_TRUE, memory must not have been allocated dedicated for a specific buffer or image

VUID-VkBindBufferMemoryInfo-memory-02726

If the value of VkExportMemoryAllocateInfo::handleTypes used to allocate memory is not 0, it must include at least one of the handles set in VkExternalMemoryBufferCreateInfo::handleTypes when buffer was created

VUID-VkBindBufferMemoryInfo-memory-02985

If memory was allocated by a memory import operation, that is not VkImportAndroidHardwareBufferInfoANDROID with a non-NULL buffer value, the external handle type of the imported memory must also have been set in VkExternalMemoryBufferCreateInfo::handleTypes when buffer was created

VUID-VkBindBufferMemoryInfo-memory-02986

If memory was allocated with the VkImportAndroidHardwareBufferInfoANDROID memory import operation with a non-NULL buffer value, VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROIDmust also have been set in VkExternalMemoryBufferCreateInfo::handleTypes when buffer was created

VUID-VkBindBufferMemoryInfo-bufferDeviceAddress-03339

If the VkPhysicalDeviceBufferDeviceAddressFeatures::bufferDeviceAddress feature is enabled and buffer was created with the VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT bit set, memorymust have been allocated with the VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT bit set

VUID-VkBindBufferMemoryInfo-bufferDeviceAddressCaptureReplay-09200

If the VkPhysicalDeviceBufferDeviceAddressFeatures::bufferDeviceAddressCaptureReplay feature is enabled and buffer was created with the VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT bit set, memory must have been allocated with the VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT bit set

VUID-VkBindBufferMemoryInfo-descriptorBufferCaptureReplay-08112

If the buffer was created with the VK_BUFFER_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT bit set, memory must have been allocated with the VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT bit set

VUID-VkBindBufferMemoryInfo-buffer-09201

If the buffer was created with the VK_BUFFER_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT bit set, memory must have been allocated with the VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT bit set

VUID-VkBindBufferMemoryInfo-pNext-01605

If the pNext chain includes a VkBindBufferMemoryDeviceGroupInfo structure, all instances of memory specified by VkBindBufferMemoryDeviceGroupInfo::pDeviceIndices must have been allocated

Valid Usage (Implicit)

VUID-VkBindBufferMemoryInfo-sType-sType

sType must be VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO

VUID-VkBindBufferMemoryInfo-pNext-pNext

Each pNext member of any structure (including this one) in the pNext chain must be either NULL or a pointer to a valid instance of VkBindBufferMemoryDeviceGroupInfo or VkBindMemoryStatusKHR

VUID-VkBindBufferMemoryInfo-sType-unique

The sType value of each struct in the pNext chain must be unique

VUID-VkBindBufferMemoryInfo-commonparent

Both of buffer, and memory must have been created, allocated, or retrieved from the same VkDevice