C Specification
The VkCopyImageToBufferInfo2 structure is defined as:
// Provided by VK_VERSION_1_3
typedef struct VkCopyImageToBufferInfo2 {
    VkStructureType              sType;
    const void*                  pNext;
    VkImage                      srcImage;
    VkImageLayout                srcImageLayout;
    VkBuffer                     dstBuffer;
    uint32_t                     regionCount;
    const VkBufferImageCopy2*    pRegions;
} VkCopyImageToBufferInfo2;or the equivalent
// Provided by VK_KHR_copy_commands2
typedef VkCopyImageToBufferInfo2 VkCopyImageToBufferInfo2KHR;Members
- 
sTypeis a VkStructureType value identifying this structure.
- 
pNextisNULLor a pointer to a structure extending this structure.
- 
srcImageis the source image.
- 
srcImageLayoutis the layout of the source image subresources for the copy.
- 
dstBufferis the destination buffer.
- 
regionCountis the number of regions to copy.
- 
pRegionsis a pointer to an array of VkBufferImageCopy2 structures specifying the regions to copy.
Description
- 
VUID-VkCopyImageToBufferInfo2-pRegions-04566 
 The image region specified by each element ofpRegionsthat does not contain VkCopyCommandTransformInfoQCOM in itspNextchain must be contained within the specifiedimageSubresourceofsrcImage
- 
VUID-VkCopyImageToBufferInfo2KHR-pRegions-04557 
 If the image region specified by each element ofpRegionscontains VkCopyCommandTransformInfoQCOM in itspNextchain, the rotated source region must be contained withinsrcImage
- 
VUID-VkCopyImageToBufferInfo2KHR-pRegions-04558 
 If any element ofpRegionscontains VkCopyCommandTransformInfoQCOM in itspNextchain, thensrcImagemust have a 1x1x1 texel block extent
- 
VUID-VkCopyImageToBufferInfo2KHR-pRegions-06205 
 If any element ofpRegionscontains VkCopyCommandTransformInfoQCOM in itspNextchain, thensrcImagemust be of typeVK_IMAGE_TYPE_2D
- 
VUID-VkCopyImageToBufferInfo2KHR-pRegions-06206 
 If any element ofpRegionscontains VkCopyCommandTransformInfoQCOM in itspNextchain, thensrcImagemust not have a multi-planar format
- 
VUID-VkCopyImageToBufferInfo2-pRegions-00183 
 dstBuffermust be large enough to contain all buffer locations that are accessed according to Buffer and Image Addressing, for each element ofpRegions
- 
VUID-VkCopyImageToBufferInfo2-pRegions-00184 
 The union of all source regions, and the union of all destination regions, specified by the elements ofpRegions, must not overlap in memory
- 
VUID-VkCopyImageToBufferInfo2-srcImage-00186 
 srcImagemust have been created withVK_IMAGE_USAGE_TRANSFER_SRC_BITusage flag
- 
VUID-VkCopyImageToBufferInfo2-srcImage-01998 
 The format features ofsrcImagemust containVK_FORMAT_FEATURE_TRANSFER_SRC_BIT
- 
VUID-VkCopyImageToBufferInfo2-dstBuffer-00191 
 dstBuffermust have been created withVK_BUFFER_USAGE_TRANSFER_DST_BITusage flag
- 
VUID-VkCopyImageToBufferInfo2-dstBuffer-00192 
 IfdstBufferis non-sparse then it must be bound completely and contiguously to a singleVkDeviceMemoryobject
- 
VUID-VkCopyImageToBufferInfo2-srcImageLayout-00189 
 srcImageLayoutmust specify the layout of the image subresources ofsrcImagespecified inpRegionsat the time this command is executed on aVkDevice
- 
VUID-VkCopyImageToBufferInfo2-srcImageLayout-01397 
 srcImageLayoutmust beVK_IMAGE_LAYOUT_SHARED_PRESENT_KHR,VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL, orVK_IMAGE_LAYOUT_GENERAL
- 
VUID-VkCopyImageToBufferInfo2-srcImage-07966 
 IfsrcImageis non-sparse then the image or the specified disjoint plane must be bound completely and contiguously to a singleVkDeviceMemoryobject
- 
VUID-VkCopyImageToBufferInfo2-imageSubresource-07967 
 TheimageSubresource.mipLevelmember of each element ofpRegionsmust be less than themipLevelsspecified in VkImageCreateInfo whensrcImagewas created
- 
VUID-VkCopyImageToBufferInfo2-imageSubresource-07968 
 IfimageSubresource.layerCountis notVK_REMAINING_ARRAY_LAYERS,imageSubresource.baseArrayLayer+imageSubresource.layerCountof each element ofpRegionsmust be less than or equal to thearrayLayersspecified in VkImageCreateInfo whensrcImagewas created
- 
VUID-VkCopyImageToBufferInfo2-srcImage-07969 
 srcImagemust not have been created withflagscontainingVK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT
- 
VUID-VkCopyImageToBufferInfo2-srcImage-07979 
 IfsrcImageis of typeVK_IMAGE_TYPE_1D, then for each element ofpRegions,imageOffset.ymust be0andimageExtent.heightmust be1
- 
VUID-VkCopyImageToBufferInfo2-imageOffset-09104 
 For each element ofpRegions,imageOffset.zand (imageExtent.depth+imageOffset.z) must both be greater than or equal to0and less than or equal to the depth of the specifiedimageSubresourceofsrcImage
- 
VUID-VkCopyImageToBufferInfo2-srcImage-07980 
 IfsrcImageis of typeVK_IMAGE_TYPE_1DorVK_IMAGE_TYPE_2D, then for each element ofpRegions,imageOffset.zmust be0andimageExtent.depthmust be1
- 
VUID-VkCopyImageToBufferInfo2-srcImage-07274 
 For each element ofpRegions, if VkCopyCommandTransformInfoQCOM::transformis equal toVK_SURFACE_TRANSFORM_IDENTITY_BIT_KHRorVK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR,imageOffset.xmust be a multiple of the texel block extent width of the VkFormat ofsrcImage
- 
VUID-VkCopyImageToBufferInfo2-imageOffset-10051 
 For each element ofpRegions, if VkCopyCommandTransformInfoQCOM::transformis equal toVK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHRorVK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR, andimageOffset.xdoes not equal the width of the subresource specified byimageSubresource,imageOffset.xmust be a multiple of the texel block extent width of the VkFormat ofsrcImage
- 
VUID-VkCopyImageToBufferInfo2-srcImage-07275 
 For each element ofpRegions, if VkCopyCommandTransformInfoQCOM::transformis equal toVK_SURFACE_TRANSFORM_IDENTITY_BIT_KHRorVK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR,imageOffset.ymust be a multiple of the texel block extent height of the VkFormat ofsrcImage
- 
VUID-VkCopyImageToBufferInfo2-imageOffset-10052 
 For each element ofpRegions, if VkCopyCommandTransformInfoQCOM::transformis equal toVK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHRorVK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR, andimageOffset.ydoes not equal the height of the subresource specified byimageSubresource,imageOffset.ymust be a multiple of the texel block extent height of the VkFormat ofsrcImage
- 
VUID-VkCopyImageToBufferInfo2-srcImage-07276 
 For each element ofpRegions,imageOffset.zmust be a multiple of the texel block extent depth of the VkFormat ofsrcImage
- 
VUID-VkCopyImageToBufferInfo2-srcImage-00207 
 For each element ofpRegions, if VkCopyCommandTransformInfoQCOM::transformis equal toVK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR, the sum ofimageOffset.xandextent.widthdoes not equal the width of the subresource specified byimageSubresource,extent.widthmust be a multiple of the texel block extent width of the VkFormat ofsrcImage
- 
VUID-VkCopyImageToBufferInfo2-imageOffset-10053 
 For each element ofpRegions, if VkCopyCommandTransformInfoQCOM::transformis equal toVK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR, the difference ofimageOffset.xandextent.heightmust be a multiple of the texel block extent width of the VkFormat ofsrcImage
- 
VUID-VkCopyImageToBufferInfo2-imageOffset-10054 
 For each element ofpRegions, if VkCopyCommandTransformInfoQCOM::transformis equal toVK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR, the difference ofimageOffset.xandextent.widthmust be a multiple of the texel block extent width of the VkFormat ofsrcImage
- 
VUID-VkCopyImageToBufferInfo2-imageOffset-10055 
 For each element ofpRegions, if VkCopyCommandTransformInfoQCOM::transformis equal toVK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR, the sum ofimageOffset.xandextent.heightdoes not equal the width of the subresource specified byimageSubresource,extent.heightmust be a multiple of the texel block extent width of the VkFormat ofsrcImage
- 
VUID-VkCopyImageToBufferInfo2-srcImage-00208 
 For each element ofpRegions, if VkCopyCommandTransformInfoQCOM::transformis equal toVK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR, and the sum ofimageOffset.yandextent.heightdoes not equal the height of the subresource specified byimageSubresource,extent.heightmust be a multiple of the texel block extent height of the VkFormat ofsrcImage
- 
VUID-VkCopyImageToBufferInfo2-imageOffset-10056 
 For each element ofpRegions, if VkCopyCommandTransformInfoQCOM::transformis equal toVK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR, the sum ofimageOffset.yandextent.widthdoes not equal the height of the subresource specified byimageSubresource,extent.widthmust be a multiple of the texel block extent height of the VkFormat ofsrcImage
- 
VUID-VkCopyImageToBufferInfo2-imageOffset-10057 
 For each element ofpRegions, if VkCopyCommandTransformInfoQCOM::transformis equal toVK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR, the difference ofimageOffset.yandextent.heightmust be a multiple of the texel block extent height of the VkFormat ofsrcImage
- 
VUID-VkCopyImageToBufferInfo2-imageOffset-10058 
 For each element ofpRegions, if VkCopyCommandTransformInfoQCOM::transformis equal toVK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR, the difference ofimageOffset.yandextent.widthmust be a multiple of the texel block extent height of the VkFormat ofsrcImage
- 
VUID-VkCopyImageToBufferInfo2-srcImage-00209 
 For each element ofpRegions, if the sum ofimageOffset.zandextent.depthdoes not equal the depth of the subresource specified bysrcSubresource,extent.depthmust be a multiple of the texel block extent depth of the VkFormat ofsrcImage
- 
VUID-VkCopyImageToBufferInfo2-imageSubresource-09105 
 For each element ofpRegions,imageSubresource.aspectMaskmust specify aspects present insrcImage
- 
VUID-VkCopyImageToBufferInfo2-srcImage-07981 
 IfsrcImagehas a multi-planar format, then for each element ofpRegions,imageSubresource.aspectMaskmust be a single valid multi-planar aspect mask bit
- 
VUID-VkCopyImageToBufferInfo2-srcImage-07983 
 IfsrcImageis of typeVK_IMAGE_TYPE_3D, for each element ofpRegions,imageSubresource.baseArrayLayermust be0andimageSubresource.layerCountmust be1
- 
VUID-VkCopyImageToBufferInfo2-bufferRowLength-09106 
 For each element ofpRegions,bufferRowLengthmust be a multiple of the texel block extent width of the VkFormat ofsrcImage
- 
VUID-VkCopyImageToBufferInfo2-bufferImageHeight-09107 
 For each element ofpRegions,bufferImageHeightmust be a multiple of the texel block extent height of the VkFormat ofsrcImage
- 
VUID-VkCopyImageToBufferInfo2-bufferRowLength-09108 
 For each element ofpRegions,bufferRowLengthdivided by the texel block extent width and then multiplied by the texel block size ofsrcImagemust be less than or equal to 231-1
- 
VUID-VkCopyImageToBufferInfo2-srcImage-07975 
 IfsrcImagedoes not have either a depth/stencil format or a multi-planar format, then for each element ofpRegions,bufferOffsetmust be a multiple of the texel block size
- 
VUID-VkCopyImageToBufferInfo2-srcImage-07976 
 IfsrcImagehas a multi-planar format, then for each element ofpRegions,bufferOffsetmust be a multiple of the element size of the compatible format for the format and theaspectMaskof theimageSubresourceas defined in [formats-compatible-planes]
- 
VUID-VkCopyImageToBufferInfo2-srcImage-07978 
 IfsrcImagehas a depth/stencil format, thebufferOffsetmember of any element ofpRegionsmust be a multiple of4
- 
VUID-VkCopyImageToBufferInfo2-imageOffset-00197 
 For each element ofpRegionsnot containingVkCopyCommandTransformInfoQCOMin itspNextchain,imageOffset.xand (imageExtent.width+imageOffset.x) must both be greater than or equal to0and less than or equal to the width of the specifiedimageSubresourceofsrcImage
- 
VUID-VkCopyImageToBufferInfo2-imageOffset-00198 
 For each element ofpRegionsnot containingVkCopyCommandTransformInfoQCOMin itspNextchain,imageOffset.yand (imageExtent.height+imageOffset.y) must both be greater than or equal to0and less than or equal to the height of the specifiedimageSubresourceofsrcImage
- 
VUID-VkCopyImageToBufferInfo2-sType-sType 
 sTypemust beVK_STRUCTURE_TYPE_COPY_IMAGE_TO_BUFFER_INFO_2
- 
VUID-VkCopyImageToBufferInfo2-pNext-pNext 
 pNextmust beNULL
- 
VUID-VkCopyImageToBufferInfo2-srcImage-parameter 
 srcImagemust be a valid VkImage handle
- 
VUID-VkCopyImageToBufferInfo2-srcImageLayout-parameter 
 srcImageLayoutmust be a valid VkImageLayout value
- 
VUID-VkCopyImageToBufferInfo2-dstBuffer-parameter 
 dstBuffermust be a valid VkBuffer handle
- 
VUID-VkCopyImageToBufferInfo2-pRegions-parameter 
 pRegionsmust be a valid pointer to an array ofregionCountvalid VkBufferImageCopy2 structures
- 
VUID-VkCopyImageToBufferInfo2-regionCount-arraylength 
 regionCountmust be greater than0
- 
VUID-VkCopyImageToBufferInfo2-commonparent 
 Both ofdstBuffer, andsrcImagemust 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.