Structures

VkPhysicalDeviceHostImageCopyProperties

Structure enumerating image layouts supported by an implementation for host memory copies

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;
  • sType is a VkStructureType value identifying this structure.
  • pNext is NULL or a pointer to a structure extending this structure.
  • copySrcLayoutCount is an integer related to the number of image layouts for host copies from images available or queried, as described below.
  • pCopySrcLayouts is a pointer to an array of VkImageLayout in which supported image layouts for use with host copy operations from images are returned.
  • copyDstLayoutCount is an integer related to the number of image layouts for host copies to images available or queried, as described below.
  • pCopyDstLayouts is a pointer to an array of VkImageLayout in which supported image layouts for use with host copy operations to images are returned.
  • optimalTilingLayoutUUID is an array of VK_UUID_SIZE
    uint8_t values representing a universally unique identifier for the implementation’s swizzling layout of images created with VK_IMAGE_TILING_OPTIMAL.
  • identicalMemoryTypeRequirements indicates that specifying the VK_IMAGE_USAGE_HOST_TRANSFER_BIT flag in VkImageCreateInfo::usage does 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