VkDeviceMemoryImageCopyKHR
The VkDeviceMemoryImageCopyKHR structure is defined as:
typedef struct VkDeviceMemoryImageCopyKHR {
VkStructureType sType;
const void* pNext;
VkDeviceAddressRangeKHR addressRange;
VkAddressCommandFlagsKHR addressFlags;
uint32_t addressRowLength;
uint32_t addressImageHeight;
VkImageSubresourceLayers imageSubresource;
VkImageLayout imageLayout;
VkOffset3D imageOffset;
VkExtent3D imageExtent;
} VkDeviceMemoryImageCopyKHR;
pub struct DeviceMemoryImageCopyKHR {
s_type: vk::StructureType,
p_next: *const c_void,
address_range: vk::DeviceAddressRangeKHR,
address_flags: vk::AddressCommandFlagsKHR,
address_row_length: u32,
address_image_height: u32,
image_subresource: vk::ImageSubresourceLayers,
image_layout: vk::ImageLayout,
image_offset: vk::Offset3D,
image_extent: vk::Extent3D,
}
sTypeis a VkStructureType value identifying this structure.pNextisNULLor a pointer to a structure extending this structure.addressRangeis a VkDeviceAddressRangeKHR structure defining the address range accessed by the copy operation.addressFlagsis a VkAddressCommandFlagsKHR value defining the copy flags for the source address range.addressRowLengthspecifies the total number of texels in the address range representing a row of texels in the x dimension. Each new row of pixels in the copy will be read at an offset increment by this number of texels.addressImageHeightspecifies the total number of rows of texels in the address range representing a 2D slice of texels in the x and y dimensions. Each new 2D slice of pixels in the copy will be read at an offset increment by this number of rows of texels.imageSubresourceis a VkImageSubresourceLayers used to specify the specific image subresources of the image used for the source or destination image data.imageLayoutis the VkImageLayout of the image subresource accessed by this copy.imageOffsetselects the initialx,y,zoffsets in texels of the sub-region of the source or destination image data.imageExtentis the size in texels of the image to copy inwidth,heightanddepth.
This structure defines a copy operation where srcRange.size bytes will
be copied from srcRange.address to dstRange.address.
Valid Usage
VUID-VkDeviceMemoryImageCopyKHR-addressRange-13097
If the range specified by addressRange is not bound completely
to memory when accessed, addressFlags must not include
VK_ADDRESS_COMMAND_FULLY_BOUND_BIT_KHR
VUID-VkDeviceMemoryImageCopyKHR-addressRange-13098
If the buffer from which the range specified by addressRange was
created with VK_BUFFER_CREATE_PROTECTED_BIT, and
protectedNoFault is not supported,
addressFlags must include
VK_ADDRESS_COMMAND_PROTECTED_BIT_KHR
VUID-VkDeviceMemoryImageCopyKHR-addressRange-13099
If the buffer from which the range specified by addressRange was
created without VK_BUFFER_CREATE_PROTECTED_BIT, and
protectedNoFault is not supported,
addressFlags must not include
VK_ADDRESS_COMMAND_PROTECTED_BIT_KHR
VUID-VkDeviceMemoryImageCopyKHR-addressFlags-13100
addressFlags must not include both
VK_ADDRESS_COMMAND_STORAGE_BUFFER_USAGE_BIT_KHR and
VK_ADDRESS_COMMAND_UNKNOWN_STORAGE_BUFFER_USAGE_BIT_KHR
VUID-VkDeviceMemoryImageCopyKHR-addressRange-13122
If any buffer, which is bound to a range of VkDeviceMemory that
overlaps the range backing addressRange, was created with
VK_BUFFER_USAGE_STORAGE_BUFFER_BIT, addressFlags must
include VK_ADDRESS_COMMAND_STORAGE_BUFFER_USAGE_BIT_KHR or
VK_ADDRESS_COMMAND_UNKNOWN_STORAGE_BUFFER_USAGE_BIT_KHR
VUID-VkDeviceMemoryImageCopyKHR-addressRange-13123
If any buffer, which is bound to a range of VkDeviceMemory that
overlaps the range backing addressRange, was created without
VK_BUFFER_USAGE_STORAGE_BUFFER_BIT, addressFlags must not
include VK_ADDRESS_COMMAND_STORAGE_BUFFER_USAGE_BIT_KHR
VUID-VkDeviceMemoryImageCopyKHR-addressFlags-13101
addressFlags must not include both
VK_ADDRESS_COMMAND_TRANSFORM_FEEDBACK_BUFFER_USAGE_BIT_KHR and
VK_ADDRESS_COMMAND_UNKNOWN_TRANSFORM_FEEDBACK_BUFFER_USAGE_BIT_KHR
VUID-VkDeviceMemoryImageCopyKHR-addressRange-13124
If any buffer, which is bound to a range of VkDeviceMemory that
overlaps the range backing addressRange, was created with
VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT,
addressFlags must include
VK_ADDRESS_COMMAND_TRANSFORM_FEEDBACK_BUFFER_USAGE_BIT_KHR or
VK_ADDRESS_COMMAND_UNKNOWN_TRANSFORM_FEEDBACK_BUFFER_USAGE_BIT_KHR
VUID-VkDeviceMemoryImageCopyKHR-addressRange-13125
If any buffer, which is bound to a range of VkDeviceMemory that
overlaps the range backing addressRange, was created without
VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT,
addressFlags must not include
VK_ADDRESS_COMMAND_TRANSFORM_FEEDBACK_BUFFER_USAGE_BIT_KHR
VUID-VkDeviceMemoryImageCopyKHR-size-13037
The size member of addressRange must be large enough to
contain all address locations that are accessed by this copy according
to Buffer and Image Addressing
VUID-VkDeviceMemoryImageCopyKHR-addressRowLength-09101
addressRowLength must be 0, or greater than or equal to the
width member of imageExtent
VUID-VkDeviceMemoryImageCopyKHR-addressImageHeight-09102
addressImageHeight must be 0, or greater than or equal to the
height member of imageExtent
VUID-VkDeviceMemoryImageCopyKHR-aspectMask-09103
The aspectMask member of imageSubresource must only have a
single bit set
VUID-VkDeviceMemoryImageCopyKHR-imageExtent-06659
imageExtent.width must not be 0
VUID-VkDeviceMemoryImageCopyKHR-imageExtent-06660
imageExtent.height must not be 0
VUID-VkDeviceMemoryImageCopyKHR-imageExtent-06661
imageExtent.depth must not be 0
Valid Usage (Implicit)
VUID-VkDeviceMemoryImageCopyKHR-sType-sType
sType must be VK_STRUCTURE_TYPE_DEVICE_MEMORY_IMAGE_COPY_KHR
VUID-VkDeviceMemoryImageCopyKHR-pNext-pNext
pNext must be NULL or a pointer to a valid instance of VkCopyCommandTransformInfoQCOM
VUID-VkDeviceMemoryImageCopyKHR-sType-unique
The sType value of each structure in the pNext chain must be unique
VUID-VkDeviceMemoryImageCopyKHR-addressFlags-parameter
addressFlags must be a valid combination of VkAddressCommandFlagBitsKHR values
VUID-VkDeviceMemoryImageCopyKHR-imageSubresource-parameter
imageSubresource must be a valid VkImageSubresourceLayers structure
VUID-VkDeviceMemoryImageCopyKHR-imageLayout-parameter
imageLayout must be a valid VkImageLayout value