C Specification
VkBindImageMemoryInfo contains members corresponding to the parameters
of vkBindImageMemory.
The VkBindImageMemoryInfo structure is defined as:
// Provided by VK_VERSION_1_1
typedef struct VkBindImageMemoryInfo {
    VkStructureType    sType;
    const void*        pNext;
    VkImage            image;
    VkDeviceMemory     memory;
    VkDeviceSize       memoryOffset;
} VkBindImageMemoryInfo;or the equivalent
// Provided by VK_KHR_bind_memory2
typedef VkBindImageMemoryInfo VkBindImageMemoryInfoKHR;Members
- 
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.
Description
- 
VUID-VkBindImageMemoryInfo-image-07460 
 imagemust not have been bound to a memory object
- 
VUID-VkBindImageMemoryInfo-image-01045 
 imagemust not have been created with any sparse memory binding flags
- 
VUID-VkBindImageMemoryInfo-memoryOffset-01046 
 memoryOffsetmust be less than the size ofmemory
- 
VUID-VkBindImageMemoryInfo-image-01445 
 Ifimagerequires a dedicated allocation (as reported by vkGetImageMemoryRequirements2 in VkMemoryDedicatedRequirements::requiresDedicatedAllocationforimage),memorymust have been created with VkMemoryDedicatedAllocateInfo::imageequal toimage
- 
VUID-VkBindImageMemoryInfo-memory-02628 
 If thededicatedAllocationImageAliasingfeature is not enabled, and theVkMemoryAllocateInfoprovided whenmemorywas allocated included a VkMemoryDedicatedAllocateInfo structure in itspNextchain, and VkMemoryDedicatedAllocateInfo::imagewas not VK_NULL_HANDLE, thenimagemust equal VkMemoryDedicatedAllocateInfo::imageandmemoryOffsetmust be zero
- 
VUID-VkBindImageMemoryInfo-memory-02629 
 If thededicatedAllocationImageAliasingfeature is enabled, and theVkMemoryAllocateInfoprovided whenmemorywas allocated included a VkMemoryDedicatedAllocateInfo structure in itspNextchain, and VkMemoryDedicatedAllocateInfo::imagewas not VK_NULL_HANDLE, thenmemoryOffsetmust be zero, andimagemust be either equal to VkMemoryDedicatedAllocateInfo::imageor an image that was created using the same parameters in VkImageCreateInfo, with the exception thatextentandarrayLayersmay differ subject to the following restrictions: every dimension in theextentparameter of the image being bound must be equal to or smaller than the original image for which the allocation was created; and thearrayLayersparameter of the image being bound must be equal to or smaller than the original image for which the allocation was created
- 
VUID-VkBindImageMemoryInfo-None-01901 
 If image was created with theVK_IMAGE_CREATE_PROTECTED_BITbit set, the image must be bound to a memory object allocated with a memory type that reportsVK_MEMORY_PROPERTY_PROTECTED_BIT
- 
VUID-VkBindImageMemoryInfo-None-01902 
 If image was created with theVK_IMAGE_CREATE_PROTECTED_BITbit not set, the image must not be bound to a memory object created with a memory type that reportsVK_MEMORY_PROPERTY_PROTECTED_BIT
- 
VUID-VkBindImageMemoryInfo-image-01050 
 Ifimagewas created with VkDedicatedAllocationImageCreateInfoNV::dedicatedAllocationequal toVK_TRUE,memorymust have been created with VkDedicatedAllocationMemoryAllocateInfoNV::imageequal to an image handle created with identical creation parameters toimageandmemoryOffsetmust be zero
- 
VUID-VkBindImageMemoryInfo-apiVersion-07921 
 If the VK_KHR_dedicated_allocation extension is not enabled, VkPhysicalDeviceProperties::apiVersionis less than Vulkan 1.1, andimagewas not created with VkDedicatedAllocationImageCreateInfoNV::dedicatedAllocationequal toVK_TRUE,memorymust not have been allocated dedicated for a specific buffer or image
- 
VUID-VkBindImageMemoryInfo-memory-02728 
 If the value of VkExportMemoryAllocateInfo::handleTypesused to allocatememoryis not0, it must include at least one of the handles set in VkExternalMemoryImageCreateInfo::handleTypeswhenimagewas created
- 
VUID-VkBindImageMemoryInfo-memory-02989 
 Ifmemorywas created by a memory import operation, that is not VkImportAndroidHardwareBufferInfoANDROID with a non-NULLbuffervalue, the external handle type of the imported memory must also have been set in VkExternalMemoryImageCreateInfo::handleTypeswhenimagewas created
- 
VUID-VkBindImageMemoryInfo-memory-02990 
 Ifmemorywas created with the VkImportAndroidHardwareBufferInfoANDROID memory import operation with a non-NULLbuffervalue,VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROIDmust also have been set in VkExternalMemoryImageCreateInfo::handleTypeswhenimagewas created
- 
VUID-VkBindImageMemoryInfo-descriptorBufferCaptureReplay-08113 
 If theimagewas created with theVK_IMAGE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXTbit set,memorymust have been allocated with theVK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BITbit set
- 
VUID-VkBindImageMemoryInfo-image-09202 
 If theimagewas created with theVK_IMAGE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXTbit set,memorymust have been allocated with theVK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BITbit set
- 
VUID-VkBindImageMemoryInfo-pNext-01615 
 If thepNextchain does not include a VkBindImagePlaneMemoryInfo structure,memorymust have been allocated using one of the memory types allowed in thememoryTypeBitsmember of the VkMemoryRequirements structure returned from a call to vkGetImageMemoryRequirements2 withimage
- 
VUID-VkBindImageMemoryInfo-pNext-01616 
 If thepNextchain does not include a VkBindImagePlaneMemoryInfo structure,memoryOffsetmust be an integer multiple of thealignmentmember of the VkMemoryRequirements structure returned from a call to vkGetImageMemoryRequirements2 withimage
- 
VUID-VkBindImageMemoryInfo-pNext-01617 
 If thepNextchain does not include a VkBindImagePlaneMemoryInfo structure, the difference of the size ofmemoryandmemoryOffsetmust be greater than or equal to thesizemember of the VkMemoryRequirements structure returned from a call to vkGetImageMemoryRequirements2 with the sameimage
- 
VUID-VkBindImageMemoryInfo-pNext-01618 
 If thepNextchain includes a VkBindImagePlaneMemoryInfo structure,imagemust have been created with theVK_IMAGE_CREATE_DISJOINT_BITbit set
- 
VUID-VkBindImageMemoryInfo-image-07736 
 Ifimagewas created with theVK_IMAGE_CREATE_DISJOINT_BITbit set, then thepNextchain must include a VkBindImagePlaneMemoryInfo structure
- 
VUID-VkBindImageMemoryInfo-pNext-01619 
 If thepNextchain includes a VkBindImagePlaneMemoryInfo structure,memorymust have been allocated using one of the memory types allowed in thememoryTypeBitsmember of the VkMemoryRequirements structure returned from a call to vkGetImageMemoryRequirements2 withimageand where VkBindImagePlaneMemoryInfo::planeAspectcorresponds to the VkImagePlaneMemoryRequirementsInfo::planeAspectin the VkImageMemoryRequirementsInfo2 structure’spNextchain
- 
VUID-VkBindImageMemoryInfo-pNext-01620 
 If thepNextchain includes a VkBindImagePlaneMemoryInfo structure,memoryOffsetmust be an integer multiple of thealignmentmember of the VkMemoryRequirements structure returned from a call to vkGetImageMemoryRequirements2 withimageand where VkBindImagePlaneMemoryInfo::planeAspectcorresponds to the VkImagePlaneMemoryRequirementsInfo::planeAspectin the VkImageMemoryRequirementsInfo2 structure’spNextchain
- 
VUID-VkBindImageMemoryInfo-pNext-01621 
 If thepNextchain includes a VkBindImagePlaneMemoryInfo structure, the difference of the size ofmemoryandmemoryOffsetmust be greater than or equal to thesizemember of the VkMemoryRequirements structure returned from a call to vkGetImageMemoryRequirements2 with the sameimageand where VkBindImagePlaneMemoryInfo::planeAspectcorresponds to the VkImagePlaneMemoryRequirementsInfo::planeAspectin the VkImageMemoryRequirementsInfo2 structure’spNextchain
- 
VUID-VkBindImageMemoryInfo-pNext-01626 
 If thepNextchain includes a VkBindImageMemoryDeviceGroupInfo structure, all instances ofmemoryspecified by VkBindImageMemoryDeviceGroupInfo::pDeviceIndicesmust have been allocated
- 
VUID-VkBindImageMemoryInfo-pNext-01627 
 If thepNextchain includes a VkBindImageMemoryDeviceGroupInfo structure, and VkBindImageMemoryDeviceGroupInfo::splitInstanceBindRegionCountis not zero, thenimagemust have been created with theVK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BITbit set
- 
VUID-VkBindImageMemoryInfo-pNext-01628 
 If thepNextchain includes a VkBindImageMemoryDeviceGroupInfo structure, all elements of VkBindImageMemoryDeviceGroupInfo::pSplitInstanceBindRegionsmust be valid rectangles contained within the dimensions ofimage
- 
VUID-VkBindImageMemoryInfo-pNext-01629 
 If thepNextchain includes a VkBindImageMemoryDeviceGroupInfo structure, the union of the areas of all elements of VkBindImageMemoryDeviceGroupInfo::pSplitInstanceBindRegionsthat correspond to the same instance ofimagemust cover the entire image
- 
VUID-VkBindImageMemoryInfo-image-01630 
 Ifimagewas created with a valid swapchain handle in VkImageSwapchainCreateInfoKHR::swapchain, then thepNextchain must include a VkBindImageMemorySwapchainInfoKHR structure containing the same swapchain handle
- 
VUID-VkBindImageMemoryInfo-pNext-01631 
 If thepNextchain includes a VkBindImageMemorySwapchainInfoKHR structure,memorymust be VK_NULL_HANDLE
- 
VUID-VkBindImageMemoryInfo-pNext-01632 
 If thepNextchain does not include a VkBindImageMemorySwapchainInfoKHR structure,memorymust be a valid VkDeviceMemory handle
- 
VUID-VkBindImageMemoryInfo-sType-sType 
 sTypemust beVK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO
- 
VUID-VkBindImageMemoryInfo-pNext-pNext 
 EachpNextmember of any structure (including this one) in thepNextchain must be eitherNULLor a pointer to a valid instance of VkBindImageMemoryDeviceGroupInfo, VkBindImageMemorySwapchainInfoKHR, VkBindImagePlaneMemoryInfo, or VkBindMemoryStatus
- 
VUID-VkBindImageMemoryInfo-sType-unique 
 ThesTypevalue of each structure in thepNextchain must be unique
- 
VUID-VkBindImageMemoryInfo-image-parameter 
 imagemust be a valid VkImage handle
- 
VUID-VkBindImageMemoryInfo-commonparent 
 Both ofimage, andmemorythat are valid handles of non-ignored parameters must have been created, allocated, or retrieved from the same VkDevice
Document Notes
For more information, see the Vulkan Specification
This page is extracted from the Vulkan Specification. Fixes and changes should be made to the Specification, not directly.