VkCopyImageToImageInfo - Structure specifying parameters of an image to
image host copy command
If srcImage is sparse
then all memory ranges accessed by the copy command must be bound
as described in
Binding Resource Memory
If the stencil aspect
of srcImage is accessed, and srcImage was not created with
separate stencil usage,
srcImage must have been created with the
IMAGE_USAGE_HOST_TRANSFER_BIT
usage flag set
If the stencil aspect
of srcImage is accessed, and srcImage was created with
separate stencil usage,
srcImage must have been created with the
IMAGE_USAGE_HOST_TRANSFER_BIT
usage flag set
If non-stencil aspects
of srcImage are accessed, srcImage must have been created with
the
IMAGE_USAGE_HOST_TRANSFER_BIT
usage flag set
If flags contains
HOST_IMAGE_COPY_MEMCPY_BIT,
the x, y, and z members of the srcOffset member of each
element of pRegions must be 0
If flags contains
HOST_IMAGE_COPY_MEMCPY_BIT,
the extent member of each element of pRegions must equal the
extents of srcImage identified by srcSubresource
If srcImage is
non-sparse then the image or each specified disjoint plane must
be bound completely and contiguously to a single
DeviceMemory object
The
srcSubresource.mipLevel member of each element of pRegions
must be less than the mipLevels specified in
ImageCreateInfo when srcImage was created
If
srcSubresource.layerCount is not
REMAINING_ARRAY_LAYERS,
srcSubresource.baseArrayLayer + srcSubresource.layerCount of
each element of pRegions must be less than or equal to the
arrayLayers specified in ImageCreateInfo
when srcImage was created
srcImage must not
have been created with flags containing
IMAGE_CREATE_SUBSAMPLED_BIT_EXT
For each element
of pRegions, srcOffset.x and (extent.width + srcOffset.x)
must both be greater than or equal to 0 and less than or equal
to the width of the specified srcSubresource of srcImage
For each element
of pRegions, srcOffset.y and (extent.height + srcOffset.y)
must both be greater than or equal to 0 and less than or equal
to the height of the specified srcSubresource of srcImage
If srcImage is of
type IMAGE_TYPE_1D, then for each
element of pRegions, srcOffset.y must be 0 and
extent.height must be 1
For each element of
pRegions, srcOffset.z and (extent.depth + srcOffset.z)
must both be greater than or equal to 0 and less than or equal
to the depth of the specified srcSubresource of srcImage
If srcImage is of
type IMAGE_TYPE_1D or
IMAGE_TYPE_2D, then for each element
of pRegions, srcOffset.z must be 0 and extent.depth must
be 1
For each element of
pRegions, if
CopyCommandTransformInfoQCOM::transform
is equal to
SURFACE_TRANSFORM_IDENTITY_BIT_KHR
or
SURFACE_TRANSFORM_ROTATE_270_BIT_KHR,
srcOffset.x must be a multiple of the
texel block extent width
of the Format of srcImage
For each element of
pRegions, if
CopyCommandTransformInfoQCOM::transform
is equal to
SURFACE_TRANSFORM_ROTATE_180_BIT_KHR
or
SURFACE_TRANSFORM_ROTATE_90_BIT_KHR,
and srcOffset.x does not equal the width of the subresource
specified by srcSubresource, srcOffset.x must be a multiple of
the
texel block extent width
of the Format of srcImage
For each element of
pRegions, if
CopyCommandTransformInfoQCOM::transform
is equal to
SURFACE_TRANSFORM_IDENTITY_BIT_KHR
or
SURFACE_TRANSFORM_ROTATE_90_BIT_KHR,
srcOffset.y must be a multiple of the
texel block extent height
of the Format of srcImage
For each element of
pRegions, if
CopyCommandTransformInfoQCOM::transform
is equal to
SURFACE_TRANSFORM_ROTATE_270_BIT_KHR
or
SURFACE_TRANSFORM_ROTATE_180_BIT_KHR,
and srcOffset.y does not equal the height of the subresource
specified by srcSubresource, srcOffset.y must be a multiple of
the
texel block extent height
of the Format of srcImage
For each element of
pRegions, srcOffset.z must be a multiple of the
texel block extent depth
of the Format of srcImage
For each element of
pRegions, if
CopyCommandTransformInfoQCOM::transform
is equal to
SURFACE_TRANSFORM_IDENTITY_BIT_KHR,
the sum of srcOffset.x and extent.width does not equal the width
of the subresource specified by srcSubresource, extent.width
must be a multiple of the
texel block extent width
of the Format of srcImage
For each element of
pRegions, if
CopyCommandTransformInfoQCOM::transform
is equal to
SURFACE_TRANSFORM_ROTATE_90_BIT_KHR,
the difference of srcOffset.x and extent.height must be a
multiple of the
texel block extent width
of the Format of srcImage
For each element of
pRegions, if
CopyCommandTransformInfoQCOM::transform
is equal to
SURFACE_TRANSFORM_ROTATE_180_BIT_KHR,
the difference of srcOffset.x and extent.width must be a
multiple of the
texel block extent width
of the Format of srcImage
For each element of
pRegions, if
CopyCommandTransformInfoQCOM::transform
is equal to
SURFACE_TRANSFORM_ROTATE_270_BIT_KHR,
the sum of srcOffset.x and extent.height does not equal the
width of the subresource specified by srcSubresource,
extent.height must be a multiple of the
texel block extent width
of the Format of srcImage
For each element of
pRegions, if
CopyCommandTransformInfoQCOM::transform
is equal to
SURFACE_TRANSFORM_IDENTITY_BIT_KHR,
and the sum of srcOffset.y and extent.height does not equal the
height of the subresource specified by srcSubresource,
extent.height must be a multiple of the
texel block extent height
of the Format of srcImage
For each element of
pRegions, if
CopyCommandTransformInfoQCOM::transform
is equal to
SURFACE_TRANSFORM_ROTATE_90_BIT_KHR,
the sum of srcOffset.y and extent.width does not equal the
height of the subresource specified by srcSubresource,
extent.width must be a multiple of the
texel block extent height
of the Format of srcImage
For each element of
pRegions, if
CopyCommandTransformInfoQCOM::transform
is equal to
SURFACE_TRANSFORM_ROTATE_180_BIT_KHR,
the difference of srcOffset.y and extent.height must be a
multiple of the
texel block extent height
of the Format of srcImage
For each element of
pRegions, if
CopyCommandTransformInfoQCOM::transform
is equal to
SURFACE_TRANSFORM_ROTATE_270_BIT_KHR,
the difference of srcOffset.y and extent.width must be a
multiple of the
texel block extent height
of the Format of srcImage
For each element of
pRegions, if the sum of srcOffset.z and extent.depth does not
equal the depth of the subresource specified by srcSubresource,
extent.depth must be a multiple of the
texel block extent depth
of the Format of srcImage
For each element
of pRegions, srcSubresource.aspectMask must specify aspects
present in srcImage
If srcImage has a
multi-planar format,
then for each element of pRegions, srcSubresource.aspectMask
must be a single valid
multi-planar aspect mask
bit
If srcImage is of
type IMAGE_TYPE_3D, for each element
of pRegions, srcSubresource.baseArrayLayer must be 0 and
srcSubresource.layerCount must be 1
If dstImage is sparse
then all memory ranges accessed by the copy command must be bound
as described in
Binding Resource Memory
If the stencil aspect
of dstImage is accessed, and dstImage was not created with
separate stencil usage,
dstImage must have been created with the
IMAGE_USAGE_HOST_TRANSFER_BIT
usage flag set
If the stencil aspect
of dstImage is accessed, and dstImage was created with
separate stencil usage,
dstImage must have been created with the
IMAGE_USAGE_HOST_TRANSFER_BIT
usage flag set
If non-stencil aspects
of dstImage are accessed, dstImage must have been created with
the
IMAGE_USAGE_HOST_TRANSFER_BIT
usage flag set
If flags contains
HOST_IMAGE_COPY_MEMCPY_BIT,
the x, y, and z members of the dstOffset member of each
element of pRegions must be 0
If flags contains
HOST_IMAGE_COPY_MEMCPY_BIT,
the extent member of each element of pRegions must equal the
extents of dstImage identified by dstSubresource
If dstImage is
non-sparse then the image or each specified disjoint plane must
be bound completely and contiguously to a single
DeviceMemory object
The
dstSubresource.mipLevel member of each element of pRegions
must be less than the mipLevels specified in
ImageCreateInfo when dstImage was created
If
dstSubresource.layerCount is not
REMAINING_ARRAY_LAYERS,
dstSubresource.baseArrayLayer + dstSubresource.layerCount of
each element of pRegions must be less than or equal to the
arrayLayers specified in ImageCreateInfo
when dstImage was created
dstImage must not
have been created with flags containing
IMAGE_CREATE_SUBSAMPLED_BIT_EXT
For each element
of pRegions, dstOffset.x and (extent.width + dstOffset.x)
must both be greater than or equal to 0 and less than or equal
to the width of the specified dstSubresource of dstImage
For each element
of pRegions, dstOffset.y and (extent.height + dstOffset.y)
must both be greater than or equal to 0 and less than or equal
to the height of the specified dstSubresource of dstImage
If dstImage is of
type IMAGE_TYPE_1D, then for each
element of pRegions, dstOffset.y must be 0 and
extent.height must be 1
For each element of
pRegions, dstOffset.z and (extent.depth + dstOffset.z)
must both be greater than or equal to 0 and less than or equal
to the depth of the specified dstSubresource of dstImage
If dstImage is of
type IMAGE_TYPE_1D or
IMAGE_TYPE_2D, then for each element
of pRegions, dstOffset.z must be 0 and extent.depth must
be 1
For each element of
pRegions, if
CopyCommandTransformInfoQCOM::transform
is equal to
SURFACE_TRANSFORM_IDENTITY_BIT_KHR
or
SURFACE_TRANSFORM_ROTATE_270_BIT_KHR,
dstOffset.x must be a multiple of the
texel block extent width
of the Format of dstImage
For each element of
pRegions, if
CopyCommandTransformInfoQCOM::transform
is equal to
SURFACE_TRANSFORM_ROTATE_180_BIT_KHR
or
SURFACE_TRANSFORM_ROTATE_90_BIT_KHR,
and dstOffset.x does not equal the width of the subresource
specified by dstSubresource, dstOffset.x must be a multiple of
the
texel block extent width
of the Format of dstImage
For each element of
pRegions, if
CopyCommandTransformInfoQCOM::transform
is equal to
SURFACE_TRANSFORM_IDENTITY_BIT_KHR
or
SURFACE_TRANSFORM_ROTATE_90_BIT_KHR,
dstOffset.y must be a multiple of the
texel block extent height
of the Format of dstImage
For each element of
pRegions, if
CopyCommandTransformInfoQCOM::transform
is equal to
SURFACE_TRANSFORM_ROTATE_270_BIT_KHR
or
SURFACE_TRANSFORM_ROTATE_180_BIT_KHR,
and dstOffset.y does not equal the height of the subresource
specified by dstSubresource, dstOffset.y must be a multiple of
the
texel block extent height
of the Format of dstImage
For each element of
pRegions, dstOffset.z must be a multiple of the
texel block extent depth
of the Format of dstImage
For each element of
pRegions, if
CopyCommandTransformInfoQCOM::transform
is equal to
SURFACE_TRANSFORM_IDENTITY_BIT_KHR,
the sum of dstOffset.x and extent.width does not equal the width
of the subresource specified by dstSubresource, extent.width
must be a multiple of the
texel block extent width
of the Format of dstImage
For each element of
pRegions, if
CopyCommandTransformInfoQCOM::transform
is equal to
SURFACE_TRANSFORM_ROTATE_90_BIT_KHR,
the difference of dstOffset.x and extent.height must be a
multiple of the
texel block extent width
of the Format of dstImage
For each element of
pRegions, if
CopyCommandTransformInfoQCOM::transform
is equal to
SURFACE_TRANSFORM_ROTATE_180_BIT_KHR,
the difference of dstOffset.x and extent.width must be a
multiple of the
texel block extent width
of the Format of dstImage
For each element of
pRegions, if
CopyCommandTransformInfoQCOM::transform
is equal to
SURFACE_TRANSFORM_ROTATE_270_BIT_KHR,
the sum of dstOffset.x and extent.height does not equal the
width of the subresource specified by dstSubresource,
extent.height must be a multiple of the
texel block extent width
of the Format of dstImage
For each element of
pRegions, if
CopyCommandTransformInfoQCOM::transform
is equal to
SURFACE_TRANSFORM_IDENTITY_BIT_KHR,
and the sum of dstOffset.y and extent.height does not equal the
height of the subresource specified by dstSubresource,
extent.height must be a multiple of the
texel block extent height
of the Format of dstImage
For each element of
pRegions, if
CopyCommandTransformInfoQCOM::transform
is equal to
SURFACE_TRANSFORM_ROTATE_90_BIT_KHR,
the sum of dstOffset.y and extent.width does not equal the
height of the subresource specified by dstSubresource,
extent.width must be a multiple of the
texel block extent height
of the Format of dstImage
For each element of
pRegions, if
CopyCommandTransformInfoQCOM::transform
is equal to
SURFACE_TRANSFORM_ROTATE_180_BIT_KHR,
the difference of dstOffset.y and extent.height must be a
multiple of the
texel block extent height
of the Format of dstImage
For each element of
pRegions, if
CopyCommandTransformInfoQCOM::transform
is equal to
SURFACE_TRANSFORM_ROTATE_270_BIT_KHR,
the difference of dstOffset.y and extent.width must be a
multiple of the
texel block extent height
of the Format of dstImage
For each element of
pRegions, if the sum of dstOffset.z and extent.depth does not
equal the depth of the subresource specified by srcSubresource,
extent.depth must be a multiple of the
texel block extent depth
of the Format of dstImage
For each element
of pRegions, dstSubresource.aspectMask must specify aspects
present in dstImage
If dstImage has a
multi-planar format,
then for each element of pRegions, dstSubresource.aspectMask
must be a single valid
multi-planar aspect mask
bit
If dstImage is of
type IMAGE_TYPE_3D, for each element
of pRegions, dstSubresource.baseArrayLayer must be 0 and
dstSubresource.layerCount must be 1
srcImageLayout
must specify the current layout of the image subresources of
srcImage specified in pRegions
dstImageLayout
must specify the current layout of the image subresources of
dstImage specified in pRegions
srcImageLayout
must be one of the image layouts returned in
PhysicalDeviceHostImageCopyProperties::pCopySrcLayouts
dstImageLayout
must be one of the image layouts returned in
PhysicalDeviceHostImageCopyProperties::pCopyDstLayouts