{-# language CPP #-}
-- | = Name
--
-- VK_EXT_host_image_copy - device extension
--
-- = VK_EXT_host_image_copy
--
-- [__Name String__]
--     @VK_EXT_host_image_copy@
--
-- [__Extension Type__]
--     Device extension
--
-- [__Registered Extension Number__]
--     271
--
-- [__Revision__]
--     1
--
-- [__Ratification Status__]
--     Ratified
--
-- [__Extension and Version Dependencies__]
--             
--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 VK_KHR_get_physical_device_properties2>
--              or
--             
--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1 Vulkan Version 1.1>
--          and
--         
--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_copy_commands2 VK_KHR_copy_commands2>
--          and
--         
--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_format_feature_flags2 VK_KHR_format_feature_flags2>
--     or
--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.3 Vulkan Version 1.3>
--
-- [__Deprecation State__]
--
--     -   /Promoted/ to
--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.4-promotions Vulkan 1.4>
--
-- [__Contact__]
--
--     -   Shahbaz Youssefi
--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_EXT_host_image_copy] @syoussefi%0A*Here describe the issue or question you have about the VK_EXT_host_image_copy extension* >
--
-- [__Extension Proposal__]
--     <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_EXT_host_image_copy.adoc 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
--
-- == Description
--
-- This extension allows applications to copy data between host memory and
-- images on the host processor, without staging the data through a
-- GPU-accessible buffer. This removes the need to allocate and manage the
-- buffer and its associated memory. On some architectures it may also
-- eliminate an extra copy operation. This extension additionally allows
-- applications to copy data between images on the host.
--
-- To support initializing a new image in preparation for a host copy, it
-- is now possible to transition a new image to
-- 'Vulkan.Core10.Enums.ImageLayout.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_BIT_EXT' flag. In that case,
-- the memory size needed for copies to or from a buffer can be retrieved
-- by chaining 'SubresourceHostMemcpySizeEXT' to @pLayout@ in
-- 'getImageSubresourceLayout2EXT'.
--
-- == New Commands
--
-- -   'copyImageToImageEXT'
--
-- -   'copyImageToMemoryEXT'
--
-- -   'copyMemoryToImageEXT'
--
-- -   'getImageSubresourceLayout2EXT'
--
-- -   'transitionImageLayoutEXT'
--
-- == New Structures
--
-- -   'CopyImageToImageInfoEXT'
--
-- -   'CopyImageToMemoryInfoEXT'
--
-- -   'CopyMemoryToImageInfoEXT'
--
-- -   'HostImageLayoutTransitionInfoEXT'
--
-- -   'ImageSubresource2EXT'
--
-- -   'ImageToMemoryCopyEXT'
--
-- -   'MemoryToImageCopyEXT'
--
-- -   'SubresourceLayout2EXT'
--
-- -   Extending
--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.ImageFormatProperties2':
--
--     -   'HostImageCopyDevicePerformanceQueryEXT'
--
-- -   Extending
--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
--     'Vulkan.Core10.Device.DeviceCreateInfo':
--
--     -   'PhysicalDeviceHostImageCopyFeaturesEXT'
--
-- -   Extending
--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':
--
--     -   'PhysicalDeviceHostImageCopyPropertiesEXT'
--
-- -   Extending
--     'Vulkan.Core14.Promoted_From_VK_KHR_maintenance5Roadmap.SubresourceLayout2':
--
--     -   'SubresourceHostMemcpySizeEXT'
--
-- == New Enums
--
-- -   'HostImageCopyFlagBitsEXT'
--
-- == New Bitmasks
--
-- -   'HostImageCopyFlagsEXT'
--
-- == New Enum Constants
--
-- -   'EXT_HOST_IMAGE_COPY_EXTENSION_NAME'
--
-- -   'EXT_HOST_IMAGE_COPY_SPEC_VERSION'
--
-- -   Extending
--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FormatFeatureFlagBits2':
--
--     -   'FORMAT_FEATURE_2_HOST_IMAGE_TRANSFER_BIT_EXT'
--
-- -   Extending
--     'Vulkan.Core14.Enums.HostImageCopyFlagBits.HostImageCopyFlagBits':
--
--     -   'HOST_IMAGE_COPY_MEMCPY_BIT_EXT'
--
--     -   'HOST_IMAGE_COPY_MEMCPY_EXT'
--
-- -   Extending
--     'Vulkan.Core10.Enums.ImageUsageFlagBits.ImageUsageFlagBits':
--
--     -   'IMAGE_USAGE_HOST_TRANSFER_BIT_EXT'
--
-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
--
--     -   'STRUCTURE_TYPE_COPY_IMAGE_TO_IMAGE_INFO_EXT'
--
--     -   'STRUCTURE_TYPE_COPY_IMAGE_TO_MEMORY_INFO_EXT'
--
--     -   'STRUCTURE_TYPE_COPY_MEMORY_TO_IMAGE_INFO_EXT'
--
--     -   'STRUCTURE_TYPE_HOST_IMAGE_COPY_DEVICE_PERFORMANCE_QUERY_EXT'
--
--     -   'STRUCTURE_TYPE_HOST_IMAGE_LAYOUT_TRANSITION_INFO_EXT'
--
--     -   'STRUCTURE_TYPE_IMAGE_TO_MEMORY_COPY_EXT'
--
--     -   'STRUCTURE_TYPE_MEMORY_TO_IMAGE_COPY_EXT'
--
--     -   'STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_FEATURES_EXT'
--
--     -   'STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_PROPERTIES_EXT'
--
--     -   'STRUCTURE_TYPE_SUBRESOURCE_HOST_MEMCPY_SIZE_EXT'
--
-- == 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
-- 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' queue must
-- support either:
--
-- -   the
--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-hostImageCopy hostImageCopy>
--     feature; or
--
-- -   an additional queue that supports
--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_TRANSFER_BIT'.
--
-- Additionally, all queues supporting
-- 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' or
-- 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT' must also
-- advertise 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_TRANSFER_BIT'.
--
-- == Issues
--
-- 1) When uploading data to an image, the data is usually loaded from
-- disk. Why not have the application load the data directly into a
-- 'Vulkan.Core10.Handles.DeviceMemory' bound to a buffer (instead of host
-- memory), and use
-- 'Vulkan.Core10.CommandBufferBuilding.cmdCopyBufferToImage'? The same
-- could be done when downloading data from an image.
--
-- __RESOLVED__: This may not always be possible. Complicated Vulkan
-- applications such as game engines often have decoupled subsystems for
-- streaming data and rendering. It may be unreasonable to require the
-- streaming subsystem to coordinate with the rendering subsystem to
-- allocate memory on its behalf, especially as Vulkan may not be the only
-- API supported by the engine. In emulation layers, the image data is
-- necessarily provided by the application in host memory, so an
-- optimization as suggested is not possible. Most importantly, the device
-- memory may not be mappable by an application, but still accessible to
-- the driver.
--
-- 2) Are @optimalBufferCopyOffsetAlignment@ and
-- @optimalBufferCopyRowPitchAlignment@ applicable to host memory as well
-- with the functions introduced by this extension? Or should there be new
-- limits?
--
-- __RESOLVED__: No alignment requirements for the host memory pointer.
--
-- 3) Should there be granularity requirements for image offsets and
-- extents?
--
-- __RESOLVED__: No granularity requirements, i.e. a granularity of 1 pixel
-- (for non-compressed formats) and 1 texel block (for compressed formats)
-- is assumed.
--
-- 4) How should the application deal with layout transitions before or
-- after copying to or from images?
--
-- __RESOLVED__: An existing issue with linear images is that when
-- emulating other APIs, it is impossible to know when to transition them
-- as they are written to by the host and then used bindlessly. The copy
-- operations in this extension are affected by the same limitation. A new
-- command is thus introduced by this extension to address this problem by
-- allowing the host to perform an image layout transition between a
-- handful of layouts.
--
-- == Version History
--
-- -   Revision 0, 2021-01-20 (Faith Ekstrand)
--
--     -   Initial idea and xml
--
-- -   Revision 1, 2023-04-26 (Shahbaz Youssefi)
--
--     -   Initial revision
--
-- == See Also
--
-- No cross-references are available
--
-- == Document Notes
--
-- For more information, see the
-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_EXT_host_image_copy Vulkan Specification>.
--
-- This page is a generated document. Fixes and changes should be made to
-- the generator scripts, not directly.
module Vulkan.Extensions.VK_EXT_host_image_copy  ( pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_FEATURES_EXT
                                                 , pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_PROPERTIES_EXT
                                                 , pattern STRUCTURE_TYPE_MEMORY_TO_IMAGE_COPY_EXT
                                                 , pattern STRUCTURE_TYPE_IMAGE_TO_MEMORY_COPY_EXT
                                                 , pattern STRUCTURE_TYPE_COPY_IMAGE_TO_MEMORY_INFO_EXT
                                                 , pattern STRUCTURE_TYPE_COPY_MEMORY_TO_IMAGE_INFO_EXT
                                                 , pattern STRUCTURE_TYPE_HOST_IMAGE_LAYOUT_TRANSITION_INFO_EXT
                                                 , pattern STRUCTURE_TYPE_COPY_IMAGE_TO_IMAGE_INFO_EXT
                                                 , pattern STRUCTURE_TYPE_SUBRESOURCE_HOST_MEMCPY_SIZE_EXT
                                                 , pattern STRUCTURE_TYPE_HOST_IMAGE_COPY_DEVICE_PERFORMANCE_QUERY_EXT
                                                 , pattern IMAGE_USAGE_HOST_TRANSFER_BIT_EXT
                                                 , pattern FORMAT_FEATURE_2_HOST_IMAGE_TRANSFER_BIT_EXT
                                                 , pattern HOST_IMAGE_COPY_MEMCPY_BIT_EXT
                                                 , pattern HOST_IMAGE_COPY_MEMCPY_EXT
                                                 , copyMemoryToImageEXT
                                                 , copyImageToMemoryEXT
                                                 , copyImageToImageEXT
                                                 , transitionImageLayoutEXT
                                                 , getImageSubresourceLayout2EXT
                                                 , HostImageCopyFlagsEXT
                                                 , HostImageCopyFlagBitsEXT
                                                 , PhysicalDeviceHostImageCopyFeaturesEXT
                                                 , PhysicalDeviceHostImageCopyPropertiesEXT
                                                 , MemoryToImageCopyEXT
                                                 , ImageToMemoryCopyEXT
                                                 , CopyMemoryToImageInfoEXT
                                                 , CopyImageToMemoryInfoEXT
                                                 , CopyImageToImageInfoEXT
                                                 , HostImageLayoutTransitionInfoEXT
                                                 , SubresourceHostMemcpySizeEXT
                                                 , HostImageCopyDevicePerformanceQueryEXT
                                                 , ImageSubresource2EXT
                                                 , SubresourceLayout2EXT
                                                 , EXT_HOST_IMAGE_COPY_SPEC_VERSION
                                                 , pattern EXT_HOST_IMAGE_COPY_SPEC_VERSION
                                                 , EXT_HOST_IMAGE_COPY_EXTENSION_NAME
                                                 , pattern EXT_HOST_IMAGE_COPY_EXTENSION_NAME
                                                 ) where

import Data.String (IsString)
import Vulkan.Core14.PromotedStreamingTransfers' (copyImageToImage)
import Vulkan.Core14.PromotedStreamingTransfers' (copyImageToMemory)
import Vulkan.Core14.PromotedStreamingTransfers' (copyMemoryToImage)
import Vulkan.Core14.Promoted_From_VK_KHR_maintenance5Roadmap (getImageSubresourceLayout2)
import Vulkan.Core14.PromotedStreamingTransfers' (transitionImageLayout)
import Vulkan.Core14.PromotedStreamingTransfers' (CopyImageToImageInfo)
import Vulkan.Core14.PromotedStreamingTransfers' (CopyImageToMemoryInfo)
import Vulkan.Core14.PromotedStreamingTransfers' (CopyMemoryToImageInfo)
import Vulkan.Core14.PromotedStreamingTransfers' (HostImageCopyDevicePerformanceQuery)
import Vulkan.Core14.Enums.HostImageCopyFlagBits (HostImageCopyFlagBits)
import Vulkan.Core14.Enums.HostImageCopyFlagBits (HostImageCopyFlags)
import Vulkan.Core14.PromotedStreamingTransfers' (HostImageLayoutTransitionInfo)
import Vulkan.Core14.Promoted_From_VK_KHR_maintenance5Roadmap (ImageSubresource2)
import Vulkan.Core14.PromotedStreamingTransfers' (ImageToMemoryCopy)
import Vulkan.Core14.PromotedStreamingTransfers' (MemoryToImageCopy)
import Vulkan.Core14.PromotedStreamingTransfers' (PhysicalDeviceHostImageCopyFeatures)
import Vulkan.Core14.PromotedStreamingTransfers' (PhysicalDeviceHostImageCopyProperties)
import Vulkan.Core14.PromotedStreamingTransfers' (SubresourceHostMemcpySize)
import Vulkan.Core14.Promoted_From_VK_KHR_maintenance5Roadmap (SubresourceLayout2)
import Vulkan.Core13.Enums.FormatFeatureFlags2 (FormatFeatureFlags2)
import Vulkan.Core13.Enums.FormatFeatureFlags2 (FormatFeatureFlagBits2(FORMAT_FEATURE_2_HOST_IMAGE_TRANSFER_BIT))
import Vulkan.Core14.Enums.HostImageCopyFlagBits (HostImageCopyFlags)
import Vulkan.Core14.Enums.HostImageCopyFlagBits (HostImageCopyFlagBits(HOST_IMAGE_COPY_MEMCPY_BIT))
import Vulkan.Core10.Enums.ImageUsageFlagBits (ImageUsageFlags)
import Vulkan.Core10.Enums.ImageUsageFlagBits (ImageUsageFlagBits(IMAGE_USAGE_HOST_TRANSFER_BIT))
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_COPY_IMAGE_TO_IMAGE_INFO))
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_COPY_IMAGE_TO_MEMORY_INFO))
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_COPY_MEMORY_TO_IMAGE_INFO))
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_HOST_IMAGE_COPY_DEVICE_PERFORMANCE_QUERY))
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_HOST_IMAGE_LAYOUT_TRANSITION_INFO))
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_IMAGE_TO_MEMORY_COPY))
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_MEMORY_TO_IMAGE_COPY))
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_FEATURES))
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_PROPERTIES))
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_SUBRESOURCE_HOST_MEMCPY_SIZE))
-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_FEATURES_EXT"
pattern $mSTRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_FEATURES_EXT :: forall {r}. StructureType -> ((# #) -> r) -> ((# #) -> r) -> r
$bSTRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_FEATURES_EXT :: StructureType
STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_FEATURES_EXT = STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_FEATURES


-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_PROPERTIES_EXT"
pattern $mSTRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_PROPERTIES_EXT :: forall {r}. StructureType -> ((# #) -> r) -> ((# #) -> r) -> r
$bSTRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_PROPERTIES_EXT :: StructureType
STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_PROPERTIES_EXT = STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_PROPERTIES


-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_MEMORY_TO_IMAGE_COPY_EXT"
pattern $mSTRUCTURE_TYPE_MEMORY_TO_IMAGE_COPY_EXT :: forall {r}. StructureType -> ((# #) -> r) -> ((# #) -> r) -> r
$bSTRUCTURE_TYPE_MEMORY_TO_IMAGE_COPY_EXT :: StructureType
STRUCTURE_TYPE_MEMORY_TO_IMAGE_COPY_EXT = STRUCTURE_TYPE_MEMORY_TO_IMAGE_COPY


-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_IMAGE_TO_MEMORY_COPY_EXT"
pattern $mSTRUCTURE_TYPE_IMAGE_TO_MEMORY_COPY_EXT :: forall {r}. StructureType -> ((# #) -> r) -> ((# #) -> r) -> r
$bSTRUCTURE_TYPE_IMAGE_TO_MEMORY_COPY_EXT :: StructureType
STRUCTURE_TYPE_IMAGE_TO_MEMORY_COPY_EXT = STRUCTURE_TYPE_IMAGE_TO_MEMORY_COPY


-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_COPY_IMAGE_TO_MEMORY_INFO_EXT"
pattern $mSTRUCTURE_TYPE_COPY_IMAGE_TO_MEMORY_INFO_EXT :: forall {r}. StructureType -> ((# #) -> r) -> ((# #) -> r) -> r
$bSTRUCTURE_TYPE_COPY_IMAGE_TO_MEMORY_INFO_EXT :: StructureType
STRUCTURE_TYPE_COPY_IMAGE_TO_MEMORY_INFO_EXT = STRUCTURE_TYPE_COPY_IMAGE_TO_MEMORY_INFO


-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_COPY_MEMORY_TO_IMAGE_INFO_EXT"
pattern $mSTRUCTURE_TYPE_COPY_MEMORY_TO_IMAGE_INFO_EXT :: forall {r}. StructureType -> ((# #) -> r) -> ((# #) -> r) -> r
$bSTRUCTURE_TYPE_COPY_MEMORY_TO_IMAGE_INFO_EXT :: StructureType
STRUCTURE_TYPE_COPY_MEMORY_TO_IMAGE_INFO_EXT = STRUCTURE_TYPE_COPY_MEMORY_TO_IMAGE_INFO


-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_HOST_IMAGE_LAYOUT_TRANSITION_INFO_EXT"
pattern $mSTRUCTURE_TYPE_HOST_IMAGE_LAYOUT_TRANSITION_INFO_EXT :: forall {r}. StructureType -> ((# #) -> r) -> ((# #) -> r) -> r
$bSTRUCTURE_TYPE_HOST_IMAGE_LAYOUT_TRANSITION_INFO_EXT :: StructureType
STRUCTURE_TYPE_HOST_IMAGE_LAYOUT_TRANSITION_INFO_EXT = STRUCTURE_TYPE_HOST_IMAGE_LAYOUT_TRANSITION_INFO


-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_COPY_IMAGE_TO_IMAGE_INFO_EXT"
pattern $mSTRUCTURE_TYPE_COPY_IMAGE_TO_IMAGE_INFO_EXT :: forall {r}. StructureType -> ((# #) -> r) -> ((# #) -> r) -> r
$bSTRUCTURE_TYPE_COPY_IMAGE_TO_IMAGE_INFO_EXT :: StructureType
STRUCTURE_TYPE_COPY_IMAGE_TO_IMAGE_INFO_EXT = STRUCTURE_TYPE_COPY_IMAGE_TO_IMAGE_INFO


-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_SUBRESOURCE_HOST_MEMCPY_SIZE_EXT"
pattern $mSTRUCTURE_TYPE_SUBRESOURCE_HOST_MEMCPY_SIZE_EXT :: forall {r}. StructureType -> ((# #) -> r) -> ((# #) -> r) -> r
$bSTRUCTURE_TYPE_SUBRESOURCE_HOST_MEMCPY_SIZE_EXT :: StructureType
STRUCTURE_TYPE_SUBRESOURCE_HOST_MEMCPY_SIZE_EXT = STRUCTURE_TYPE_SUBRESOURCE_HOST_MEMCPY_SIZE


-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_HOST_IMAGE_COPY_DEVICE_PERFORMANCE_QUERY_EXT"
pattern $mSTRUCTURE_TYPE_HOST_IMAGE_COPY_DEVICE_PERFORMANCE_QUERY_EXT :: forall {r}. StructureType -> ((# #) -> r) -> ((# #) -> r) -> r
$bSTRUCTURE_TYPE_HOST_IMAGE_COPY_DEVICE_PERFORMANCE_QUERY_EXT :: StructureType
STRUCTURE_TYPE_HOST_IMAGE_COPY_DEVICE_PERFORMANCE_QUERY_EXT = STRUCTURE_TYPE_HOST_IMAGE_COPY_DEVICE_PERFORMANCE_QUERY


-- No documentation found for TopLevel "VK_IMAGE_USAGE_HOST_TRANSFER_BIT_EXT"
pattern $mIMAGE_USAGE_HOST_TRANSFER_BIT_EXT :: forall {r}. ImageUsageFlagBits -> ((# #) -> r) -> ((# #) -> r) -> r
$bIMAGE_USAGE_HOST_TRANSFER_BIT_EXT :: ImageUsageFlagBits
IMAGE_USAGE_HOST_TRANSFER_BIT_EXT = IMAGE_USAGE_HOST_TRANSFER_BIT


-- No documentation found for TopLevel "VK_FORMAT_FEATURE_2_HOST_IMAGE_TRANSFER_BIT_EXT"
pattern $mFORMAT_FEATURE_2_HOST_IMAGE_TRANSFER_BIT_EXT :: forall {r}.
FormatFeatureFlagBits2 -> ((# #) -> r) -> ((# #) -> r) -> r
$bFORMAT_FEATURE_2_HOST_IMAGE_TRANSFER_BIT_EXT :: FormatFeatureFlagBits2
FORMAT_FEATURE_2_HOST_IMAGE_TRANSFER_BIT_EXT = FORMAT_FEATURE_2_HOST_IMAGE_TRANSFER_BIT


-- No documentation found for TopLevel "VK_HOST_IMAGE_COPY_MEMCPY_BIT_EXT"
pattern $mHOST_IMAGE_COPY_MEMCPY_BIT_EXT :: forall {r}.
HostImageCopyFlagBits -> ((# #) -> r) -> ((# #) -> r) -> r
$bHOST_IMAGE_COPY_MEMCPY_BIT_EXT :: HostImageCopyFlagBits
HOST_IMAGE_COPY_MEMCPY_BIT_EXT = HOST_IMAGE_COPY_MEMCPY_BIT


-- No documentation found for TopLevel "VK_HOST_IMAGE_COPY_MEMCPY_EXT"
pattern $mHOST_IMAGE_COPY_MEMCPY_EXT :: forall {r}.
HostImageCopyFlagBits -> ((# #) -> r) -> ((# #) -> r) -> r
$bHOST_IMAGE_COPY_MEMCPY_EXT :: HostImageCopyFlagBits
HOST_IMAGE_COPY_MEMCPY_EXT = HOST_IMAGE_COPY_MEMCPY_BIT


-- No documentation found for TopLevel "vkCopyMemoryToImageEXT"
copyMemoryToImageEXT :: Device -> CopyMemoryToImageInfo -> io ()
copyMemoryToImageEXT = Device -> CopyMemoryToImageInfo -> io ()
forall (io :: * -> *).
MonadIO io =>
Device -> CopyMemoryToImageInfo -> io ()
copyMemoryToImage


-- No documentation found for TopLevel "vkCopyImageToMemoryEXT"
copyImageToMemoryEXT :: Device -> CopyImageToMemoryInfo -> io ()
copyImageToMemoryEXT = Device -> CopyImageToMemoryInfo -> io ()
forall (io :: * -> *).
MonadIO io =>
Device -> CopyImageToMemoryInfo -> io ()
copyImageToMemory


-- No documentation found for TopLevel "vkCopyImageToImageEXT"
copyImageToImageEXT :: Device -> CopyImageToImageInfo -> io ()
copyImageToImageEXT = Device -> CopyImageToImageInfo -> io ()
forall (io :: * -> *).
MonadIO io =>
Device -> CopyImageToImageInfo -> io ()
copyImageToImage


-- No documentation found for TopLevel "vkTransitionImageLayoutEXT"
transitionImageLayoutEXT :: Device
-> ("transitions" ::: Vector HostImageLayoutTransitionInfo)
-> io ()
transitionImageLayoutEXT = Device
-> ("transitions" ::: Vector HostImageLayoutTransitionInfo)
-> io ()
forall (io :: * -> *).
MonadIO io =>
Device
-> ("transitions" ::: Vector HostImageLayoutTransitionInfo)
-> io ()
transitionImageLayout


-- No documentation found for TopLevel "vkGetImageSubresourceLayout2EXT"
getImageSubresourceLayout2EXT :: Device -> Image -> ImageSubresource2 -> io (SubresourceLayout2 a)
getImageSubresourceLayout2EXT = Device -> Image -> ImageSubresource2 -> io (SubresourceLayout2 a)
forall (a :: [*]) (io :: * -> *).
(Extendss SubresourceLayout2 a, PokeChain a, PeekChain a,
 MonadIO io) =>
Device -> Image -> ImageSubresource2 -> io (SubresourceLayout2 a)
getImageSubresourceLayout2


-- No documentation found for TopLevel "VkHostImageCopyFlagsEXT"
type HostImageCopyFlagsEXT = HostImageCopyFlags


-- No documentation found for TopLevel "VkHostImageCopyFlagBitsEXT"
type HostImageCopyFlagBitsEXT = HostImageCopyFlagBits


-- No documentation found for TopLevel "VkPhysicalDeviceHostImageCopyFeaturesEXT"
type PhysicalDeviceHostImageCopyFeaturesEXT = PhysicalDeviceHostImageCopyFeatures


-- No documentation found for TopLevel "VkPhysicalDeviceHostImageCopyPropertiesEXT"
type PhysicalDeviceHostImageCopyPropertiesEXT = PhysicalDeviceHostImageCopyProperties


-- No documentation found for TopLevel "VkMemoryToImageCopyEXT"
type MemoryToImageCopyEXT = MemoryToImageCopy


-- No documentation found for TopLevel "VkImageToMemoryCopyEXT"
type ImageToMemoryCopyEXT = ImageToMemoryCopy


-- No documentation found for TopLevel "VkCopyMemoryToImageInfoEXT"
type CopyMemoryToImageInfoEXT = CopyMemoryToImageInfo


-- No documentation found for TopLevel "VkCopyImageToMemoryInfoEXT"
type CopyImageToMemoryInfoEXT = CopyImageToMemoryInfo


-- No documentation found for TopLevel "VkCopyImageToImageInfoEXT"
type CopyImageToImageInfoEXT = CopyImageToImageInfo


-- No documentation found for TopLevel "VkHostImageLayoutTransitionInfoEXT"
type HostImageLayoutTransitionInfoEXT = HostImageLayoutTransitionInfo


-- No documentation found for TopLevel "VkSubresourceHostMemcpySizeEXT"
type SubresourceHostMemcpySizeEXT = SubresourceHostMemcpySize


-- No documentation found for TopLevel "VkHostImageCopyDevicePerformanceQueryEXT"
type HostImageCopyDevicePerformanceQueryEXT = HostImageCopyDevicePerformanceQuery


-- No documentation found for TopLevel "VkImageSubresource2EXT"
type ImageSubresource2EXT = ImageSubresource2


-- No documentation found for TopLevel "VkSubresourceLayout2EXT"
type SubresourceLayout2EXT = SubresourceLayout2


type EXT_HOST_IMAGE_COPY_SPEC_VERSION = 1

-- No documentation found for TopLevel "VK_EXT_HOST_IMAGE_COPY_SPEC_VERSION"
pattern EXT_HOST_IMAGE_COPY_SPEC_VERSION :: forall a . Integral a => a
pattern $mEXT_HOST_IMAGE_COPY_SPEC_VERSION :: forall {r} {a}.
Integral a =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
$bEXT_HOST_IMAGE_COPY_SPEC_VERSION :: forall a. Integral a => a
EXT_HOST_IMAGE_COPY_SPEC_VERSION = 1


type EXT_HOST_IMAGE_COPY_EXTENSION_NAME = "VK_EXT_host_image_copy"

-- No documentation found for TopLevel "VK_EXT_HOST_IMAGE_COPY_EXTENSION_NAME"
pattern EXT_HOST_IMAGE_COPY_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
pattern $mEXT_HOST_IMAGE_COPY_EXTENSION_NAME :: forall {r} {a}.
(Eq a, IsString a) =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
$bEXT_HOST_IMAGE_COPY_EXTENSION_NAME :: forall a. (Eq a, IsString a) => a
EXT_HOST_IMAGE_COPY_EXTENSION_NAME = "VK_EXT_host_image_copy"