C Specification
The VkCopyBufferToImageInfo2 structure is defined as:
// Provided by VK_VERSION_1_3
typedef struct VkCopyBufferToImageInfo2 {
VkStructureType sType;
const void* pNext;
VkBuffer srcBuffer;
VkImage dstImage;
VkImageLayout dstImageLayout;
uint32_t regionCount;
const VkBufferImageCopy2* pRegions;
} VkCopyBufferToImageInfo2;
or the equivalent
// Provided by VK_KHR_copy_commands2
typedef VkCopyBufferToImageInfo2 VkCopyBufferToImageInfo2KHR;
Members
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure. -
srcBufferis the source buffer. -
dstImageis the destination image. -
dstImageLayoutis the layout of the destination image subresources for the copy. -
regionCountis the number of regions to copy. -
pRegionsis a pointer to an array of VkBufferImageCopy2 structures specifying the regions to copy.
Description
-
VUID-VkCopyBufferToImageInfo2-pRegions-04565
The image region specified by each element ofpRegionsthat does not contain VkCopyCommandTransformInfoQCOM in itspNextchain must be contained within the specifiedimageSubresourceofdstImage -
VUID-VkCopyBufferToImageInfo2KHR-pRegions-04554
If the image region specified by each element ofpRegionscontains VkCopyCommandTransformInfoQCOM in itspNextchain, the rotated destination region must be contained withindstImage -
VUID-VkCopyBufferToImageInfo2KHR-pRegions-04555
If any element ofpRegionscontains VkCopyCommandTransformInfoQCOM in itspNextchain, thendstImagemust have a 1x1x1 texel block extent -
VUID-VkCopyBufferToImageInfo2KHR-pRegions-06203
If any element ofpRegionscontains VkCopyCommandTransformInfoQCOM in itspNextchain, thendstImagemust be of typeVK_IMAGE_TYPE_2D -
VUID-VkCopyBufferToImageInfo2KHR-pRegions-06204
If any element ofpRegionscontains VkCopyCommandTransformInfoQCOM in itspNextchain, thendstImagemust not have a multi-planar format
-
VUID-VkCopyBufferToImageInfo2-pRegions-00171
srcBuffermust be large enough to contain all buffer locations that are accessed according to Buffer and Image Addressing, for each element ofpRegions -
VUID-VkCopyBufferToImageInfo2-pRegions-00173
The union of all source regions, and the union of all destination regions, specified by the elements ofpRegions, must not overlap in memory -
VUID-VkCopyBufferToImageInfo2-srcBuffer-00174
srcBuffermust have been created withVK_BUFFER_USAGE_TRANSFER_SRC_BITusage flag -
VUID-VkCopyBufferToImageInfo2-dstImage-01997
The format features ofdstImagemust containVK_FORMAT_FEATURE_TRANSFER_DST_BIT -
VUID-VkCopyBufferToImageInfo2-srcBuffer-00176
IfsrcBufferis non-sparse then it must be bound completely and contiguously to a singleVkDeviceMemoryobject -
VUID-VkCopyBufferToImageInfo2-dstImage-00177
dstImagemust have been created withVK_IMAGE_USAGE_TRANSFER_DST_BITusage flag -
VUID-VkCopyBufferToImageInfo2-dstImageLayout-00180
dstImageLayoutmust specify the layout of the image subresources ofdstImagespecified inpRegionsat the time this command is executed on aVkDevice -
VUID-VkCopyBufferToImageInfo2-dstImageLayout-01396
dstImageLayoutmust beVK_IMAGE_LAYOUT_SHARED_PRESENT_KHR,VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, orVK_IMAGE_LAYOUT_GENERAL -
VUID-VkCopyBufferToImageInfo2-pRegions-07931
If VK_EXT_depth_range_unrestricted is not enabled, for each element ofpRegionswhoseimageSubresourcecontains a depth aspect, the data insrcBuffermust be in the range [0,1]
-
VUID-VkCopyBufferToImageInfo2-dstImage-07966
IfdstImageis non-sparse then the image or the specified disjoint plane must be bound completely and contiguously to a singleVkDeviceMemoryobject -
VUID-VkCopyBufferToImageInfo2-imageSubresource-07967
TheimageSubresource.mipLevelmember of each element ofpRegionsmust be less than themipLevelsspecified in VkImageCreateInfo whendstImagewas created -
VUID-VkCopyBufferToImageInfo2-imageSubresource-07968
IfimageSubresource.layerCountis notVK_REMAINING_ARRAY_LAYERS,imageSubresource.baseArrayLayer+imageSubresource.layerCountof each element ofpRegionsmust be less than or equal to thearrayLayersspecified in VkImageCreateInfo whendstImagewas created -
VUID-VkCopyBufferToImageInfo2-dstImage-07969
dstImagemust not have been created withflagscontainingVK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT
-
VUID-VkCopyBufferToImageInfo2-dstImage-07979
IfdstImageis of typeVK_IMAGE_TYPE_1D, then for each element ofpRegions,imageOffset.ymust be0andimageExtent.heightmust be1 -
VUID-VkCopyBufferToImageInfo2-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 specifiedimageSubresourceofdstImage -
VUID-VkCopyBufferToImageInfo2-dstImage-07980
IfdstImageis of typeVK_IMAGE_TYPE_1DorVK_IMAGE_TYPE_2D, then for each element ofpRegions,imageOffset.zmust be0andimageExtent.depthmust be1 -
VUID-VkCopyBufferToImageInfo2-dstImage-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 ofdstImage -
VUID-VkCopyBufferToImageInfo2-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 ofdstImage -
VUID-VkCopyBufferToImageInfo2-dstImage-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 ofdstImage -
VUID-VkCopyBufferToImageInfo2-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 ofdstImage -
VUID-VkCopyBufferToImageInfo2-dstImage-07276
For each element ofpRegions,imageOffset.zmust be a multiple of the texel block extent depth of the VkFormat ofdstImage -
VUID-VkCopyBufferToImageInfo2-dstImage-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 ofdstImage -
VUID-VkCopyBufferToImageInfo2-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 ofdstImage -
VUID-VkCopyBufferToImageInfo2-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 ofdstImage -
VUID-VkCopyBufferToImageInfo2-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 ofdstImage -
VUID-VkCopyBufferToImageInfo2-dstImage-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 ofdstImage -
VUID-VkCopyBufferToImageInfo2-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 ofdstImage -
VUID-VkCopyBufferToImageInfo2-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 ofdstImage -
VUID-VkCopyBufferToImageInfo2-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 ofdstImage -
VUID-VkCopyBufferToImageInfo2-dstImage-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 ofdstImage -
VUID-VkCopyBufferToImageInfo2-imageSubresource-09105
For each element ofpRegions,imageSubresource.aspectMaskmust specify aspects present indstImage -
VUID-VkCopyBufferToImageInfo2-dstImage-07981
IfdstImagehas a multi-planar format, then for each element ofpRegions,imageSubresource.aspectMaskmust be a single valid multi-planar aspect mask bit -
VUID-VkCopyBufferToImageInfo2-dstImage-07983
IfdstImageis of typeVK_IMAGE_TYPE_3D, for each element ofpRegions,imageSubresource.baseArrayLayermust be0andimageSubresource.layerCountmust be1
-
VUID-VkCopyBufferToImageInfo2-bufferRowLength-09106
For each element ofpRegions,bufferRowLengthmust be a multiple of the texel block extent width of the VkFormat ofdstImage -
VUID-VkCopyBufferToImageInfo2-bufferImageHeight-09107
For each element ofpRegions,bufferImageHeightmust be a multiple of the texel block extent height of the VkFormat ofdstImage -
VUID-VkCopyBufferToImageInfo2-bufferRowLength-09108
For each element ofpRegions,bufferRowLengthdivided by the texel block extent width and then multiplied by the texel block size ofdstImagemust be less than or equal to 231-1
-
VUID-VkCopyBufferToImageInfo2-dstImage-07975
IfdstImagedoes 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-VkCopyBufferToImageInfo2-dstImage-07976
IfdstImagehas 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-VkCopyBufferToImageInfo2-dstImage-07978
IfdstImagehas a depth/stencil format, thebufferOffsetmember of any element ofpRegionsmust be a multiple of4 -
VUID-VkCopyBufferToImageInfo2-pRegions-06223
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 specifiedimageSubresourceofdstImage -
VUID-VkCopyBufferToImageInfo2-pRegions-06224
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 specifiedimageSubresourceofdstImage
-
VUID-VkCopyBufferToImageInfo2-sType-sType
sTypemust beVK_STRUCTURE_TYPE_COPY_BUFFER_TO_IMAGE_INFO_2 -
VUID-VkCopyBufferToImageInfo2-pNext-pNext
pNextmust beNULL -
VUID-VkCopyBufferToImageInfo2-srcBuffer-parameter
srcBuffermust be a valid VkBuffer handle -
VUID-VkCopyBufferToImageInfo2-dstImage-parameter
dstImagemust be a valid VkImage handle -
VUID-VkCopyBufferToImageInfo2-dstImageLayout-parameter
dstImageLayoutmust be a valid VkImageLayout value -
VUID-VkCopyBufferToImageInfo2-pRegions-parameter
pRegionsmust be a valid pointer to an array ofregionCountvalid VkBufferImageCopy2 structures -
VUID-VkCopyBufferToImageInfo2-regionCount-arraylength
regionCountmust be greater than0 -
VUID-VkCopyBufferToImageInfo2-commonparent
Both ofdstImage, andsrcBuffermust 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.