Class EXTHostImageCopy
To support initializing a new image in preparation for a host copy, it is now possible to transition a new image to IMAGE_LAYOUT_GENERAL or other host-copyable layouts via TransitionImageLayoutEXT. Additionally, it is possible to perform copies that preserve the swizzling layout of the image by using the HOST_IMAGE_COPY_MEMCPY_EXT flag. In that case, the memory size needed for copies to or from a buffer can be retrieved by chaining VkSubresourceHostMemcpySizeEXT to pLayout in GetImageSubresourceLayout2EXT.
Promotion to Vulkan 1.4
Functionality in this extension is included in core Vulkan 1.4, with the EXT suffix omitted. However, the feature is made optional in Vulkan 1.4. The original type, enum and command names are still available as aliases of the core functionality.
A Vulkan 1.4 implementation that has a QUEUE_GRAPHICS_BIT queue must support either:
- the
hostImageCopyfeature; or - an additional queue that supports
QUEUE_TRANSFER_BIT.
Additionally, all queues supporting QUEUE_GRAPHICS_BIT or QUEUE_COMPUTE_BIT must also advertise QUEUE_TRANSFER_BIT.
- Name String
VK_EXT_host_image_copy- Extension Type
- Device extension
- Registered Extension Number
- 271
- Revision
- 1
- Extension and Version Dependencies
VK_KHR_get_physical_device_properties2or Version 1.1 andVK_KHR_copy_commands2andVK_KHR_format_feature_flags2or Version 1.3- Deprecation State
- Promoted to Vulkan 1.4
- Contact
- Shahbaz Youssefi syoussefi
- Extension Proposal
- VK_EXT_host_image_copy
Other Extension Metadata
- Last Modified Date
- 2023-04-26
- Contributors
- Shahbaz Youssefi, Google
- Faith Ekstrand, Collabora
- Hans-Kristian Arntzen, Valve
- Piers Daniell, NVIDIA
- Jan-Harald Fredriksen, Arm
- James Fitzpatrick, Imagination
- Daniel Story, Nintendo
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final StringThe extension name.static final intThe extension specification version.static final longExtendsVkFormatFeatureFlagBits2.static final intExtendsVkHostImageCopyFlagBits.static final intExtendsVkImageUsageFlagBits.static final intExtendsVkStructureType.static final intExtendsVkStructureType.static final intExtendsVkStructureType.static final intExtendsVkStructureType.static final intExtendsVkStructureType.static final intExtendsVkStructureType.static final intExtendsVkStructureType.static final intExtendsVkStructureType.static final intExtendsVkStructureType.static final intExtendsVkStructureType. -
Method Summary
Modifier and TypeMethodDescriptionstatic intnvkCopyImageToImageEXT(org.lwjgl.vulkan.VkDevice device, long pCopyImageToImageInfo) Unsafe version of:CopyImageToImageEXTstatic intnvkCopyImageToMemoryEXT(org.lwjgl.vulkan.VkDevice device, long pCopyImageToMemoryInfo) Unsafe version of:CopyImageToMemoryEXTstatic intnvkCopyMemoryToImageEXT(org.lwjgl.vulkan.VkDevice device, long pCopyMemoryToImageInfo) Unsafe version of:CopyMemoryToImageEXTstatic voidnvkGetImageSubresourceLayout2EXT(org.lwjgl.vulkan.VkDevice device, long image, long pSubresource, long pLayout) Unsafe version of:GetImageSubresourceLayout2EXTstatic intnvkTransitionImageLayoutEXT(org.lwjgl.vulkan.VkDevice device, int transitionCount, long pTransitions) Unsafe version of:TransitionImageLayoutEXTstatic intvkCopyImageToImageEXT(org.lwjgl.vulkan.VkDevice device, VkCopyImageToImageInfo pCopyImageToImageInfo) SeeCopyImageToImage.static intvkCopyImageToMemoryEXT(org.lwjgl.vulkan.VkDevice device, VkCopyImageToMemoryInfo pCopyImageToMemoryInfo) SeeCopyImageToMemory.static intvkCopyMemoryToImageEXT(org.lwjgl.vulkan.VkDevice device, VkCopyMemoryToImageInfo pCopyMemoryToImageInfo) SeeCopyMemoryToImage.static voidvkGetImageSubresourceLayout2EXT(org.lwjgl.vulkan.VkDevice device, long image, VkImageSubresource2 pSubresource, VkSubresourceLayout2 pLayout) static intvkTransitionImageLayoutEXT(org.lwjgl.vulkan.VkDevice device, VkHostImageLayoutTransitionInfo.Buffer pTransitions)
-
Field Details
-
VK_EXT_HOST_IMAGE_COPY_SPEC_VERSION
public static final int VK_EXT_HOST_IMAGE_COPY_SPEC_VERSIONThe extension specification version.- See Also:
-
VK_EXT_HOST_IMAGE_COPY_EXTENSION_NAME
The extension name.- See Also:
-
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_FEATURES_EXT
public static final int VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_FEATURES_EXTExtendsVkStructureType.Enum values:
STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_FEATURES_EXTSTRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_PROPERTIES_EXTSTRUCTURE_TYPE_MEMORY_TO_IMAGE_COPY_EXTSTRUCTURE_TYPE_IMAGE_TO_MEMORY_COPY_EXTSTRUCTURE_TYPE_COPY_IMAGE_TO_MEMORY_INFO_EXTSTRUCTURE_TYPE_COPY_MEMORY_TO_IMAGE_INFO_EXTSTRUCTURE_TYPE_HOST_IMAGE_LAYOUT_TRANSITION_INFO_EXTSTRUCTURE_TYPE_COPY_IMAGE_TO_IMAGE_INFO_EXTSTRUCTURE_TYPE_SUBRESOURCE_HOST_MEMCPY_SIZE_EXTSTRUCTURE_TYPE_HOST_IMAGE_COPY_DEVICE_PERFORMANCE_QUERY_EXT
- See Also:
-
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_PROPERTIES_EXT
public static final int VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_PROPERTIES_EXTExtendsVkStructureType.Enum values:
STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_FEATURES_EXTSTRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_PROPERTIES_EXTSTRUCTURE_TYPE_MEMORY_TO_IMAGE_COPY_EXTSTRUCTURE_TYPE_IMAGE_TO_MEMORY_COPY_EXTSTRUCTURE_TYPE_COPY_IMAGE_TO_MEMORY_INFO_EXTSTRUCTURE_TYPE_COPY_MEMORY_TO_IMAGE_INFO_EXTSTRUCTURE_TYPE_HOST_IMAGE_LAYOUT_TRANSITION_INFO_EXTSTRUCTURE_TYPE_COPY_IMAGE_TO_IMAGE_INFO_EXTSTRUCTURE_TYPE_SUBRESOURCE_HOST_MEMCPY_SIZE_EXTSTRUCTURE_TYPE_HOST_IMAGE_COPY_DEVICE_PERFORMANCE_QUERY_EXT
- See Also:
-
VK_STRUCTURE_TYPE_MEMORY_TO_IMAGE_COPY_EXT
public static final int VK_STRUCTURE_TYPE_MEMORY_TO_IMAGE_COPY_EXTExtendsVkStructureType.Enum values:
STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_FEATURES_EXTSTRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_PROPERTIES_EXTSTRUCTURE_TYPE_MEMORY_TO_IMAGE_COPY_EXTSTRUCTURE_TYPE_IMAGE_TO_MEMORY_COPY_EXTSTRUCTURE_TYPE_COPY_IMAGE_TO_MEMORY_INFO_EXTSTRUCTURE_TYPE_COPY_MEMORY_TO_IMAGE_INFO_EXTSTRUCTURE_TYPE_HOST_IMAGE_LAYOUT_TRANSITION_INFO_EXTSTRUCTURE_TYPE_COPY_IMAGE_TO_IMAGE_INFO_EXTSTRUCTURE_TYPE_SUBRESOURCE_HOST_MEMCPY_SIZE_EXTSTRUCTURE_TYPE_HOST_IMAGE_COPY_DEVICE_PERFORMANCE_QUERY_EXT
- See Also:
-
VK_STRUCTURE_TYPE_IMAGE_TO_MEMORY_COPY_EXT
public static final int VK_STRUCTURE_TYPE_IMAGE_TO_MEMORY_COPY_EXTExtendsVkStructureType.Enum values:
STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_FEATURES_EXTSTRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_PROPERTIES_EXTSTRUCTURE_TYPE_MEMORY_TO_IMAGE_COPY_EXTSTRUCTURE_TYPE_IMAGE_TO_MEMORY_COPY_EXTSTRUCTURE_TYPE_COPY_IMAGE_TO_MEMORY_INFO_EXTSTRUCTURE_TYPE_COPY_MEMORY_TO_IMAGE_INFO_EXTSTRUCTURE_TYPE_HOST_IMAGE_LAYOUT_TRANSITION_INFO_EXTSTRUCTURE_TYPE_COPY_IMAGE_TO_IMAGE_INFO_EXTSTRUCTURE_TYPE_SUBRESOURCE_HOST_MEMCPY_SIZE_EXTSTRUCTURE_TYPE_HOST_IMAGE_COPY_DEVICE_PERFORMANCE_QUERY_EXT
- See Also:
-
VK_STRUCTURE_TYPE_COPY_IMAGE_TO_MEMORY_INFO_EXT
public static final int VK_STRUCTURE_TYPE_COPY_IMAGE_TO_MEMORY_INFO_EXTExtendsVkStructureType.Enum values:
STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_FEATURES_EXTSTRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_PROPERTIES_EXTSTRUCTURE_TYPE_MEMORY_TO_IMAGE_COPY_EXTSTRUCTURE_TYPE_IMAGE_TO_MEMORY_COPY_EXTSTRUCTURE_TYPE_COPY_IMAGE_TO_MEMORY_INFO_EXTSTRUCTURE_TYPE_COPY_MEMORY_TO_IMAGE_INFO_EXTSTRUCTURE_TYPE_HOST_IMAGE_LAYOUT_TRANSITION_INFO_EXTSTRUCTURE_TYPE_COPY_IMAGE_TO_IMAGE_INFO_EXTSTRUCTURE_TYPE_SUBRESOURCE_HOST_MEMCPY_SIZE_EXTSTRUCTURE_TYPE_HOST_IMAGE_COPY_DEVICE_PERFORMANCE_QUERY_EXT
- See Also:
-
VK_STRUCTURE_TYPE_COPY_MEMORY_TO_IMAGE_INFO_EXT
public static final int VK_STRUCTURE_TYPE_COPY_MEMORY_TO_IMAGE_INFO_EXTExtendsVkStructureType.Enum values:
STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_FEATURES_EXTSTRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_PROPERTIES_EXTSTRUCTURE_TYPE_MEMORY_TO_IMAGE_COPY_EXTSTRUCTURE_TYPE_IMAGE_TO_MEMORY_COPY_EXTSTRUCTURE_TYPE_COPY_IMAGE_TO_MEMORY_INFO_EXTSTRUCTURE_TYPE_COPY_MEMORY_TO_IMAGE_INFO_EXTSTRUCTURE_TYPE_HOST_IMAGE_LAYOUT_TRANSITION_INFO_EXTSTRUCTURE_TYPE_COPY_IMAGE_TO_IMAGE_INFO_EXTSTRUCTURE_TYPE_SUBRESOURCE_HOST_MEMCPY_SIZE_EXTSTRUCTURE_TYPE_HOST_IMAGE_COPY_DEVICE_PERFORMANCE_QUERY_EXT
- See Also:
-
VK_STRUCTURE_TYPE_HOST_IMAGE_LAYOUT_TRANSITION_INFO_EXT
public static final int VK_STRUCTURE_TYPE_HOST_IMAGE_LAYOUT_TRANSITION_INFO_EXTExtendsVkStructureType.Enum values:
STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_FEATURES_EXTSTRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_PROPERTIES_EXTSTRUCTURE_TYPE_MEMORY_TO_IMAGE_COPY_EXTSTRUCTURE_TYPE_IMAGE_TO_MEMORY_COPY_EXTSTRUCTURE_TYPE_COPY_IMAGE_TO_MEMORY_INFO_EXTSTRUCTURE_TYPE_COPY_MEMORY_TO_IMAGE_INFO_EXTSTRUCTURE_TYPE_HOST_IMAGE_LAYOUT_TRANSITION_INFO_EXTSTRUCTURE_TYPE_COPY_IMAGE_TO_IMAGE_INFO_EXTSTRUCTURE_TYPE_SUBRESOURCE_HOST_MEMCPY_SIZE_EXTSTRUCTURE_TYPE_HOST_IMAGE_COPY_DEVICE_PERFORMANCE_QUERY_EXT
- See Also:
-
VK_STRUCTURE_TYPE_COPY_IMAGE_TO_IMAGE_INFO_EXT
public static final int VK_STRUCTURE_TYPE_COPY_IMAGE_TO_IMAGE_INFO_EXTExtendsVkStructureType.Enum values:
STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_FEATURES_EXTSTRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_PROPERTIES_EXTSTRUCTURE_TYPE_MEMORY_TO_IMAGE_COPY_EXTSTRUCTURE_TYPE_IMAGE_TO_MEMORY_COPY_EXTSTRUCTURE_TYPE_COPY_IMAGE_TO_MEMORY_INFO_EXTSTRUCTURE_TYPE_COPY_MEMORY_TO_IMAGE_INFO_EXTSTRUCTURE_TYPE_HOST_IMAGE_LAYOUT_TRANSITION_INFO_EXTSTRUCTURE_TYPE_COPY_IMAGE_TO_IMAGE_INFO_EXTSTRUCTURE_TYPE_SUBRESOURCE_HOST_MEMCPY_SIZE_EXTSTRUCTURE_TYPE_HOST_IMAGE_COPY_DEVICE_PERFORMANCE_QUERY_EXT
- See Also:
-
VK_STRUCTURE_TYPE_SUBRESOURCE_HOST_MEMCPY_SIZE_EXT
public static final int VK_STRUCTURE_TYPE_SUBRESOURCE_HOST_MEMCPY_SIZE_EXTExtendsVkStructureType.Enum values:
STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_FEATURES_EXTSTRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_PROPERTIES_EXTSTRUCTURE_TYPE_MEMORY_TO_IMAGE_COPY_EXTSTRUCTURE_TYPE_IMAGE_TO_MEMORY_COPY_EXTSTRUCTURE_TYPE_COPY_IMAGE_TO_MEMORY_INFO_EXTSTRUCTURE_TYPE_COPY_MEMORY_TO_IMAGE_INFO_EXTSTRUCTURE_TYPE_HOST_IMAGE_LAYOUT_TRANSITION_INFO_EXTSTRUCTURE_TYPE_COPY_IMAGE_TO_IMAGE_INFO_EXTSTRUCTURE_TYPE_SUBRESOURCE_HOST_MEMCPY_SIZE_EXTSTRUCTURE_TYPE_HOST_IMAGE_COPY_DEVICE_PERFORMANCE_QUERY_EXT
- See Also:
-
VK_STRUCTURE_TYPE_HOST_IMAGE_COPY_DEVICE_PERFORMANCE_QUERY_EXT
public static final int VK_STRUCTURE_TYPE_HOST_IMAGE_COPY_DEVICE_PERFORMANCE_QUERY_EXTExtendsVkStructureType.Enum values:
STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_FEATURES_EXTSTRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_PROPERTIES_EXTSTRUCTURE_TYPE_MEMORY_TO_IMAGE_COPY_EXTSTRUCTURE_TYPE_IMAGE_TO_MEMORY_COPY_EXTSTRUCTURE_TYPE_COPY_IMAGE_TO_MEMORY_INFO_EXTSTRUCTURE_TYPE_COPY_MEMORY_TO_IMAGE_INFO_EXTSTRUCTURE_TYPE_HOST_IMAGE_LAYOUT_TRANSITION_INFO_EXTSTRUCTURE_TYPE_COPY_IMAGE_TO_IMAGE_INFO_EXTSTRUCTURE_TYPE_SUBRESOURCE_HOST_MEMCPY_SIZE_EXTSTRUCTURE_TYPE_HOST_IMAGE_COPY_DEVICE_PERFORMANCE_QUERY_EXT
- See Also:
-
VK_IMAGE_USAGE_HOST_TRANSFER_BIT_EXT
public static final int VK_IMAGE_USAGE_HOST_TRANSFER_BIT_EXTExtendsVkImageUsageFlagBits.- See Also:
-
VK_FORMAT_FEATURE_2_HOST_IMAGE_TRANSFER_BIT_EXT
public static final long VK_FORMAT_FEATURE_2_HOST_IMAGE_TRANSFER_BIT_EXTExtendsVkFormatFeatureFlagBits2.- See Also:
-
VK_HOST_IMAGE_COPY_MEMCPY_EXT
public static final int VK_HOST_IMAGE_COPY_MEMCPY_EXTExtendsVkHostImageCopyFlagBits.- See Also:
-
-
Method Details
-
nvkCopyMemoryToImageEXT
public static int nvkCopyMemoryToImageEXT(org.lwjgl.vulkan.VkDevice device, long pCopyMemoryToImageInfo) Unsafe version of:CopyMemoryToImageEXT -
vkCopyMemoryToImageEXT
public static int vkCopyMemoryToImageEXT(org.lwjgl.vulkan.VkDevice device, VkCopyMemoryToImageInfo pCopyMemoryToImageInfo) SeeCopyMemoryToImage.- Parameters:
device- the device which ownspCopyMemoryToImageInfo→dstImage.pCopyMemoryToImageInfo- a pointer to aVkCopyMemoryToImageInfostructure describing the copy parameters.
-
nvkCopyImageToMemoryEXT
public static int nvkCopyImageToMemoryEXT(org.lwjgl.vulkan.VkDevice device, long pCopyImageToMemoryInfo) Unsafe version of:CopyImageToMemoryEXT -
vkCopyImageToMemoryEXT
public static int vkCopyImageToMemoryEXT(org.lwjgl.vulkan.VkDevice device, VkCopyImageToMemoryInfo pCopyImageToMemoryInfo) SeeCopyImageToMemory.- Parameters:
device- the device which ownspCopyImageToMemoryInfo→srcImage.pCopyImageToMemoryInfo- a pointer to aVkCopyImageToMemoryInfostructure describing the copy parameters.
-
nvkCopyImageToImageEXT
public static int nvkCopyImageToImageEXT(org.lwjgl.vulkan.VkDevice device, long pCopyImageToImageInfo) Unsafe version of:CopyImageToImageEXT -
vkCopyImageToImageEXT
public static int vkCopyImageToImageEXT(org.lwjgl.vulkan.VkDevice device, VkCopyImageToImageInfo pCopyImageToImageInfo) SeeCopyImageToImage.- Parameters:
device- the device which ownspCopyImageToImageInfo→srcImageandpCopyImageToImageInfo→dstImage.pCopyImageToImageInfo- a pointer to aVkCopyImageToImageInfostructure describing the copy parameters.
-
nvkTransitionImageLayoutEXT
public static int nvkTransitionImageLayoutEXT(org.lwjgl.vulkan.VkDevice device, int transitionCount, long pTransitions) Unsafe version of:TransitionImageLayoutEXT- Parameters:
transitionCount- the number of image layout transitions to perform.
-
vkTransitionImageLayoutEXT
public static int vkTransitionImageLayoutEXT(org.lwjgl.vulkan.VkDevice device, VkHostImageLayoutTransitionInfo.Buffer pTransitions) - Parameters:
device- the device which ownspTransitions[i].image.pTransitions- a pointer to an array ofVkHostImageLayoutTransitionInfostructures specifying the image and subresource ranges within them to transition.
-
nvkGetImageSubresourceLayout2EXT
public static void nvkGetImageSubresourceLayout2EXT(org.lwjgl.vulkan.VkDevice device, long image, long pSubresource, long pLayout) Unsafe version of:GetImageSubresourceLayout2EXT -
vkGetImageSubresourceLayout2EXT
public static void vkGetImageSubresourceLayout2EXT(org.lwjgl.vulkan.VkDevice device, long image, VkImageSubresource2 pSubresource, VkSubresourceLayout2 pLayout) - Parameters:
device- the logical device that owns the image.image- the image whose layout is being queried.pSubresource- a pointer to aVkImageSubresource2structure selecting a specific image for the image subresource.pLayout- a pointer to aVkSubresourceLayout2structure in which the layout is returned.
-