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;
sType
is a VkStructureType value identifying this structure.pNext
isNULL
or a pointer to a structure extending this structure.image
is the image to be attached to memory.memory
is a VkDeviceMemory object describing the device memory to attach.memoryOffset
is the start offset of the region ofmemory
which is to be bound to the image. The number of bytes returned in theVkMemoryRequirements
::size
member inmemory
, starting frommemoryOffset
bytes, 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 memoryOffset
must 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_ANDROID
must 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::pSplitInstanceBindRegions
must 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 VkBindMemoryStatusKHR
VUID-VkBindImageMemoryInfo-sType-unique
The sType
value of each struct 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