VkPhysicalDeviceHostImageCopyProperties
The VkPhysicalDeviceHostImageCopyProperties structure is defined as:
typedef struct VkPhysicalDeviceHostImageCopyProperties {
VkStructureType sType;
void* pNext;
uint32_t copySrcLayoutCount;
VkImageLayout* pCopySrcLayouts;
uint32_t copyDstLayoutCount;
VkImageLayout* pCopyDstLayouts;
uint8_t optimalTilingLayoutUUID[VK_UUID_SIZE];
VkBool32 identicalMemoryTypeRequirements;
} VkPhysicalDeviceHostImageCopyProperties;
or the equivalent
typedef VkPhysicalDeviceHostImageCopyProperties VkPhysicalDeviceHostImageCopyPropertiesEXT;
sTypeis a VkStructureType value identifying this structure.pNextisNULLor a pointer to a structure extending this structure.copySrcLayoutCountis an integer related to the number of image layouts for host copies from images available or queried, as described below.pCopySrcLayoutsis a pointer to an array of VkImageLayout in which supported image layouts for use with host copy operations from images are returned.copyDstLayoutCountis an integer related to the number of image layouts for host copies to images available or queried, as described below.pCopyDstLayoutsis a pointer to an array of VkImageLayout in which supported image layouts for use with host copy operations to images are returned.optimalTilingLayoutUUIDis an array ofVK_UUID_SIZEuint8_tvalues representing a universally unique identifier for the implementation’s swizzling layout of images created withVK_IMAGE_TILING_OPTIMAL.identicalMemoryTypeRequirementsindicates that specifying theVK_IMAGE_USAGE_HOST_TRANSFER_BITflag in VkImageCreateInfo::usagedoes not affect the memory type requirements of the image.
If the VkPhysicalDeviceHostImageCopyProperties structure is included in the pNext chain of the
VkPhysicalDeviceProperties2 structure passed to
vkGetPhysicalDeviceProperties2, it is filled in with each
corresponding implementation-dependent property.
If pCopyDstLayouts is NULL, then the number of image layouts that
are supported in VkCopyMemoryToImageInfo::dstImageLayout and
VkCopyImageToImageInfo::dstImageLayout is returned in
copyDstLayoutCount.
Otherwise, copyDstLayoutCount must be set by the application to the
number of elements in the pCopyDstLayouts array, and on return the
variable is overwritten with the number of values actually written to
pCopyDstLayouts.
If the value of copyDstLayoutCount is less than the number of image
layouts that are supported, at most copyDstLayoutCount values will be
written to pCopyDstLayouts.
The implementation must include the VK_IMAGE_LAYOUT_GENERAL image
layout in pCopyDstLayouts.
If pCopySrcLayouts is NULL, then the number of image layouts that
are supported in VkCopyImageToMemoryInfo::srcImageLayout and
VkCopyImageToImageInfo::srcImageLayout is returned in
copySrcLayoutCount.
Otherwise, copySrcLayoutCount must be set by the application to the
number of elements in the pCopySrcLayouts array, and on return the
variable is overwritten with the number of values actually written to
pCopySrcLayouts.
If the value of copySrcLayoutCount is less than the number of image
layouts that are supported, at most copySrcLayoutCount values will be
written to pCopySrcLayouts.
The implementation must include the VK_IMAGE_LAYOUT_GENERAL image
layout in pCopySrcLayouts.
The optimalTilingLayoutUUID value can be used to ensure compatible
data layouts when using the VK_HOST_IMAGE_COPY_MEMCPY flag in
vkCopyMemoryToImage and vkCopyImageToMemory.
Valid Usage (Implicit)
VUID-VkPhysicalDeviceHostImageCopyProperties-sType-sType
sType must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_PROPERTIES
VUID-VkPhysicalDeviceHostImageCopyProperties-pCopySrcLayouts-parameter
If copySrcLayoutCount is not 0, and pCopySrcLayouts is not NULL, pCopySrcLayouts must be a valid pointer to an array of copySrcLayoutCount VkImageLayout values
VUID-VkPhysicalDeviceHostImageCopyProperties-pCopyDstLayouts-parameter
If copyDstLayoutCount is not 0, and pCopyDstLayouts is not NULL, pCopyDstLayouts must be a valid pointer to an array of copyDstLayoutCount VkImageLayout values