VkBindImageMemoryInfo
VkBindImageMemoryInfo contains members corresponding to the parameters
of vkBindImageMemory.
The VkBindImageMemoryInfo structure is defined as:
typedef struct VkBindImageMemoryInfo {
VkStructureType sType;
const void* pNext;
VkImage image;
VkDeviceMemory memory;
VkDeviceSize memoryOffset;
} VkBindImageMemoryInfo;
or the equivalent
typedef VkBindImageMemoryInfo VkBindImageMemoryInfoKHR;
sTypeis a VkStructureType value identifying this structure.pNextisNULLor a pointer to a structure extending this structure.imageis the image to be attached to memory.memoryis a VkDeviceMemory object describing the device memory to attach.memoryOffsetis the start offset of the region ofmemorywhich is to be bound to the image. The number of bytes returned in theVkMemoryRequirements::sizemember inmemory, starting frommemoryOffsetbytes, will be bound to the specified image.
Valid Usage
VUID-VkBindImageMemoryInfo-image-07460
image must not have been bound to a memory object
VUID-VkBindImageMemoryInfo-image-01045
image must not have been created with any sparse memory binding
flags
VUID-VkBindImageMemoryInfo-memoryOffset-01046
memoryOffset must be less than the size of memory
VUID-VkBindImageMemoryInfo-image-01445
If image requires a dedicated allocation (as reported by
vkGetImageMemoryRequirements2 in
VkMemoryDedicatedRequirements::requiresDedicatedAllocation
for image), memory must have been created with
VkMemoryDedicatedAllocateInfo::image equal to image
VUID-VkBindImageMemoryInfo-memory-02628
If
the dedicatedAllocationImageAliasing feature is not enabled, and
the VkMemoryAllocateInfo provided when memory was allocated
included a VkMemoryDedicatedAllocateInfo structure in its
pNext chain, and VkMemoryDedicatedAllocateInfo::image
was not VK_NULL_HANDLE, then image must equal
VkMemoryDedicatedAllocateInfo::image and memoryOffsetmust be zero
VUID-VkBindImageMemoryInfo-memory-02629
If the dedicatedAllocationImageAliasing feature is enabled, and the
VkMemoryAllocateInfo provided when memory was allocated
included a VkMemoryDedicatedAllocateInfo structure in its
pNext chain, and VkMemoryDedicatedAllocateInfo::image
was not VK_NULL_HANDLE, then memoryOffset must be zero, and
image must be either equal to
VkMemoryDedicatedAllocateInfo::image or an image that was
created using the same parameters in VkImageCreateInfo, with the
exception that extent and arrayLayers may differ subject to
the following restrictions: every dimension in the extent
parameter of the image being bound must be equal to or smaller than the
original image for which the allocation was created; and the
arrayLayers parameter of the image being bound must be equal to
or smaller than the original image for which the allocation was created
VUID-VkBindImageMemoryInfo-image-01050
If image was created with
VkDedicatedAllocationImageCreateInfoNV::dedicatedAllocation
equal to VK_TRUE, memory must have been created with
VkDedicatedAllocationMemoryAllocateInfoNV::image equal to an
image handle created with identical creation parameters to image
and memoryOffset must be zero
VUID-VkBindImageMemoryInfo-apiVersion-07921
If
the [VK_KHR_dedicated_allocation](/extensions/VK_KHR_dedicated_allocation) extension is not enabled,
and
image was not created with
VkDedicatedAllocationImageCreateInfoNV::dedicatedAllocation
equal to VK_TRUE, memory must not have been allocated
dedicated for a specific buffer or image
VUID-VkBindImageMemoryInfo-memory-02728
If the value of VkExportMemoryAllocateInfo::handleTypes used
to allocate memory is not 0, it must include at least one of
the handles set in
VkExternalMemoryImageCreateInfo::handleTypes when
image was created
VUID-VkBindImageMemoryInfo-memory-02989
If memory was created 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 VkExternalMemoryImageCreateInfo::handleTypes when
image was created
VUID-VkBindImageMemoryInfo-memory-02990
If memory was created 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
VkExternalMemoryImageCreateInfo::handleTypes when
image was created
VUID-VkBindImageMemoryInfo-descriptorBufferCaptureReplay-08113
If the image was created with the
VK_IMAGE_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-VkBindImageMemoryInfo-image-09202
If the image was created with the
VK_IMAGE_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-VkBindImageMemoryInfo-pNext-01615
If the pNext chain does not include a
VkBindImagePlaneMemoryInfo structure, 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 vkGetImageMemoryRequirements2 with
image
VUID-VkBindImageMemoryInfo-pNext-01616
If the pNext chain does not include a
VkBindImagePlaneMemoryInfo structure, memoryOffset must be
an integer multiple of the alignment member of the
VkMemoryRequirements structure returned from a call to
vkGetImageMemoryRequirements2 with image
VUID-VkBindImageMemoryInfo-pNext-01617
If the pNext chain does not include a
VkBindImagePlaneMemoryInfo structure, the difference of the size
of memory and memoryOffset must be greater than or equal to
the size member of the VkMemoryRequirements structure
returned from a call to vkGetImageMemoryRequirements2 with the
same image
VUID-VkBindImageMemoryInfo-pNext-01618
If the pNext chain includes a VkBindImagePlaneMemoryInfo
structure, image must have been created with the
VK_IMAGE_CREATE_DISJOINT_BIT bit set
VUID-VkBindImageMemoryInfo-image-07736
If image was created with the VK_IMAGE_CREATE_DISJOINT_BIT
bit set, then the pNext chain must include a
VkBindImagePlaneMemoryInfo structure
VUID-VkBindImageMemoryInfo-pNext-01619
If the pNext chain includes a VkBindImagePlaneMemoryInfo
structure, 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
vkGetImageMemoryRequirements2 with image and where
VkBindImagePlaneMemoryInfo::planeAspect corresponds to the
VkImagePlaneMemoryRequirementsInfo::planeAspect in the
VkImageMemoryRequirementsInfo2 structure’s pNext chain
VUID-VkBindImageMemoryInfo-pNext-01620
If the pNext chain includes a VkBindImagePlaneMemoryInfo
structure, memoryOffset must be an integer multiple of the
alignment member of the VkMemoryRequirements structure
returned from a call to vkGetImageMemoryRequirements2 with
image and where
VkBindImagePlaneMemoryInfo::planeAspect corresponds to the
VkImagePlaneMemoryRequirementsInfo::planeAspect in the
VkImageMemoryRequirementsInfo2 structure’s pNext chain
VUID-VkBindImageMemoryInfo-pNext-01621
If the pNext chain includes a VkBindImagePlaneMemoryInfo
structure, the difference of the size of memory and
memoryOffset must be greater than or equal to the size
member of the VkMemoryRequirements structure returned from a call
to vkGetImageMemoryRequirements2 with the same image and
where VkBindImagePlaneMemoryInfo::planeAspect corresponds to
the VkImagePlaneMemoryRequirementsInfo::planeAspect in the
VkImageMemoryRequirementsInfo2 structure’s pNext chain
VUID-VkBindImageMemoryInfo-pNext-01626
If the pNext chain includes a
VkBindImageMemoryDeviceGroupInfo structure, all instances of
memory specified by
VkBindImageMemoryDeviceGroupInfo::pDeviceIndices must have
been allocated
VUID-VkBindImageMemoryInfo-pNext-01627
If the pNext chain includes a
VkBindImageMemoryDeviceGroupInfo structure, and
VkBindImageMemoryDeviceGroupInfo::splitInstanceBindRegionCount
is not zero, then image must have been created with the
VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT bit set
VUID-VkBindImageMemoryInfo-pNext-01628
If the pNext chain includes a
VkBindImageMemoryDeviceGroupInfo structure, all elements of
VkBindImageMemoryDeviceGroupInfo::pSplitInstanceBindRegionsmust be valid rectangles contained within the dimensions of image
VUID-VkBindImageMemoryInfo-pNext-01629
If the pNext chain includes a
VkBindImageMemoryDeviceGroupInfo structure, the union of the areas
of all elements of
VkBindImageMemoryDeviceGroupInfo::pSplitInstanceBindRegions
that correspond to the same instance of image must cover the
entire image
VUID-VkBindImageMemoryInfo-image-01630
If image was created with a valid swapchain handle in
VkImageSwapchainCreateInfoKHR::swapchain, then the
pNext chain must include a
VkBindImageMemorySwapchainInfoKHR structure containing the same
swapchain handle
VUID-VkBindImageMemoryInfo-pNext-01631
If the pNext chain includes a
VkBindImageMemorySwapchainInfoKHR structure, memory must be
VK_NULL_HANDLE
VUID-VkBindImageMemoryInfo-pNext-01632
If the pNext chain does not include a
VkBindImageMemorySwapchainInfoKHR structure, memory must be
a valid VkDeviceMemory handle
Valid Usage (Implicit)
VUID-VkBindImageMemoryInfo-sType-sType
sType must be VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO
VUID-VkBindImageMemoryInfo-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 VkBindImageMemoryDeviceGroupInfo, VkBindImageMemorySwapchainInfoKHR, VkBindImagePlaneMemoryInfo, or VkBindMemoryStatus
VUID-VkBindImageMemoryInfo-sType-unique
The sType value of each structure in the pNext chain must be unique
VUID-VkBindImageMemoryInfo-image-parameter
image must be a valid VkImage handle
VUID-VkBindImageMemoryInfo-commonparent
Both of image, and memory that are valid handles of non-ignored parameters must have been created, allocated, or retrieved from the same VkDevice