C Specification
The VkCopyImageToImageInfoEXT structure is defined as:
// Provided by VK_EXT_host_image_copy
typedef struct VkCopyImageToImageInfoEXT {
VkStructureType sType;
const void* pNext;
VkHostImageCopyFlagsEXT flags;
VkImage srcImage;
VkImageLayout srcImageLayout;
VkImage dstImage;
VkImageLayout dstImageLayout;
uint32_t regionCount;
const VkImageCopy2* pRegions;
} VkCopyImageToImageInfoEXT;
Members
-
sTypeis a VkStructureType value identifying this structure. -
pNextisNULLor a pointer to a structure extending this structure. -
flagsis a bitmask of VkHostImageCopyFlagBitsEXT values describing additional copy parameters. -
srcImageis the source image. -
srcImageLayoutis the layout of the source image subresources for the copy. -
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 VkImageCopy2 structures specifying the regions to copy.
Description
vkCopyImageToImageEXT does not check whether the device memory
associated with srcImage or dstImage is currently in use before
performing the copy.
The application must guarantee that any previously submitted command that
writes to the copy regions has completed before the host performs the copy.
-
VUID-VkCopyImageToImageInfoEXT-srcImage-09109
IfsrcImageis sparse then all memory ranges accessed by the copy command must be bound as described in Binding Resource Memory -
VUID-VkCopyImageToImageInfoEXT-srcImage-09111
If the stencil aspect ofsrcImageis accessed, andsrcImagewas not created with separate stencil usage,srcImagemust have been created withVK_IMAGE_USAGE_HOST_TRANSFER_BIT_EXTset in VkImageCreateInfo::usage -
VUID-VkCopyImageToImageInfoEXT-srcImage-09112
If the stencil aspect ofsrcImageis accessed, andsrcImagewas created with separate stencil usage,srcImagemust have been created withVK_IMAGE_USAGE_HOST_TRANSFER_BIT_EXTset in VkImageStencilUsageCreateInfo::stencilUsage -
VUID-VkCopyImageToImageInfoEXT-srcImage-09113
If non-stencil aspects ofsrcImageare accessed,srcImagemust have been created withVK_IMAGE_USAGE_HOST_TRANSFER_BIT_EXTset in VkImageCreateInfo::usage -
VUID-VkCopyImageToImageInfoEXT-srcOffset-09114
IfflagscontainsVK_HOST_IMAGE_COPY_MEMCPY_EXT, thex,y, andzmembers of thesrcOffsetmember of each element ofpRegionsmust be0 -
VUID-VkCopyImageToImageInfoEXT-srcImage-09115
IfflagscontainsVK_HOST_IMAGE_COPY_MEMCPY_EXT, theextentmember of each element ofpRegionsmust equal the extents ofsrcImageidentified bysrcSubresource
-
VUID-VkCopyImageToImageInfoEXT-srcImage-07966
IfsrcImageis non-sparse then the image or the specified disjoint plane must be bound completely and contiguously to a singleVkDeviceMemoryobject -
VUID-VkCopyImageToImageInfoEXT-srcSubresource-07967
ThesrcSubresource.mipLevelmember of each element ofpRegionsmust be less than themipLevelsspecified in VkImageCreateInfo whensrcImagewas created -
VUID-VkCopyImageToImageInfoEXT-srcSubresource-07968
IfsrcSubresource.layerCountis notVK_REMAINING_ARRAY_LAYERS,srcSubresource.baseArrayLayer+srcSubresource.layerCountof each element ofpRegionsmust be less than or equal to thearrayLayersspecified in VkImageCreateInfo whensrcImagewas created -
VUID-VkCopyImageToImageInfoEXT-srcImage-07969
srcImagemust not have been created withflagscontainingVK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT
-
VUID-VkCopyImageToImageInfoEXT-srcSubresource-07970
The image region specified by each element ofpRegionsmust be contained within the specifiedsrcSubresourceofsrcImage -
VUID-VkCopyImageToImageInfoEXT-srcSubresource-07971
For each element ofpRegions,srcOffset.xand (extent.width+srcOffset.x) must both be greater than or equal to0and less than or equal to the width of the specifiedsrcSubresourceofsrcImage -
VUID-VkCopyImageToImageInfoEXT-srcSubresource-07972
For each element ofpRegions,srcOffset.yand (extent.height+srcOffset.y) must both be greater than or equal to0and less than or equal to the height of the specifiedsrcSubresourceofsrcImage
-
VUID-VkCopyImageToImageInfoEXT-srcImage-07979
IfsrcImageis of typeVK_IMAGE_TYPE_1D, then for each element ofpRegions,srcOffset.ymust be0andextent.heightmust be1 -
VUID-VkCopyImageToImageInfoEXT-srcOffset-09104
For each element ofpRegions,srcOffset.zand (extent.depth+srcOffset.z) must both be greater than or equal to0and less than or equal to the depth of the specifiedsrcSubresourceofsrcImage -
VUID-VkCopyImageToImageInfoEXT-srcImage-07980
IfsrcImageis of typeVK_IMAGE_TYPE_1DorVK_IMAGE_TYPE_2D, then for each element ofpRegions,srcOffset.zmust be0andextent.depthmust be1 -
VUID-VkCopyImageToImageInfoEXT-srcImage-07274
For each element ofpRegions,srcOffset.xmust be a multiple of the texel block extent width of the VkFormat ofsrcImage -
VUID-VkCopyImageToImageInfoEXT-srcImage-07275
For each element ofpRegions,srcOffset.ymust be a multiple of the texel block extent height of the VkFormat ofsrcImage -
VUID-VkCopyImageToImageInfoEXT-srcImage-07276
For each element ofpRegions,srcOffset.zmust be a multiple of the texel block extent depth of the VkFormat ofsrcImage -
VUID-VkCopyImageToImageInfoEXT-srcImage-00207
For each element ofpRegions, if the sum ofsrcOffset.xandextent.widthdoes not equal the width of the subresource specified bysrcSubresource,extent.widthmust be a multiple of the texel block extent width of the VkFormat ofsrcImage -
VUID-VkCopyImageToImageInfoEXT-srcImage-00208
For each element ofpRegions, if the sum ofsrcOffset.yandextent.heightdoes not equal the height of the subresource specified bysrcSubresource,extent.heightmust be a multiple of the texel block extent height of the VkFormat ofsrcImage -
VUID-VkCopyImageToImageInfoEXT-srcImage-00209
For each element ofpRegions, if the sum ofsrcOffset.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-VkCopyImageToImageInfoEXT-srcSubresource-09105
For each element ofpRegions,srcSubresource.aspectMaskmust specify aspects present insrcImage -
VUID-VkCopyImageToImageInfoEXT-srcImage-07981
IfsrcImagehas a multi-planar image format, then for each element ofpRegions,srcSubresource.aspectMaskmust be a single valid multi-planar aspect mask bit -
VUID-VkCopyImageToImageInfoEXT-srcImage-07983
IfsrcImageis of typeVK_IMAGE_TYPE_3D, for each element ofpRegions,srcSubresource.baseArrayLayermust be0andsrcSubresource.layerCountmust be1
-
VUID-VkCopyImageToImageInfoEXT-dstImage-09109
IfdstImageis sparse then all memory ranges accessed by the copy command must be bound as described in Binding Resource Memory -
VUID-VkCopyImageToImageInfoEXT-dstImage-09111
If the stencil aspect ofdstImageis accessed, anddstImagewas not created with separate stencil usage,dstImagemust have been created withVK_IMAGE_USAGE_HOST_TRANSFER_BIT_EXTset in VkImageCreateInfo::usage -
VUID-VkCopyImageToImageInfoEXT-dstImage-09112
If the stencil aspect ofdstImageis accessed, anddstImagewas created with separate stencil usage,dstImagemust have been created withVK_IMAGE_USAGE_HOST_TRANSFER_BIT_EXTset in VkImageStencilUsageCreateInfo::stencilUsage -
VUID-VkCopyImageToImageInfoEXT-dstImage-09113
If non-stencil aspects ofdstImageare accessed,dstImagemust have been created withVK_IMAGE_USAGE_HOST_TRANSFER_BIT_EXTset in VkImageCreateInfo::usage -
VUID-VkCopyImageToImageInfoEXT-dstOffset-09114
IfflagscontainsVK_HOST_IMAGE_COPY_MEMCPY_EXT, thex,y, andzmembers of thedstOffsetmember of each element ofpRegionsmust be0 -
VUID-VkCopyImageToImageInfoEXT-dstImage-09115
IfflagscontainsVK_HOST_IMAGE_COPY_MEMCPY_EXT, theextentmember of each element ofpRegionsmust equal the extents ofdstImageidentified bydstSubresource
-
VUID-VkCopyImageToImageInfoEXT-dstImage-07966
IfdstImageis non-sparse then the image or the specified disjoint plane must be bound completely and contiguously to a singleVkDeviceMemoryobject -
VUID-VkCopyImageToImageInfoEXT-dstSubresource-07967
ThedstSubresource.mipLevelmember of each element ofpRegionsmust be less than themipLevelsspecified in VkImageCreateInfo whendstImagewas created -
VUID-VkCopyImageToImageInfoEXT-dstSubresource-07968
IfdstSubresource.layerCountis notVK_REMAINING_ARRAY_LAYERS,dstSubresource.baseArrayLayer+dstSubresource.layerCountof each element ofpRegionsmust be less than or equal to thearrayLayersspecified in VkImageCreateInfo whendstImagewas created -
VUID-VkCopyImageToImageInfoEXT-dstImage-07969
dstImagemust not have been created withflagscontainingVK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT
-
VUID-VkCopyImageToImageInfoEXT-dstSubresource-07970
The image region specified by each element ofpRegionsmust be contained within the specifieddstSubresourceofdstImage -
VUID-VkCopyImageToImageInfoEXT-dstSubresource-07971
For each element ofpRegions,dstOffset.xand (extent.width+dstOffset.x) must both be greater than or equal to0and less than or equal to the width of the specifieddstSubresourceofdstImage -
VUID-VkCopyImageToImageInfoEXT-dstSubresource-07972
For each element ofpRegions,dstOffset.yand (extent.height+dstOffset.y) must both be greater than or equal to0and less than or equal to the height of the specifieddstSubresourceofdstImage
-
VUID-VkCopyImageToImageInfoEXT-dstImage-07979
IfdstImageis of typeVK_IMAGE_TYPE_1D, then for each element ofpRegions,dstOffset.ymust be0andextent.heightmust be1 -
VUID-VkCopyImageToImageInfoEXT-dstOffset-09104
For each element ofpRegions,dstOffset.zand (extent.depth+dstOffset.z) must both be greater than or equal to0and less than or equal to the depth of the specifieddstSubresourceofdstImage -
VUID-VkCopyImageToImageInfoEXT-dstImage-07980
IfdstImageis of typeVK_IMAGE_TYPE_1DorVK_IMAGE_TYPE_2D, then for each element ofpRegions,dstOffset.zmust be0andextent.depthmust be1 -
VUID-VkCopyImageToImageInfoEXT-dstImage-07274
For each element ofpRegions,dstOffset.xmust be a multiple of the texel block extent width of the VkFormat ofdstImage -
VUID-VkCopyImageToImageInfoEXT-dstImage-07275
For each element ofpRegions,dstOffset.ymust be a multiple of the texel block extent height of the VkFormat ofdstImage -
VUID-VkCopyImageToImageInfoEXT-dstImage-07276
For each element ofpRegions,dstOffset.zmust be a multiple of the texel block extent depth of the VkFormat ofdstImage -
VUID-VkCopyImageToImageInfoEXT-dstImage-00207
For each element ofpRegions, if the sum ofdstOffset.xandextent.widthdoes not equal the width of the subresource specified bysrcSubresource,extent.widthmust be a multiple of the texel block extent width of the VkFormat ofdstImage -
VUID-VkCopyImageToImageInfoEXT-dstImage-00208
For each element ofpRegions, if the sum ofdstOffset.yandextent.heightdoes not equal the height of the subresource specified bysrcSubresource,extent.heightmust be a multiple of the texel block extent height of the VkFormat ofdstImage -
VUID-VkCopyImageToImageInfoEXT-dstImage-00209
For each element ofpRegions, if the sum ofdstOffset.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-VkCopyImageToImageInfoEXT-dstSubresource-09105
For each element ofpRegions,dstSubresource.aspectMaskmust specify aspects present indstImage -
VUID-VkCopyImageToImageInfoEXT-dstImage-07981
IfdstImagehas a multi-planar image format, then for each element ofpRegions,dstSubresource.aspectMaskmust be a single valid multi-planar aspect mask bit -
VUID-VkCopyImageToImageInfoEXT-dstImage-07983
IfdstImageis of typeVK_IMAGE_TYPE_3D, for each element ofpRegions,dstSubresource.baseArrayLayermust be0anddstSubresource.layerCountmust be1 -
VUID-VkCopyImageToImageInfoEXT-srcImageLayout-09070
srcImageLayoutmust specify the current layout of the image subresources ofsrcImagespecified inpRegions -
VUID-VkCopyImageToImageInfoEXT-dstImageLayout-09071
dstImageLayoutmust specify the current layout of the image subresources ofdstImagespecified inpRegions -
VUID-VkCopyImageToImageInfoEXT-srcImageLayout-09072
srcImageLayoutmust be one of the image layouts returned in VkPhysicalDeviceHostImageCopyPropertiesEXT::pCopySrcLayouts -
VUID-VkCopyImageToImageInfoEXT-dstImageLayout-09073
dstImageLayoutmust be one of the image layouts returned in VkPhysicalDeviceHostImageCopyPropertiesEXT::pCopyDstLayouts
-
VUID-VkCopyImageToImageInfoEXT-sType-sType
sTypemust beVK_STRUCTURE_TYPE_COPY_IMAGE_TO_IMAGE_INFO_EXT -
VUID-VkCopyImageToImageInfoEXT-pNext-pNext
pNextmust beNULL -
VUID-VkCopyImageToImageInfoEXT-flags-parameter
flagsmust be a valid combination of VkHostImageCopyFlagBitsEXT values -
VUID-VkCopyImageToImageInfoEXT-srcImage-parameter
srcImagemust be a valid VkImage handle -
VUID-VkCopyImageToImageInfoEXT-srcImageLayout-parameter
srcImageLayoutmust be a valid VkImageLayout value -
VUID-VkCopyImageToImageInfoEXT-dstImage-parameter
dstImagemust be a valid VkImage handle -
VUID-VkCopyImageToImageInfoEXT-dstImageLayout-parameter
dstImageLayoutmust be a valid VkImageLayout value -
VUID-VkCopyImageToImageInfoEXT-pRegions-parameter
pRegionsmust be a valid pointer to an array ofregionCountvalid VkImageCopy2 structures -
VUID-VkCopyImageToImageInfoEXT-regionCount-arraylength
regionCountmust be greater than0 -
VUID-VkCopyImageToImageInfoEXT-commonparent
Both ofdstImage, 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.