VkCopyDeviceMemoryImageInfoKHR
The VkCopyDeviceMemoryImageInfoKHR structure is defined as:
typedef struct VkCopyDeviceMemoryImageInfoKHR {
VkStructureType sType;
const void* pNext;
VkImage image;
uint32_t regionCount;
const VkDeviceMemoryImageCopyKHR* pRegions;
} VkCopyDeviceMemoryImageInfoKHR;
pub struct CopyDeviceMemoryImageInfoKHR {
s_type: vk::StructureType,
p_next: *const c_void,
image: vk::Image,
region_count: u32,
p_regions: *const vk::DeviceMemoryImageCopyKHR,
}
sTypeis a VkStructureType value identifying this structure.pNextisNULLor a pointer to a structure extending this structure.imageis the base image accessed by the copy command.regionCountis the number of copies to be performed.pRegionsis a pointer to an array of VkDeviceMemoryImageCopyKHR structures describing individual copy operations between two memory ranges.
Valid Usage
VUID-VkCopyDeviceMemoryImageInfoKHR-addressRange-13026
The range of memory backing the address range defined by the
addressRange member of any element of pRegions must not
overlap the memory backing the address range defined by the
addressRange of any other element of pRegions
VUID-VkCopyDeviceMemoryImageInfoKHR-addressRange-13027
The range of memory backing the address range defined by the
addressRange member of any element of pRegions must not
overlap the memory backing any texels in image defined by the
imageSubresource, imageOffset, and imageExtent members
of any element of pRegions
VUID-VkCopyDeviceMemoryImageInfoKHR-imageLayout-13028
The imageLayout member of each element of pRegions must
specify the layout of the image subresource specified for that element
of pRegions at the time this command is executed on a
VkDevice
VUID-VkCopyDeviceMemoryImageInfoKHR-image-07966
If image is non-sparse then the image
or each specified disjoint plane
must be bound completely and contiguously to a single
VkDeviceMemory object
VUID-VkCopyDeviceMemoryImageInfoKHR-imageSubresource-07967
The imageSubresource.mipLevel member of each element of
pRegions must be less than the mipLevels specified in
VkImageCreateInfo when image was created
VUID-VkCopyDeviceMemoryImageInfoKHR-imageSubresource-07968
If imageSubresource.layerCount is not
VK_REMAINING_ARRAY_LAYERS,
imageSubresource.baseArrayLayer +
imageSubresource.layerCount of each element of pRegionsmust be less than or equal to the arrayLayers specified in
VkImageCreateInfo when image was created
VUID-VkCopyDeviceMemoryImageInfoKHR-image-07969
image must not have been created with flags
containing VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT
VUID-VkCopyDeviceMemoryImageInfoKHR-image-07973
image must have a sample count equal to
VK_SAMPLE_COUNT_1_BIT
VUID-VkCopyDeviceMemoryImageInfoKHR-image-07979
If image is of type VK_IMAGE_TYPE_1D, then for each
element of pRegions, imageOffset.y must be 0 and
imageExtent.height must be 1
VUID-VkCopyDeviceMemoryImageInfoKHR-imageOffset-09104
For each element of pRegions, imageOffset.z and
(imageExtent.depth + imageOffset.z) must
both be greater than or equal to 0 and less than or equal to the depth
of the specified imageSubresource of image
VUID-VkCopyDeviceMemoryImageInfoKHR-image-07980
If image is of type VK_IMAGE_TYPE_1D or
VK_IMAGE_TYPE_2D, then for each element of pRegions,
imageOffset.z must be 0 and imageExtent.depth must
be 1
VUID-VkCopyDeviceMemoryImageInfoKHR-image-07274
For each element of pRegions,
if VkCopyCommandTransformInfoQCOM::transform is equal to
VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR or
VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR,
imageOffset.x must be a multiple of the
texel block extent width of the
VkFormat of image
VUID-VkCopyDeviceMemoryImageInfoKHR-imageOffset-10051
For each element of pRegions, if
VkCopyCommandTransformInfoQCOM::transform is equal to
VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR or
VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR, and imageOffset.x
does not equal the width of the subresource specified by
imageSubresource, imageOffset.x must be a multiple of
the texel block extent width of the
VkFormat of image
VUID-VkCopyDeviceMemoryImageInfoKHR-image-07275
For each element of pRegions,
if VkCopyCommandTransformInfoQCOM::transform is equal to
VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR or
VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR,
imageOffset.y must be a multiple of the
texel block extent height of the
VkFormat of image
VUID-VkCopyDeviceMemoryImageInfoKHR-imageOffset-10052
For each element of pRegions, if
VkCopyCommandTransformInfoQCOM::transform is equal to
VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR or
VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR, and imageOffset.y
does not equal the height of the subresource specified by
imageSubresource, imageOffset.y must be a multiple of
the texel block extent height of the
VkFormat of image
VUID-VkCopyDeviceMemoryImageInfoKHR-image-07276
For each element of pRegions, imageOffset.z must be a
multiple of the texel block extent
depth of the VkFormat of image
VUID-VkCopyDeviceMemoryImageInfoKHR-image-00207
For each element of pRegions, if
VkCopyCommandTransformInfoQCOM::transform is equal to
VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR,
the sum of imageOffset.x and extent.width does not equal
the width of the subresource specified by imageSubresource,
extent.width must be a multiple of the
texel block extent width of the
VkFormat of image
VUID-VkCopyDeviceMemoryImageInfoKHR-imageOffset-10053
For each element of pRegions, if
VkCopyCommandTransformInfoQCOM::transform is equal to
VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR, the difference of
imageOffset.x and extent.height must be a multiple of the
texel block extent width of the
VkFormat of image
VUID-VkCopyDeviceMemoryImageInfoKHR-imageOffset-10054
For each element of pRegions, if
VkCopyCommandTransformInfoQCOM::transform is equal to
VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR, the difference of
imageOffset.x and extent.width must be a multiple of the
texel block extent width of the
VkFormat of image
VUID-VkCopyDeviceMemoryImageInfoKHR-imageOffset-10055
For each element of pRegions, if
VkCopyCommandTransformInfoQCOM::transform is equal to
VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR, the sum of
imageOffset.x and extent.height does not equal the width
of the subresource specified by imageSubresource,
extent.height must be a multiple of the
texel block extent width of the
VkFormat of image
VUID-VkCopyDeviceMemoryImageInfoKHR-image-00208
For each element of pRegions, if
VkCopyCommandTransformInfoQCOM::transform is equal to
VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR, and
the sum of imageOffset.y and extent.height does not equal
the height of the subresource specified by imageSubresource,
extent.height must be a multiple of the
texel block extent height of the
VkFormat of image
VUID-VkCopyDeviceMemoryImageInfoKHR-imageOffset-10056
For each element of pRegions, if
VkCopyCommandTransformInfoQCOM::transform is equal to
VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR, the sum of
imageOffset.y and extent.width does not equal the height
of the subresource specified by imageSubresource,
extent.width must be a multiple of the
texel block extent height of the
VkFormat of image
VUID-VkCopyDeviceMemoryImageInfoKHR-imageOffset-10057
For each element of pRegions, if
VkCopyCommandTransformInfoQCOM::transform is equal to
VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR, the difference of
imageOffset.y and extent.height must be a multiple of the
texel block extent height of the
VkFormat of image
VUID-VkCopyDeviceMemoryImageInfoKHR-imageOffset-10058
For each element of pRegions, if
VkCopyCommandTransformInfoQCOM::transform is equal to
VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR, the difference of
imageOffset.y and extent.width must be a multiple of the
texel block extent height of the
VkFormat of image
VUID-VkCopyDeviceMemoryImageInfoKHR-image-00209
For each element of pRegions, if the sum of imageOffset.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 VkFormat of image
VUID-VkCopyDeviceMemoryImageInfoKHR-imageSubresource-09105
For each element of pRegions, imageSubresource.aspectMaskmust specify aspects present in image
VUID-VkCopyDeviceMemoryImageInfoKHR-image-07981
If image has a multi-planar
format, then for each element of pRegions,
imageSubresource.aspectMask must be a single valid
multi-planar aspect mask bit
VUID-VkCopyDeviceMemoryImageInfoKHR-image-07983
If image is of type VK_IMAGE_TYPE_3D, for each
element of pRegions, imageSubresource.baseArrayLayer must
be 0 and imageSubresource.layerCount must be 1
VUID-VkCopyDeviceMemoryImageInfoKHR-addressRowLength-09106
For each element of pRegions, addressRowLength must be a
multiple of the texel block extent
width of the VkFormat of image
VUID-VkCopyDeviceMemoryImageInfoKHR-addressImageHeight-09107
For each element of pRegions, addressImageHeight must be a
multiple of the texel block extent
height of the VkFormat of image
VUID-VkCopyDeviceMemoryImageInfoKHR-addressRowLength-09108
For each element of pRegions, addressRowLength divided by
the texel block extent width and then
multiplied by the texel block size of image must be less
than or equal to 231-1
VUID-VkCopyDeviceMemoryImageInfoKHR-image-13029
If image does not have either a depth/stencil format
or a multi-planar format,
then for each element of pRegions, addressRange.addressmust be a multiple of the texel block
size
VUID-VkCopyDeviceMemoryImageInfoKHR-image-13030
If image has a
multi-planar format, then
for each element of pRegions, addressRange.address must be
a multiple of the element size of the compatible format for the format
and the aspectMask of the imageSubresource as defined in
Compatible Formats of Planes of Multi-Planar Formats
VUID-VkCopyDeviceMemoryImageInfoKHR-image-13031
If image has a depth/stencil format, the
addressRange.address member of any element of pRegions must
be a multiple of 4
VUID-VkCopyDeviceMemoryImageInfoKHR-pRegions-13032
The image region specified by each element of pRegions
that does not contain VkCopyCommandTransformInfoQCOM in its
pNext chain
must be contained within the specified imageSubresource of
image
VUID-VkCopyDeviceMemoryImageInfoKHR-pRegions-13033
If the image region specified by each element of pRegions contains
VkCopyCommandTransformInfoQCOM in its pNext chain, the
rotated image regionmust be contained within image
VUID-VkCopyDeviceMemoryImageInfoKHR-pRegions-13034
If any element of pRegions contains
VkCopyCommandTransformInfoQCOM in its pNext chain, then
image must have a 1x1x1 texel
block extent
VUID-VkCopyDeviceMemoryImageInfoKHR-pRegions-13035
If any element of pRegions contains
VkCopyCommandTransformInfoQCOM in its pNext chain, then
image must be of type VK_IMAGE_TYPE_2D
VUID-VkCopyDeviceMemoryImageInfoKHR-pRegions-13036
If any element of pRegions contains
VkCopyCommandTransformInfoQCOM in its pNext chain, then
image must not have a
multi-planar format
Valid Usage (Implicit)
VUID-VkCopyDeviceMemoryImageInfoKHR-sType-sType
sType must be VK_STRUCTURE_TYPE_COPY_DEVICE_MEMORY_IMAGE_INFO_KHR
VUID-VkCopyDeviceMemoryImageInfoKHR-pNext-pNext
pNext must be NULL
VUID-VkCopyDeviceMemoryImageInfoKHR-image-parameter
image must be a valid VkImage handle
VUID-VkCopyDeviceMemoryImageInfoKHR-pRegions-parameter
pRegions must be a valid pointer to an array of regionCount valid VkDeviceMemoryImageCopyKHR structures
VUID-VkCopyDeviceMemoryImageInfoKHR-regionCount-arraylength
regionCount must be greater than 0