C Specification
The VkCopyImageToBufferInfo2KHR structure is defined as:
// Provided by VK_KHR_copy_commands2
typedef struct VkCopyImageToBufferInfo2KHR {
VkStructureType sType;
const void* pNext;
VkImage srcImage;
VkImageLayout srcImageLayout;
VkBuffer dstBuffer;
uint32_t regionCount;
const VkBufferImageCopy2KHR* pRegions;
} VkCopyImageToBufferInfo2KHR;
Members
-
sTypeis the type of 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 VkBufferImageCopy2KHR structures specifying the regions to copy.
Description
-
VUID-VkCopyImageToBufferInfo2KHR-pRegions-04566
If the image region specified by each element ofpRegionsdoes not contain VkCopyCommandTransformInfoQCOM in itspNextchain, it must be a region that is contained withinsrcImageif thesrcImage’s VkFormat is not a multi-planar format, and must be a region that is contained within the plane being copied if thesrcImage’s VkFormat is a multi-planar format -
VUID-VkCopyImageToBufferInfo2KHR-pRegions-04557
If the image region specified by each element ofpRegionsdoes contain VkCopyCommandTransformInfoQCOM in itspNextchain, the rotated source region as described in https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#copies-buffers-images-rotation-addressing must be contained withinsrcImage. -
VUID-VkCopyImageToBufferInfo2KHR-pRegions-04558
If any element ofpRegionscontains VkCopyCommandTransformInfoQCOM in itspNextchain, then thesrcImagemust not be a blocked image -
VUID-VkCopyImageToBufferInfo2KHR-pRegions-04559
If any element ofpRegionscontains VkCopyCommandTransformInfoQCOM in itspNextchain, then thesrcImagemust be of typeVK_IMAGE_TYPE_2D, and must not be a multi-planar format.
-
VUID-VkCopyImageToBufferInfo2KHR-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-VkCopyImageToBufferInfo2KHR-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-VkCopyImageToBufferInfo2KHR-srcImage-00186
srcImagemust have been created withVK_IMAGE_USAGE_TRANSFER_SRC_BITusage flag -
VUID-VkCopyImageToBufferInfo2KHR-srcImage-01998
The format features ofsrcImagemust containVK_FORMAT_FEATURE_TRANSFER_SRC_BIT -
VUID-VkCopyImageToBufferInfo2KHR-srcImage-00187
IfsrcImageis non-sparse then it must be bound completely and contiguously to a singleVkDeviceMemoryobject -
VUID-VkCopyImageToBufferInfo2KHR-dstBuffer-00191
dstBuffermust have been created withVK_BUFFER_USAGE_TRANSFER_DST_BITusage flag -
VUID-VkCopyImageToBufferInfo2KHR-dstBuffer-00192
IfdstBufferis non-sparse then it must be bound completely and contiguously to a singleVkDeviceMemoryobject -
VUID-VkCopyImageToBufferInfo2KHR-srcImage-00188
srcImagemust have a sample count equal toVK_SAMPLE_COUNT_1_BIT -
VUID-VkCopyImageToBufferInfo2KHR-srcImageLayout-00189
srcImageLayoutmust specify the layout of the image subresources ofsrcImagespecified inpRegionsat the time this command is executed on aVkDevice -
VUID-VkCopyImageToBufferInfo2KHR-srcImageLayout-01397
srcImageLayoutmust beVK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL,VK_IMAGE_LAYOUT_GENERAL, orVK_IMAGE_LAYOUT_SHARED_PRESENT_KHR -
VUID-VkCopyImageToBufferInfo2KHR-imageSubresource-01703
TheimageSubresource.mipLevelmember of each element ofpRegionsmust be less than themipLevelsspecified in VkImageCreateInfo whensrcImagewas created -
VUID-VkCopyImageToBufferInfo2KHR-imageSubresource-01704
TheimageSubresource.baseArrayLayer+imageSubresource.layerCountof each element ofpRegionsmust be less than or equal to thearrayLayersspecified in VkImageCreateInfo whensrcImagewas created -
VUID-VkCopyImageToBufferInfo2KHR-imageOffset-01794
TheimageOffsetandimageExtentmembers of each element ofpRegionsmust respect the image transfer granularity requirements ofcommandBuffer’s command pool’s queue family, as described in VkQueueFamilyProperties -
VUID-VkCopyImageToBufferInfo2KHR-srcImage-02544
srcImagemust not have been created withflagscontainingVK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT -
VUID-VkCopyImageToBufferInfo2KHR-commandBuffer-04054
If the queue family used to create the VkCommandPool whichcommandBufferwas allocated from does not supportVK_QUEUE_GRAPHICS_BITorVK_QUEUE_COMPUTE_BIT, thebufferOffsetmember of any element ofpRegionsmust be a multiple of4 -
VUID-VkCopyImageToBufferInfo2KHR-srcImage-04055
IfsrcImagehas a depth/stencil format, thebufferOffsetmember of any element ofpRegionsmust be a multiple of4 -
VUID-VkCopyImageToBufferInfo2KHR-imageOffset-00197
For each element ofpRegionsnot containing VkCopyCommandTransformInfoQCOM in itspNextchain, ,imageOffset.xand (imageExtent.width+imageOffset.x) must both be greater than or equal to0and less than or equal to the width of the specifiedimageSubresourceofsrcImagewhere this refers to the width of the plane of the image involved in the copy in the case of a multi-planar format -
VUID-VkCopyImageToBufferInfo2KHR-imageOffset-00198
For each element ofpRegionsnot containing VkCopyCommandTransformInfoQCOM in itspNextchain, ,imageOffset.yand (imageExtent.height +imageOffset.y) must both be greater than or equal to0and less than or equal to the height of the specifiedimageSubresourceofsrcImagewhere this refers to the height of the plane of the image involved in the copy in the case of a multi-planar format
-
VUID-VkCopyImageToBufferInfo2KHR-bufferOffset-01558
If {imageparam} does not have either a depth/stencil or a multi-planar format, then for each element ofpRegions,bufferOffsetmust be a multiple of the format’s texel block size -
VUID-VkCopyImageToBufferInfo2KHR-bufferOffset-01559
If {imageparam} has 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-VkCopyImageToBufferInfo2KHR-srcImage-00199
If {imageparam} is of typeVK_IMAGE_TYPE_1D, then for each element ofpRegions,imageOffset.ymust be0andimageExtent.heightmust be1 -
VUID-VkCopyImageToBufferInfo2KHR-imageOffset-00200
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 specifiedimageSubresourceof {imageparam} -
VUID-VkCopyImageToBufferInfo2KHR-srcImage-00201
If {imageparam} is of typeVK_IMAGE_TYPE_1DorVK_IMAGE_TYPE_2D, then for each element ofpRegions,imageOffset.zmust be0andimageExtent.depthmust be1 -
VUID-VkCopyImageToBufferInfo2KHR-bufferRowLength-00203
If {imageparam} is a blocked image, for each element ofpRegions,bufferRowLengthmust be a multiple of the compressed texel block width -
VUID-VkCopyImageToBufferInfo2KHR-bufferImageHeight-00204
If {imageparam} is a blocked image, for each element ofpRegions,bufferImageHeightmust be a multiple of the compressed texel block height -
VUID-VkCopyImageToBufferInfo2KHR-imageOffset-00205
If {imageparam} is a blocked image, for each element ofpRegions, all members ofimageOffsetmust be a multiple of the corresponding dimensions of the compressed texel block -
VUID-VkCopyImageToBufferInfo2KHR-bufferOffset-00206
If {imageparam} is a blocked image, for each element ofpRegions,bufferOffsetmust be a multiple of the compressed texel block size in bytes -
VUID-VkCopyImageToBufferInfo2KHR-imageExtent-00207
If {imageparam} is a blocked image, for each element ofpRegions,imageExtent.widthmust be a multiple of the compressed texel block width or (imageExtent.width+imageOffset.x) must equal the width of the specifiedimageSubresourceof {imageparam} -
VUID-VkCopyImageToBufferInfo2KHR-imageExtent-00208
If {imageparam} is a blocked image, for each element ofpRegions,imageExtent.heightmust be a multiple of the compressed texel block height or (imageExtent.height+imageOffset.y) must equal the height of the specifiedimageSubresourceof {imageparam} -
VUID-VkCopyImageToBufferInfo2KHR-imageExtent-00209
If {imageparam} is a blocked image, for each element ofpRegions,imageExtent.depthmust be a multiple of the compressed texel block depth or (imageExtent.depth+imageOffset.z) must equal the depth of the specifiedimageSubresourceof {imageparam} -
VUID-VkCopyImageToBufferInfo2KHR-aspectMask-00211
For each element ofpRegions,imageSubresource.aspectMaskmust specify aspects present in {imageparam} -
VUID-VkCopyImageToBufferInfo2KHR-aspectMask-01560
If {imageparam} has a multi-planar format, then for each element ofpRegions,imageSubresource.aspectMaskmust beVK_IMAGE_ASPECT_PLANE_0_BIT,VK_IMAGE_ASPECT_PLANE_1_BIT, orVK_IMAGE_ASPECT_PLANE_2_BIT(withVK_IMAGE_ASPECT_PLANE_2_BITvalid only for image formats with three planes) -
VUID-VkCopyImageToBufferInfo2KHR-baseArrayLayer-00213
If {imageparam} is of typeVK_IMAGE_TYPE_3D, for each element ofpRegions,imageSubresource.baseArrayLayermust be0andimageSubresource.layerCountmust be1
-
VUID-VkCopyImageToBufferInfo2KHR-sType-sType
sTypemust beVK_STRUCTURE_TYPE_COPY_IMAGE_TO_BUFFER_INFO_2_KHR -
VUID-VkCopyImageToBufferInfo2KHR-pNext-pNext
pNextmust beNULL -
VUID-VkCopyImageToBufferInfo2KHR-srcImage-parameter
srcImagemust be a valid VkImage handle -
VUID-VkCopyImageToBufferInfo2KHR-srcImageLayout-parameter
srcImageLayoutmust be a valid VkImageLayout value -
VUID-VkCopyImageToBufferInfo2KHR-dstBuffer-parameter
dstBuffermust be a valid VkBuffer handle -
VUID-VkCopyImageToBufferInfo2KHR-pRegions-parameter
pRegionsmust be a valid pointer to an array ofregionCountvalid VkBufferImageCopy2KHR structures -
VUID-VkCopyImageToBufferInfo2KHR-regionCount-arraylength
regionCountmust be greater than0 -
VUID-VkCopyImageToBufferInfo2KHR-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.