VkMemoryToImageCopy
Each element of VkCopyMemoryToImageInfo::pRegions is a structure
defined as:
typedef struct VkMemoryToImageCopy {
VkStructureType sType;
const void* pNext;
const void* pHostPointer;
uint32_t memoryRowLength;
uint32_t memoryImageHeight;
VkImageSubresourceLayers imageSubresource;
VkOffset3D imageOffset;
VkExtent3D imageExtent;
} VkMemoryToImageCopy;
or the equivalent
typedef VkMemoryToImageCopy VkMemoryToImageCopyEXT;
sTypeis a VkStructureType value identifying this structure.pNextisNULLor a pointer to a structure extending this structure.pHostPointeris the host memory address which is the source of the copy.memoryRowLengthandmemoryImageHeightspecify in texels a subregion of a larger two- or three-dimensional image in host memory, and control the addressing calculations. If either of these values is zero, that aspect of the host memory is considered to be tightly packed according to theimageExtent.imageSubresourceis a VkImageSubresourceLayers used to specify the specific image subresources of the image used for the source or destination image data.imageOffsetselects the initialx,y,zoffsets in texels of the sub-region of the destination image data.imageExtentis the size in texels of the image to copy inwidth,heightanddepth.
This structure is functionally similar to VkBufferImageCopy2, except it defines host memory as the source of copy instead of a buffer. In particular, the same data packing rules and restrictions as that structure apply here as well.
Valid Usage
VUID-VkMemoryToImageCopy-pHostPointer-09061
pHostPointer must point to memory that is large enough to contain
all memory locations that are accessed according to
Buffer and Image Addressing, for
each element of pRegions
VUID-VkMemoryToImageCopy-pRegions-09062
The union of all source regions, and the union of all destination
regions, specified by the elements of pRegions, must not overlap
in memory
VUID-VkMemoryToImageCopy-memoryRowLength-09101
memoryRowLength must be 0, or greater than or equal to the
width member of imageExtent
VUID-VkMemoryToImageCopy-memoryImageHeight-09102
memoryImageHeight must be 0, or greater than or equal to the
height member of imageExtent
VUID-VkMemoryToImageCopy-aspectMask-09103
The aspectMask member of imageSubresource must only have a
single bit set
VUID-VkMemoryToImageCopy-imageExtent-06659
imageExtent.width must not be 0
VUID-VkMemoryToImageCopy-imageExtent-06660
imageExtent.height must not be 0
VUID-VkMemoryToImageCopy-imageExtent-06661
imageExtent.depth must not be 0
Valid Usage (Implicit)
VUID-VkMemoryToImageCopy-sType-sType
sType must be VK_STRUCTURE_TYPE_MEMORY_TO_IMAGE_COPY
VUID-VkMemoryToImageCopy-pNext-pNext
pNext must be NULL
VUID-VkMemoryToImageCopy-pHostPointer-parameter
pHostPointer must be a pointer value
VUID-VkMemoryToImageCopy-imageSubresource-parameter
imageSubresource must be a valid VkImageSubresourceLayers structure