diff --git a/include/vulkan/vulkan_core.h b/include/vulkan/vulkan_core.h
--- a/include/vulkan/vulkan_core.h
+++ b/include/vulkan/vulkan_core.h
@@ -43,7 +43,7 @@
 #define VK_VERSION_MINOR(version) (((uint32_t)(version) >> 12) & 0x3ff)
 #define VK_VERSION_PATCH(version) ((uint32_t)(version) & 0xfff)
 // Version of this file
-#define VK_HEADER_VERSION 72
+#define VK_HEADER_VERSION 74
 
 
 #define VK_NULL_HANDLE 0
diff --git a/src-gen/Graphics/Vulkan/Core_1_0.hsc b/src-gen/Graphics/Vulkan/Core_1_0.hsc
--- a/src-gen/Graphics/Vulkan/Core_1_0.hsc
+++ b/src-gen/Graphics/Vulkan/Core_1_0.hsc
@@ -663,24622 +663,22101 @@
 
 type VkCreateInstance = "vkCreateInstance"
 
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INITIALIZATION_FAILED', 'VK_ERROR_LAYER_NOT_PRESENT', 'VK_ERROR_EXTENSION_NOT_PRESENT', 'VK_ERROR_INCOMPATIBLE_DRIVER'.
---
--- > VkResult vkCreateInstance
--- >     ( const VkInstanceCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkInstance* pInstance
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateInstance vkCreateInstance registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkCreateInstance" vkCreateInstance ::
-               Ptr VkInstanceCreateInfo -- ^ pCreateInfo
-                                        ->
-                 Ptr VkAllocationCallbacks -- ^ pAllocator
-                                           -> Ptr VkInstance -- ^ pInstance
-                                                             -> IO VkResult
-
-##else
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INITIALIZATION_FAILED', 'VK_ERROR_LAYER_NOT_PRESENT', 'VK_ERROR_EXTENSION_NOT_PRESENT', 'VK_ERROR_INCOMPATIBLE_DRIVER'.
---
--- > VkResult vkCreateInstance
--- >     ( const VkInstanceCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkInstance* pInstance
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateInstance vkCreateInstance registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCreateInstanceSafe@ and @vkCreateInstance@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateInstance <- vkGetInstanceProc @VkCreateInstance VK_NULL
---
--- or less efficient:
---
--- > myCreateInstance <- vkGetProc @VkCreateInstance
---
-vkCreateInstance ::
-                 Ptr VkInstanceCreateInfo -- ^ pCreateInfo
-                                          ->
-                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                             -> Ptr VkInstance -- ^ pInstance
-                                                               -> IO VkResult
-vkCreateInstance
-  = unsafeDupablePerformIO (vkGetProc @VkCreateInstance)
-
-{-# NOINLINE vkCreateInstance #-}
-##endif
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INITIALIZATION_FAILED', 'VK_ERROR_LAYER_NOT_PRESENT', 'VK_ERROR_EXTENSION_NOT_PRESENT', 'VK_ERROR_INCOMPATIBLE_DRIVER'.
---
--- > VkResult vkCreateInstance
--- >     ( const VkInstanceCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkInstance* pInstance
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateInstance vkCreateInstance registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkCreateInstance" vkCreateInstanceSafe
-               ::
-               Ptr VkInstanceCreateInfo -- ^ pCreateInfo
-                                        ->
-                 Ptr VkAllocationCallbacks -- ^ pAllocator
-                                           -> Ptr VkInstance -- ^ pInstance
-                                                             -> IO VkResult
-
-##else
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INITIALIZATION_FAILED', 'VK_ERROR_LAYER_NOT_PRESENT', 'VK_ERROR_EXTENSION_NOT_PRESENT', 'VK_ERROR_INCOMPATIBLE_DRIVER'.
---
--- > VkResult vkCreateInstance
--- >     ( const VkInstanceCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkInstance* pInstance
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateInstance vkCreateInstance registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCreateInstanceSafe@ and @vkCreateInstance@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateInstance <- vkGetInstanceProc @VkCreateInstance VK_NULL
---
--- or less efficient:
---
--- > myCreateInstance <- vkGetProc @VkCreateInstance
---
-vkCreateInstanceSafe ::
-                     Ptr VkInstanceCreateInfo -- ^ pCreateInfo
-                                              ->
-                       Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                 -> Ptr VkInstance -- ^ pInstance
-                                                                   -> IO VkResult
-vkCreateInstanceSafe = vkCreateInstance
-
-{-# INLINE vkCreateInstanceSafe #-}
-##endif
-
--- | Success codes: 'VK_SUCCESS'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INITIALIZATION_FAILED', 'VK_ERROR_LAYER_NOT_PRESENT', 'VK_ERROR_EXTENSION_NOT_PRESENT', 'VK_ERROR_INCOMPATIBLE_DRIVER'.
---
---   > VkResult vkCreateInstance
---   >     ( const VkInstanceCreateInfo* pCreateInfo
---   >     , const VkAllocationCallbacks* pAllocator
---   >     , VkInstance* pInstance
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateInstance vkCreateInstance registry at www.khronos.org>
-type HS_vkCreateInstance =
-     Ptr VkInstanceCreateInfo -- ^ pCreateInfo
-                              ->
-       Ptr VkAllocationCallbacks -- ^ pAllocator
-                                 -> Ptr VkInstance -- ^ pInstance
-                                                   -> IO VkResult
-
-type PFN_vkCreateInstance = FunPtr HS_vkCreateInstance
-
-foreign import ccall "dynamic" unwrapVkCreateInstance ::
-               PFN_vkCreateInstance -> HS_vkCreateInstance
-
-instance VulkanProc "vkCreateInstance" where
-        type VkProcType "vkCreateInstance" = HS_vkCreateInstance
-        vkProcSymbol = _VkCreateInstance
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCreateInstance
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VkDestroyInstance :: CString
-
-pattern VkDestroyInstance <- (is_VkDestroyInstance -> True)
-  where VkDestroyInstance = _VkDestroyInstance
-
-{-# INLINE _VkDestroyInstance #-}
-
-_VkDestroyInstance :: CString
-_VkDestroyInstance = Ptr "vkDestroyInstance\NUL"##
-
-{-# INLINE is_VkDestroyInstance #-}
-
-is_VkDestroyInstance :: CString -> Bool
-is_VkDestroyInstance = (EQ ==) . cmpCStrings _VkDestroyInstance
-
-type VkDestroyInstance = "vkDestroyInstance"
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- > void vkDestroyInstance
--- >     ( VkInstance instance
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyInstance vkDestroyInstance registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkDestroyInstance" vkDestroyInstance
-               :: VkInstance -- ^ instance
-                             -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                          -> IO ()
-
-##else
--- |
--- > void vkDestroyInstance
--- >     ( VkInstance instance
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyInstance vkDestroyInstance registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkDestroyInstanceSafe@ and @vkDestroyInstance@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDestroyInstance <- vkGetInstanceProc @VkDestroyInstance vkInstance
---
--- or less efficient:
---
--- > myDestroyInstance <- vkGetProc @VkDestroyInstance
---
-vkDestroyInstance ::
-                  VkInstance -- ^ instance
-                             -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                          -> IO ()
-vkDestroyInstance
-  = unsafeDupablePerformIO (vkGetProc @VkDestroyInstance)
-
-{-# NOINLINE vkDestroyInstance #-}
-##endif
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- > void vkDestroyInstance
--- >     ( VkInstance instance
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyInstance vkDestroyInstance registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkDestroyInstance" vkDestroyInstanceSafe
-               :: VkInstance -- ^ instance
-                             -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                          -> IO ()
-
-##else
--- |
--- > void vkDestroyInstance
--- >     ( VkInstance instance
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyInstance vkDestroyInstance registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkDestroyInstanceSafe@ and @vkDestroyInstance@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDestroyInstance <- vkGetInstanceProc @VkDestroyInstance vkInstance
---
--- or less efficient:
---
--- > myDestroyInstance <- vkGetProc @VkDestroyInstance
---
-vkDestroyInstanceSafe ::
-                      VkInstance -- ^ instance
-                                 -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                              -> IO ()
-vkDestroyInstanceSafe = vkDestroyInstance
-
-{-# INLINE vkDestroyInstanceSafe #-}
-##endif
-
--- | > void vkDestroyInstance
---   >     ( VkInstance instance
---   >     , const VkAllocationCallbacks* pAllocator
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyInstance vkDestroyInstance registry at www.khronos.org>
-type HS_vkDestroyInstance =
-     VkInstance -- ^ instance
-                -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                             -> IO ()
-
-type PFN_vkDestroyInstance = FunPtr HS_vkDestroyInstance
-
-foreign import ccall "dynamic" unwrapVkDestroyInstance ::
-               PFN_vkDestroyInstance -> HS_vkDestroyInstance
-
-instance VulkanProc "vkDestroyInstance" where
-        type VkProcType "vkDestroyInstance" = HS_vkDestroyInstance
-        vkProcSymbol = _VkDestroyInstance
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkDestroyInstance
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VkEnumeratePhysicalDevices :: CString
-
-pattern VkEnumeratePhysicalDevices <-
-        (is_VkEnumeratePhysicalDevices -> True)
-  where VkEnumeratePhysicalDevices = _VkEnumeratePhysicalDevices
-
-{-# INLINE _VkEnumeratePhysicalDevices #-}
-
-_VkEnumeratePhysicalDevices :: CString
-_VkEnumeratePhysicalDevices = Ptr "vkEnumeratePhysicalDevices\NUL"##
-
-{-# INLINE is_VkEnumeratePhysicalDevices #-}
-
-is_VkEnumeratePhysicalDevices :: CString -> Bool
-is_VkEnumeratePhysicalDevices
-  = (EQ ==) . cmpCStrings _VkEnumeratePhysicalDevices
-
-type VkEnumeratePhysicalDevices = "vkEnumeratePhysicalDevices"
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INITIALIZATION_FAILED'.
---
--- > VkResult vkEnumeratePhysicalDevices
--- >     ( VkInstance instance
--- >     , uint32_t* pPhysicalDeviceCount
--- >     , VkPhysicalDevice* pPhysicalDevices
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumeratePhysicalDevices vkEnumeratePhysicalDevices registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkEnumeratePhysicalDevices"
-               vkEnumeratePhysicalDevices ::
-               VkInstance -- ^ instance
-                          -> Ptr Word32 -- ^ pPhysicalDeviceCount
-                                        -> Ptr VkPhysicalDevice -- ^ pPhysicalDevices
-                                                                -> IO VkResult
-
-##else
--- |
--- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INITIALIZATION_FAILED'.
---
--- > VkResult vkEnumeratePhysicalDevices
--- >     ( VkInstance instance
--- >     , uint32_t* pPhysicalDeviceCount
--- >     , VkPhysicalDevice* pPhysicalDevices
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumeratePhysicalDevices vkEnumeratePhysicalDevices registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkEnumeratePhysicalDevicesSafe@ and @vkEnumeratePhysicalDevices@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myEnumeratePhysicalDevices <- vkGetInstanceProc @VkEnumeratePhysicalDevices vkInstance
---
--- or less efficient:
---
--- > myEnumeratePhysicalDevices <- vkGetProc @VkEnumeratePhysicalDevices
---
-vkEnumeratePhysicalDevices ::
-                           VkInstance -- ^ instance
-                                      -> Ptr Word32 -- ^ pPhysicalDeviceCount
-                                                    -> Ptr VkPhysicalDevice -- ^ pPhysicalDevices
-                                                                            -> IO VkResult
-vkEnumeratePhysicalDevices
-  = unsafeDupablePerformIO (vkGetProc @VkEnumeratePhysicalDevices)
-
-{-# NOINLINE vkEnumeratePhysicalDevices #-}
-##endif
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INITIALIZATION_FAILED'.
---
--- > VkResult vkEnumeratePhysicalDevices
--- >     ( VkInstance instance
--- >     , uint32_t* pPhysicalDeviceCount
--- >     , VkPhysicalDevice* pPhysicalDevices
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumeratePhysicalDevices vkEnumeratePhysicalDevices registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkEnumeratePhysicalDevices"
-               vkEnumeratePhysicalDevicesSafe ::
-               VkInstance -- ^ instance
-                          -> Ptr Word32 -- ^ pPhysicalDeviceCount
-                                        -> Ptr VkPhysicalDevice -- ^ pPhysicalDevices
-                                                                -> IO VkResult
-
-##else
--- |
--- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INITIALIZATION_FAILED'.
---
--- > VkResult vkEnumeratePhysicalDevices
--- >     ( VkInstance instance
--- >     , uint32_t* pPhysicalDeviceCount
--- >     , VkPhysicalDevice* pPhysicalDevices
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumeratePhysicalDevices vkEnumeratePhysicalDevices registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkEnumeratePhysicalDevicesSafe@ and @vkEnumeratePhysicalDevices@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myEnumeratePhysicalDevices <- vkGetInstanceProc @VkEnumeratePhysicalDevices vkInstance
---
--- or less efficient:
---
--- > myEnumeratePhysicalDevices <- vkGetProc @VkEnumeratePhysicalDevices
---
-vkEnumeratePhysicalDevicesSafe ::
-                               VkInstance -- ^ instance
-                                          -> Ptr Word32 -- ^ pPhysicalDeviceCount
-                                                        -> Ptr VkPhysicalDevice -- ^ pPhysicalDevices
-                                                                                -> IO VkResult
-vkEnumeratePhysicalDevicesSafe = vkEnumeratePhysicalDevices
-
-{-# INLINE vkEnumeratePhysicalDevicesSafe #-}
-##endif
-
--- | Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INITIALIZATION_FAILED'.
---
---   > VkResult vkEnumeratePhysicalDevices
---   >     ( VkInstance instance
---   >     , uint32_t* pPhysicalDeviceCount
---   >     , VkPhysicalDevice* pPhysicalDevices
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumeratePhysicalDevices vkEnumeratePhysicalDevices registry at www.khronos.org>
-type HS_vkEnumeratePhysicalDevices =
-     VkInstance -- ^ instance
-                -> Ptr Word32 -- ^ pPhysicalDeviceCount
-                              -> Ptr VkPhysicalDevice -- ^ pPhysicalDevices
-                                                      -> IO VkResult
-
-type PFN_vkEnumeratePhysicalDevices =
-     FunPtr HS_vkEnumeratePhysicalDevices
-
-foreign import ccall "dynamic" unwrapVkEnumeratePhysicalDevices ::
-               PFN_vkEnumeratePhysicalDevices -> HS_vkEnumeratePhysicalDevices
-
-instance VulkanProc "vkEnumeratePhysicalDevices" where
-        type VkProcType "vkEnumeratePhysicalDevices" =
-             HS_vkEnumeratePhysicalDevices
-        vkProcSymbol = _VkEnumeratePhysicalDevices
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkEnumeratePhysicalDevices
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VkGetPhysicalDeviceFeatures :: CString
-
-pattern VkGetPhysicalDeviceFeatures <-
-        (is_VkGetPhysicalDeviceFeatures -> True)
-  where VkGetPhysicalDeviceFeatures = _VkGetPhysicalDeviceFeatures
-
-{-# INLINE _VkGetPhysicalDeviceFeatures #-}
-
-_VkGetPhysicalDeviceFeatures :: CString
-_VkGetPhysicalDeviceFeatures
-  = Ptr "vkGetPhysicalDeviceFeatures\NUL"##
-
-{-# INLINE is_VkGetPhysicalDeviceFeatures #-}
-
-is_VkGetPhysicalDeviceFeatures :: CString -> Bool
-is_VkGetPhysicalDeviceFeatures
-  = (EQ ==) . cmpCStrings _VkGetPhysicalDeviceFeatures
-
-type VkGetPhysicalDeviceFeatures = "vkGetPhysicalDeviceFeatures"
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- > void vkGetPhysicalDeviceFeatures
--- >     ( VkPhysicalDevice physicalDevice
--- >     , VkPhysicalDeviceFeatures* pFeatures
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceFeatures vkGetPhysicalDeviceFeatures registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkGetPhysicalDeviceFeatures"
-               vkGetPhysicalDeviceFeatures ::
-               VkPhysicalDevice -- ^ physicalDevice
-                                -> Ptr VkPhysicalDeviceFeatures -- ^ pFeatures
-                                                                -> IO ()
-
-##else
--- |
--- > void vkGetPhysicalDeviceFeatures
--- >     ( VkPhysicalDevice physicalDevice
--- >     , VkPhysicalDeviceFeatures* pFeatures
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceFeatures vkGetPhysicalDeviceFeatures registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkGetPhysicalDeviceFeaturesSafe@ and @vkGetPhysicalDeviceFeatures@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetPhysicalDeviceFeatures <- vkGetInstanceProc @VkGetPhysicalDeviceFeatures vkInstance
---
--- or less efficient:
---
--- > myGetPhysicalDeviceFeatures <- vkGetProc @VkGetPhysicalDeviceFeatures
---
-vkGetPhysicalDeviceFeatures ::
-                            VkPhysicalDevice -- ^ physicalDevice
-                                             -> Ptr VkPhysicalDeviceFeatures -- ^ pFeatures
-                                                                             -> IO ()
-vkGetPhysicalDeviceFeatures
-  = unsafeDupablePerformIO (vkGetProc @VkGetPhysicalDeviceFeatures)
-
-{-# NOINLINE vkGetPhysicalDeviceFeatures #-}
-##endif
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- > void vkGetPhysicalDeviceFeatures
--- >     ( VkPhysicalDevice physicalDevice
--- >     , VkPhysicalDeviceFeatures* pFeatures
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceFeatures vkGetPhysicalDeviceFeatures registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkGetPhysicalDeviceFeatures"
-               vkGetPhysicalDeviceFeaturesSafe ::
-               VkPhysicalDevice -- ^ physicalDevice
-                                -> Ptr VkPhysicalDeviceFeatures -- ^ pFeatures
-                                                                -> IO ()
-
-##else
--- |
--- > void vkGetPhysicalDeviceFeatures
--- >     ( VkPhysicalDevice physicalDevice
--- >     , VkPhysicalDeviceFeatures* pFeatures
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceFeatures vkGetPhysicalDeviceFeatures registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkGetPhysicalDeviceFeaturesSafe@ and @vkGetPhysicalDeviceFeatures@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetPhysicalDeviceFeatures <- vkGetInstanceProc @VkGetPhysicalDeviceFeatures vkInstance
---
--- or less efficient:
---
--- > myGetPhysicalDeviceFeatures <- vkGetProc @VkGetPhysicalDeviceFeatures
---
-vkGetPhysicalDeviceFeaturesSafe ::
-                                VkPhysicalDevice -- ^ physicalDevice
-                                                 -> Ptr VkPhysicalDeviceFeatures -- ^ pFeatures
-                                                                                 -> IO ()
-vkGetPhysicalDeviceFeaturesSafe = vkGetPhysicalDeviceFeatures
-
-{-# INLINE vkGetPhysicalDeviceFeaturesSafe #-}
-##endif
-
--- | > void vkGetPhysicalDeviceFeatures
---   >     ( VkPhysicalDevice physicalDevice
---   >     , VkPhysicalDeviceFeatures* pFeatures
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceFeatures vkGetPhysicalDeviceFeatures registry at www.khronos.org>
-type HS_vkGetPhysicalDeviceFeatures =
-     VkPhysicalDevice -- ^ physicalDevice
-                      -> Ptr VkPhysicalDeviceFeatures -- ^ pFeatures
-                                                      -> IO ()
-
-type PFN_vkGetPhysicalDeviceFeatures =
-     FunPtr HS_vkGetPhysicalDeviceFeatures
-
-foreign import ccall "dynamic" unwrapVkGetPhysicalDeviceFeatures ::
-               PFN_vkGetPhysicalDeviceFeatures -> HS_vkGetPhysicalDeviceFeatures
-
-instance VulkanProc "vkGetPhysicalDeviceFeatures" where
-        type VkProcType "vkGetPhysicalDeviceFeatures" =
-             HS_vkGetPhysicalDeviceFeatures
-        vkProcSymbol = _VkGetPhysicalDeviceFeatures
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkGetPhysicalDeviceFeatures
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VkGetPhysicalDeviceFormatProperties :: CString
-
-pattern VkGetPhysicalDeviceFormatProperties <-
-        (is_VkGetPhysicalDeviceFormatProperties -> True)
-  where VkGetPhysicalDeviceFormatProperties
-          = _VkGetPhysicalDeviceFormatProperties
-
-{-# INLINE _VkGetPhysicalDeviceFormatProperties #-}
-
-_VkGetPhysicalDeviceFormatProperties :: CString
-_VkGetPhysicalDeviceFormatProperties
-  = Ptr "vkGetPhysicalDeviceFormatProperties\NUL"##
-
-{-# INLINE is_VkGetPhysicalDeviceFormatProperties #-}
-
-is_VkGetPhysicalDeviceFormatProperties :: CString -> Bool
-is_VkGetPhysicalDeviceFormatProperties
-  = (EQ ==) . cmpCStrings _VkGetPhysicalDeviceFormatProperties
-
-type VkGetPhysicalDeviceFormatProperties =
-     "vkGetPhysicalDeviceFormatProperties"
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- > void vkGetPhysicalDeviceFormatProperties
--- >     ( VkPhysicalDevice physicalDevice
--- >     , VkFormat format
--- >     , VkFormatProperties* pFormatProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceFormatProperties vkGetPhysicalDeviceFormatProperties registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkGetPhysicalDeviceFormatProperties"
-               vkGetPhysicalDeviceFormatProperties ::
-               VkPhysicalDevice -- ^ physicalDevice
-                                -> VkFormat -- ^ format
-                                            -> Ptr VkFormatProperties -- ^ pFormatProperties
-                                                                      -> IO ()
-
-##else
--- |
--- > void vkGetPhysicalDeviceFormatProperties
--- >     ( VkPhysicalDevice physicalDevice
--- >     , VkFormat format
--- >     , VkFormatProperties* pFormatProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceFormatProperties vkGetPhysicalDeviceFormatProperties registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkGetPhysicalDeviceFormatPropertiesSafe@ and @vkGetPhysicalDeviceFormatProperties@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetPhysicalDeviceFormatProperties <- vkGetInstanceProc @VkGetPhysicalDeviceFormatProperties vkInstance
---
--- or less efficient:
---
--- > myGetPhysicalDeviceFormatProperties <- vkGetProc @VkGetPhysicalDeviceFormatProperties
---
-vkGetPhysicalDeviceFormatProperties ::
-                                    VkPhysicalDevice -- ^ physicalDevice
-                                                     -> VkFormat -- ^ format
-                                                                 -> Ptr VkFormatProperties -- ^ pFormatProperties
-                                                                                           -> IO ()
-vkGetPhysicalDeviceFormatProperties
-  = unsafeDupablePerformIO
-      (vkGetProc @VkGetPhysicalDeviceFormatProperties)
-
-{-# NOINLINE vkGetPhysicalDeviceFormatProperties #-}
-##endif
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- > void vkGetPhysicalDeviceFormatProperties
--- >     ( VkPhysicalDevice physicalDevice
--- >     , VkFormat format
--- >     , VkFormatProperties* pFormatProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceFormatProperties vkGetPhysicalDeviceFormatProperties registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkGetPhysicalDeviceFormatProperties"
-               vkGetPhysicalDeviceFormatPropertiesSafe ::
-               VkPhysicalDevice -- ^ physicalDevice
-                                -> VkFormat -- ^ format
-                                            -> Ptr VkFormatProperties -- ^ pFormatProperties
-                                                                      -> IO ()
-
-##else
--- |
--- > void vkGetPhysicalDeviceFormatProperties
--- >     ( VkPhysicalDevice physicalDevice
--- >     , VkFormat format
--- >     , VkFormatProperties* pFormatProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceFormatProperties vkGetPhysicalDeviceFormatProperties registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkGetPhysicalDeviceFormatPropertiesSafe@ and @vkGetPhysicalDeviceFormatProperties@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetPhysicalDeviceFormatProperties <- vkGetInstanceProc @VkGetPhysicalDeviceFormatProperties vkInstance
---
--- or less efficient:
---
--- > myGetPhysicalDeviceFormatProperties <- vkGetProc @VkGetPhysicalDeviceFormatProperties
---
-vkGetPhysicalDeviceFormatPropertiesSafe ::
-                                        VkPhysicalDevice -- ^ physicalDevice
-                                                         ->
-                                          VkFormat -- ^ format
-                                                   -> Ptr VkFormatProperties -- ^ pFormatProperties
-                                                                             -> IO ()
-vkGetPhysicalDeviceFormatPropertiesSafe
-  = vkGetPhysicalDeviceFormatProperties
-
-{-# INLINE vkGetPhysicalDeviceFormatPropertiesSafe #-}
-##endif
-
--- | > void vkGetPhysicalDeviceFormatProperties
---   >     ( VkPhysicalDevice physicalDevice
---   >     , VkFormat format
---   >     , VkFormatProperties* pFormatProperties
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceFormatProperties vkGetPhysicalDeviceFormatProperties registry at www.khronos.org>
-type HS_vkGetPhysicalDeviceFormatProperties =
-     VkPhysicalDevice -- ^ physicalDevice
-                      -> VkFormat -- ^ format
-                                  -> Ptr VkFormatProperties -- ^ pFormatProperties
-                                                            -> IO ()
-
-type PFN_vkGetPhysicalDeviceFormatProperties =
-     FunPtr HS_vkGetPhysicalDeviceFormatProperties
-
-foreign import ccall "dynamic"
-               unwrapVkGetPhysicalDeviceFormatProperties ::
-               PFN_vkGetPhysicalDeviceFormatProperties ->
-                 HS_vkGetPhysicalDeviceFormatProperties
-
-instance VulkanProc "vkGetPhysicalDeviceFormatProperties" where
-        type VkProcType "vkGetPhysicalDeviceFormatProperties" =
-             HS_vkGetPhysicalDeviceFormatProperties
-        vkProcSymbol = _VkGetPhysicalDeviceFormatProperties
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkGetPhysicalDeviceFormatProperties
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VkGetPhysicalDeviceImageFormatProperties :: CString
-
-pattern VkGetPhysicalDeviceImageFormatProperties <-
-        (is_VkGetPhysicalDeviceImageFormatProperties -> True)
-  where VkGetPhysicalDeviceImageFormatProperties
-          = _VkGetPhysicalDeviceImageFormatProperties
-
-{-# INLINE _VkGetPhysicalDeviceImageFormatProperties #-}
-
-_VkGetPhysicalDeviceImageFormatProperties :: CString
-_VkGetPhysicalDeviceImageFormatProperties
-  = Ptr "vkGetPhysicalDeviceImageFormatProperties\NUL"##
-
-{-# INLINE is_VkGetPhysicalDeviceImageFormatProperties #-}
-
-is_VkGetPhysicalDeviceImageFormatProperties :: CString -> Bool
-is_VkGetPhysicalDeviceImageFormatProperties
-  = (EQ ==) . cmpCStrings _VkGetPhysicalDeviceImageFormatProperties
-
-type VkGetPhysicalDeviceImageFormatProperties =
-     "vkGetPhysicalDeviceImageFormatProperties"
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_FORMAT_NOT_SUPPORTED'.
---
--- > VkResult vkGetPhysicalDeviceImageFormatProperties
--- >     ( VkPhysicalDevice physicalDevice
--- >     , VkFormat format
--- >     , VkImageType type
--- >     , VkImageTiling tiling
--- >     , VkImageUsageFlags usage
--- >     , VkImageCreateFlags flags
--- >     , VkImageFormatProperties* pImageFormatProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceImageFormatProperties vkGetPhysicalDeviceImageFormatProperties registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe
-               "vkGetPhysicalDeviceImageFormatProperties"
-               vkGetPhysicalDeviceImageFormatProperties ::
-               VkPhysicalDevice -- ^ physicalDevice
-                                ->
-                 VkFormat -- ^ format
-                          ->
-                   VkImageType -- ^ type
-                               ->
-                     VkImageTiling -- ^ tiling
-                                   ->
-                       VkImageUsageFlags -- ^ usage
-                                         ->
-                         VkImageCreateFlags -- ^ flags
-                                            -> Ptr VkImageFormatProperties -- ^ pImageFormatProperties
-                                                                           -> IO VkResult
-
-##else
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_FORMAT_NOT_SUPPORTED'.
---
--- > VkResult vkGetPhysicalDeviceImageFormatProperties
--- >     ( VkPhysicalDevice physicalDevice
--- >     , VkFormat format
--- >     , VkImageType type
--- >     , VkImageTiling tiling
--- >     , VkImageUsageFlags usage
--- >     , VkImageCreateFlags flags
--- >     , VkImageFormatProperties* pImageFormatProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceImageFormatProperties vkGetPhysicalDeviceImageFormatProperties registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkGetPhysicalDeviceImageFormatPropertiesSafe@ and @vkGetPhysicalDeviceImageFormatProperties@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetPhysicalDeviceImageFormatProperties <- vkGetInstanceProc @VkGetPhysicalDeviceImageFormatProperties vkInstance
---
--- or less efficient:
---
--- > myGetPhysicalDeviceImageFormatProperties <- vkGetProc @VkGetPhysicalDeviceImageFormatProperties
---
-vkGetPhysicalDeviceImageFormatProperties ::
-                                         VkPhysicalDevice -- ^ physicalDevice
-                                                          ->
-                                           VkFormat -- ^ format
-                                                    ->
-                                             VkImageType -- ^ type
-                                                         ->
-                                               VkImageTiling -- ^ tiling
-                                                             ->
-                                                 VkImageUsageFlags -- ^ usage
-                                                                   ->
-                                                   VkImageCreateFlags -- ^ flags
-                                                                      ->
-                                                     Ptr VkImageFormatProperties -- ^ pImageFormatProperties
-                                                                                 -> IO VkResult
-vkGetPhysicalDeviceImageFormatProperties
-  = unsafeDupablePerformIO
-      (vkGetProc @VkGetPhysicalDeviceImageFormatProperties)
-
-{-# NOINLINE vkGetPhysicalDeviceImageFormatProperties #-}
-##endif
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_FORMAT_NOT_SUPPORTED'.
---
--- > VkResult vkGetPhysicalDeviceImageFormatProperties
--- >     ( VkPhysicalDevice physicalDevice
--- >     , VkFormat format
--- >     , VkImageType type
--- >     , VkImageTiling tiling
--- >     , VkImageUsageFlags usage
--- >     , VkImageCreateFlags flags
--- >     , VkImageFormatProperties* pImageFormatProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceImageFormatProperties vkGetPhysicalDeviceImageFormatProperties registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe
-               "vkGetPhysicalDeviceImageFormatProperties"
-               vkGetPhysicalDeviceImageFormatPropertiesSafe ::
-               VkPhysicalDevice -- ^ physicalDevice
-                                ->
-                 VkFormat -- ^ format
-                          ->
-                   VkImageType -- ^ type
-                               ->
-                     VkImageTiling -- ^ tiling
-                                   ->
-                       VkImageUsageFlags -- ^ usage
-                                         ->
-                         VkImageCreateFlags -- ^ flags
-                                            -> Ptr VkImageFormatProperties -- ^ pImageFormatProperties
-                                                                           -> IO VkResult
-
-##else
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_FORMAT_NOT_SUPPORTED'.
---
--- > VkResult vkGetPhysicalDeviceImageFormatProperties
--- >     ( VkPhysicalDevice physicalDevice
--- >     , VkFormat format
--- >     , VkImageType type
--- >     , VkImageTiling tiling
--- >     , VkImageUsageFlags usage
--- >     , VkImageCreateFlags flags
--- >     , VkImageFormatProperties* pImageFormatProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceImageFormatProperties vkGetPhysicalDeviceImageFormatProperties registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkGetPhysicalDeviceImageFormatPropertiesSafe@ and @vkGetPhysicalDeviceImageFormatProperties@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetPhysicalDeviceImageFormatProperties <- vkGetInstanceProc @VkGetPhysicalDeviceImageFormatProperties vkInstance
---
--- or less efficient:
---
--- > myGetPhysicalDeviceImageFormatProperties <- vkGetProc @VkGetPhysicalDeviceImageFormatProperties
---
-vkGetPhysicalDeviceImageFormatPropertiesSafe ::
-                                             VkPhysicalDevice -- ^ physicalDevice
-                                                              ->
-                                               VkFormat -- ^ format
-                                                        ->
-                                                 VkImageType -- ^ type
-                                                             ->
-                                                   VkImageTiling -- ^ tiling
-                                                                 ->
-                                                     VkImageUsageFlags -- ^ usage
-                                                                       ->
-                                                       VkImageCreateFlags -- ^ flags
-                                                                          ->
-                                                         Ptr VkImageFormatProperties -- ^ pImageFormatProperties
-                                                                                     -> IO VkResult
-vkGetPhysicalDeviceImageFormatPropertiesSafe
-  = vkGetPhysicalDeviceImageFormatProperties
-
-{-# INLINE vkGetPhysicalDeviceImageFormatPropertiesSafe #-}
-##endif
-
--- | Success codes: 'VK_SUCCESS'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_FORMAT_NOT_SUPPORTED'.
---
---   > VkResult vkGetPhysicalDeviceImageFormatProperties
---   >     ( VkPhysicalDevice physicalDevice
---   >     , VkFormat format
---   >     , VkImageType type
---   >     , VkImageTiling tiling
---   >     , VkImageUsageFlags usage
---   >     , VkImageCreateFlags flags
---   >     , VkImageFormatProperties* pImageFormatProperties
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceImageFormatProperties vkGetPhysicalDeviceImageFormatProperties registry at www.khronos.org>
-type HS_vkGetPhysicalDeviceImageFormatProperties =
-     VkPhysicalDevice -- ^ physicalDevice
-                      ->
-       VkFormat -- ^ format
-                ->
-         VkImageType -- ^ type
-                     ->
-           VkImageTiling -- ^ tiling
-                         ->
-             VkImageUsageFlags -- ^ usage
-                               ->
-               VkImageCreateFlags -- ^ flags
-                                  -> Ptr VkImageFormatProperties -- ^ pImageFormatProperties
-                                                                 -> IO VkResult
-
-type PFN_vkGetPhysicalDeviceImageFormatProperties =
-     FunPtr HS_vkGetPhysicalDeviceImageFormatProperties
-
-foreign import ccall "dynamic"
-               unwrapVkGetPhysicalDeviceImageFormatProperties ::
-               PFN_vkGetPhysicalDeviceImageFormatProperties ->
-                 HS_vkGetPhysicalDeviceImageFormatProperties
-
-instance VulkanProc "vkGetPhysicalDeviceImageFormatProperties"
-         where
-        type VkProcType "vkGetPhysicalDeviceImageFormatProperties" =
-             HS_vkGetPhysicalDeviceImageFormatProperties
-        vkProcSymbol = _VkGetPhysicalDeviceImageFormatProperties
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkGetPhysicalDeviceImageFormatProperties
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VkGetPhysicalDeviceProperties :: CString
-
-pattern VkGetPhysicalDeviceProperties <-
-        (is_VkGetPhysicalDeviceProperties -> True)
-  where VkGetPhysicalDeviceProperties
-          = _VkGetPhysicalDeviceProperties
-
-{-# INLINE _VkGetPhysicalDeviceProperties #-}
-
-_VkGetPhysicalDeviceProperties :: CString
-_VkGetPhysicalDeviceProperties
-  = Ptr "vkGetPhysicalDeviceProperties\NUL"##
-
-{-# INLINE is_VkGetPhysicalDeviceProperties #-}
-
-is_VkGetPhysicalDeviceProperties :: CString -> Bool
-is_VkGetPhysicalDeviceProperties
-  = (EQ ==) . cmpCStrings _VkGetPhysicalDeviceProperties
-
-type VkGetPhysicalDeviceProperties =
-     "vkGetPhysicalDeviceProperties"
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- > void vkGetPhysicalDeviceProperties
--- >     ( VkPhysicalDevice physicalDevice
--- >     , VkPhysicalDeviceProperties* pProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceProperties vkGetPhysicalDeviceProperties registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkGetPhysicalDeviceProperties"
-               vkGetPhysicalDeviceProperties ::
-               VkPhysicalDevice -- ^ physicalDevice
-                                -> Ptr VkPhysicalDeviceProperties -- ^ pProperties
-                                                                  -> IO ()
-
-##else
--- |
--- > void vkGetPhysicalDeviceProperties
--- >     ( VkPhysicalDevice physicalDevice
--- >     , VkPhysicalDeviceProperties* pProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceProperties vkGetPhysicalDeviceProperties registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkGetPhysicalDevicePropertiesSafe@ and @vkGetPhysicalDeviceProperties@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetPhysicalDeviceProperties <- vkGetInstanceProc @VkGetPhysicalDeviceProperties vkInstance
---
--- or less efficient:
---
--- > myGetPhysicalDeviceProperties <- vkGetProc @VkGetPhysicalDeviceProperties
---
-vkGetPhysicalDeviceProperties ::
-                              VkPhysicalDevice -- ^ physicalDevice
-                                               -> Ptr VkPhysicalDeviceProperties -- ^ pProperties
-                                                                                 -> IO ()
-vkGetPhysicalDeviceProperties
-  = unsafeDupablePerformIO (vkGetProc @VkGetPhysicalDeviceProperties)
-
-{-# NOINLINE vkGetPhysicalDeviceProperties #-}
-##endif
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- > void vkGetPhysicalDeviceProperties
--- >     ( VkPhysicalDevice physicalDevice
--- >     , VkPhysicalDeviceProperties* pProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceProperties vkGetPhysicalDeviceProperties registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkGetPhysicalDeviceProperties"
-               vkGetPhysicalDevicePropertiesSafe ::
-               VkPhysicalDevice -- ^ physicalDevice
-                                -> Ptr VkPhysicalDeviceProperties -- ^ pProperties
-                                                                  -> IO ()
-
-##else
--- |
--- > void vkGetPhysicalDeviceProperties
--- >     ( VkPhysicalDevice physicalDevice
--- >     , VkPhysicalDeviceProperties* pProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceProperties vkGetPhysicalDeviceProperties registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkGetPhysicalDevicePropertiesSafe@ and @vkGetPhysicalDeviceProperties@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetPhysicalDeviceProperties <- vkGetInstanceProc @VkGetPhysicalDeviceProperties vkInstance
---
--- or less efficient:
---
--- > myGetPhysicalDeviceProperties <- vkGetProc @VkGetPhysicalDeviceProperties
---
-vkGetPhysicalDevicePropertiesSafe ::
-                                  VkPhysicalDevice -- ^ physicalDevice
-                                                   -> Ptr VkPhysicalDeviceProperties -- ^ pProperties
-                                                                                     -> IO ()
-vkGetPhysicalDevicePropertiesSafe = vkGetPhysicalDeviceProperties
-
-{-# INLINE vkGetPhysicalDevicePropertiesSafe #-}
-##endif
-
--- | > void vkGetPhysicalDeviceProperties
---   >     ( VkPhysicalDevice physicalDevice
---   >     , VkPhysicalDeviceProperties* pProperties
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceProperties vkGetPhysicalDeviceProperties registry at www.khronos.org>
-type HS_vkGetPhysicalDeviceProperties =
-     VkPhysicalDevice -- ^ physicalDevice
-                      -> Ptr VkPhysicalDeviceProperties -- ^ pProperties
-                                                        -> IO ()
-
-type PFN_vkGetPhysicalDeviceProperties =
-     FunPtr HS_vkGetPhysicalDeviceProperties
-
-foreign import ccall "dynamic" unwrapVkGetPhysicalDeviceProperties
-               ::
-               PFN_vkGetPhysicalDeviceProperties ->
-                 HS_vkGetPhysicalDeviceProperties
-
-instance VulkanProc "vkGetPhysicalDeviceProperties" where
-        type VkProcType "vkGetPhysicalDeviceProperties" =
-             HS_vkGetPhysicalDeviceProperties
-        vkProcSymbol = _VkGetPhysicalDeviceProperties
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkGetPhysicalDeviceProperties
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VkGetPhysicalDeviceQueueFamilyProperties :: CString
-
-pattern VkGetPhysicalDeviceQueueFamilyProperties <-
-        (is_VkGetPhysicalDeviceQueueFamilyProperties -> True)
-  where VkGetPhysicalDeviceQueueFamilyProperties
-          = _VkGetPhysicalDeviceQueueFamilyProperties
-
-{-# INLINE _VkGetPhysicalDeviceQueueFamilyProperties #-}
-
-_VkGetPhysicalDeviceQueueFamilyProperties :: CString
-_VkGetPhysicalDeviceQueueFamilyProperties
-  = Ptr "vkGetPhysicalDeviceQueueFamilyProperties\NUL"##
-
-{-# INLINE is_VkGetPhysicalDeviceQueueFamilyProperties #-}
-
-is_VkGetPhysicalDeviceQueueFamilyProperties :: CString -> Bool
-is_VkGetPhysicalDeviceQueueFamilyProperties
-  = (EQ ==) . cmpCStrings _VkGetPhysicalDeviceQueueFamilyProperties
-
-type VkGetPhysicalDeviceQueueFamilyProperties =
-     "vkGetPhysicalDeviceQueueFamilyProperties"
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- > void vkGetPhysicalDeviceQueueFamilyProperties
--- >     ( VkPhysicalDevice physicalDevice
--- >     , uint32_t* pQueueFamilyPropertyCount
--- >     , VkQueueFamilyProperties* pQueueFamilyProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceQueueFamilyProperties vkGetPhysicalDeviceQueueFamilyProperties registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe
-               "vkGetPhysicalDeviceQueueFamilyProperties"
-               vkGetPhysicalDeviceQueueFamilyProperties ::
-               VkPhysicalDevice -- ^ physicalDevice
-                                ->
-                 Ptr Word32 -- ^ pQueueFamilyPropertyCount
-                            -> Ptr VkQueueFamilyProperties -- ^ pQueueFamilyProperties
-                                                           -> IO ()
-
-##else
--- |
--- > void vkGetPhysicalDeviceQueueFamilyProperties
--- >     ( VkPhysicalDevice physicalDevice
--- >     , uint32_t* pQueueFamilyPropertyCount
--- >     , VkQueueFamilyProperties* pQueueFamilyProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceQueueFamilyProperties vkGetPhysicalDeviceQueueFamilyProperties registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkGetPhysicalDeviceQueueFamilyPropertiesSafe@ and @vkGetPhysicalDeviceQueueFamilyProperties@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetPhysicalDeviceQueueFamilyProperties <- vkGetInstanceProc @VkGetPhysicalDeviceQueueFamilyProperties vkInstance
---
--- or less efficient:
---
--- > myGetPhysicalDeviceQueueFamilyProperties <- vkGetProc @VkGetPhysicalDeviceQueueFamilyProperties
---
-vkGetPhysicalDeviceQueueFamilyProperties ::
-                                         VkPhysicalDevice -- ^ physicalDevice
-                                                          ->
-                                           Ptr Word32 -- ^ pQueueFamilyPropertyCount
-                                                      -> Ptr VkQueueFamilyProperties -- ^ pQueueFamilyProperties
-                                                                                     -> IO ()
-vkGetPhysicalDeviceQueueFamilyProperties
-  = unsafeDupablePerformIO
-      (vkGetProc @VkGetPhysicalDeviceQueueFamilyProperties)
-
-{-# NOINLINE vkGetPhysicalDeviceQueueFamilyProperties #-}
-##endif
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- > void vkGetPhysicalDeviceQueueFamilyProperties
--- >     ( VkPhysicalDevice physicalDevice
--- >     , uint32_t* pQueueFamilyPropertyCount
--- >     , VkQueueFamilyProperties* pQueueFamilyProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceQueueFamilyProperties vkGetPhysicalDeviceQueueFamilyProperties registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe
-               "vkGetPhysicalDeviceQueueFamilyProperties"
-               vkGetPhysicalDeviceQueueFamilyPropertiesSafe ::
-               VkPhysicalDevice -- ^ physicalDevice
-                                ->
-                 Ptr Word32 -- ^ pQueueFamilyPropertyCount
-                            -> Ptr VkQueueFamilyProperties -- ^ pQueueFamilyProperties
-                                                           -> IO ()
-
-##else
--- |
--- > void vkGetPhysicalDeviceQueueFamilyProperties
--- >     ( VkPhysicalDevice physicalDevice
--- >     , uint32_t* pQueueFamilyPropertyCount
--- >     , VkQueueFamilyProperties* pQueueFamilyProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceQueueFamilyProperties vkGetPhysicalDeviceQueueFamilyProperties registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkGetPhysicalDeviceQueueFamilyPropertiesSafe@ and @vkGetPhysicalDeviceQueueFamilyProperties@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetPhysicalDeviceQueueFamilyProperties <- vkGetInstanceProc @VkGetPhysicalDeviceQueueFamilyProperties vkInstance
---
--- or less efficient:
---
--- > myGetPhysicalDeviceQueueFamilyProperties <- vkGetProc @VkGetPhysicalDeviceQueueFamilyProperties
---
-vkGetPhysicalDeviceQueueFamilyPropertiesSafe ::
-                                             VkPhysicalDevice -- ^ physicalDevice
-                                                              ->
-                                               Ptr Word32 -- ^ pQueueFamilyPropertyCount
-                                                          -> Ptr VkQueueFamilyProperties -- ^ pQueueFamilyProperties
-                                                                                         -> IO ()
-vkGetPhysicalDeviceQueueFamilyPropertiesSafe
-  = vkGetPhysicalDeviceQueueFamilyProperties
-
-{-# INLINE vkGetPhysicalDeviceQueueFamilyPropertiesSafe #-}
-##endif
-
--- | > void vkGetPhysicalDeviceQueueFamilyProperties
---   >     ( VkPhysicalDevice physicalDevice
---   >     , uint32_t* pQueueFamilyPropertyCount
---   >     , VkQueueFamilyProperties* pQueueFamilyProperties
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceQueueFamilyProperties vkGetPhysicalDeviceQueueFamilyProperties registry at www.khronos.org>
-type HS_vkGetPhysicalDeviceQueueFamilyProperties =
-     VkPhysicalDevice -- ^ physicalDevice
-                      ->
-       Ptr Word32 -- ^ pQueueFamilyPropertyCount
-                  -> Ptr VkQueueFamilyProperties -- ^ pQueueFamilyProperties
-                                                 -> IO ()
-
-type PFN_vkGetPhysicalDeviceQueueFamilyProperties =
-     FunPtr HS_vkGetPhysicalDeviceQueueFamilyProperties
-
-foreign import ccall "dynamic"
-               unwrapVkGetPhysicalDeviceQueueFamilyProperties ::
-               PFN_vkGetPhysicalDeviceQueueFamilyProperties ->
-                 HS_vkGetPhysicalDeviceQueueFamilyProperties
-
-instance VulkanProc "vkGetPhysicalDeviceQueueFamilyProperties"
-         where
-        type VkProcType "vkGetPhysicalDeviceQueueFamilyProperties" =
-             HS_vkGetPhysicalDeviceQueueFamilyProperties
-        vkProcSymbol = _VkGetPhysicalDeviceQueueFamilyProperties
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkGetPhysicalDeviceQueueFamilyProperties
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VkGetPhysicalDeviceMemoryProperties :: CString
-
-pattern VkGetPhysicalDeviceMemoryProperties <-
-        (is_VkGetPhysicalDeviceMemoryProperties -> True)
-  where VkGetPhysicalDeviceMemoryProperties
-          = _VkGetPhysicalDeviceMemoryProperties
-
-{-# INLINE _VkGetPhysicalDeviceMemoryProperties #-}
-
-_VkGetPhysicalDeviceMemoryProperties :: CString
-_VkGetPhysicalDeviceMemoryProperties
-  = Ptr "vkGetPhysicalDeviceMemoryProperties\NUL"##
-
-{-# INLINE is_VkGetPhysicalDeviceMemoryProperties #-}
-
-is_VkGetPhysicalDeviceMemoryProperties :: CString -> Bool
-is_VkGetPhysicalDeviceMemoryProperties
-  = (EQ ==) . cmpCStrings _VkGetPhysicalDeviceMemoryProperties
-
-type VkGetPhysicalDeviceMemoryProperties =
-     "vkGetPhysicalDeviceMemoryProperties"
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- > void vkGetPhysicalDeviceMemoryProperties
--- >     ( VkPhysicalDevice physicalDevice
--- >     , VkPhysicalDeviceMemoryProperties* pMemoryProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceMemoryProperties vkGetPhysicalDeviceMemoryProperties registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkGetPhysicalDeviceMemoryProperties"
-               vkGetPhysicalDeviceMemoryProperties ::
-               VkPhysicalDevice -- ^ physicalDevice
-                                -> Ptr VkPhysicalDeviceMemoryProperties -- ^ pMemoryProperties
-                                                                        -> IO ()
-
-##else
--- |
--- > void vkGetPhysicalDeviceMemoryProperties
--- >     ( VkPhysicalDevice physicalDevice
--- >     , VkPhysicalDeviceMemoryProperties* pMemoryProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceMemoryProperties vkGetPhysicalDeviceMemoryProperties registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkGetPhysicalDeviceMemoryPropertiesSafe@ and @vkGetPhysicalDeviceMemoryProperties@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetPhysicalDeviceMemoryProperties <- vkGetInstanceProc @VkGetPhysicalDeviceMemoryProperties vkInstance
---
--- or less efficient:
---
--- > myGetPhysicalDeviceMemoryProperties <- vkGetProc @VkGetPhysicalDeviceMemoryProperties
---
-vkGetPhysicalDeviceMemoryProperties ::
-                                    VkPhysicalDevice -- ^ physicalDevice
-                                                     ->
-                                      Ptr VkPhysicalDeviceMemoryProperties -- ^ pMemoryProperties
-                                                                           -> IO ()
-vkGetPhysicalDeviceMemoryProperties
-  = unsafeDupablePerformIO
-      (vkGetProc @VkGetPhysicalDeviceMemoryProperties)
-
-{-# NOINLINE vkGetPhysicalDeviceMemoryProperties #-}
-##endif
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- > void vkGetPhysicalDeviceMemoryProperties
--- >     ( VkPhysicalDevice physicalDevice
--- >     , VkPhysicalDeviceMemoryProperties* pMemoryProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceMemoryProperties vkGetPhysicalDeviceMemoryProperties registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkGetPhysicalDeviceMemoryProperties"
-               vkGetPhysicalDeviceMemoryPropertiesSafe ::
-               VkPhysicalDevice -- ^ physicalDevice
-                                -> Ptr VkPhysicalDeviceMemoryProperties -- ^ pMemoryProperties
-                                                                        -> IO ()
-
-##else
--- |
--- > void vkGetPhysicalDeviceMemoryProperties
--- >     ( VkPhysicalDevice physicalDevice
--- >     , VkPhysicalDeviceMemoryProperties* pMemoryProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceMemoryProperties vkGetPhysicalDeviceMemoryProperties registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkGetPhysicalDeviceMemoryPropertiesSafe@ and @vkGetPhysicalDeviceMemoryProperties@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetPhysicalDeviceMemoryProperties <- vkGetInstanceProc @VkGetPhysicalDeviceMemoryProperties vkInstance
---
--- or less efficient:
---
--- > myGetPhysicalDeviceMemoryProperties <- vkGetProc @VkGetPhysicalDeviceMemoryProperties
---
-vkGetPhysicalDeviceMemoryPropertiesSafe ::
-                                        VkPhysicalDevice -- ^ physicalDevice
-                                                         ->
-                                          Ptr VkPhysicalDeviceMemoryProperties -- ^ pMemoryProperties
-                                                                               -> IO ()
-vkGetPhysicalDeviceMemoryPropertiesSafe
-  = vkGetPhysicalDeviceMemoryProperties
-
-{-# INLINE vkGetPhysicalDeviceMemoryPropertiesSafe #-}
-##endif
-
--- | > void vkGetPhysicalDeviceMemoryProperties
---   >     ( VkPhysicalDevice physicalDevice
---   >     , VkPhysicalDeviceMemoryProperties* pMemoryProperties
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceMemoryProperties vkGetPhysicalDeviceMemoryProperties registry at www.khronos.org>
-type HS_vkGetPhysicalDeviceMemoryProperties =
-     VkPhysicalDevice -- ^ physicalDevice
-                      -> Ptr VkPhysicalDeviceMemoryProperties -- ^ pMemoryProperties
-                                                              -> IO ()
-
-type PFN_vkGetPhysicalDeviceMemoryProperties =
-     FunPtr HS_vkGetPhysicalDeviceMemoryProperties
-
-foreign import ccall "dynamic"
-               unwrapVkGetPhysicalDeviceMemoryProperties ::
-               PFN_vkGetPhysicalDeviceMemoryProperties ->
-                 HS_vkGetPhysicalDeviceMemoryProperties
-
-instance VulkanProc "vkGetPhysicalDeviceMemoryProperties" where
-        type VkProcType "vkGetPhysicalDeviceMemoryProperties" =
-             HS_vkGetPhysicalDeviceMemoryProperties
-        vkProcSymbol = _VkGetPhysicalDeviceMemoryProperties
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkGetPhysicalDeviceMemoryProperties
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VkGetInstanceProcAddr :: CString
-
-pattern VkGetInstanceProcAddr <- (is_VkGetInstanceProcAddr -> True)
-  where VkGetInstanceProcAddr = _VkGetInstanceProcAddr
-
-{-# INLINE _VkGetInstanceProcAddr #-}
-
-_VkGetInstanceProcAddr :: CString
-_VkGetInstanceProcAddr = Ptr "vkGetInstanceProcAddr\NUL"##
-
-{-# INLINE is_VkGetInstanceProcAddr #-}
-
-is_VkGetInstanceProcAddr :: CString -> Bool
-is_VkGetInstanceProcAddr
-  = (EQ ==) . cmpCStrings _VkGetInstanceProcAddr
-
-type VkGetInstanceProcAddr = "vkGetInstanceProcAddr"
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- > PFN_vkVoidFunction vkGetInstanceProcAddr
--- >     ( VkInstance instance
--- >     , const char* pName
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetInstanceProcAddr vkGetInstanceProcAddr registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkGetInstanceProcAddr"
-               vkGetInstanceProcAddr ::
-               VkInstance -- ^ instance
-                          -> CString -- ^ pName
-                                     -> IO PFN_vkVoidFunction
-
-##else
--- |
--- > PFN_vkVoidFunction vkGetInstanceProcAddr
--- >     ( VkInstance instance
--- >     , const char* pName
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetInstanceProcAddr vkGetInstanceProcAddr registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkGetInstanceProcAddrSafe@ and @vkGetInstanceProcAddr@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetInstanceProcAddr <- vkGetInstanceProc @VkGetInstanceProcAddr vkInstance
---
--- or less efficient:
---
--- > myGetInstanceProcAddr <- vkGetProc @VkGetInstanceProcAddr
---
-vkGetInstanceProcAddr ::
-                      VkInstance -- ^ instance
-                                 -> CString -- ^ pName
-                                            -> IO PFN_vkVoidFunction
-vkGetInstanceProcAddr
-  = unsafeDupablePerformIO (vkGetProc @VkGetInstanceProcAddr)
-
-{-# NOINLINE vkGetInstanceProcAddr #-}
-##endif
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- > PFN_vkVoidFunction vkGetInstanceProcAddr
--- >     ( VkInstance instance
--- >     , const char* pName
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetInstanceProcAddr vkGetInstanceProcAddr registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkGetInstanceProcAddr"
-               vkGetInstanceProcAddrSafe ::
-               VkInstance -- ^ instance
-                          -> CString -- ^ pName
-                                     -> IO PFN_vkVoidFunction
-
-##else
--- |
--- > PFN_vkVoidFunction vkGetInstanceProcAddr
--- >     ( VkInstance instance
--- >     , const char* pName
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetInstanceProcAddr vkGetInstanceProcAddr registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkGetInstanceProcAddrSafe@ and @vkGetInstanceProcAddr@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetInstanceProcAddr <- vkGetInstanceProc @VkGetInstanceProcAddr vkInstance
---
--- or less efficient:
---
--- > myGetInstanceProcAddr <- vkGetProc @VkGetInstanceProcAddr
---
-vkGetInstanceProcAddrSafe ::
-                          VkInstance -- ^ instance
-                                     -> CString -- ^ pName
-                                                -> IO PFN_vkVoidFunction
-vkGetInstanceProcAddrSafe = vkGetInstanceProcAddr
-
-{-# INLINE vkGetInstanceProcAddrSafe #-}
-##endif
-
--- | > PFN_vkVoidFunction vkGetInstanceProcAddr
---   >     ( VkInstance instance
---   >     , const char* pName
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetInstanceProcAddr vkGetInstanceProcAddr registry at www.khronos.org>
-type HS_vkGetInstanceProcAddr =
-     VkInstance -- ^ instance
-                -> CString -- ^ pName
-                           -> IO PFN_vkVoidFunction
-
-type PFN_vkGetInstanceProcAddr = FunPtr HS_vkGetInstanceProcAddr
-
-foreign import ccall "dynamic" unwrapVkGetInstanceProcAddr ::
-               PFN_vkGetInstanceProcAddr -> HS_vkGetInstanceProcAddr
-
-instance VulkanProc "vkGetInstanceProcAddr" where
-        type VkProcType "vkGetInstanceProcAddr" = HS_vkGetInstanceProcAddr
-        vkProcSymbol = _VkGetInstanceProcAddr
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkGetInstanceProcAddr
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VkGetDeviceProcAddr :: CString
-
-pattern VkGetDeviceProcAddr <- (is_VkGetDeviceProcAddr -> True)
-  where VkGetDeviceProcAddr = _VkGetDeviceProcAddr
-
-{-# INLINE _VkGetDeviceProcAddr #-}
-
-_VkGetDeviceProcAddr :: CString
-_VkGetDeviceProcAddr = Ptr "vkGetDeviceProcAddr\NUL"##
-
-{-# INLINE is_VkGetDeviceProcAddr #-}
-
-is_VkGetDeviceProcAddr :: CString -> Bool
-is_VkGetDeviceProcAddr = (EQ ==) . cmpCStrings _VkGetDeviceProcAddr
-
-type VkGetDeviceProcAddr = "vkGetDeviceProcAddr"
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- > PFN_vkVoidFunction vkGetDeviceProcAddr
--- >     ( VkDevice device
--- >     , const char* pName
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDeviceProcAddr vkGetDeviceProcAddr registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkGetDeviceProcAddr"
-               vkGetDeviceProcAddr :: VkDevice -- ^ device
-                                               -> CString -- ^ pName
-                                                          -> IO PFN_vkVoidFunction
-
-##else
--- |
--- > PFN_vkVoidFunction vkGetDeviceProcAddr
--- >     ( VkDevice device
--- >     , const char* pName
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDeviceProcAddr vkGetDeviceProcAddr registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkGetDeviceProcAddrSafe@ and @vkGetDeviceProcAddr@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetDeviceProcAddr <- vkGetDeviceProc @VkGetDeviceProcAddr vkDevice
---
--- or less efficient:
---
--- > myGetDeviceProcAddr <- vkGetProc @VkGetDeviceProcAddr
---
-vkGetDeviceProcAddr :: VkDevice -- ^ device
-                                -> CString -- ^ pName
-                                           -> IO PFN_vkVoidFunction
-vkGetDeviceProcAddr
-  = unsafeDupablePerformIO (vkGetProc @VkGetDeviceProcAddr)
-
-{-# NOINLINE vkGetDeviceProcAddr #-}
-##endif
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- > PFN_vkVoidFunction vkGetDeviceProcAddr
--- >     ( VkDevice device
--- >     , const char* pName
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDeviceProcAddr vkGetDeviceProcAddr registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkGetDeviceProcAddr"
-               vkGetDeviceProcAddrSafe ::
-               VkDevice -- ^ device
-                        -> CString -- ^ pName
-                                   -> IO PFN_vkVoidFunction
-
-##else
--- |
--- > PFN_vkVoidFunction vkGetDeviceProcAddr
--- >     ( VkDevice device
--- >     , const char* pName
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDeviceProcAddr vkGetDeviceProcAddr registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkGetDeviceProcAddrSafe@ and @vkGetDeviceProcAddr@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetDeviceProcAddr <- vkGetDeviceProc @VkGetDeviceProcAddr vkDevice
---
--- or less efficient:
---
--- > myGetDeviceProcAddr <- vkGetProc @VkGetDeviceProcAddr
---
-vkGetDeviceProcAddrSafe ::
-                        VkDevice -- ^ device
-                                 -> CString -- ^ pName
-                                            -> IO PFN_vkVoidFunction
-vkGetDeviceProcAddrSafe = vkGetDeviceProcAddr
-
-{-# INLINE vkGetDeviceProcAddrSafe #-}
-##endif
-
--- | > PFN_vkVoidFunction vkGetDeviceProcAddr
---   >     ( VkDevice device
---   >     , const char* pName
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDeviceProcAddr vkGetDeviceProcAddr registry at www.khronos.org>
-type HS_vkGetDeviceProcAddr =
-     VkDevice -- ^ device
-              -> CString -- ^ pName
-                         -> IO PFN_vkVoidFunction
-
-type PFN_vkGetDeviceProcAddr = FunPtr HS_vkGetDeviceProcAddr
-
-foreign import ccall "dynamic" unwrapVkGetDeviceProcAddr ::
-               PFN_vkGetDeviceProcAddr -> HS_vkGetDeviceProcAddr
-
-instance VulkanProc "vkGetDeviceProcAddr" where
-        type VkProcType "vkGetDeviceProcAddr" = HS_vkGetDeviceProcAddr
-        vkProcSymbol = _VkGetDeviceProcAddr
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkGetDeviceProcAddr
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VkCreateDevice :: CString
-
-pattern VkCreateDevice <- (is_VkCreateDevice -> True)
-  where VkCreateDevice = _VkCreateDevice
-
-{-# INLINE _VkCreateDevice #-}
-
-_VkCreateDevice :: CString
-_VkCreateDevice = Ptr "vkCreateDevice\NUL"##
-
-{-# INLINE is_VkCreateDevice #-}
-
-is_VkCreateDevice :: CString -> Bool
-is_VkCreateDevice = (EQ ==) . cmpCStrings _VkCreateDevice
-
-type VkCreateDevice = "vkCreateDevice"
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INITIALIZATION_FAILED', 'VK_ERROR_EXTENSION_NOT_PRESENT', 'VK_ERROR_FEATURE_NOT_PRESENT', 'VK_ERROR_TOO_MANY_OBJECTS', 'VK_ERROR_DEVICE_LOST'.
---
--- > VkResult vkCreateDevice
--- >     ( VkPhysicalDevice physicalDevice
--- >     , const VkDeviceCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkDevice* pDevice
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateDevice vkCreateDevice registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkCreateDevice" vkCreateDevice ::
-               VkPhysicalDevice -- ^ physicalDevice
-                                ->
-                 Ptr VkDeviceCreateInfo -- ^ pCreateInfo
-                                        ->
-                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                             -> Ptr VkDevice -- ^ pDevice
-                                                             -> IO VkResult
-
-##else
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INITIALIZATION_FAILED', 'VK_ERROR_EXTENSION_NOT_PRESENT', 'VK_ERROR_FEATURE_NOT_PRESENT', 'VK_ERROR_TOO_MANY_OBJECTS', 'VK_ERROR_DEVICE_LOST'.
---
--- > VkResult vkCreateDevice
--- >     ( VkPhysicalDevice physicalDevice
--- >     , const VkDeviceCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkDevice* pDevice
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateDevice vkCreateDevice registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCreateDeviceSafe@ and @vkCreateDevice@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateDevice <- vkGetInstanceProc @VkCreateDevice vkInstance
---
--- or less efficient:
---
--- > myCreateDevice <- vkGetProc @VkCreateDevice
---
-vkCreateDevice ::
-               VkPhysicalDevice -- ^ physicalDevice
-                                ->
-                 Ptr VkDeviceCreateInfo -- ^ pCreateInfo
-                                        ->
-                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                             -> Ptr VkDevice -- ^ pDevice
-                                                             -> IO VkResult
-vkCreateDevice = unsafeDupablePerformIO (vkGetProc @VkCreateDevice)
-
-{-# NOINLINE vkCreateDevice #-}
-##endif
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INITIALIZATION_FAILED', 'VK_ERROR_EXTENSION_NOT_PRESENT', 'VK_ERROR_FEATURE_NOT_PRESENT', 'VK_ERROR_TOO_MANY_OBJECTS', 'VK_ERROR_DEVICE_LOST'.
---
--- > VkResult vkCreateDevice
--- >     ( VkPhysicalDevice physicalDevice
--- >     , const VkDeviceCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkDevice* pDevice
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateDevice vkCreateDevice registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkCreateDevice" vkCreateDeviceSafe ::
-               VkPhysicalDevice -- ^ physicalDevice
-                                ->
-                 Ptr VkDeviceCreateInfo -- ^ pCreateInfo
-                                        ->
-                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                             -> Ptr VkDevice -- ^ pDevice
-                                                             -> IO VkResult
-
-##else
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INITIALIZATION_FAILED', 'VK_ERROR_EXTENSION_NOT_PRESENT', 'VK_ERROR_FEATURE_NOT_PRESENT', 'VK_ERROR_TOO_MANY_OBJECTS', 'VK_ERROR_DEVICE_LOST'.
---
--- > VkResult vkCreateDevice
--- >     ( VkPhysicalDevice physicalDevice
--- >     , const VkDeviceCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkDevice* pDevice
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateDevice vkCreateDevice registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCreateDeviceSafe@ and @vkCreateDevice@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateDevice <- vkGetInstanceProc @VkCreateDevice vkInstance
---
--- or less efficient:
---
--- > myCreateDevice <- vkGetProc @VkCreateDevice
---
-vkCreateDeviceSafe ::
-                   VkPhysicalDevice -- ^ physicalDevice
-                                    ->
-                     Ptr VkDeviceCreateInfo -- ^ pCreateInfo
-                                            ->
-                       Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                 -> Ptr VkDevice -- ^ pDevice
-                                                                 -> IO VkResult
-vkCreateDeviceSafe = vkCreateDevice
-
-{-# INLINE vkCreateDeviceSafe #-}
-##endif
-
--- | Success codes: 'VK_SUCCESS'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INITIALIZATION_FAILED', 'VK_ERROR_EXTENSION_NOT_PRESENT', 'VK_ERROR_FEATURE_NOT_PRESENT', 'VK_ERROR_TOO_MANY_OBJECTS', 'VK_ERROR_DEVICE_LOST'.
---
---   > VkResult vkCreateDevice
---   >     ( VkPhysicalDevice physicalDevice
---   >     , const VkDeviceCreateInfo* pCreateInfo
---   >     , const VkAllocationCallbacks* pAllocator
---   >     , VkDevice* pDevice
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateDevice vkCreateDevice registry at www.khronos.org>
-type HS_vkCreateDevice =
-     VkPhysicalDevice -- ^ physicalDevice
-                      ->
-       Ptr VkDeviceCreateInfo -- ^ pCreateInfo
-                              ->
-         Ptr VkAllocationCallbacks -- ^ pAllocator
-                                   -> Ptr VkDevice -- ^ pDevice
-                                                   -> IO VkResult
-
-type PFN_vkCreateDevice = FunPtr HS_vkCreateDevice
-
-foreign import ccall "dynamic" unwrapVkCreateDevice ::
-               PFN_vkCreateDevice -> HS_vkCreateDevice
-
-instance VulkanProc "vkCreateDevice" where
-        type VkProcType "vkCreateDevice" = HS_vkCreateDevice
-        vkProcSymbol = _VkCreateDevice
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCreateDevice
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VkDestroyDevice :: CString
-
-pattern VkDestroyDevice <- (is_VkDestroyDevice -> True)
-  where VkDestroyDevice = _VkDestroyDevice
-
-{-# INLINE _VkDestroyDevice #-}
-
-_VkDestroyDevice :: CString
-_VkDestroyDevice = Ptr "vkDestroyDevice\NUL"##
-
-{-# INLINE is_VkDestroyDevice #-}
-
-is_VkDestroyDevice :: CString -> Bool
-is_VkDestroyDevice = (EQ ==) . cmpCStrings _VkDestroyDevice
-
-type VkDestroyDevice = "vkDestroyDevice"
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- > void vkDestroyDevice
--- >     ( VkDevice device
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyDevice vkDestroyDevice registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkDestroyDevice" vkDestroyDevice ::
-               VkDevice -- ^ device
-                        -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                     -> IO ()
-
-##else
--- |
--- > void vkDestroyDevice
--- >     ( VkDevice device
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyDevice vkDestroyDevice registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkDestroyDeviceSafe@ and @vkDestroyDevice@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDestroyDevice <- vkGetDeviceProc @VkDestroyDevice vkDevice
---
--- or less efficient:
---
--- > myDestroyDevice <- vkGetProc @VkDestroyDevice
---
-vkDestroyDevice :: VkDevice -- ^ device
-                            -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                         -> IO ()
-vkDestroyDevice
-  = unsafeDupablePerformIO (vkGetProc @VkDestroyDevice)
-
-{-# NOINLINE vkDestroyDevice #-}
-##endif
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- > void vkDestroyDevice
--- >     ( VkDevice device
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyDevice vkDestroyDevice registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkDestroyDevice" vkDestroyDeviceSafe ::
-               VkDevice -- ^ device
-                        -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                     -> IO ()
-
-##else
--- |
--- > void vkDestroyDevice
--- >     ( VkDevice device
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyDevice vkDestroyDevice registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkDestroyDeviceSafe@ and @vkDestroyDevice@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDestroyDevice <- vkGetDeviceProc @VkDestroyDevice vkDevice
---
--- or less efficient:
---
--- > myDestroyDevice <- vkGetProc @VkDestroyDevice
---
-vkDestroyDeviceSafe ::
-                    VkDevice -- ^ device
-                             -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                          -> IO ()
-vkDestroyDeviceSafe = vkDestroyDevice
-
-{-# INLINE vkDestroyDeviceSafe #-}
-##endif
-
--- | > void vkDestroyDevice
---   >     ( VkDevice device
---   >     , const VkAllocationCallbacks* pAllocator
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyDevice vkDestroyDevice registry at www.khronos.org>
-type HS_vkDestroyDevice =
-     VkDevice -- ^ device
-              -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                           -> IO ()
-
-type PFN_vkDestroyDevice = FunPtr HS_vkDestroyDevice
-
-foreign import ccall "dynamic" unwrapVkDestroyDevice ::
-               PFN_vkDestroyDevice -> HS_vkDestroyDevice
-
-instance VulkanProc "vkDestroyDevice" where
-        type VkProcType "vkDestroyDevice" = HS_vkDestroyDevice
-        vkProcSymbol = _VkDestroyDevice
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkDestroyDevice
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VkEnumerateInstanceExtensionProperties :: CString
-
-pattern VkEnumerateInstanceExtensionProperties <-
-        (is_VkEnumerateInstanceExtensionProperties -> True)
-  where VkEnumerateInstanceExtensionProperties
-          = _VkEnumerateInstanceExtensionProperties
-
-{-# INLINE _VkEnumerateInstanceExtensionProperties #-}
-
-_VkEnumerateInstanceExtensionProperties :: CString
-_VkEnumerateInstanceExtensionProperties
-  = Ptr "vkEnumerateInstanceExtensionProperties\NUL"##
-
-{-# INLINE is_VkEnumerateInstanceExtensionProperties #-}
-
-is_VkEnumerateInstanceExtensionProperties :: CString -> Bool
-is_VkEnumerateInstanceExtensionProperties
-  = (EQ ==) . cmpCStrings _VkEnumerateInstanceExtensionProperties
-
-type VkEnumerateInstanceExtensionProperties =
-     "vkEnumerateInstanceExtensionProperties"
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_LAYER_NOT_PRESENT'.
---
--- > VkResult vkEnumerateInstanceExtensionProperties
--- >     ( const char* pLayerName
--- >     , uint32_t* pPropertyCount
--- >     , VkExtensionProperties* pProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumerateInstanceExtensionProperties vkEnumerateInstanceExtensionProperties registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe
-               "vkEnumerateInstanceExtensionProperties"
-               vkEnumerateInstanceExtensionProperties ::
-               CString -- ^ pLayerName
-                       -> Ptr Word32 -- ^ pPropertyCount
-                                     -> Ptr VkExtensionProperties -- ^ pProperties
-                                                                  -> IO VkResult
-
-##else
--- |
--- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_LAYER_NOT_PRESENT'.
---
--- > VkResult vkEnumerateInstanceExtensionProperties
--- >     ( const char* pLayerName
--- >     , uint32_t* pPropertyCount
--- >     , VkExtensionProperties* pProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumerateInstanceExtensionProperties vkEnumerateInstanceExtensionProperties registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkEnumerateInstanceExtensionPropertiesSafe@ and @vkEnumerateInstanceExtensionProperties@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myEnumerateInstanceExtensionProperties <- vkGetInstanceProc @VkEnumerateInstanceExtensionProperties VK_NULL
---
--- or less efficient:
---
--- > myEnumerateInstanceExtensionProperties <- vkGetProc @VkEnumerateInstanceExtensionProperties
---
-vkEnumerateInstanceExtensionProperties ::
-                                       CString -- ^ pLayerName
-                                               ->
-                                         Ptr Word32 -- ^ pPropertyCount
-                                                    -> Ptr VkExtensionProperties -- ^ pProperties
-                                                                                 -> IO VkResult
-vkEnumerateInstanceExtensionProperties
-  = unsafeDupablePerformIO
-      (vkGetProc @VkEnumerateInstanceExtensionProperties)
-
-{-# NOINLINE vkEnumerateInstanceExtensionProperties #-}
-##endif
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_LAYER_NOT_PRESENT'.
---
--- > VkResult vkEnumerateInstanceExtensionProperties
--- >     ( const char* pLayerName
--- >     , uint32_t* pPropertyCount
--- >     , VkExtensionProperties* pProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumerateInstanceExtensionProperties vkEnumerateInstanceExtensionProperties registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkEnumerateInstanceExtensionProperties"
-               vkEnumerateInstanceExtensionPropertiesSafe ::
-               CString -- ^ pLayerName
-                       -> Ptr Word32 -- ^ pPropertyCount
-                                     -> Ptr VkExtensionProperties -- ^ pProperties
-                                                                  -> IO VkResult
-
-##else
--- |
--- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_LAYER_NOT_PRESENT'.
---
--- > VkResult vkEnumerateInstanceExtensionProperties
--- >     ( const char* pLayerName
--- >     , uint32_t* pPropertyCount
--- >     , VkExtensionProperties* pProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumerateInstanceExtensionProperties vkEnumerateInstanceExtensionProperties registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkEnumerateInstanceExtensionPropertiesSafe@ and @vkEnumerateInstanceExtensionProperties@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myEnumerateInstanceExtensionProperties <- vkGetInstanceProc @VkEnumerateInstanceExtensionProperties VK_NULL
---
--- or less efficient:
---
--- > myEnumerateInstanceExtensionProperties <- vkGetProc @VkEnumerateInstanceExtensionProperties
---
-vkEnumerateInstanceExtensionPropertiesSafe ::
-                                           CString -- ^ pLayerName
-                                                   ->
-                                             Ptr Word32 -- ^ pPropertyCount
-                                                        -> Ptr VkExtensionProperties -- ^ pProperties
-                                                                                     -> IO VkResult
-vkEnumerateInstanceExtensionPropertiesSafe
-  = vkEnumerateInstanceExtensionProperties
-
-{-# INLINE vkEnumerateInstanceExtensionPropertiesSafe #-}
-##endif
-
--- | Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_LAYER_NOT_PRESENT'.
---
---   > VkResult vkEnumerateInstanceExtensionProperties
---   >     ( const char* pLayerName
---   >     , uint32_t* pPropertyCount
---   >     , VkExtensionProperties* pProperties
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumerateInstanceExtensionProperties vkEnumerateInstanceExtensionProperties registry at www.khronos.org>
-type HS_vkEnumerateInstanceExtensionProperties =
-     CString -- ^ pLayerName
-             -> Ptr Word32 -- ^ pPropertyCount
-                           -> Ptr VkExtensionProperties -- ^ pProperties
-                                                        -> IO VkResult
-
-type PFN_vkEnumerateInstanceExtensionProperties =
-     FunPtr HS_vkEnumerateInstanceExtensionProperties
-
-foreign import ccall "dynamic"
-               unwrapVkEnumerateInstanceExtensionProperties ::
-               PFN_vkEnumerateInstanceExtensionProperties ->
-                 HS_vkEnumerateInstanceExtensionProperties
-
-instance VulkanProc "vkEnumerateInstanceExtensionProperties" where
-        type VkProcType "vkEnumerateInstanceExtensionProperties" =
-             HS_vkEnumerateInstanceExtensionProperties
-        vkProcSymbol = _VkEnumerateInstanceExtensionProperties
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkEnumerateInstanceExtensionProperties
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VkEnumerateDeviceExtensionProperties :: CString
-
-pattern VkEnumerateDeviceExtensionProperties <-
-        (is_VkEnumerateDeviceExtensionProperties -> True)
-  where VkEnumerateDeviceExtensionProperties
-          = _VkEnumerateDeviceExtensionProperties
-
-{-# INLINE _VkEnumerateDeviceExtensionProperties #-}
-
-_VkEnumerateDeviceExtensionProperties :: CString
-_VkEnumerateDeviceExtensionProperties
-  = Ptr "vkEnumerateDeviceExtensionProperties\NUL"##
-
-{-# INLINE is_VkEnumerateDeviceExtensionProperties #-}
-
-is_VkEnumerateDeviceExtensionProperties :: CString -> Bool
-is_VkEnumerateDeviceExtensionProperties
-  = (EQ ==) . cmpCStrings _VkEnumerateDeviceExtensionProperties
-
-type VkEnumerateDeviceExtensionProperties =
-     "vkEnumerateDeviceExtensionProperties"
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_LAYER_NOT_PRESENT'.
---
--- > VkResult vkEnumerateDeviceExtensionProperties
--- >     ( VkPhysicalDevice physicalDevice
--- >     , const char* pLayerName
--- >     , uint32_t* pPropertyCount
--- >     , VkExtensionProperties* pProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumerateDeviceExtensionProperties vkEnumerateDeviceExtensionProperties registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkEnumerateDeviceExtensionProperties"
-               vkEnumerateDeviceExtensionProperties ::
-               VkPhysicalDevice -- ^ physicalDevice
-                                ->
-                 CString -- ^ pLayerName
-                         -> Ptr Word32 -- ^ pPropertyCount
-                                       -> Ptr VkExtensionProperties -- ^ pProperties
-                                                                    -> IO VkResult
-
-##else
--- |
--- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_LAYER_NOT_PRESENT'.
---
--- > VkResult vkEnumerateDeviceExtensionProperties
--- >     ( VkPhysicalDevice physicalDevice
--- >     , const char* pLayerName
--- >     , uint32_t* pPropertyCount
--- >     , VkExtensionProperties* pProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumerateDeviceExtensionProperties vkEnumerateDeviceExtensionProperties registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkEnumerateDeviceExtensionPropertiesSafe@ and @vkEnumerateDeviceExtensionProperties@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myEnumerateDeviceExtensionProperties <- vkGetInstanceProc @VkEnumerateDeviceExtensionProperties vkInstance
---
--- or less efficient:
---
--- > myEnumerateDeviceExtensionProperties <- vkGetProc @VkEnumerateDeviceExtensionProperties
---
-vkEnumerateDeviceExtensionProperties ::
-                                     VkPhysicalDevice -- ^ physicalDevice
-                                                      ->
-                                       CString -- ^ pLayerName
-                                               ->
-                                         Ptr Word32 -- ^ pPropertyCount
-                                                    -> Ptr VkExtensionProperties -- ^ pProperties
-                                                                                 -> IO VkResult
-vkEnumerateDeviceExtensionProperties
-  = unsafeDupablePerformIO
-      (vkGetProc @VkEnumerateDeviceExtensionProperties)
-
-{-# NOINLINE vkEnumerateDeviceExtensionProperties #-}
-##endif
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_LAYER_NOT_PRESENT'.
---
--- > VkResult vkEnumerateDeviceExtensionProperties
--- >     ( VkPhysicalDevice physicalDevice
--- >     , const char* pLayerName
--- >     , uint32_t* pPropertyCount
--- >     , VkExtensionProperties* pProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumerateDeviceExtensionProperties vkEnumerateDeviceExtensionProperties registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkEnumerateDeviceExtensionProperties"
-               vkEnumerateDeviceExtensionPropertiesSafe ::
-               VkPhysicalDevice -- ^ physicalDevice
-                                ->
-                 CString -- ^ pLayerName
-                         -> Ptr Word32 -- ^ pPropertyCount
-                                       -> Ptr VkExtensionProperties -- ^ pProperties
-                                                                    -> IO VkResult
-
-##else
--- |
--- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_LAYER_NOT_PRESENT'.
---
--- > VkResult vkEnumerateDeviceExtensionProperties
--- >     ( VkPhysicalDevice physicalDevice
--- >     , const char* pLayerName
--- >     , uint32_t* pPropertyCount
--- >     , VkExtensionProperties* pProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumerateDeviceExtensionProperties vkEnumerateDeviceExtensionProperties registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkEnumerateDeviceExtensionPropertiesSafe@ and @vkEnumerateDeviceExtensionProperties@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myEnumerateDeviceExtensionProperties <- vkGetInstanceProc @VkEnumerateDeviceExtensionProperties vkInstance
---
--- or less efficient:
---
--- > myEnumerateDeviceExtensionProperties <- vkGetProc @VkEnumerateDeviceExtensionProperties
---
-vkEnumerateDeviceExtensionPropertiesSafe ::
-                                         VkPhysicalDevice -- ^ physicalDevice
-                                                          ->
-                                           CString -- ^ pLayerName
-                                                   ->
-                                             Ptr Word32 -- ^ pPropertyCount
-                                                        -> Ptr VkExtensionProperties -- ^ pProperties
-                                                                                     -> IO VkResult
-vkEnumerateDeviceExtensionPropertiesSafe
-  = vkEnumerateDeviceExtensionProperties
-
-{-# INLINE vkEnumerateDeviceExtensionPropertiesSafe #-}
-##endif
-
--- | Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_LAYER_NOT_PRESENT'.
---
---   > VkResult vkEnumerateDeviceExtensionProperties
---   >     ( VkPhysicalDevice physicalDevice
---   >     , const char* pLayerName
---   >     , uint32_t* pPropertyCount
---   >     , VkExtensionProperties* pProperties
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumerateDeviceExtensionProperties vkEnumerateDeviceExtensionProperties registry at www.khronos.org>
-type HS_vkEnumerateDeviceExtensionProperties =
-     VkPhysicalDevice -- ^ physicalDevice
-                      ->
-       CString -- ^ pLayerName
-               -> Ptr Word32 -- ^ pPropertyCount
-                             -> Ptr VkExtensionProperties -- ^ pProperties
-                                                          -> IO VkResult
-
-type PFN_vkEnumerateDeviceExtensionProperties =
-     FunPtr HS_vkEnumerateDeviceExtensionProperties
-
-foreign import ccall "dynamic"
-               unwrapVkEnumerateDeviceExtensionProperties ::
-               PFN_vkEnumerateDeviceExtensionProperties ->
-                 HS_vkEnumerateDeviceExtensionProperties
-
-instance VulkanProc "vkEnumerateDeviceExtensionProperties" where
-        type VkProcType "vkEnumerateDeviceExtensionProperties" =
-             HS_vkEnumerateDeviceExtensionProperties
-        vkProcSymbol = _VkEnumerateDeviceExtensionProperties
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkEnumerateDeviceExtensionProperties
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VkEnumerateInstanceLayerProperties :: CString
-
-pattern VkEnumerateInstanceLayerProperties <-
-        (is_VkEnumerateInstanceLayerProperties -> True)
-  where VkEnumerateInstanceLayerProperties
-          = _VkEnumerateInstanceLayerProperties
-
-{-# INLINE _VkEnumerateInstanceLayerProperties #-}
-
-_VkEnumerateInstanceLayerProperties :: CString
-_VkEnumerateInstanceLayerProperties
-  = Ptr "vkEnumerateInstanceLayerProperties\NUL"##
-
-{-# INLINE is_VkEnumerateInstanceLayerProperties #-}
-
-is_VkEnumerateInstanceLayerProperties :: CString -> Bool
-is_VkEnumerateInstanceLayerProperties
-  = (EQ ==) . cmpCStrings _VkEnumerateInstanceLayerProperties
-
-type VkEnumerateInstanceLayerProperties =
-     "vkEnumerateInstanceLayerProperties"
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkEnumerateInstanceLayerProperties
--- >     ( uint32_t* pPropertyCount
--- >     , VkLayerProperties* pProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumerateInstanceLayerProperties vkEnumerateInstanceLayerProperties registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkEnumerateInstanceLayerProperties"
-               vkEnumerateInstanceLayerProperties ::
-               Ptr Word32 -- ^ pPropertyCount
-                          -> Ptr VkLayerProperties -- ^ pProperties
-                                                   -> IO VkResult
-
-##else
--- |
--- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkEnumerateInstanceLayerProperties
--- >     ( uint32_t* pPropertyCount
--- >     , VkLayerProperties* pProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumerateInstanceLayerProperties vkEnumerateInstanceLayerProperties registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkEnumerateInstanceLayerPropertiesSafe@ and @vkEnumerateInstanceLayerProperties@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myEnumerateInstanceLayerProperties <- vkGetInstanceProc @VkEnumerateInstanceLayerProperties VK_NULL
---
--- or less efficient:
---
--- > myEnumerateInstanceLayerProperties <- vkGetProc @VkEnumerateInstanceLayerProperties
---
-vkEnumerateInstanceLayerProperties ::
-                                   Ptr Word32 -- ^ pPropertyCount
-                                              -> Ptr VkLayerProperties -- ^ pProperties
-                                                                       -> IO VkResult
-vkEnumerateInstanceLayerProperties
-  = unsafeDupablePerformIO
-      (vkGetProc @VkEnumerateInstanceLayerProperties)
-
-{-# NOINLINE vkEnumerateInstanceLayerProperties #-}
-##endif
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkEnumerateInstanceLayerProperties
--- >     ( uint32_t* pPropertyCount
--- >     , VkLayerProperties* pProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumerateInstanceLayerProperties vkEnumerateInstanceLayerProperties registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkEnumerateInstanceLayerProperties"
-               vkEnumerateInstanceLayerPropertiesSafe ::
-               Ptr Word32 -- ^ pPropertyCount
-                          -> Ptr VkLayerProperties -- ^ pProperties
-                                                   -> IO VkResult
-
-##else
--- |
--- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkEnumerateInstanceLayerProperties
--- >     ( uint32_t* pPropertyCount
--- >     , VkLayerProperties* pProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumerateInstanceLayerProperties vkEnumerateInstanceLayerProperties registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkEnumerateInstanceLayerPropertiesSafe@ and @vkEnumerateInstanceLayerProperties@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myEnumerateInstanceLayerProperties <- vkGetInstanceProc @VkEnumerateInstanceLayerProperties VK_NULL
---
--- or less efficient:
---
--- > myEnumerateInstanceLayerProperties <- vkGetProc @VkEnumerateInstanceLayerProperties
---
-vkEnumerateInstanceLayerPropertiesSafe ::
-                                       Ptr Word32 -- ^ pPropertyCount
-                                                  -> Ptr VkLayerProperties -- ^ pProperties
-                                                                           -> IO VkResult
-vkEnumerateInstanceLayerPropertiesSafe
-  = vkEnumerateInstanceLayerProperties
-
-{-# INLINE vkEnumerateInstanceLayerPropertiesSafe #-}
-##endif
-
--- | Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
---   > VkResult vkEnumerateInstanceLayerProperties
---   >     ( uint32_t* pPropertyCount
---   >     , VkLayerProperties* pProperties
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumerateInstanceLayerProperties vkEnumerateInstanceLayerProperties registry at www.khronos.org>
-type HS_vkEnumerateInstanceLayerProperties =
-     Ptr Word32 -- ^ pPropertyCount
-                -> Ptr VkLayerProperties -- ^ pProperties
-                                         -> IO VkResult
-
-type PFN_vkEnumerateInstanceLayerProperties =
-     FunPtr HS_vkEnumerateInstanceLayerProperties
-
-foreign import ccall "dynamic"
-               unwrapVkEnumerateInstanceLayerProperties ::
-               PFN_vkEnumerateInstanceLayerProperties ->
-                 HS_vkEnumerateInstanceLayerProperties
-
-instance VulkanProc "vkEnumerateInstanceLayerProperties" where
-        type VkProcType "vkEnumerateInstanceLayerProperties" =
-             HS_vkEnumerateInstanceLayerProperties
-        vkProcSymbol = _VkEnumerateInstanceLayerProperties
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkEnumerateInstanceLayerProperties
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VkEnumerateDeviceLayerProperties :: CString
-
-pattern VkEnumerateDeviceLayerProperties <-
-        (is_VkEnumerateDeviceLayerProperties -> True)
-  where VkEnumerateDeviceLayerProperties
-          = _VkEnumerateDeviceLayerProperties
-
-{-# INLINE _VkEnumerateDeviceLayerProperties #-}
-
-_VkEnumerateDeviceLayerProperties :: CString
-_VkEnumerateDeviceLayerProperties
-  = Ptr "vkEnumerateDeviceLayerProperties\NUL"##
-
-{-# INLINE is_VkEnumerateDeviceLayerProperties #-}
-
-is_VkEnumerateDeviceLayerProperties :: CString -> Bool
-is_VkEnumerateDeviceLayerProperties
-  = (EQ ==) . cmpCStrings _VkEnumerateDeviceLayerProperties
-
-type VkEnumerateDeviceLayerProperties =
-     "vkEnumerateDeviceLayerProperties"
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkEnumerateDeviceLayerProperties
--- >     ( VkPhysicalDevice physicalDevice
--- >     , uint32_t* pPropertyCount
--- >     , VkLayerProperties* pProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumerateDeviceLayerProperties vkEnumerateDeviceLayerProperties registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkEnumerateDeviceLayerProperties"
-               vkEnumerateDeviceLayerProperties ::
-               VkPhysicalDevice -- ^ physicalDevice
-                                ->
-                 Ptr Word32 -- ^ pPropertyCount
-                            -> Ptr VkLayerProperties -- ^ pProperties
-                                                     -> IO VkResult
-
-##else
--- |
--- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkEnumerateDeviceLayerProperties
--- >     ( VkPhysicalDevice physicalDevice
--- >     , uint32_t* pPropertyCount
--- >     , VkLayerProperties* pProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumerateDeviceLayerProperties vkEnumerateDeviceLayerProperties registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkEnumerateDeviceLayerPropertiesSafe@ and @vkEnumerateDeviceLayerProperties@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myEnumerateDeviceLayerProperties <- vkGetInstanceProc @VkEnumerateDeviceLayerProperties vkInstance
---
--- or less efficient:
---
--- > myEnumerateDeviceLayerProperties <- vkGetProc @VkEnumerateDeviceLayerProperties
---
-vkEnumerateDeviceLayerProperties ::
-                                 VkPhysicalDevice -- ^ physicalDevice
-                                                  ->
-                                   Ptr Word32 -- ^ pPropertyCount
-                                              -> Ptr VkLayerProperties -- ^ pProperties
-                                                                       -> IO VkResult
-vkEnumerateDeviceLayerProperties
-  = unsafeDupablePerformIO
-      (vkGetProc @VkEnumerateDeviceLayerProperties)
-
-{-# NOINLINE vkEnumerateDeviceLayerProperties #-}
-##endif
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkEnumerateDeviceLayerProperties
--- >     ( VkPhysicalDevice physicalDevice
--- >     , uint32_t* pPropertyCount
--- >     , VkLayerProperties* pProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumerateDeviceLayerProperties vkEnumerateDeviceLayerProperties registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkEnumerateDeviceLayerProperties"
-               vkEnumerateDeviceLayerPropertiesSafe ::
-               VkPhysicalDevice -- ^ physicalDevice
-                                ->
-                 Ptr Word32 -- ^ pPropertyCount
-                            -> Ptr VkLayerProperties -- ^ pProperties
-                                                     -> IO VkResult
-
-##else
--- |
--- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkEnumerateDeviceLayerProperties
--- >     ( VkPhysicalDevice physicalDevice
--- >     , uint32_t* pPropertyCount
--- >     , VkLayerProperties* pProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumerateDeviceLayerProperties vkEnumerateDeviceLayerProperties registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkEnumerateDeviceLayerPropertiesSafe@ and @vkEnumerateDeviceLayerProperties@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myEnumerateDeviceLayerProperties <- vkGetInstanceProc @VkEnumerateDeviceLayerProperties vkInstance
---
--- or less efficient:
---
--- > myEnumerateDeviceLayerProperties <- vkGetProc @VkEnumerateDeviceLayerProperties
---
-vkEnumerateDeviceLayerPropertiesSafe ::
-                                     VkPhysicalDevice -- ^ physicalDevice
-                                                      ->
-                                       Ptr Word32 -- ^ pPropertyCount
-                                                  -> Ptr VkLayerProperties -- ^ pProperties
-                                                                           -> IO VkResult
-vkEnumerateDeviceLayerPropertiesSafe
-  = vkEnumerateDeviceLayerProperties
-
-{-# INLINE vkEnumerateDeviceLayerPropertiesSafe #-}
-##endif
-
--- | Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
---   > VkResult vkEnumerateDeviceLayerProperties
---   >     ( VkPhysicalDevice physicalDevice
---   >     , uint32_t* pPropertyCount
---   >     , VkLayerProperties* pProperties
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumerateDeviceLayerProperties vkEnumerateDeviceLayerProperties registry at www.khronos.org>
-type HS_vkEnumerateDeviceLayerProperties =
-     VkPhysicalDevice -- ^ physicalDevice
-                      ->
-       Ptr Word32 -- ^ pPropertyCount
-                  -> Ptr VkLayerProperties -- ^ pProperties
-                                           -> IO VkResult
-
-type PFN_vkEnumerateDeviceLayerProperties =
-     FunPtr HS_vkEnumerateDeviceLayerProperties
-
-foreign import ccall "dynamic"
-               unwrapVkEnumerateDeviceLayerProperties ::
-               PFN_vkEnumerateDeviceLayerProperties ->
-                 HS_vkEnumerateDeviceLayerProperties
-
-instance VulkanProc "vkEnumerateDeviceLayerProperties" where
-        type VkProcType "vkEnumerateDeviceLayerProperties" =
-             HS_vkEnumerateDeviceLayerProperties
-        vkProcSymbol = _VkEnumerateDeviceLayerProperties
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkEnumerateDeviceLayerProperties
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VkGetDeviceQueue :: CString
-
-pattern VkGetDeviceQueue <- (is_VkGetDeviceQueue -> True)
-  where VkGetDeviceQueue = _VkGetDeviceQueue
-
-{-# INLINE _VkGetDeviceQueue #-}
-
-_VkGetDeviceQueue :: CString
-_VkGetDeviceQueue = Ptr "vkGetDeviceQueue\NUL"##
-
-{-# INLINE is_VkGetDeviceQueue #-}
-
-is_VkGetDeviceQueue :: CString -> Bool
-is_VkGetDeviceQueue = (EQ ==) . cmpCStrings _VkGetDeviceQueue
-
-type VkGetDeviceQueue = "vkGetDeviceQueue"
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- > void vkGetDeviceQueue
--- >     ( VkDevice device
--- >     , uint32_t queueFamilyIndex
--- >     , uint32_t queueIndex
--- >     , VkQueue* pQueue
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDeviceQueue vkGetDeviceQueue registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkGetDeviceQueue" vkGetDeviceQueue ::
-               VkDevice -- ^ device
-                        -> Word32 -- ^ queueFamilyIndex
-                                  -> Word32 -- ^ queueIndex
-                                            -> Ptr VkQueue -- ^ pQueue
-                                                           -> IO ()
-
-##else
--- |
--- > void vkGetDeviceQueue
--- >     ( VkDevice device
--- >     , uint32_t queueFamilyIndex
--- >     , uint32_t queueIndex
--- >     , VkQueue* pQueue
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDeviceQueue vkGetDeviceQueue registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkGetDeviceQueueSafe@ and @vkGetDeviceQueue@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetDeviceQueue <- vkGetDeviceProc @VkGetDeviceQueue vkDevice
---
--- or less efficient:
---
--- > myGetDeviceQueue <- vkGetProc @VkGetDeviceQueue
---
-vkGetDeviceQueue ::
-                 VkDevice -- ^ device
-                          -> Word32 -- ^ queueFamilyIndex
-                                    -> Word32 -- ^ queueIndex
-                                              -> Ptr VkQueue -- ^ pQueue
-                                                             -> IO ()
-vkGetDeviceQueue
-  = unsafeDupablePerformIO (vkGetProc @VkGetDeviceQueue)
-
-{-# NOINLINE vkGetDeviceQueue #-}
-##endif
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- > void vkGetDeviceQueue
--- >     ( VkDevice device
--- >     , uint32_t queueFamilyIndex
--- >     , uint32_t queueIndex
--- >     , VkQueue* pQueue
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDeviceQueue vkGetDeviceQueue registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkGetDeviceQueue" vkGetDeviceQueueSafe
-               :: VkDevice -- ^ device
-                           -> Word32 -- ^ queueFamilyIndex
-                                     -> Word32 -- ^ queueIndex
-                                               -> Ptr VkQueue -- ^ pQueue
-                                                              -> IO ()
-
-##else
--- |
--- > void vkGetDeviceQueue
--- >     ( VkDevice device
--- >     , uint32_t queueFamilyIndex
--- >     , uint32_t queueIndex
--- >     , VkQueue* pQueue
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDeviceQueue vkGetDeviceQueue registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkGetDeviceQueueSafe@ and @vkGetDeviceQueue@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetDeviceQueue <- vkGetDeviceProc @VkGetDeviceQueue vkDevice
---
--- or less efficient:
---
--- > myGetDeviceQueue <- vkGetProc @VkGetDeviceQueue
---
-vkGetDeviceQueueSafe ::
-                     VkDevice -- ^ device
-                              -> Word32 -- ^ queueFamilyIndex
-                                        -> Word32 -- ^ queueIndex
-                                                  -> Ptr VkQueue -- ^ pQueue
-                                                                 -> IO ()
-vkGetDeviceQueueSafe = vkGetDeviceQueue
-
-{-# INLINE vkGetDeviceQueueSafe #-}
-##endif
-
--- | > void vkGetDeviceQueue
---   >     ( VkDevice device
---   >     , uint32_t queueFamilyIndex
---   >     , uint32_t queueIndex
---   >     , VkQueue* pQueue
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDeviceQueue vkGetDeviceQueue registry at www.khronos.org>
-type HS_vkGetDeviceQueue =
-     VkDevice -- ^ device
-              -> Word32 -- ^ queueFamilyIndex
-                        -> Word32 -- ^ queueIndex
-                                  -> Ptr VkQueue -- ^ pQueue
-                                                 -> IO ()
-
-type PFN_vkGetDeviceQueue = FunPtr HS_vkGetDeviceQueue
-
-foreign import ccall "dynamic" unwrapVkGetDeviceQueue ::
-               PFN_vkGetDeviceQueue -> HS_vkGetDeviceQueue
-
-instance VulkanProc "vkGetDeviceQueue" where
-        type VkProcType "vkGetDeviceQueue" = HS_vkGetDeviceQueue
-        vkProcSymbol = _VkGetDeviceQueue
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkGetDeviceQueue
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VkQueueSubmit :: CString
-
-pattern VkQueueSubmit <- (is_VkQueueSubmit -> True)
-  where VkQueueSubmit = _VkQueueSubmit
-
-{-# INLINE _VkQueueSubmit #-}
-
-_VkQueueSubmit :: CString
-_VkQueueSubmit = Ptr "vkQueueSubmit\NUL"##
-
-{-# INLINE is_VkQueueSubmit #-}
-
-is_VkQueueSubmit :: CString -> Bool
-is_VkQueueSubmit = (EQ ==) . cmpCStrings _VkQueueSubmit
-
-type VkQueueSubmit = "vkQueueSubmit"
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
---
--- > VkResult vkQueueSubmit
--- >     ( VkQueue queue
--- >     , uint32_t submitCount
--- >     , const VkSubmitInfo* pSubmits
--- >     , VkFence fence
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkQueueSubmit vkQueueSubmit registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkQueueSubmit" vkQueueSubmit ::
-               VkQueue -- ^ queue
-                       -> Word32 -- ^ submitCount
-                                 -> Ptr VkSubmitInfo -- ^ pSubmits
-                                                     -> VkFence -- ^ fence
-                                                                -> IO VkResult
-
-##else
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
---
--- > VkResult vkQueueSubmit
--- >     ( VkQueue queue
--- >     , uint32_t submitCount
--- >     , const VkSubmitInfo* pSubmits
--- >     , VkFence fence
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkQueueSubmit vkQueueSubmit registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkQueueSubmitSafe@ and @vkQueueSubmit@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myQueueSubmit <- vkGetInstanceProc @VkQueueSubmit vkInstance
---
--- or less efficient:
---
--- > myQueueSubmit <- vkGetProc @VkQueueSubmit
---
-vkQueueSubmit ::
-              VkQueue -- ^ queue
-                      -> Word32 -- ^ submitCount
-                                -> Ptr VkSubmitInfo -- ^ pSubmits
-                                                    -> VkFence -- ^ fence
-                                                               -> IO VkResult
-vkQueueSubmit = unsafeDupablePerformIO (vkGetProc @VkQueueSubmit)
-
-{-# NOINLINE vkQueueSubmit #-}
-##endif
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
---
--- > VkResult vkQueueSubmit
--- >     ( VkQueue queue
--- >     , uint32_t submitCount
--- >     , const VkSubmitInfo* pSubmits
--- >     , VkFence fence
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkQueueSubmit vkQueueSubmit registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkQueueSubmit" vkQueueSubmitSafe ::
-               VkQueue -- ^ queue
-                       -> Word32 -- ^ submitCount
-                                 -> Ptr VkSubmitInfo -- ^ pSubmits
-                                                     -> VkFence -- ^ fence
-                                                                -> IO VkResult
-
-##else
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
---
--- > VkResult vkQueueSubmit
--- >     ( VkQueue queue
--- >     , uint32_t submitCount
--- >     , const VkSubmitInfo* pSubmits
--- >     , VkFence fence
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkQueueSubmit vkQueueSubmit registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkQueueSubmitSafe@ and @vkQueueSubmit@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myQueueSubmit <- vkGetInstanceProc @VkQueueSubmit vkInstance
---
--- or less efficient:
---
--- > myQueueSubmit <- vkGetProc @VkQueueSubmit
---
-vkQueueSubmitSafe ::
-                  VkQueue -- ^ queue
-                          -> Word32 -- ^ submitCount
-                                    -> Ptr VkSubmitInfo -- ^ pSubmits
-                                                        -> VkFence -- ^ fence
-                                                                   -> IO VkResult
-vkQueueSubmitSafe = vkQueueSubmit
-
-{-# INLINE vkQueueSubmitSafe #-}
-##endif
-
--- | Success codes: 'VK_SUCCESS'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
---
---   > VkResult vkQueueSubmit
---   >     ( VkQueue queue
---   >     , uint32_t submitCount
---   >     , const VkSubmitInfo* pSubmits
---   >     , VkFence fence
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkQueueSubmit vkQueueSubmit registry at www.khronos.org>
-type HS_vkQueueSubmit =
-     VkQueue -- ^ queue
-             -> Word32 -- ^ submitCount
-                       -> Ptr VkSubmitInfo -- ^ pSubmits
-                                           -> VkFence -- ^ fence
-                                                      -> IO VkResult
-
-type PFN_vkQueueSubmit = FunPtr HS_vkQueueSubmit
-
-foreign import ccall "dynamic" unwrapVkQueueSubmit ::
-               PFN_vkQueueSubmit -> HS_vkQueueSubmit
-
-instance VulkanProc "vkQueueSubmit" where
-        type VkProcType "vkQueueSubmit" = HS_vkQueueSubmit
-        vkProcSymbol = _VkQueueSubmit
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkQueueSubmit
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VkQueueWaitIdle :: CString
-
-pattern VkQueueWaitIdle <- (is_VkQueueWaitIdle -> True)
-  where VkQueueWaitIdle = _VkQueueWaitIdle
-
-{-# INLINE _VkQueueWaitIdle #-}
-
-_VkQueueWaitIdle :: CString
-_VkQueueWaitIdle = Ptr "vkQueueWaitIdle\NUL"##
-
-{-# INLINE is_VkQueueWaitIdle #-}
-
-is_VkQueueWaitIdle :: CString -> Bool
-is_VkQueueWaitIdle = (EQ ==) . cmpCStrings _VkQueueWaitIdle
-
-type VkQueueWaitIdle = "vkQueueWaitIdle"
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
---
--- > VkResult vkQueueWaitIdle
--- >     ( VkQueue queue
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkQueueWaitIdle vkQueueWaitIdle registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkQueueWaitIdle" vkQueueWaitIdle ::
-               VkQueue -- ^ queue
-                       -> IO VkResult
-
-##else
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
---
--- > VkResult vkQueueWaitIdle
--- >     ( VkQueue queue
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkQueueWaitIdle vkQueueWaitIdle registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkQueueWaitIdleSafe@ and @vkQueueWaitIdle@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myQueueWaitIdle <- vkGetInstanceProc @VkQueueWaitIdle vkInstance
---
--- or less efficient:
---
--- > myQueueWaitIdle <- vkGetProc @VkQueueWaitIdle
---
-vkQueueWaitIdle :: VkQueue -- ^ queue
-                           -> IO VkResult
-vkQueueWaitIdle
-  = unsafeDupablePerformIO (vkGetProc @VkQueueWaitIdle)
-
-{-# NOINLINE vkQueueWaitIdle #-}
-##endif
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
---
--- > VkResult vkQueueWaitIdle
--- >     ( VkQueue queue
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkQueueWaitIdle vkQueueWaitIdle registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkQueueWaitIdle" vkQueueWaitIdleSafe ::
-               VkQueue -- ^ queue
-                       -> IO VkResult
-
-##else
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
---
--- > VkResult vkQueueWaitIdle
--- >     ( VkQueue queue
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkQueueWaitIdle vkQueueWaitIdle registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkQueueWaitIdleSafe@ and @vkQueueWaitIdle@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myQueueWaitIdle <- vkGetInstanceProc @VkQueueWaitIdle vkInstance
---
--- or less efficient:
---
--- > myQueueWaitIdle <- vkGetProc @VkQueueWaitIdle
---
-vkQueueWaitIdleSafe :: VkQueue -- ^ queue
-                               -> IO VkResult
-vkQueueWaitIdleSafe = vkQueueWaitIdle
-
-{-# INLINE vkQueueWaitIdleSafe #-}
-##endif
-
--- | Success codes: 'VK_SUCCESS'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
---
---   > VkResult vkQueueWaitIdle
---   >     ( VkQueue queue
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkQueueWaitIdle vkQueueWaitIdle registry at www.khronos.org>
-type HS_vkQueueWaitIdle = VkQueue -- ^ queue
-                                  -> IO VkResult
-
-type PFN_vkQueueWaitIdle = FunPtr HS_vkQueueWaitIdle
-
-foreign import ccall "dynamic" unwrapVkQueueWaitIdle ::
-               PFN_vkQueueWaitIdle -> HS_vkQueueWaitIdle
-
-instance VulkanProc "vkQueueWaitIdle" where
-        type VkProcType "vkQueueWaitIdle" = HS_vkQueueWaitIdle
-        vkProcSymbol = _VkQueueWaitIdle
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkQueueWaitIdle
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VkDeviceWaitIdle :: CString
-
-pattern VkDeviceWaitIdle <- (is_VkDeviceWaitIdle -> True)
-  where VkDeviceWaitIdle = _VkDeviceWaitIdle
-
-{-# INLINE _VkDeviceWaitIdle #-}
-
-_VkDeviceWaitIdle :: CString
-_VkDeviceWaitIdle = Ptr "vkDeviceWaitIdle\NUL"##
-
-{-# INLINE is_VkDeviceWaitIdle #-}
-
-is_VkDeviceWaitIdle :: CString -> Bool
-is_VkDeviceWaitIdle = (EQ ==) . cmpCStrings _VkDeviceWaitIdle
-
-type VkDeviceWaitIdle = "vkDeviceWaitIdle"
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
---
--- > VkResult vkDeviceWaitIdle
--- >     ( VkDevice device
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDeviceWaitIdle vkDeviceWaitIdle registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkDeviceWaitIdle" vkDeviceWaitIdle ::
-               VkDevice -- ^ device
-                        -> IO VkResult
-
-##else
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
---
--- > VkResult vkDeviceWaitIdle
--- >     ( VkDevice device
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDeviceWaitIdle vkDeviceWaitIdle registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkDeviceWaitIdleSafe@ and @vkDeviceWaitIdle@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDeviceWaitIdle <- vkGetDeviceProc @VkDeviceWaitIdle vkDevice
---
--- or less efficient:
---
--- > myDeviceWaitIdle <- vkGetProc @VkDeviceWaitIdle
---
-vkDeviceWaitIdle :: VkDevice -- ^ device
-                             -> IO VkResult
-vkDeviceWaitIdle
-  = unsafeDupablePerformIO (vkGetProc @VkDeviceWaitIdle)
-
-{-# NOINLINE vkDeviceWaitIdle #-}
-##endif
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
---
--- > VkResult vkDeviceWaitIdle
--- >     ( VkDevice device
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDeviceWaitIdle vkDeviceWaitIdle registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkDeviceWaitIdle" vkDeviceWaitIdleSafe
-               :: VkDevice -- ^ device
-                           -> IO VkResult
-
-##else
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
---
--- > VkResult vkDeviceWaitIdle
--- >     ( VkDevice device
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDeviceWaitIdle vkDeviceWaitIdle registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkDeviceWaitIdleSafe@ and @vkDeviceWaitIdle@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDeviceWaitIdle <- vkGetDeviceProc @VkDeviceWaitIdle vkDevice
---
--- or less efficient:
---
--- > myDeviceWaitIdle <- vkGetProc @VkDeviceWaitIdle
---
-vkDeviceWaitIdleSafe :: VkDevice -- ^ device
-                                 -> IO VkResult
-vkDeviceWaitIdleSafe = vkDeviceWaitIdle
-
-{-# INLINE vkDeviceWaitIdleSafe #-}
-##endif
-
--- | Success codes: 'VK_SUCCESS'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
---
---   > VkResult vkDeviceWaitIdle
---   >     ( VkDevice device
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDeviceWaitIdle vkDeviceWaitIdle registry at www.khronos.org>
-type HS_vkDeviceWaitIdle = VkDevice -- ^ device
-                                    -> IO VkResult
-
-type PFN_vkDeviceWaitIdle = FunPtr HS_vkDeviceWaitIdle
-
-foreign import ccall "dynamic" unwrapVkDeviceWaitIdle ::
-               PFN_vkDeviceWaitIdle -> HS_vkDeviceWaitIdle
-
-instance VulkanProc "vkDeviceWaitIdle" where
-        type VkProcType "vkDeviceWaitIdle" = HS_vkDeviceWaitIdle
-        vkProcSymbol = _VkDeviceWaitIdle
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkDeviceWaitIdle
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VkAllocateMemory :: CString
-
-pattern VkAllocateMemory <- (is_VkAllocateMemory -> True)
-  where VkAllocateMemory = _VkAllocateMemory
-
-{-# INLINE _VkAllocateMemory #-}
-
-_VkAllocateMemory :: CString
-_VkAllocateMemory = Ptr "vkAllocateMemory\NUL"##
-
-{-# INLINE is_VkAllocateMemory #-}
-
-is_VkAllocateMemory :: CString -> Bool
-is_VkAllocateMemory = (EQ ==) . cmpCStrings _VkAllocateMemory
-
-type VkAllocateMemory = "vkAllocateMemory"
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_TOO_MANY_OBJECTS', 'VK_ERROR_INVALID_EXTERNAL_HANDLE'.
---
--- > VkResult vkAllocateMemory
--- >     ( VkDevice device
--- >     , const VkMemoryAllocateInfo* pAllocateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkDeviceMemory* pMemory
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkAllocateMemory vkAllocateMemory registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkAllocateMemory" vkAllocateMemory ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkMemoryAllocateInfo -- ^ pAllocateInfo
-                                          ->
-                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                             -> Ptr VkDeviceMemory -- ^ pMemory
-                                                                   -> IO VkResult
-
-##else
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_TOO_MANY_OBJECTS', 'VK_ERROR_INVALID_EXTERNAL_HANDLE'.
---
--- > VkResult vkAllocateMemory
--- >     ( VkDevice device
--- >     , const VkMemoryAllocateInfo* pAllocateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkDeviceMemory* pMemory
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkAllocateMemory vkAllocateMemory registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkAllocateMemorySafe@ and @vkAllocateMemory@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myAllocateMemory <- vkGetDeviceProc @VkAllocateMemory vkDevice
---
--- or less efficient:
---
--- > myAllocateMemory <- vkGetProc @VkAllocateMemory
---
-vkAllocateMemory ::
-                 VkDevice -- ^ device
-                          ->
-                   Ptr VkMemoryAllocateInfo -- ^ pAllocateInfo
-                                            ->
-                     Ptr VkAllocationCallbacks -- ^ pAllocator
-                                               -> Ptr VkDeviceMemory -- ^ pMemory
-                                                                     -> IO VkResult
-vkAllocateMemory
-  = unsafeDupablePerformIO (vkGetProc @VkAllocateMemory)
-
-{-# NOINLINE vkAllocateMemory #-}
-##endif
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_TOO_MANY_OBJECTS', 'VK_ERROR_INVALID_EXTERNAL_HANDLE'.
---
--- > VkResult vkAllocateMemory
--- >     ( VkDevice device
--- >     , const VkMemoryAllocateInfo* pAllocateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkDeviceMemory* pMemory
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkAllocateMemory vkAllocateMemory registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkAllocateMemory" vkAllocateMemorySafe
-               ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkMemoryAllocateInfo -- ^ pAllocateInfo
-                                          ->
-                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                             -> Ptr VkDeviceMemory -- ^ pMemory
-                                                                   -> IO VkResult
-
-##else
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_TOO_MANY_OBJECTS', 'VK_ERROR_INVALID_EXTERNAL_HANDLE'.
---
--- > VkResult vkAllocateMemory
--- >     ( VkDevice device
--- >     , const VkMemoryAllocateInfo* pAllocateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkDeviceMemory* pMemory
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkAllocateMemory vkAllocateMemory registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkAllocateMemorySafe@ and @vkAllocateMemory@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myAllocateMemory <- vkGetDeviceProc @VkAllocateMemory vkDevice
---
--- or less efficient:
---
--- > myAllocateMemory <- vkGetProc @VkAllocateMemory
---
-vkAllocateMemorySafe ::
-                     VkDevice -- ^ device
-                              ->
-                       Ptr VkMemoryAllocateInfo -- ^ pAllocateInfo
-                                                ->
-                         Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                   -> Ptr VkDeviceMemory -- ^ pMemory
-                                                                         -> IO VkResult
-vkAllocateMemorySafe = vkAllocateMemory
-
-{-# INLINE vkAllocateMemorySafe #-}
-##endif
-
--- | Success codes: 'VK_SUCCESS'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_TOO_MANY_OBJECTS', 'VK_ERROR_INVALID_EXTERNAL_HANDLE'.
---
---   > VkResult vkAllocateMemory
---   >     ( VkDevice device
---   >     , const VkMemoryAllocateInfo* pAllocateInfo
---   >     , const VkAllocationCallbacks* pAllocator
---   >     , VkDeviceMemory* pMemory
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkAllocateMemory vkAllocateMemory registry at www.khronos.org>
-type HS_vkAllocateMemory =
-     VkDevice -- ^ device
-              ->
-       Ptr VkMemoryAllocateInfo -- ^ pAllocateInfo
-                                ->
-         Ptr VkAllocationCallbacks -- ^ pAllocator
-                                   -> Ptr VkDeviceMemory -- ^ pMemory
-                                                         -> IO VkResult
-
-type PFN_vkAllocateMemory = FunPtr HS_vkAllocateMemory
-
-foreign import ccall "dynamic" unwrapVkAllocateMemory ::
-               PFN_vkAllocateMemory -> HS_vkAllocateMemory
-
-instance VulkanProc "vkAllocateMemory" where
-        type VkProcType "vkAllocateMemory" = HS_vkAllocateMemory
-        vkProcSymbol = _VkAllocateMemory
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkAllocateMemory
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VkFreeMemory :: CString
-
-pattern VkFreeMemory <- (is_VkFreeMemory -> True)
-  where VkFreeMemory = _VkFreeMemory
-
-{-# INLINE _VkFreeMemory #-}
-
-_VkFreeMemory :: CString
-_VkFreeMemory = Ptr "vkFreeMemory\NUL"##
-
-{-# INLINE is_VkFreeMemory #-}
-
-is_VkFreeMemory :: CString -> Bool
-is_VkFreeMemory = (EQ ==) . cmpCStrings _VkFreeMemory
-
-type VkFreeMemory = "vkFreeMemory"
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- > void vkFreeMemory
--- >     ( VkDevice device
--- >     , VkDeviceMemory memory
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkFreeMemory vkFreeMemory registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkFreeMemory" vkFreeMemory ::
-               VkDevice -- ^ device
-                        -> VkDeviceMemory -- ^ memory
-                                          -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                       -> IO ()
-
-##else
--- |
--- > void vkFreeMemory
--- >     ( VkDevice device
--- >     , VkDeviceMemory memory
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkFreeMemory vkFreeMemory registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkFreeMemorySafe@ and @vkFreeMemory@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myFreeMemory <- vkGetDeviceProc @VkFreeMemory vkDevice
---
--- or less efficient:
---
--- > myFreeMemory <- vkGetProc @VkFreeMemory
---
-vkFreeMemory ::
-             VkDevice -- ^ device
-                      -> VkDeviceMemory -- ^ memory
-                                        -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                     -> IO ()
-vkFreeMemory = unsafeDupablePerformIO (vkGetProc @VkFreeMemory)
-
-{-# NOINLINE vkFreeMemory #-}
-##endif
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- > void vkFreeMemory
--- >     ( VkDevice device
--- >     , VkDeviceMemory memory
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkFreeMemory vkFreeMemory registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkFreeMemory" vkFreeMemorySafe ::
-               VkDevice -- ^ device
-                        -> VkDeviceMemory -- ^ memory
-                                          -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                       -> IO ()
-
-##else
--- |
--- > void vkFreeMemory
--- >     ( VkDevice device
--- >     , VkDeviceMemory memory
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkFreeMemory vkFreeMemory registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkFreeMemorySafe@ and @vkFreeMemory@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myFreeMemory <- vkGetDeviceProc @VkFreeMemory vkDevice
---
--- or less efficient:
---
--- > myFreeMemory <- vkGetProc @VkFreeMemory
---
-vkFreeMemorySafe ::
-                 VkDevice -- ^ device
-                          -> VkDeviceMemory -- ^ memory
-                                            -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                         -> IO ()
-vkFreeMemorySafe = vkFreeMemory
-
-{-# INLINE vkFreeMemorySafe #-}
-##endif
-
--- | > void vkFreeMemory
---   >     ( VkDevice device
---   >     , VkDeviceMemory memory
---   >     , const VkAllocationCallbacks* pAllocator
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkFreeMemory vkFreeMemory registry at www.khronos.org>
-type HS_vkFreeMemory =
-     VkDevice -- ^ device
-              -> VkDeviceMemory -- ^ memory
-                                -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                             -> IO ()
-
-type PFN_vkFreeMemory = FunPtr HS_vkFreeMemory
-
-foreign import ccall "dynamic" unwrapVkFreeMemory ::
-               PFN_vkFreeMemory -> HS_vkFreeMemory
-
-instance VulkanProc "vkFreeMemory" where
-        type VkProcType "vkFreeMemory" = HS_vkFreeMemory
-        vkProcSymbol = _VkFreeMemory
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkFreeMemory
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VkMapMemory :: CString
-
-pattern VkMapMemory <- (is_VkMapMemory -> True)
-  where VkMapMemory = _VkMapMemory
-
-{-# INLINE _VkMapMemory #-}
-
-_VkMapMemory :: CString
-_VkMapMemory = Ptr "vkMapMemory\NUL"##
-
-{-# INLINE is_VkMapMemory #-}
-
-is_VkMapMemory :: CString -> Bool
-is_VkMapMemory = (EQ ==) . cmpCStrings _VkMapMemory
-
-type VkMapMemory = "vkMapMemory"
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_MEMORY_MAP_FAILED'.
---
--- > VkResult vkMapMemory
--- >     ( VkDevice device
--- >     , VkDeviceMemory memory
--- >     , VkDeviceSize offset
--- >     , VkDeviceSize size
--- >     , VkMemoryMapFlags flags
--- >     , void** ppData
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkMapMemory vkMapMemory registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkMapMemory" vkMapMemory ::
-               VkDevice -- ^ device
-                        ->
-                 VkDeviceMemory -- ^ memory
-                                ->
-                   VkDeviceSize -- ^ offset
-                                ->
-                     VkDeviceSize -- ^ size
-                                  -> VkMemoryMapFlags -- ^ flags
-                                                      -> Ptr (Ptr Void) -- ^ ppData
-                                                                        -> IO VkResult
-
-##else
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_MEMORY_MAP_FAILED'.
---
--- > VkResult vkMapMemory
--- >     ( VkDevice device
--- >     , VkDeviceMemory memory
--- >     , VkDeviceSize offset
--- >     , VkDeviceSize size
--- >     , VkMemoryMapFlags flags
--- >     , void** ppData
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkMapMemory vkMapMemory registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkMapMemorySafe@ and @vkMapMemory@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myMapMemory <- vkGetDeviceProc @VkMapMemory vkDevice
---
--- or less efficient:
---
--- > myMapMemory <- vkGetProc @VkMapMemory
---
-vkMapMemory ::
-            VkDevice -- ^ device
-                     ->
-              VkDeviceMemory -- ^ memory
-                             ->
-                VkDeviceSize -- ^ offset
-                             ->
-                  VkDeviceSize -- ^ size
-                               -> VkMemoryMapFlags -- ^ flags
-                                                   -> Ptr (Ptr Void) -- ^ ppData
-                                                                     -> IO VkResult
-vkMapMemory = unsafeDupablePerformIO (vkGetProc @VkMapMemory)
-
-{-# NOINLINE vkMapMemory #-}
-##endif
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_MEMORY_MAP_FAILED'.
---
--- > VkResult vkMapMemory
--- >     ( VkDevice device
--- >     , VkDeviceMemory memory
--- >     , VkDeviceSize offset
--- >     , VkDeviceSize size
--- >     , VkMemoryMapFlags flags
--- >     , void** ppData
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkMapMemory vkMapMemory registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkMapMemory" vkMapMemorySafe ::
-               VkDevice -- ^ device
-                        ->
-                 VkDeviceMemory -- ^ memory
-                                ->
-                   VkDeviceSize -- ^ offset
-                                ->
-                     VkDeviceSize -- ^ size
-                                  -> VkMemoryMapFlags -- ^ flags
-                                                      -> Ptr (Ptr Void) -- ^ ppData
-                                                                        -> IO VkResult
-
-##else
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_MEMORY_MAP_FAILED'.
---
--- > VkResult vkMapMemory
--- >     ( VkDevice device
--- >     , VkDeviceMemory memory
--- >     , VkDeviceSize offset
--- >     , VkDeviceSize size
--- >     , VkMemoryMapFlags flags
--- >     , void** ppData
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkMapMemory vkMapMemory registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkMapMemorySafe@ and @vkMapMemory@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myMapMemory <- vkGetDeviceProc @VkMapMemory vkDevice
---
--- or less efficient:
---
--- > myMapMemory <- vkGetProc @VkMapMemory
---
-vkMapMemorySafe ::
-                VkDevice -- ^ device
-                         ->
-                  VkDeviceMemory -- ^ memory
-                                 ->
-                    VkDeviceSize -- ^ offset
-                                 ->
-                      VkDeviceSize -- ^ size
-                                   -> VkMemoryMapFlags -- ^ flags
-                                                       -> Ptr (Ptr Void) -- ^ ppData
-                                                                         -> IO VkResult
-vkMapMemorySafe = vkMapMemory
-
-{-# INLINE vkMapMemorySafe #-}
-##endif
-
--- | Success codes: 'VK_SUCCESS'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_MEMORY_MAP_FAILED'.
---
---   > VkResult vkMapMemory
---   >     ( VkDevice device
---   >     , VkDeviceMemory memory
---   >     , VkDeviceSize offset
---   >     , VkDeviceSize size
---   >     , VkMemoryMapFlags flags
---   >     , void** ppData
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkMapMemory vkMapMemory registry at www.khronos.org>
-type HS_vkMapMemory =
-     VkDevice -- ^ device
-              ->
-       VkDeviceMemory -- ^ memory
-                      ->
-         VkDeviceSize -- ^ offset
-                      ->
-           VkDeviceSize -- ^ size
-                        -> VkMemoryMapFlags -- ^ flags
-                                            -> Ptr (Ptr Void) -- ^ ppData
-                                                              -> IO VkResult
-
-type PFN_vkMapMemory = FunPtr HS_vkMapMemory
-
-foreign import ccall "dynamic" unwrapVkMapMemory ::
-               PFN_vkMapMemory -> HS_vkMapMemory
-
-instance VulkanProc "vkMapMemory" where
-        type VkProcType "vkMapMemory" = HS_vkMapMemory
-        vkProcSymbol = _VkMapMemory
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkMapMemory
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VkUnmapMemory :: CString
-
-pattern VkUnmapMemory <- (is_VkUnmapMemory -> True)
-  where VkUnmapMemory = _VkUnmapMemory
-
-{-# INLINE _VkUnmapMemory #-}
-
-_VkUnmapMemory :: CString
-_VkUnmapMemory = Ptr "vkUnmapMemory\NUL"##
-
-{-# INLINE is_VkUnmapMemory #-}
-
-is_VkUnmapMemory :: CString -> Bool
-is_VkUnmapMemory = (EQ ==) . cmpCStrings _VkUnmapMemory
-
-type VkUnmapMemory = "vkUnmapMemory"
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- > void vkUnmapMemory
--- >     ( VkDevice device
--- >     , VkDeviceMemory memory
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkUnmapMemory vkUnmapMemory registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkUnmapMemory" vkUnmapMemory ::
-               VkDevice -- ^ device
-                        -> VkDeviceMemory -- ^ memory
-                                          -> IO ()
-
-##else
--- |
--- > void vkUnmapMemory
--- >     ( VkDevice device
--- >     , VkDeviceMemory memory
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkUnmapMemory vkUnmapMemory registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkUnmapMemorySafe@ and @vkUnmapMemory@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myUnmapMemory <- vkGetDeviceProc @VkUnmapMemory vkDevice
---
--- or less efficient:
---
--- > myUnmapMemory <- vkGetProc @VkUnmapMemory
---
-vkUnmapMemory :: VkDevice -- ^ device
-                          -> VkDeviceMemory -- ^ memory
-                                            -> IO ()
-vkUnmapMemory = unsafeDupablePerformIO (vkGetProc @VkUnmapMemory)
-
-{-# NOINLINE vkUnmapMemory #-}
-##endif
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- > void vkUnmapMemory
--- >     ( VkDevice device
--- >     , VkDeviceMemory memory
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkUnmapMemory vkUnmapMemory registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkUnmapMemory" vkUnmapMemorySafe ::
-               VkDevice -- ^ device
-                        -> VkDeviceMemory -- ^ memory
-                                          -> IO ()
-
-##else
--- |
--- > void vkUnmapMemory
--- >     ( VkDevice device
--- >     , VkDeviceMemory memory
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkUnmapMemory vkUnmapMemory registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkUnmapMemorySafe@ and @vkUnmapMemory@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myUnmapMemory <- vkGetDeviceProc @VkUnmapMemory vkDevice
---
--- or less efficient:
---
--- > myUnmapMemory <- vkGetProc @VkUnmapMemory
---
-vkUnmapMemorySafe :: VkDevice -- ^ device
-                              -> VkDeviceMemory -- ^ memory
-                                                -> IO ()
-vkUnmapMemorySafe = vkUnmapMemory
-
-{-# INLINE vkUnmapMemorySafe #-}
-##endif
-
--- | > void vkUnmapMemory
---   >     ( VkDevice device
---   >     , VkDeviceMemory memory
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkUnmapMemory vkUnmapMemory registry at www.khronos.org>
-type HS_vkUnmapMemory = VkDevice -- ^ device
-                                 -> VkDeviceMemory -- ^ memory
-                                                   -> IO ()
-
-type PFN_vkUnmapMemory = FunPtr HS_vkUnmapMemory
-
-foreign import ccall "dynamic" unwrapVkUnmapMemory ::
-               PFN_vkUnmapMemory -> HS_vkUnmapMemory
-
-instance VulkanProc "vkUnmapMemory" where
-        type VkProcType "vkUnmapMemory" = HS_vkUnmapMemory
-        vkProcSymbol = _VkUnmapMemory
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkUnmapMemory
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VkFlushMappedMemoryRanges :: CString
-
-pattern VkFlushMappedMemoryRanges <-
-        (is_VkFlushMappedMemoryRanges -> True)
-  where VkFlushMappedMemoryRanges = _VkFlushMappedMemoryRanges
-
-{-# INLINE _VkFlushMappedMemoryRanges #-}
-
-_VkFlushMappedMemoryRanges :: CString
-_VkFlushMappedMemoryRanges = Ptr "vkFlushMappedMemoryRanges\NUL"##
-
-{-# INLINE is_VkFlushMappedMemoryRanges #-}
-
-is_VkFlushMappedMemoryRanges :: CString -> Bool
-is_VkFlushMappedMemoryRanges
-  = (EQ ==) . cmpCStrings _VkFlushMappedMemoryRanges
-
-type VkFlushMappedMemoryRanges = "vkFlushMappedMemoryRanges"
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkFlushMappedMemoryRanges
--- >     ( VkDevice device
--- >     , uint32_t memoryRangeCount
--- >     , const VkMappedMemoryRange* pMemoryRanges
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkFlushMappedMemoryRanges vkFlushMappedMemoryRanges registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkFlushMappedMemoryRanges"
-               vkFlushMappedMemoryRanges ::
-               VkDevice -- ^ device
-                        -> Word32 -- ^ memoryRangeCount
-                                  -> Ptr VkMappedMemoryRange -- ^ pMemoryRanges
-                                                             -> IO VkResult
-
-##else
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkFlushMappedMemoryRanges
--- >     ( VkDevice device
--- >     , uint32_t memoryRangeCount
--- >     , const VkMappedMemoryRange* pMemoryRanges
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkFlushMappedMemoryRanges vkFlushMappedMemoryRanges registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkFlushMappedMemoryRangesSafe@ and @vkFlushMappedMemoryRanges@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myFlushMappedMemoryRanges <- vkGetDeviceProc @VkFlushMappedMemoryRanges vkDevice
---
--- or less efficient:
---
--- > myFlushMappedMemoryRanges <- vkGetProc @VkFlushMappedMemoryRanges
---
-vkFlushMappedMemoryRanges ::
-                          VkDevice -- ^ device
-                                   -> Word32 -- ^ memoryRangeCount
-                                             -> Ptr VkMappedMemoryRange -- ^ pMemoryRanges
-                                                                        -> IO VkResult
-vkFlushMappedMemoryRanges
-  = unsafeDupablePerformIO (vkGetProc @VkFlushMappedMemoryRanges)
-
-{-# NOINLINE vkFlushMappedMemoryRanges #-}
-##endif
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkFlushMappedMemoryRanges
--- >     ( VkDevice device
--- >     , uint32_t memoryRangeCount
--- >     , const VkMappedMemoryRange* pMemoryRanges
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkFlushMappedMemoryRanges vkFlushMappedMemoryRanges registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkFlushMappedMemoryRanges"
-               vkFlushMappedMemoryRangesSafe ::
-               VkDevice -- ^ device
-                        -> Word32 -- ^ memoryRangeCount
-                                  -> Ptr VkMappedMemoryRange -- ^ pMemoryRanges
-                                                             -> IO VkResult
-
-##else
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkFlushMappedMemoryRanges
--- >     ( VkDevice device
--- >     , uint32_t memoryRangeCount
--- >     , const VkMappedMemoryRange* pMemoryRanges
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkFlushMappedMemoryRanges vkFlushMappedMemoryRanges registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkFlushMappedMemoryRangesSafe@ and @vkFlushMappedMemoryRanges@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myFlushMappedMemoryRanges <- vkGetDeviceProc @VkFlushMappedMemoryRanges vkDevice
---
--- or less efficient:
---
--- > myFlushMappedMemoryRanges <- vkGetProc @VkFlushMappedMemoryRanges
---
-vkFlushMappedMemoryRangesSafe ::
-                              VkDevice -- ^ device
-                                       -> Word32 -- ^ memoryRangeCount
-                                                 -> Ptr VkMappedMemoryRange -- ^ pMemoryRanges
-                                                                            -> IO VkResult
-vkFlushMappedMemoryRangesSafe = vkFlushMappedMemoryRanges
-
-{-# INLINE vkFlushMappedMemoryRangesSafe #-}
-##endif
-
--- | Success codes: 'VK_SUCCESS'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
---   > VkResult vkFlushMappedMemoryRanges
---   >     ( VkDevice device
---   >     , uint32_t memoryRangeCount
---   >     , const VkMappedMemoryRange* pMemoryRanges
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkFlushMappedMemoryRanges vkFlushMappedMemoryRanges registry at www.khronos.org>
-type HS_vkFlushMappedMemoryRanges =
-     VkDevice -- ^ device
-              -> Word32 -- ^ memoryRangeCount
-                        -> Ptr VkMappedMemoryRange -- ^ pMemoryRanges
-                                                   -> IO VkResult
-
-type PFN_vkFlushMappedMemoryRanges =
-     FunPtr HS_vkFlushMappedMemoryRanges
-
-foreign import ccall "dynamic" unwrapVkFlushMappedMemoryRanges ::
-               PFN_vkFlushMappedMemoryRanges -> HS_vkFlushMappedMemoryRanges
-
-instance VulkanProc "vkFlushMappedMemoryRanges" where
-        type VkProcType "vkFlushMappedMemoryRanges" =
-             HS_vkFlushMappedMemoryRanges
-        vkProcSymbol = _VkFlushMappedMemoryRanges
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkFlushMappedMemoryRanges
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VkInvalidateMappedMemoryRanges :: CString
-
-pattern VkInvalidateMappedMemoryRanges <-
-        (is_VkInvalidateMappedMemoryRanges -> True)
-  where VkInvalidateMappedMemoryRanges
-          = _VkInvalidateMappedMemoryRanges
-
-{-# INLINE _VkInvalidateMappedMemoryRanges #-}
-
-_VkInvalidateMappedMemoryRanges :: CString
-_VkInvalidateMappedMemoryRanges
-  = Ptr "vkInvalidateMappedMemoryRanges\NUL"##
-
-{-# INLINE is_VkInvalidateMappedMemoryRanges #-}
-
-is_VkInvalidateMappedMemoryRanges :: CString -> Bool
-is_VkInvalidateMappedMemoryRanges
-  = (EQ ==) . cmpCStrings _VkInvalidateMappedMemoryRanges
-
-type VkInvalidateMappedMemoryRanges =
-     "vkInvalidateMappedMemoryRanges"
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkInvalidateMappedMemoryRanges
--- >     ( VkDevice device
--- >     , uint32_t memoryRangeCount
--- >     , const VkMappedMemoryRange* pMemoryRanges
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkInvalidateMappedMemoryRanges vkInvalidateMappedMemoryRanges registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkInvalidateMappedMemoryRanges"
-               vkInvalidateMappedMemoryRanges ::
-               VkDevice -- ^ device
-                        -> Word32 -- ^ memoryRangeCount
-                                  -> Ptr VkMappedMemoryRange -- ^ pMemoryRanges
-                                                             -> IO VkResult
-
-##else
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkInvalidateMappedMemoryRanges
--- >     ( VkDevice device
--- >     , uint32_t memoryRangeCount
--- >     , const VkMappedMemoryRange* pMemoryRanges
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkInvalidateMappedMemoryRanges vkInvalidateMappedMemoryRanges registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkInvalidateMappedMemoryRangesSafe@ and @vkInvalidateMappedMemoryRanges@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myInvalidateMappedMemoryRanges <- vkGetDeviceProc @VkInvalidateMappedMemoryRanges vkDevice
---
--- or less efficient:
---
--- > myInvalidateMappedMemoryRanges <- vkGetProc @VkInvalidateMappedMemoryRanges
---
-vkInvalidateMappedMemoryRanges ::
-                               VkDevice -- ^ device
-                                        -> Word32 -- ^ memoryRangeCount
-                                                  -> Ptr VkMappedMemoryRange -- ^ pMemoryRanges
-                                                                             -> IO VkResult
-vkInvalidateMappedMemoryRanges
-  = unsafeDupablePerformIO
-      (vkGetProc @VkInvalidateMappedMemoryRanges)
-
-{-# NOINLINE vkInvalidateMappedMemoryRanges #-}
-##endif
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkInvalidateMappedMemoryRanges
--- >     ( VkDevice device
--- >     , uint32_t memoryRangeCount
--- >     , const VkMappedMemoryRange* pMemoryRanges
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkInvalidateMappedMemoryRanges vkInvalidateMappedMemoryRanges registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkInvalidateMappedMemoryRanges"
-               vkInvalidateMappedMemoryRangesSafe ::
-               VkDevice -- ^ device
-                        -> Word32 -- ^ memoryRangeCount
-                                  -> Ptr VkMappedMemoryRange -- ^ pMemoryRanges
-                                                             -> IO VkResult
-
-##else
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkInvalidateMappedMemoryRanges
--- >     ( VkDevice device
--- >     , uint32_t memoryRangeCount
--- >     , const VkMappedMemoryRange* pMemoryRanges
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkInvalidateMappedMemoryRanges vkInvalidateMappedMemoryRanges registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkInvalidateMappedMemoryRangesSafe@ and @vkInvalidateMappedMemoryRanges@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myInvalidateMappedMemoryRanges <- vkGetDeviceProc @VkInvalidateMappedMemoryRanges vkDevice
---
--- or less efficient:
---
--- > myInvalidateMappedMemoryRanges <- vkGetProc @VkInvalidateMappedMemoryRanges
---
-vkInvalidateMappedMemoryRangesSafe ::
-                                   VkDevice -- ^ device
-                                            -> Word32 -- ^ memoryRangeCount
-                                                      -> Ptr VkMappedMemoryRange -- ^ pMemoryRanges
-                                                                                 -> IO VkResult
-vkInvalidateMappedMemoryRangesSafe = vkInvalidateMappedMemoryRanges
-
-{-# INLINE vkInvalidateMappedMemoryRangesSafe #-}
-##endif
-
--- | Success codes: 'VK_SUCCESS'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
---   > VkResult vkInvalidateMappedMemoryRanges
---   >     ( VkDevice device
---   >     , uint32_t memoryRangeCount
---   >     , const VkMappedMemoryRange* pMemoryRanges
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkInvalidateMappedMemoryRanges vkInvalidateMappedMemoryRanges registry at www.khronos.org>
-type HS_vkInvalidateMappedMemoryRanges =
-     VkDevice -- ^ device
-              -> Word32 -- ^ memoryRangeCount
-                        -> Ptr VkMappedMemoryRange -- ^ pMemoryRanges
-                                                   -> IO VkResult
-
-type PFN_vkInvalidateMappedMemoryRanges =
-     FunPtr HS_vkInvalidateMappedMemoryRanges
-
-foreign import ccall "dynamic" unwrapVkInvalidateMappedMemoryRanges
-               ::
-               PFN_vkInvalidateMappedMemoryRanges ->
-                 HS_vkInvalidateMappedMemoryRanges
-
-instance VulkanProc "vkInvalidateMappedMemoryRanges" where
-        type VkProcType "vkInvalidateMappedMemoryRanges" =
-             HS_vkInvalidateMappedMemoryRanges
-        vkProcSymbol = _VkInvalidateMappedMemoryRanges
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkInvalidateMappedMemoryRanges
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VkGetDeviceMemoryCommitment :: CString
-
-pattern VkGetDeviceMemoryCommitment <-
-        (is_VkGetDeviceMemoryCommitment -> True)
-  where VkGetDeviceMemoryCommitment = _VkGetDeviceMemoryCommitment
-
-{-# INLINE _VkGetDeviceMemoryCommitment #-}
-
-_VkGetDeviceMemoryCommitment :: CString
-_VkGetDeviceMemoryCommitment
-  = Ptr "vkGetDeviceMemoryCommitment\NUL"##
-
-{-# INLINE is_VkGetDeviceMemoryCommitment #-}
-
-is_VkGetDeviceMemoryCommitment :: CString -> Bool
-is_VkGetDeviceMemoryCommitment
-  = (EQ ==) . cmpCStrings _VkGetDeviceMemoryCommitment
-
-type VkGetDeviceMemoryCommitment = "vkGetDeviceMemoryCommitment"
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- > void vkGetDeviceMemoryCommitment
--- >     ( VkDevice device
--- >     , VkDeviceMemory memory
--- >     , VkDeviceSize* pCommittedMemoryInBytes
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDeviceMemoryCommitment vkGetDeviceMemoryCommitment registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkGetDeviceMemoryCommitment"
-               vkGetDeviceMemoryCommitment ::
-               VkDevice -- ^ device
-                        -> VkDeviceMemory -- ^ memory
-                                          -> Ptr VkDeviceSize -- ^ pCommittedMemoryInBytes
-                                                              -> IO ()
-
-##else
--- |
--- > void vkGetDeviceMemoryCommitment
--- >     ( VkDevice device
--- >     , VkDeviceMemory memory
--- >     , VkDeviceSize* pCommittedMemoryInBytes
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDeviceMemoryCommitment vkGetDeviceMemoryCommitment registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkGetDeviceMemoryCommitmentSafe@ and @vkGetDeviceMemoryCommitment@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetDeviceMemoryCommitment <- vkGetDeviceProc @VkGetDeviceMemoryCommitment vkDevice
---
--- or less efficient:
---
--- > myGetDeviceMemoryCommitment <- vkGetProc @VkGetDeviceMemoryCommitment
---
-vkGetDeviceMemoryCommitment ::
-                            VkDevice -- ^ device
-                                     -> VkDeviceMemory -- ^ memory
-                                                       -> Ptr VkDeviceSize -- ^ pCommittedMemoryInBytes
-                                                                           -> IO ()
-vkGetDeviceMemoryCommitment
-  = unsafeDupablePerformIO (vkGetProc @VkGetDeviceMemoryCommitment)
-
-{-# NOINLINE vkGetDeviceMemoryCommitment #-}
-##endif
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- > void vkGetDeviceMemoryCommitment
--- >     ( VkDevice device
--- >     , VkDeviceMemory memory
--- >     , VkDeviceSize* pCommittedMemoryInBytes
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDeviceMemoryCommitment vkGetDeviceMemoryCommitment registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkGetDeviceMemoryCommitment"
-               vkGetDeviceMemoryCommitmentSafe ::
-               VkDevice -- ^ device
-                        -> VkDeviceMemory -- ^ memory
-                                          -> Ptr VkDeviceSize -- ^ pCommittedMemoryInBytes
-                                                              -> IO ()
-
-##else
--- |
--- > void vkGetDeviceMemoryCommitment
--- >     ( VkDevice device
--- >     , VkDeviceMemory memory
--- >     , VkDeviceSize* pCommittedMemoryInBytes
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDeviceMemoryCommitment vkGetDeviceMemoryCommitment registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkGetDeviceMemoryCommitmentSafe@ and @vkGetDeviceMemoryCommitment@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetDeviceMemoryCommitment <- vkGetDeviceProc @VkGetDeviceMemoryCommitment vkDevice
---
--- or less efficient:
---
--- > myGetDeviceMemoryCommitment <- vkGetProc @VkGetDeviceMemoryCommitment
---
-vkGetDeviceMemoryCommitmentSafe ::
-                                VkDevice -- ^ device
-                                         -> VkDeviceMemory -- ^ memory
-                                                           -> Ptr VkDeviceSize -- ^ pCommittedMemoryInBytes
-                                                                               -> IO ()
-vkGetDeviceMemoryCommitmentSafe = vkGetDeviceMemoryCommitment
-
-{-# INLINE vkGetDeviceMemoryCommitmentSafe #-}
-##endif
-
--- | > void vkGetDeviceMemoryCommitment
---   >     ( VkDevice device
---   >     , VkDeviceMemory memory
---   >     , VkDeviceSize* pCommittedMemoryInBytes
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDeviceMemoryCommitment vkGetDeviceMemoryCommitment registry at www.khronos.org>
-type HS_vkGetDeviceMemoryCommitment =
-     VkDevice -- ^ device
-              -> VkDeviceMemory -- ^ memory
-                                -> Ptr VkDeviceSize -- ^ pCommittedMemoryInBytes
-                                                    -> IO ()
-
-type PFN_vkGetDeviceMemoryCommitment =
-     FunPtr HS_vkGetDeviceMemoryCommitment
-
-foreign import ccall "dynamic" unwrapVkGetDeviceMemoryCommitment ::
-               PFN_vkGetDeviceMemoryCommitment -> HS_vkGetDeviceMemoryCommitment
-
-instance VulkanProc "vkGetDeviceMemoryCommitment" where
-        type VkProcType "vkGetDeviceMemoryCommitment" =
-             HS_vkGetDeviceMemoryCommitment
-        vkProcSymbol = _VkGetDeviceMemoryCommitment
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkGetDeviceMemoryCommitment
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VkBindBufferMemory :: CString
-
-pattern VkBindBufferMemory <- (is_VkBindBufferMemory -> True)
-  where VkBindBufferMemory = _VkBindBufferMemory
-
-{-# INLINE _VkBindBufferMemory #-}
-
-_VkBindBufferMemory :: CString
-_VkBindBufferMemory = Ptr "vkBindBufferMemory\NUL"##
-
-{-# INLINE is_VkBindBufferMemory #-}
-
-is_VkBindBufferMemory :: CString -> Bool
-is_VkBindBufferMemory = (EQ ==) . cmpCStrings _VkBindBufferMemory
-
-type VkBindBufferMemory = "vkBindBufferMemory"
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkBindBufferMemory
--- >     ( VkDevice device
--- >     , VkBuffer buffer
--- >     , VkDeviceMemory memory
--- >     , VkDeviceSize memoryOffset
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkBindBufferMemory vkBindBufferMemory registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkBindBufferMemory" vkBindBufferMemory
-               ::
-               VkDevice -- ^ device
-                        ->
-                 VkBuffer -- ^ buffer
-                          -> VkDeviceMemory -- ^ memory
-                                            -> VkDeviceSize -- ^ memoryOffset
-                                                            -> IO VkResult
-
-##else
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkBindBufferMemory
--- >     ( VkDevice device
--- >     , VkBuffer buffer
--- >     , VkDeviceMemory memory
--- >     , VkDeviceSize memoryOffset
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkBindBufferMemory vkBindBufferMemory registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkBindBufferMemorySafe@ and @vkBindBufferMemory@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myBindBufferMemory <- vkGetDeviceProc @VkBindBufferMemory vkDevice
---
--- or less efficient:
---
--- > myBindBufferMemory <- vkGetProc @VkBindBufferMemory
---
-vkBindBufferMemory ::
-                   VkDevice -- ^ device
-                            ->
-                     VkBuffer -- ^ buffer
-                              -> VkDeviceMemory -- ^ memory
-                                                -> VkDeviceSize -- ^ memoryOffset
-                                                                -> IO VkResult
-vkBindBufferMemory
-  = unsafeDupablePerformIO (vkGetProc @VkBindBufferMemory)
-
-{-# NOINLINE vkBindBufferMemory #-}
-##endif
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkBindBufferMemory
--- >     ( VkDevice device
--- >     , VkBuffer buffer
--- >     , VkDeviceMemory memory
--- >     , VkDeviceSize memoryOffset
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkBindBufferMemory vkBindBufferMemory registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkBindBufferMemory"
-               vkBindBufferMemorySafe ::
-               VkDevice -- ^ device
-                        ->
-                 VkBuffer -- ^ buffer
-                          -> VkDeviceMemory -- ^ memory
-                                            -> VkDeviceSize -- ^ memoryOffset
-                                                            -> IO VkResult
-
-##else
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkBindBufferMemory
--- >     ( VkDevice device
--- >     , VkBuffer buffer
--- >     , VkDeviceMemory memory
--- >     , VkDeviceSize memoryOffset
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkBindBufferMemory vkBindBufferMemory registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkBindBufferMemorySafe@ and @vkBindBufferMemory@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myBindBufferMemory <- vkGetDeviceProc @VkBindBufferMemory vkDevice
---
--- or less efficient:
---
--- > myBindBufferMemory <- vkGetProc @VkBindBufferMemory
---
-vkBindBufferMemorySafe ::
-                       VkDevice -- ^ device
-                                ->
-                         VkBuffer -- ^ buffer
-                                  -> VkDeviceMemory -- ^ memory
-                                                    -> VkDeviceSize -- ^ memoryOffset
-                                                                    -> IO VkResult
-vkBindBufferMemorySafe = vkBindBufferMemory
-
-{-# INLINE vkBindBufferMemorySafe #-}
-##endif
-
--- | Success codes: 'VK_SUCCESS'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
---   > VkResult vkBindBufferMemory
---   >     ( VkDevice device
---   >     , VkBuffer buffer
---   >     , VkDeviceMemory memory
---   >     , VkDeviceSize memoryOffset
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkBindBufferMemory vkBindBufferMemory registry at www.khronos.org>
-type HS_vkBindBufferMemory =
-     VkDevice -- ^ device
-              ->
-       VkBuffer -- ^ buffer
-                -> VkDeviceMemory -- ^ memory
-                                  -> VkDeviceSize -- ^ memoryOffset
-                                                  -> IO VkResult
-
-type PFN_vkBindBufferMemory = FunPtr HS_vkBindBufferMemory
-
-foreign import ccall "dynamic" unwrapVkBindBufferMemory ::
-               PFN_vkBindBufferMemory -> HS_vkBindBufferMemory
-
-instance VulkanProc "vkBindBufferMemory" where
-        type VkProcType "vkBindBufferMemory" = HS_vkBindBufferMemory
-        vkProcSymbol = _VkBindBufferMemory
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkBindBufferMemory
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VkBindImageMemory :: CString
-
-pattern VkBindImageMemory <- (is_VkBindImageMemory -> True)
-  where VkBindImageMemory = _VkBindImageMemory
-
-{-# INLINE _VkBindImageMemory #-}
-
-_VkBindImageMemory :: CString
-_VkBindImageMemory = Ptr "vkBindImageMemory\NUL"##
-
-{-# INLINE is_VkBindImageMemory #-}
-
-is_VkBindImageMemory :: CString -> Bool
-is_VkBindImageMemory = (EQ ==) . cmpCStrings _VkBindImageMemory
-
-type VkBindImageMemory = "vkBindImageMemory"
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkBindImageMemory
--- >     ( VkDevice device
--- >     , VkImage image
--- >     , VkDeviceMemory memory
--- >     , VkDeviceSize memoryOffset
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkBindImageMemory vkBindImageMemory registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkBindImageMemory" vkBindImageMemory
-               ::
-               VkDevice -- ^ device
-                        ->
-                 VkImage -- ^ image
-                         -> VkDeviceMemory -- ^ memory
-                                           -> VkDeviceSize -- ^ memoryOffset
-                                                           -> IO VkResult
-
-##else
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkBindImageMemory
--- >     ( VkDevice device
--- >     , VkImage image
--- >     , VkDeviceMemory memory
--- >     , VkDeviceSize memoryOffset
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkBindImageMemory vkBindImageMemory registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkBindImageMemorySafe@ and @vkBindImageMemory@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myBindImageMemory <- vkGetDeviceProc @VkBindImageMemory vkDevice
---
--- or less efficient:
---
--- > myBindImageMemory <- vkGetProc @VkBindImageMemory
---
-vkBindImageMemory ::
-                  VkDevice -- ^ device
-                           ->
-                    VkImage -- ^ image
-                            -> VkDeviceMemory -- ^ memory
-                                              -> VkDeviceSize -- ^ memoryOffset
-                                                              -> IO VkResult
-vkBindImageMemory
-  = unsafeDupablePerformIO (vkGetProc @VkBindImageMemory)
-
-{-# NOINLINE vkBindImageMemory #-}
-##endif
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkBindImageMemory
--- >     ( VkDevice device
--- >     , VkImage image
--- >     , VkDeviceMemory memory
--- >     , VkDeviceSize memoryOffset
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkBindImageMemory vkBindImageMemory registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkBindImageMemory" vkBindImageMemorySafe
-               ::
-               VkDevice -- ^ device
-                        ->
-                 VkImage -- ^ image
-                         -> VkDeviceMemory -- ^ memory
-                                           -> VkDeviceSize -- ^ memoryOffset
-                                                           -> IO VkResult
-
-##else
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkBindImageMemory
--- >     ( VkDevice device
--- >     , VkImage image
--- >     , VkDeviceMemory memory
--- >     , VkDeviceSize memoryOffset
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkBindImageMemory vkBindImageMemory registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkBindImageMemorySafe@ and @vkBindImageMemory@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myBindImageMemory <- vkGetDeviceProc @VkBindImageMemory vkDevice
---
--- or less efficient:
---
--- > myBindImageMemory <- vkGetProc @VkBindImageMemory
---
-vkBindImageMemorySafe ::
-                      VkDevice -- ^ device
-                               ->
-                        VkImage -- ^ image
-                                -> VkDeviceMemory -- ^ memory
-                                                  -> VkDeviceSize -- ^ memoryOffset
-                                                                  -> IO VkResult
-vkBindImageMemorySafe = vkBindImageMemory
-
-{-# INLINE vkBindImageMemorySafe #-}
-##endif
-
--- | Success codes: 'VK_SUCCESS'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
---   > VkResult vkBindImageMemory
---   >     ( VkDevice device
---   >     , VkImage image
---   >     , VkDeviceMemory memory
---   >     , VkDeviceSize memoryOffset
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkBindImageMemory vkBindImageMemory registry at www.khronos.org>
-type HS_vkBindImageMemory =
-     VkDevice -- ^ device
-              ->
-       VkImage -- ^ image
-               -> VkDeviceMemory -- ^ memory
-                                 -> VkDeviceSize -- ^ memoryOffset
-                                                 -> IO VkResult
-
-type PFN_vkBindImageMemory = FunPtr HS_vkBindImageMemory
-
-foreign import ccall "dynamic" unwrapVkBindImageMemory ::
-               PFN_vkBindImageMemory -> HS_vkBindImageMemory
-
-instance VulkanProc "vkBindImageMemory" where
-        type VkProcType "vkBindImageMemory" = HS_vkBindImageMemory
-        vkProcSymbol = _VkBindImageMemory
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkBindImageMemory
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VkGetBufferMemoryRequirements :: CString
-
-pattern VkGetBufferMemoryRequirements <-
-        (is_VkGetBufferMemoryRequirements -> True)
-  where VkGetBufferMemoryRequirements
-          = _VkGetBufferMemoryRequirements
-
-{-# INLINE _VkGetBufferMemoryRequirements #-}
-
-_VkGetBufferMemoryRequirements :: CString
-_VkGetBufferMemoryRequirements
-  = Ptr "vkGetBufferMemoryRequirements\NUL"##
-
-{-# INLINE is_VkGetBufferMemoryRequirements #-}
-
-is_VkGetBufferMemoryRequirements :: CString -> Bool
-is_VkGetBufferMemoryRequirements
-  = (EQ ==) . cmpCStrings _VkGetBufferMemoryRequirements
-
-type VkGetBufferMemoryRequirements =
-     "vkGetBufferMemoryRequirements"
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- > void vkGetBufferMemoryRequirements
--- >     ( VkDevice device
--- >     , VkBuffer buffer
--- >     , VkMemoryRequirements* pMemoryRequirements
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetBufferMemoryRequirements vkGetBufferMemoryRequirements registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkGetBufferMemoryRequirements"
-               vkGetBufferMemoryRequirements ::
-               VkDevice -- ^ device
-                        -> VkBuffer -- ^ buffer
-                                    -> Ptr VkMemoryRequirements -- ^ pMemoryRequirements
-                                                                -> IO ()
-
-##else
--- |
--- > void vkGetBufferMemoryRequirements
--- >     ( VkDevice device
--- >     , VkBuffer buffer
--- >     , VkMemoryRequirements* pMemoryRequirements
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetBufferMemoryRequirements vkGetBufferMemoryRequirements registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkGetBufferMemoryRequirementsSafe@ and @vkGetBufferMemoryRequirements@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetBufferMemoryRequirements <- vkGetDeviceProc @VkGetBufferMemoryRequirements vkDevice
---
--- or less efficient:
---
--- > myGetBufferMemoryRequirements <- vkGetProc @VkGetBufferMemoryRequirements
---
-vkGetBufferMemoryRequirements ::
-                              VkDevice -- ^ device
-                                       -> VkBuffer -- ^ buffer
-                                                   -> Ptr VkMemoryRequirements -- ^ pMemoryRequirements
-                                                                               -> IO ()
-vkGetBufferMemoryRequirements
-  = unsafeDupablePerformIO (vkGetProc @VkGetBufferMemoryRequirements)
-
-{-# NOINLINE vkGetBufferMemoryRequirements #-}
-##endif
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- > void vkGetBufferMemoryRequirements
--- >     ( VkDevice device
--- >     , VkBuffer buffer
--- >     , VkMemoryRequirements* pMemoryRequirements
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetBufferMemoryRequirements vkGetBufferMemoryRequirements registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkGetBufferMemoryRequirements"
-               vkGetBufferMemoryRequirementsSafe ::
-               VkDevice -- ^ device
-                        -> VkBuffer -- ^ buffer
-                                    -> Ptr VkMemoryRequirements -- ^ pMemoryRequirements
-                                                                -> IO ()
-
-##else
--- |
--- > void vkGetBufferMemoryRequirements
--- >     ( VkDevice device
--- >     , VkBuffer buffer
--- >     , VkMemoryRequirements* pMemoryRequirements
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetBufferMemoryRequirements vkGetBufferMemoryRequirements registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkGetBufferMemoryRequirementsSafe@ and @vkGetBufferMemoryRequirements@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetBufferMemoryRequirements <- vkGetDeviceProc @VkGetBufferMemoryRequirements vkDevice
---
--- or less efficient:
---
--- > myGetBufferMemoryRequirements <- vkGetProc @VkGetBufferMemoryRequirements
---
-vkGetBufferMemoryRequirementsSafe ::
-                                  VkDevice -- ^ device
-                                           -> VkBuffer -- ^ buffer
-                                                       -> Ptr VkMemoryRequirements -- ^ pMemoryRequirements
-                                                                                   -> IO ()
-vkGetBufferMemoryRequirementsSafe = vkGetBufferMemoryRequirements
-
-{-# INLINE vkGetBufferMemoryRequirementsSafe #-}
-##endif
-
--- | > void vkGetBufferMemoryRequirements
---   >     ( VkDevice device
---   >     , VkBuffer buffer
---   >     , VkMemoryRequirements* pMemoryRequirements
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetBufferMemoryRequirements vkGetBufferMemoryRequirements registry at www.khronos.org>
-type HS_vkGetBufferMemoryRequirements =
-     VkDevice -- ^ device
-              -> VkBuffer -- ^ buffer
-                          -> Ptr VkMemoryRequirements -- ^ pMemoryRequirements
-                                                      -> IO ()
-
-type PFN_vkGetBufferMemoryRequirements =
-     FunPtr HS_vkGetBufferMemoryRequirements
-
-foreign import ccall "dynamic" unwrapVkGetBufferMemoryRequirements
-               ::
-               PFN_vkGetBufferMemoryRequirements ->
-                 HS_vkGetBufferMemoryRequirements
-
-instance VulkanProc "vkGetBufferMemoryRequirements" where
-        type VkProcType "vkGetBufferMemoryRequirements" =
-             HS_vkGetBufferMemoryRequirements
-        vkProcSymbol = _VkGetBufferMemoryRequirements
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkGetBufferMemoryRequirements
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VkGetImageMemoryRequirements :: CString
-
-pattern VkGetImageMemoryRequirements <-
-        (is_VkGetImageMemoryRequirements -> True)
-  where VkGetImageMemoryRequirements = _VkGetImageMemoryRequirements
-
-{-# INLINE _VkGetImageMemoryRequirements #-}
-
-_VkGetImageMemoryRequirements :: CString
-_VkGetImageMemoryRequirements
-  = Ptr "vkGetImageMemoryRequirements\NUL"##
-
-{-# INLINE is_VkGetImageMemoryRequirements #-}
-
-is_VkGetImageMemoryRequirements :: CString -> Bool
-is_VkGetImageMemoryRequirements
-  = (EQ ==) . cmpCStrings _VkGetImageMemoryRequirements
-
-type VkGetImageMemoryRequirements = "vkGetImageMemoryRequirements"
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- > void vkGetImageMemoryRequirements
--- >     ( VkDevice device
--- >     , VkImage image
--- >     , VkMemoryRequirements* pMemoryRequirements
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetImageMemoryRequirements vkGetImageMemoryRequirements registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkGetImageMemoryRequirements"
-               vkGetImageMemoryRequirements ::
-               VkDevice -- ^ device
-                        -> VkImage -- ^ image
-                                   -> Ptr VkMemoryRequirements -- ^ pMemoryRequirements
-                                                               -> IO ()
-
-##else
--- |
--- > void vkGetImageMemoryRequirements
--- >     ( VkDevice device
--- >     , VkImage image
--- >     , VkMemoryRequirements* pMemoryRequirements
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetImageMemoryRequirements vkGetImageMemoryRequirements registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkGetImageMemoryRequirementsSafe@ and @vkGetImageMemoryRequirements@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetImageMemoryRequirements <- vkGetDeviceProc @VkGetImageMemoryRequirements vkDevice
---
--- or less efficient:
---
--- > myGetImageMemoryRequirements <- vkGetProc @VkGetImageMemoryRequirements
---
-vkGetImageMemoryRequirements ::
-                             VkDevice -- ^ device
-                                      -> VkImage -- ^ image
-                                                 -> Ptr VkMemoryRequirements -- ^ pMemoryRequirements
-                                                                             -> IO ()
-vkGetImageMemoryRequirements
-  = unsafeDupablePerformIO (vkGetProc @VkGetImageMemoryRequirements)
-
-{-# NOINLINE vkGetImageMemoryRequirements #-}
-##endif
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- > void vkGetImageMemoryRequirements
--- >     ( VkDevice device
--- >     , VkImage image
--- >     , VkMemoryRequirements* pMemoryRequirements
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetImageMemoryRequirements vkGetImageMemoryRequirements registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkGetImageMemoryRequirements"
-               vkGetImageMemoryRequirementsSafe ::
-               VkDevice -- ^ device
-                        -> VkImage -- ^ image
-                                   -> Ptr VkMemoryRequirements -- ^ pMemoryRequirements
-                                                               -> IO ()
-
-##else
--- |
--- > void vkGetImageMemoryRequirements
--- >     ( VkDevice device
--- >     , VkImage image
--- >     , VkMemoryRequirements* pMemoryRequirements
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetImageMemoryRequirements vkGetImageMemoryRequirements registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkGetImageMemoryRequirementsSafe@ and @vkGetImageMemoryRequirements@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetImageMemoryRequirements <- vkGetDeviceProc @VkGetImageMemoryRequirements vkDevice
---
--- or less efficient:
---
--- > myGetImageMemoryRequirements <- vkGetProc @VkGetImageMemoryRequirements
---
-vkGetImageMemoryRequirementsSafe ::
-                                 VkDevice -- ^ device
-                                          -> VkImage -- ^ image
-                                                     -> Ptr VkMemoryRequirements -- ^ pMemoryRequirements
-                                                                                 -> IO ()
-vkGetImageMemoryRequirementsSafe = vkGetImageMemoryRequirements
-
-{-# INLINE vkGetImageMemoryRequirementsSafe #-}
-##endif
-
--- | > void vkGetImageMemoryRequirements
---   >     ( VkDevice device
---   >     , VkImage image
---   >     , VkMemoryRequirements* pMemoryRequirements
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetImageMemoryRequirements vkGetImageMemoryRequirements registry at www.khronos.org>
-type HS_vkGetImageMemoryRequirements =
-     VkDevice -- ^ device
-              -> VkImage -- ^ image
-                         -> Ptr VkMemoryRequirements -- ^ pMemoryRequirements
-                                                     -> IO ()
-
-type PFN_vkGetImageMemoryRequirements =
-     FunPtr HS_vkGetImageMemoryRequirements
-
-foreign import ccall "dynamic" unwrapVkGetImageMemoryRequirements
-               ::
-               PFN_vkGetImageMemoryRequirements -> HS_vkGetImageMemoryRequirements
-
-instance VulkanProc "vkGetImageMemoryRequirements" where
-        type VkProcType "vkGetImageMemoryRequirements" =
-             HS_vkGetImageMemoryRequirements
-        vkProcSymbol = _VkGetImageMemoryRequirements
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkGetImageMemoryRequirements
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VkGetImageSparseMemoryRequirements :: CString
-
-pattern VkGetImageSparseMemoryRequirements <-
-        (is_VkGetImageSparseMemoryRequirements -> True)
-  where VkGetImageSparseMemoryRequirements
-          = _VkGetImageSparseMemoryRequirements
-
-{-# INLINE _VkGetImageSparseMemoryRequirements #-}
-
-_VkGetImageSparseMemoryRequirements :: CString
-_VkGetImageSparseMemoryRequirements
-  = Ptr "vkGetImageSparseMemoryRequirements\NUL"##
-
-{-# INLINE is_VkGetImageSparseMemoryRequirements #-}
-
-is_VkGetImageSparseMemoryRequirements :: CString -> Bool
-is_VkGetImageSparseMemoryRequirements
-  = (EQ ==) . cmpCStrings _VkGetImageSparseMemoryRequirements
-
-type VkGetImageSparseMemoryRequirements =
-     "vkGetImageSparseMemoryRequirements"
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- > void vkGetImageSparseMemoryRequirements
--- >     ( VkDevice device
--- >     , VkImage image
--- >     , uint32_t* pSparseMemoryRequirementCount
--- >     , VkSparseImageMemoryRequirements* pSparseMemoryRequirements
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetImageSparseMemoryRequirements vkGetImageSparseMemoryRequirements registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkGetImageSparseMemoryRequirements"
-               vkGetImageSparseMemoryRequirements ::
-               VkDevice -- ^ device
-                        ->
-                 VkImage -- ^ image
-                         ->
-                   Ptr Word32 -- ^ pSparseMemoryRequirementCount
-                              -> Ptr VkSparseImageMemoryRequirements -- ^ pSparseMemoryRequirements
-                                                                     -> IO ()
-
-##else
--- |
--- > void vkGetImageSparseMemoryRequirements
--- >     ( VkDevice device
--- >     , VkImage image
--- >     , uint32_t* pSparseMemoryRequirementCount
--- >     , VkSparseImageMemoryRequirements* pSparseMemoryRequirements
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetImageSparseMemoryRequirements vkGetImageSparseMemoryRequirements registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkGetImageSparseMemoryRequirementsSafe@ and @vkGetImageSparseMemoryRequirements@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetImageSparseMemoryRequirements <- vkGetDeviceProc @VkGetImageSparseMemoryRequirements vkDevice
---
--- or less efficient:
---
--- > myGetImageSparseMemoryRequirements <- vkGetProc @VkGetImageSparseMemoryRequirements
---
-vkGetImageSparseMemoryRequirements ::
-                                   VkDevice -- ^ device
-                                            ->
-                                     VkImage -- ^ image
-                                             ->
-                                       Ptr Word32 -- ^ pSparseMemoryRequirementCount
-                                                  -> Ptr VkSparseImageMemoryRequirements -- ^ pSparseMemoryRequirements
-                                                                                         -> IO ()
-vkGetImageSparseMemoryRequirements
-  = unsafeDupablePerformIO
-      (vkGetProc @VkGetImageSparseMemoryRequirements)
-
-{-# NOINLINE vkGetImageSparseMemoryRequirements #-}
-##endif
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- > void vkGetImageSparseMemoryRequirements
--- >     ( VkDevice device
--- >     , VkImage image
--- >     , uint32_t* pSparseMemoryRequirementCount
--- >     , VkSparseImageMemoryRequirements* pSparseMemoryRequirements
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetImageSparseMemoryRequirements vkGetImageSparseMemoryRequirements registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkGetImageSparseMemoryRequirements"
-               vkGetImageSparseMemoryRequirementsSafe ::
-               VkDevice -- ^ device
-                        ->
-                 VkImage -- ^ image
-                         ->
-                   Ptr Word32 -- ^ pSparseMemoryRequirementCount
-                              -> Ptr VkSparseImageMemoryRequirements -- ^ pSparseMemoryRequirements
-                                                                     -> IO ()
-
-##else
--- |
--- > void vkGetImageSparseMemoryRequirements
--- >     ( VkDevice device
--- >     , VkImage image
--- >     , uint32_t* pSparseMemoryRequirementCount
--- >     , VkSparseImageMemoryRequirements* pSparseMemoryRequirements
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetImageSparseMemoryRequirements vkGetImageSparseMemoryRequirements registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkGetImageSparseMemoryRequirementsSafe@ and @vkGetImageSparseMemoryRequirements@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetImageSparseMemoryRequirements <- vkGetDeviceProc @VkGetImageSparseMemoryRequirements vkDevice
---
--- or less efficient:
---
--- > myGetImageSparseMemoryRequirements <- vkGetProc @VkGetImageSparseMemoryRequirements
---
-vkGetImageSparseMemoryRequirementsSafe ::
-                                       VkDevice -- ^ device
-                                                ->
-                                         VkImage -- ^ image
-                                                 ->
-                                           Ptr Word32 -- ^ pSparseMemoryRequirementCount
-                                                      ->
-                                             Ptr VkSparseImageMemoryRequirements -- ^ pSparseMemoryRequirements
-                                                                                 -> IO ()
-vkGetImageSparseMemoryRequirementsSafe
-  = vkGetImageSparseMemoryRequirements
-
-{-# INLINE vkGetImageSparseMemoryRequirementsSafe #-}
-##endif
-
--- | > void vkGetImageSparseMemoryRequirements
---   >     ( VkDevice device
---   >     , VkImage image
---   >     , uint32_t* pSparseMemoryRequirementCount
---   >     , VkSparseImageMemoryRequirements* pSparseMemoryRequirements
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetImageSparseMemoryRequirements vkGetImageSparseMemoryRequirements registry at www.khronos.org>
-type HS_vkGetImageSparseMemoryRequirements =
-     VkDevice -- ^ device
-              ->
-       VkImage -- ^ image
-               ->
-         Ptr Word32 -- ^ pSparseMemoryRequirementCount
-                    -> Ptr VkSparseImageMemoryRequirements -- ^ pSparseMemoryRequirements
-                                                           -> IO ()
-
-type PFN_vkGetImageSparseMemoryRequirements =
-     FunPtr HS_vkGetImageSparseMemoryRequirements
-
-foreign import ccall "dynamic"
-               unwrapVkGetImageSparseMemoryRequirements ::
-               PFN_vkGetImageSparseMemoryRequirements ->
-                 HS_vkGetImageSparseMemoryRequirements
-
-instance VulkanProc "vkGetImageSparseMemoryRequirements" where
-        type VkProcType "vkGetImageSparseMemoryRequirements" =
-             HS_vkGetImageSparseMemoryRequirements
-        vkProcSymbol = _VkGetImageSparseMemoryRequirements
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkGetImageSparseMemoryRequirements
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VkGetPhysicalDeviceSparseImageFormatProperties :: CString
-
-pattern VkGetPhysicalDeviceSparseImageFormatProperties <-
-        (is_VkGetPhysicalDeviceSparseImageFormatProperties -> True)
-  where VkGetPhysicalDeviceSparseImageFormatProperties
-          = _VkGetPhysicalDeviceSparseImageFormatProperties
-
-{-# INLINE _VkGetPhysicalDeviceSparseImageFormatProperties #-}
-
-_VkGetPhysicalDeviceSparseImageFormatProperties :: CString
-_VkGetPhysicalDeviceSparseImageFormatProperties
-  = Ptr "vkGetPhysicalDeviceSparseImageFormatProperties\NUL"##
-
-{-# INLINE is_VkGetPhysicalDeviceSparseImageFormatProperties #-}
-
-is_VkGetPhysicalDeviceSparseImageFormatProperties ::
-                                                  CString -> Bool
-is_VkGetPhysicalDeviceSparseImageFormatProperties
-  = (EQ ==) .
-      cmpCStrings _VkGetPhysicalDeviceSparseImageFormatProperties
-
-type VkGetPhysicalDeviceSparseImageFormatProperties =
-     "vkGetPhysicalDeviceSparseImageFormatProperties"
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- > void vkGetPhysicalDeviceSparseImageFormatProperties
--- >     ( VkPhysicalDevice physicalDevice
--- >     , VkFormat format
--- >     , VkImageType type
--- >     , VkSampleCountFlagBits samples
--- >     , VkImageUsageFlags usage
--- >     , VkImageTiling tiling
--- >     , uint32_t* pPropertyCount
--- >     , VkSparseImageFormatProperties* pProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceSparseImageFormatProperties vkGetPhysicalDeviceSparseImageFormatProperties registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe
-               "vkGetPhysicalDeviceSparseImageFormatProperties"
-               vkGetPhysicalDeviceSparseImageFormatProperties ::
-               VkPhysicalDevice -- ^ physicalDevice
-                                ->
-                 VkFormat -- ^ format
-                          ->
-                   VkImageType -- ^ type
-                               ->
-                     VkSampleCountFlagBits -- ^ samples
-                                           ->
-                       VkImageUsageFlags -- ^ usage
-                                         ->
-                         VkImageTiling -- ^ tiling
-                                       ->
-                           Ptr Word32 -- ^ pPropertyCount
-                                      -> Ptr VkSparseImageFormatProperties -- ^ pProperties
-                                                                           -> IO ()
-
-##else
--- |
--- > void vkGetPhysicalDeviceSparseImageFormatProperties
--- >     ( VkPhysicalDevice physicalDevice
--- >     , VkFormat format
--- >     , VkImageType type
--- >     , VkSampleCountFlagBits samples
--- >     , VkImageUsageFlags usage
--- >     , VkImageTiling tiling
--- >     , uint32_t* pPropertyCount
--- >     , VkSparseImageFormatProperties* pProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceSparseImageFormatProperties vkGetPhysicalDeviceSparseImageFormatProperties registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkGetPhysicalDeviceSparseImageFormatPropertiesSafe@ and @vkGetPhysicalDeviceSparseImageFormatProperties@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetPhysicalDeviceSparseImageFormatProperties <- vkGetInstanceProc @VkGetPhysicalDeviceSparseImageFormatProperties vkInstance
---
--- or less efficient:
---
--- > myGetPhysicalDeviceSparseImageFormatProperties <- vkGetProc @VkGetPhysicalDeviceSparseImageFormatProperties
---
-vkGetPhysicalDeviceSparseImageFormatProperties ::
-                                               VkPhysicalDevice -- ^ physicalDevice
-                                                                ->
-                                                 VkFormat -- ^ format
-                                                          ->
-                                                   VkImageType -- ^ type
-                                                               ->
-                                                     VkSampleCountFlagBits -- ^ samples
-                                                                           ->
-                                                       VkImageUsageFlags -- ^ usage
-                                                                         ->
-                                                         VkImageTiling -- ^ tiling
-                                                                       ->
-                                                           Ptr Word32 -- ^ pPropertyCount
-                                                                      ->
-                                                             Ptr VkSparseImageFormatProperties -- ^ pProperties
-                                                                                               ->
-                                                               IO ()
-vkGetPhysicalDeviceSparseImageFormatProperties
-  = unsafeDupablePerformIO
-      (vkGetProc @VkGetPhysicalDeviceSparseImageFormatProperties)
-
-{-# NOINLINE vkGetPhysicalDeviceSparseImageFormatProperties #-}
-##endif
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- > void vkGetPhysicalDeviceSparseImageFormatProperties
--- >     ( VkPhysicalDevice physicalDevice
--- >     , VkFormat format
--- >     , VkImageType type
--- >     , VkSampleCountFlagBits samples
--- >     , VkImageUsageFlags usage
--- >     , VkImageTiling tiling
--- >     , uint32_t* pPropertyCount
--- >     , VkSparseImageFormatProperties* pProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceSparseImageFormatProperties vkGetPhysicalDeviceSparseImageFormatProperties registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe
-               "vkGetPhysicalDeviceSparseImageFormatProperties"
-               vkGetPhysicalDeviceSparseImageFormatPropertiesSafe ::
-               VkPhysicalDevice -- ^ physicalDevice
-                                ->
-                 VkFormat -- ^ format
-                          ->
-                   VkImageType -- ^ type
-                               ->
-                     VkSampleCountFlagBits -- ^ samples
-                                           ->
-                       VkImageUsageFlags -- ^ usage
-                                         ->
-                         VkImageTiling -- ^ tiling
-                                       ->
-                           Ptr Word32 -- ^ pPropertyCount
-                                      -> Ptr VkSparseImageFormatProperties -- ^ pProperties
-                                                                           -> IO ()
-
-##else
--- |
--- > void vkGetPhysicalDeviceSparseImageFormatProperties
--- >     ( VkPhysicalDevice physicalDevice
--- >     , VkFormat format
--- >     , VkImageType type
--- >     , VkSampleCountFlagBits samples
--- >     , VkImageUsageFlags usage
--- >     , VkImageTiling tiling
--- >     , uint32_t* pPropertyCount
--- >     , VkSparseImageFormatProperties* pProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceSparseImageFormatProperties vkGetPhysicalDeviceSparseImageFormatProperties registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkGetPhysicalDeviceSparseImageFormatPropertiesSafe@ and @vkGetPhysicalDeviceSparseImageFormatProperties@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetPhysicalDeviceSparseImageFormatProperties <- vkGetInstanceProc @VkGetPhysicalDeviceSparseImageFormatProperties vkInstance
---
--- or less efficient:
---
--- > myGetPhysicalDeviceSparseImageFormatProperties <- vkGetProc @VkGetPhysicalDeviceSparseImageFormatProperties
---
-vkGetPhysicalDeviceSparseImageFormatPropertiesSafe ::
-                                                   VkPhysicalDevice -- ^ physicalDevice
-                                                                    ->
-                                                     VkFormat -- ^ format
-                                                              ->
-                                                       VkImageType -- ^ type
-                                                                   ->
-                                                         VkSampleCountFlagBits -- ^ samples
-                                                                               ->
-                                                           VkImageUsageFlags -- ^ usage
-                                                                             ->
-                                                             VkImageTiling -- ^ tiling
-                                                                           ->
-                                                               Ptr Word32 -- ^ pPropertyCount
-                                                                          ->
-                                                                 Ptr VkSparseImageFormatProperties -- ^ pProperties
-                                                                   -> IO ()
-vkGetPhysicalDeviceSparseImageFormatPropertiesSafe
-  = vkGetPhysicalDeviceSparseImageFormatProperties
-
-{-# INLINE vkGetPhysicalDeviceSparseImageFormatPropertiesSafe #-}
-##endif
-
--- | > void vkGetPhysicalDeviceSparseImageFormatProperties
---   >     ( VkPhysicalDevice physicalDevice
---   >     , VkFormat format
---   >     , VkImageType type
---   >     , VkSampleCountFlagBits samples
---   >     , VkImageUsageFlags usage
---   >     , VkImageTiling tiling
---   >     , uint32_t* pPropertyCount
---   >     , VkSparseImageFormatProperties* pProperties
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceSparseImageFormatProperties vkGetPhysicalDeviceSparseImageFormatProperties registry at www.khronos.org>
-type HS_vkGetPhysicalDeviceSparseImageFormatProperties =
-     VkPhysicalDevice -- ^ physicalDevice
-                      ->
-       VkFormat -- ^ format
-                ->
-         VkImageType -- ^ type
-                     ->
-           VkSampleCountFlagBits -- ^ samples
-                                 ->
-             VkImageUsageFlags -- ^ usage
-                               ->
-               VkImageTiling -- ^ tiling
-                             ->
-                 Ptr Word32 -- ^ pPropertyCount
-                            -> Ptr VkSparseImageFormatProperties -- ^ pProperties
-                                                                 -> IO ()
-
-type PFN_vkGetPhysicalDeviceSparseImageFormatProperties =
-     FunPtr HS_vkGetPhysicalDeviceSparseImageFormatProperties
-
-foreign import ccall "dynamic"
-               unwrapVkGetPhysicalDeviceSparseImageFormatProperties ::
-               PFN_vkGetPhysicalDeviceSparseImageFormatProperties ->
-                 HS_vkGetPhysicalDeviceSparseImageFormatProperties
-
-instance VulkanProc
-           "vkGetPhysicalDeviceSparseImageFormatProperties"
-         where
-        type VkProcType "vkGetPhysicalDeviceSparseImageFormatProperties" =
-             HS_vkGetPhysicalDeviceSparseImageFormatProperties
-        vkProcSymbol = _VkGetPhysicalDeviceSparseImageFormatProperties
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr
-          = unwrapVkGetPhysicalDeviceSparseImageFormatProperties
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VkQueueBindSparse :: CString
-
-pattern VkQueueBindSparse <- (is_VkQueueBindSparse -> True)
-  where VkQueueBindSparse = _VkQueueBindSparse
-
-{-# INLINE _VkQueueBindSparse #-}
-
-_VkQueueBindSparse :: CString
-_VkQueueBindSparse = Ptr "vkQueueBindSparse\NUL"##
-
-{-# INLINE is_VkQueueBindSparse #-}
-
-is_VkQueueBindSparse :: CString -> Bool
-is_VkQueueBindSparse = (EQ ==) . cmpCStrings _VkQueueBindSparse
-
-type VkQueueBindSparse = "vkQueueBindSparse"
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
---
--- Queues: 'sparse_binding'.
---
--- > VkResult vkQueueBindSparse
--- >     ( VkQueue queue
--- >     , uint32_t bindInfoCount
--- >     , const VkBindSparseInfo* pBindInfo
--- >     , VkFence fence
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkQueueBindSparse vkQueueBindSparse registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkQueueBindSparse" vkQueueBindSparse
-               ::
-               VkQueue -- ^ queue
-                       -> Word32 -- ^ bindInfoCount
-                                 -> Ptr VkBindSparseInfo -- ^ pBindInfo
-                                                         -> VkFence -- ^ fence
-                                                                    -> IO VkResult
-
-##else
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
---
--- Queues: 'sparse_binding'.
---
--- > VkResult vkQueueBindSparse
--- >     ( VkQueue queue
--- >     , uint32_t bindInfoCount
--- >     , const VkBindSparseInfo* pBindInfo
--- >     , VkFence fence
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkQueueBindSparse vkQueueBindSparse registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkQueueBindSparseSafe@ and @vkQueueBindSparse@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myQueueBindSparse <- vkGetInstanceProc @VkQueueBindSparse vkInstance
---
--- or less efficient:
---
--- > myQueueBindSparse <- vkGetProc @VkQueueBindSparse
---
-vkQueueBindSparse ::
-                  VkQueue -- ^ queue
-                          -> Word32 -- ^ bindInfoCount
-                                    -> Ptr VkBindSparseInfo -- ^ pBindInfo
-                                                            -> VkFence -- ^ fence
-                                                                       -> IO VkResult
-vkQueueBindSparse
-  = unsafeDupablePerformIO (vkGetProc @VkQueueBindSparse)
-
-{-# NOINLINE vkQueueBindSparse #-}
-##endif
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
---
--- Queues: 'sparse_binding'.
---
--- > VkResult vkQueueBindSparse
--- >     ( VkQueue queue
--- >     , uint32_t bindInfoCount
--- >     , const VkBindSparseInfo* pBindInfo
--- >     , VkFence fence
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkQueueBindSparse vkQueueBindSparse registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkQueueBindSparse" vkQueueBindSparseSafe
-               ::
-               VkQueue -- ^ queue
-                       -> Word32 -- ^ bindInfoCount
-                                 -> Ptr VkBindSparseInfo -- ^ pBindInfo
-                                                         -> VkFence -- ^ fence
-                                                                    -> IO VkResult
-
-##else
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
---
--- Queues: 'sparse_binding'.
---
--- > VkResult vkQueueBindSparse
--- >     ( VkQueue queue
--- >     , uint32_t bindInfoCount
--- >     , const VkBindSparseInfo* pBindInfo
--- >     , VkFence fence
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkQueueBindSparse vkQueueBindSparse registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkQueueBindSparseSafe@ and @vkQueueBindSparse@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myQueueBindSparse <- vkGetInstanceProc @VkQueueBindSparse vkInstance
---
--- or less efficient:
---
--- > myQueueBindSparse <- vkGetProc @VkQueueBindSparse
---
-vkQueueBindSparseSafe ::
-                      VkQueue -- ^ queue
-                              -> Word32 -- ^ bindInfoCount
-                                        -> Ptr VkBindSparseInfo -- ^ pBindInfo
-                                                                -> VkFence -- ^ fence
-                                                                           -> IO VkResult
-vkQueueBindSparseSafe = vkQueueBindSparse
-
-{-# INLINE vkQueueBindSparseSafe #-}
-##endif
-
--- | Success codes: 'VK_SUCCESS'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
---
---   Queues: 'sparse_binding'.
---
---   > VkResult vkQueueBindSparse
---   >     ( VkQueue queue
---   >     , uint32_t bindInfoCount
---   >     , const VkBindSparseInfo* pBindInfo
---   >     , VkFence fence
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkQueueBindSparse vkQueueBindSparse registry at www.khronos.org>
-type HS_vkQueueBindSparse =
-     VkQueue -- ^ queue
-             -> Word32 -- ^ bindInfoCount
-                       -> Ptr VkBindSparseInfo -- ^ pBindInfo
-                                               -> VkFence -- ^ fence
-                                                          -> IO VkResult
-
-type PFN_vkQueueBindSparse = FunPtr HS_vkQueueBindSparse
-
-foreign import ccall "dynamic" unwrapVkQueueBindSparse ::
-               PFN_vkQueueBindSparse -> HS_vkQueueBindSparse
-
-instance VulkanProc "vkQueueBindSparse" where
-        type VkProcType "vkQueueBindSparse" = HS_vkQueueBindSparse
-        vkProcSymbol = _VkQueueBindSparse
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkQueueBindSparse
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VkCreateFence :: CString
-
-pattern VkCreateFence <- (is_VkCreateFence -> True)
-  where VkCreateFence = _VkCreateFence
-
-{-# INLINE _VkCreateFence #-}
-
-_VkCreateFence :: CString
-_VkCreateFence = Ptr "vkCreateFence\NUL"##
-
-{-# INLINE is_VkCreateFence #-}
-
-is_VkCreateFence :: CString -> Bool
-is_VkCreateFence = (EQ ==) . cmpCStrings _VkCreateFence
-
-type VkCreateFence = "vkCreateFence"
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkCreateFence
--- >     ( VkDevice device
--- >     , const VkFenceCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkFence* pFence
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateFence vkCreateFence registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkCreateFence" vkCreateFence ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkFenceCreateInfo -- ^ pCreateInfo
-                                       ->
-                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                             -> Ptr VkFence -- ^ pFence
-                                                            -> IO VkResult
-
-##else
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkCreateFence
--- >     ( VkDevice device
--- >     , const VkFenceCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkFence* pFence
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateFence vkCreateFence registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCreateFenceSafe@ and @vkCreateFence@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateFence <- vkGetDeviceProc @VkCreateFence vkDevice
---
--- or less efficient:
---
--- > myCreateFence <- vkGetProc @VkCreateFence
---
-vkCreateFence ::
-              VkDevice -- ^ device
-                       ->
-                Ptr VkFenceCreateInfo -- ^ pCreateInfo
-                                      ->
-                  Ptr VkAllocationCallbacks -- ^ pAllocator
-                                            -> Ptr VkFence -- ^ pFence
-                                                           -> IO VkResult
-vkCreateFence = unsafeDupablePerformIO (vkGetProc @VkCreateFence)
-
-{-# NOINLINE vkCreateFence #-}
-##endif
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkCreateFence
--- >     ( VkDevice device
--- >     , const VkFenceCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkFence* pFence
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateFence vkCreateFence registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkCreateFence" vkCreateFenceSafe ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkFenceCreateInfo -- ^ pCreateInfo
-                                       ->
-                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                             -> Ptr VkFence -- ^ pFence
-                                                            -> IO VkResult
-
-##else
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkCreateFence
--- >     ( VkDevice device
--- >     , const VkFenceCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkFence* pFence
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateFence vkCreateFence registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCreateFenceSafe@ and @vkCreateFence@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateFence <- vkGetDeviceProc @VkCreateFence vkDevice
---
--- or less efficient:
---
--- > myCreateFence <- vkGetProc @VkCreateFence
---
-vkCreateFenceSafe ::
-                  VkDevice -- ^ device
-                           ->
-                    Ptr VkFenceCreateInfo -- ^ pCreateInfo
-                                          ->
-                      Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                -> Ptr VkFence -- ^ pFence
-                                                               -> IO VkResult
-vkCreateFenceSafe = vkCreateFence
-
-{-# INLINE vkCreateFenceSafe #-}
-##endif
-
--- | Success codes: 'VK_SUCCESS'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
---   > VkResult vkCreateFence
---   >     ( VkDevice device
---   >     , const VkFenceCreateInfo* pCreateInfo
---   >     , const VkAllocationCallbacks* pAllocator
---   >     , VkFence* pFence
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateFence vkCreateFence registry at www.khronos.org>
-type HS_vkCreateFence =
-     VkDevice -- ^ device
-              ->
-       Ptr VkFenceCreateInfo -- ^ pCreateInfo
-                             ->
-         Ptr VkAllocationCallbacks -- ^ pAllocator
-                                   -> Ptr VkFence -- ^ pFence
-                                                  -> IO VkResult
-
-type PFN_vkCreateFence = FunPtr HS_vkCreateFence
-
-foreign import ccall "dynamic" unwrapVkCreateFence ::
-               PFN_vkCreateFence -> HS_vkCreateFence
-
-instance VulkanProc "vkCreateFence" where
-        type VkProcType "vkCreateFence" = HS_vkCreateFence
-        vkProcSymbol = _VkCreateFence
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCreateFence
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VkDestroyFence :: CString
-
-pattern VkDestroyFence <- (is_VkDestroyFence -> True)
-  where VkDestroyFence = _VkDestroyFence
-
-{-# INLINE _VkDestroyFence #-}
-
-_VkDestroyFence :: CString
-_VkDestroyFence = Ptr "vkDestroyFence\NUL"##
-
-{-# INLINE is_VkDestroyFence #-}
-
-is_VkDestroyFence :: CString -> Bool
-is_VkDestroyFence = (EQ ==) . cmpCStrings _VkDestroyFence
-
-type VkDestroyFence = "vkDestroyFence"
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- > void vkDestroyFence
--- >     ( VkDevice device
--- >     , VkFence fence
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyFence vkDestroyFence registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkDestroyFence" vkDestroyFence ::
-               VkDevice -- ^ device
-                        -> VkFence -- ^ fence
-                                   -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                -> IO ()
-
-##else
--- |
--- > void vkDestroyFence
--- >     ( VkDevice device
--- >     , VkFence fence
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyFence vkDestroyFence registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkDestroyFenceSafe@ and @vkDestroyFence@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDestroyFence <- vkGetDeviceProc @VkDestroyFence vkDevice
---
--- or less efficient:
---
--- > myDestroyFence <- vkGetProc @VkDestroyFence
---
-vkDestroyFence ::
-               VkDevice -- ^ device
-                        -> VkFence -- ^ fence
-                                   -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                -> IO ()
-vkDestroyFence = unsafeDupablePerformIO (vkGetProc @VkDestroyFence)
-
-{-# NOINLINE vkDestroyFence #-}
-##endif
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- > void vkDestroyFence
--- >     ( VkDevice device
--- >     , VkFence fence
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyFence vkDestroyFence registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkDestroyFence" vkDestroyFenceSafe ::
-               VkDevice -- ^ device
-                        -> VkFence -- ^ fence
-                                   -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                -> IO ()
-
-##else
--- |
--- > void vkDestroyFence
--- >     ( VkDevice device
--- >     , VkFence fence
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyFence vkDestroyFence registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkDestroyFenceSafe@ and @vkDestroyFence@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDestroyFence <- vkGetDeviceProc @VkDestroyFence vkDevice
---
--- or less efficient:
---
--- > myDestroyFence <- vkGetProc @VkDestroyFence
---
-vkDestroyFenceSafe ::
-                   VkDevice -- ^ device
-                            -> VkFence -- ^ fence
-                                       -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                    -> IO ()
-vkDestroyFenceSafe = vkDestroyFence
-
-{-# INLINE vkDestroyFenceSafe #-}
-##endif
-
--- | > void vkDestroyFence
---   >     ( VkDevice device
---   >     , VkFence fence
---   >     , const VkAllocationCallbacks* pAllocator
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyFence vkDestroyFence registry at www.khronos.org>
-type HS_vkDestroyFence =
-     VkDevice -- ^ device
-              -> VkFence -- ^ fence
-                         -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                      -> IO ()
-
-type PFN_vkDestroyFence = FunPtr HS_vkDestroyFence
-
-foreign import ccall "dynamic" unwrapVkDestroyFence ::
-               PFN_vkDestroyFence -> HS_vkDestroyFence
-
-instance VulkanProc "vkDestroyFence" where
-        type VkProcType "vkDestroyFence" = HS_vkDestroyFence
-        vkProcSymbol = _VkDestroyFence
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkDestroyFence
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VkResetFences :: CString
-
-pattern VkResetFences <- (is_VkResetFences -> True)
-  where VkResetFences = _VkResetFences
-
-{-# INLINE _VkResetFences #-}
-
-_VkResetFences :: CString
-_VkResetFences = Ptr "vkResetFences\NUL"##
-
-{-# INLINE is_VkResetFences #-}
-
-is_VkResetFences :: CString -> Bool
-is_VkResetFences = (EQ ==) . cmpCStrings _VkResetFences
-
-type VkResetFences = "vkResetFences"
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkResetFences
--- >     ( VkDevice device
--- >     , uint32_t fenceCount
--- >     , const VkFence* pFences
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkResetFences vkResetFences registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkResetFences" vkResetFences ::
-               VkDevice -- ^ device
-                        -> Word32 -- ^ fenceCount
-                                  -> Ptr VkFence -- ^ pFences
-                                                 -> IO VkResult
-
-##else
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkResetFences
--- >     ( VkDevice device
--- >     , uint32_t fenceCount
--- >     , const VkFence* pFences
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkResetFences vkResetFences registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkResetFencesSafe@ and @vkResetFences@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myResetFences <- vkGetDeviceProc @VkResetFences vkDevice
---
--- or less efficient:
---
--- > myResetFences <- vkGetProc @VkResetFences
---
-vkResetFences :: VkDevice -- ^ device
-                          -> Word32 -- ^ fenceCount
-                                    -> Ptr VkFence -- ^ pFences
-                                                   -> IO VkResult
-vkResetFences = unsafeDupablePerformIO (vkGetProc @VkResetFences)
-
-{-# NOINLINE vkResetFences #-}
-##endif
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkResetFences
--- >     ( VkDevice device
--- >     , uint32_t fenceCount
--- >     , const VkFence* pFences
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkResetFences vkResetFences registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkResetFences" vkResetFencesSafe ::
-               VkDevice -- ^ device
-                        -> Word32 -- ^ fenceCount
-                                  -> Ptr VkFence -- ^ pFences
-                                                 -> IO VkResult
-
-##else
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkResetFences
--- >     ( VkDevice device
--- >     , uint32_t fenceCount
--- >     , const VkFence* pFences
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkResetFences vkResetFences registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkResetFencesSafe@ and @vkResetFences@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myResetFences <- vkGetDeviceProc @VkResetFences vkDevice
---
--- or less efficient:
---
--- > myResetFences <- vkGetProc @VkResetFences
---
-vkResetFencesSafe ::
-                  VkDevice -- ^ device
-                           -> Word32 -- ^ fenceCount
-                                     -> Ptr VkFence -- ^ pFences
-                                                    -> IO VkResult
-vkResetFencesSafe = vkResetFences
-
-{-# INLINE vkResetFencesSafe #-}
-##endif
-
--- | Success codes: 'VK_SUCCESS'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
---   > VkResult vkResetFences
---   >     ( VkDevice device
---   >     , uint32_t fenceCount
---   >     , const VkFence* pFences
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkResetFences vkResetFences registry at www.khronos.org>
-type HS_vkResetFences =
-     VkDevice -- ^ device
-              -> Word32 -- ^ fenceCount
-                        -> Ptr VkFence -- ^ pFences
-                                       -> IO VkResult
-
-type PFN_vkResetFences = FunPtr HS_vkResetFences
-
-foreign import ccall "dynamic" unwrapVkResetFences ::
-               PFN_vkResetFences -> HS_vkResetFences
-
-instance VulkanProc "vkResetFences" where
-        type VkProcType "vkResetFences" = HS_vkResetFences
-        vkProcSymbol = _VkResetFences
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkResetFences
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VkGetFenceStatus :: CString
-
-pattern VkGetFenceStatus <- (is_VkGetFenceStatus -> True)
-  where VkGetFenceStatus = _VkGetFenceStatus
-
-{-# INLINE _VkGetFenceStatus #-}
-
-_VkGetFenceStatus :: CString
-_VkGetFenceStatus = Ptr "vkGetFenceStatus\NUL"##
-
-{-# INLINE is_VkGetFenceStatus #-}
-
-is_VkGetFenceStatus :: CString -> Bool
-is_VkGetFenceStatus = (EQ ==) . cmpCStrings _VkGetFenceStatus
-
-type VkGetFenceStatus = "vkGetFenceStatus"
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Success codes: 'VK_SUCCESS', 'VK_NOT_READY'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
---
--- > VkResult vkGetFenceStatus
--- >     ( VkDevice device
--- >     , VkFence fence
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetFenceStatus vkGetFenceStatus registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkGetFenceStatus" vkGetFenceStatus ::
-               VkDevice -- ^ device
-                        -> VkFence -- ^ fence
-                                   -> IO VkResult
-
-##else
--- |
--- Success codes: 'VK_SUCCESS', 'VK_NOT_READY'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
---
--- > VkResult vkGetFenceStatus
--- >     ( VkDevice device
--- >     , VkFence fence
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetFenceStatus vkGetFenceStatus registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkGetFenceStatusSafe@ and @vkGetFenceStatus@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetFenceStatus <- vkGetDeviceProc @VkGetFenceStatus vkDevice
---
--- or less efficient:
---
--- > myGetFenceStatus <- vkGetProc @VkGetFenceStatus
---
-vkGetFenceStatus :: VkDevice -- ^ device
-                             -> VkFence -- ^ fence
-                                        -> IO VkResult
-vkGetFenceStatus
-  = unsafeDupablePerformIO (vkGetProc @VkGetFenceStatus)
-
-{-# NOINLINE vkGetFenceStatus #-}
-##endif
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Success codes: 'VK_SUCCESS', 'VK_NOT_READY'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
---
--- > VkResult vkGetFenceStatus
--- >     ( VkDevice device
--- >     , VkFence fence
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetFenceStatus vkGetFenceStatus registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkGetFenceStatus" vkGetFenceStatusSafe
-               :: VkDevice -- ^ device
-                           -> VkFence -- ^ fence
-                                      -> IO VkResult
-
-##else
--- |
--- Success codes: 'VK_SUCCESS', 'VK_NOT_READY'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
---
--- > VkResult vkGetFenceStatus
--- >     ( VkDevice device
--- >     , VkFence fence
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetFenceStatus vkGetFenceStatus registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkGetFenceStatusSafe@ and @vkGetFenceStatus@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetFenceStatus <- vkGetDeviceProc @VkGetFenceStatus vkDevice
---
--- or less efficient:
---
--- > myGetFenceStatus <- vkGetProc @VkGetFenceStatus
---
-vkGetFenceStatusSafe :: VkDevice -- ^ device
-                                 -> VkFence -- ^ fence
-                                            -> IO VkResult
-vkGetFenceStatusSafe = vkGetFenceStatus
-
-{-# INLINE vkGetFenceStatusSafe #-}
-##endif
-
--- | Success codes: 'VK_SUCCESS', 'VK_NOT_READY'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
---
---   > VkResult vkGetFenceStatus
---   >     ( VkDevice device
---   >     , VkFence fence
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetFenceStatus vkGetFenceStatus registry at www.khronos.org>
-type HS_vkGetFenceStatus = VkDevice -- ^ device
-                                    -> VkFence -- ^ fence
-                                               -> IO VkResult
-
-type PFN_vkGetFenceStatus = FunPtr HS_vkGetFenceStatus
-
-foreign import ccall "dynamic" unwrapVkGetFenceStatus ::
-               PFN_vkGetFenceStatus -> HS_vkGetFenceStatus
-
-instance VulkanProc "vkGetFenceStatus" where
-        type VkProcType "vkGetFenceStatus" = HS_vkGetFenceStatus
-        vkProcSymbol = _VkGetFenceStatus
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkGetFenceStatus
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VkWaitForFences :: CString
-
-pattern VkWaitForFences <- (is_VkWaitForFences -> True)
-  where VkWaitForFences = _VkWaitForFences
-
-{-# INLINE _VkWaitForFences #-}
-
-_VkWaitForFences :: CString
-_VkWaitForFences = Ptr "vkWaitForFences\NUL"##
-
-{-# INLINE is_VkWaitForFences #-}
-
-is_VkWaitForFences :: CString -> Bool
-is_VkWaitForFences = (EQ ==) . cmpCStrings _VkWaitForFences
-
-type VkWaitForFences = "vkWaitForFences"
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Success codes: 'VK_SUCCESS', 'VK_TIMEOUT'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
---
--- > VkResult vkWaitForFences
--- >     ( VkDevice device
--- >     , uint32_t fenceCount
--- >     , const VkFence* pFences
--- >     , VkBool32 waitAll
--- >     , uint64_t timeout
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkWaitForFences vkWaitForFences registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkWaitForFences" vkWaitForFences ::
-               VkDevice -- ^ device
-                        ->
-                 Word32 -- ^ fenceCount
-                        -> Ptr VkFence -- ^ pFences
-                                       -> VkBool32 -- ^ waitAll
-                                                   -> Word64 -- ^ timeout
-                                                             -> IO VkResult
-
-##else
--- |
--- Success codes: 'VK_SUCCESS', 'VK_TIMEOUT'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
---
--- > VkResult vkWaitForFences
--- >     ( VkDevice device
--- >     , uint32_t fenceCount
--- >     , const VkFence* pFences
--- >     , VkBool32 waitAll
--- >     , uint64_t timeout
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkWaitForFences vkWaitForFences registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkWaitForFencesSafe@ and @vkWaitForFences@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myWaitForFences <- vkGetDeviceProc @VkWaitForFences vkDevice
---
--- or less efficient:
---
--- > myWaitForFences <- vkGetProc @VkWaitForFences
---
-vkWaitForFences ::
-                VkDevice -- ^ device
-                         ->
-                  Word32 -- ^ fenceCount
-                         -> Ptr VkFence -- ^ pFences
-                                        -> VkBool32 -- ^ waitAll
-                                                    -> Word64 -- ^ timeout
-                                                              -> IO VkResult
-vkWaitForFences
-  = unsafeDupablePerformIO (vkGetProc @VkWaitForFences)
-
-{-# NOINLINE vkWaitForFences #-}
-##endif
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Success codes: 'VK_SUCCESS', 'VK_TIMEOUT'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
---
--- > VkResult vkWaitForFences
--- >     ( VkDevice device
--- >     , uint32_t fenceCount
--- >     , const VkFence* pFences
--- >     , VkBool32 waitAll
--- >     , uint64_t timeout
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkWaitForFences vkWaitForFences registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkWaitForFences" vkWaitForFencesSafe ::
-               VkDevice -- ^ device
-                        ->
-                 Word32 -- ^ fenceCount
-                        -> Ptr VkFence -- ^ pFences
-                                       -> VkBool32 -- ^ waitAll
-                                                   -> Word64 -- ^ timeout
-                                                             -> IO VkResult
-
-##else
--- |
--- Success codes: 'VK_SUCCESS', 'VK_TIMEOUT'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
---
--- > VkResult vkWaitForFences
--- >     ( VkDevice device
--- >     , uint32_t fenceCount
--- >     , const VkFence* pFences
--- >     , VkBool32 waitAll
--- >     , uint64_t timeout
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkWaitForFences vkWaitForFences registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkWaitForFencesSafe@ and @vkWaitForFences@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myWaitForFences <- vkGetDeviceProc @VkWaitForFences vkDevice
---
--- or less efficient:
---
--- > myWaitForFences <- vkGetProc @VkWaitForFences
---
-vkWaitForFencesSafe ::
-                    VkDevice -- ^ device
-                             ->
-                      Word32 -- ^ fenceCount
-                             -> Ptr VkFence -- ^ pFences
-                                            -> VkBool32 -- ^ waitAll
-                                                        -> Word64 -- ^ timeout
-                                                                  -> IO VkResult
-vkWaitForFencesSafe = vkWaitForFences
-
-{-# INLINE vkWaitForFencesSafe #-}
-##endif
-
--- | Success codes: 'VK_SUCCESS', 'VK_TIMEOUT'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
---
---   > VkResult vkWaitForFences
---   >     ( VkDevice device
---   >     , uint32_t fenceCount
---   >     , const VkFence* pFences
---   >     , VkBool32 waitAll
---   >     , uint64_t timeout
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkWaitForFences vkWaitForFences registry at www.khronos.org>
-type HS_vkWaitForFences =
-     VkDevice -- ^ device
-              ->
-       Word32 -- ^ fenceCount
-              -> Ptr VkFence -- ^ pFences
-                             -> VkBool32 -- ^ waitAll
-                                         -> Word64 -- ^ timeout
-                                                   -> IO VkResult
-
-type PFN_vkWaitForFences = FunPtr HS_vkWaitForFences
-
-foreign import ccall "dynamic" unwrapVkWaitForFences ::
-               PFN_vkWaitForFences -> HS_vkWaitForFences
-
-instance VulkanProc "vkWaitForFences" where
-        type VkProcType "vkWaitForFences" = HS_vkWaitForFences
-        vkProcSymbol = _VkWaitForFences
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkWaitForFences
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VkCreateSemaphore :: CString
-
-pattern VkCreateSemaphore <- (is_VkCreateSemaphore -> True)
-  where VkCreateSemaphore = _VkCreateSemaphore
-
-{-# INLINE _VkCreateSemaphore #-}
-
-_VkCreateSemaphore :: CString
-_VkCreateSemaphore = Ptr "vkCreateSemaphore\NUL"##
-
-{-# INLINE is_VkCreateSemaphore #-}
-
-is_VkCreateSemaphore :: CString -> Bool
-is_VkCreateSemaphore = (EQ ==) . cmpCStrings _VkCreateSemaphore
-
-type VkCreateSemaphore = "vkCreateSemaphore"
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkCreateSemaphore
--- >     ( VkDevice device
--- >     , const VkSemaphoreCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkSemaphore* pSemaphore
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateSemaphore vkCreateSemaphore registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkCreateSemaphore" vkCreateSemaphore
-               ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkSemaphoreCreateInfo -- ^ pCreateInfo
-                                           ->
-                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                             -> Ptr VkSemaphore -- ^ pSemaphore
-                                                                -> IO VkResult
-
-##else
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkCreateSemaphore
--- >     ( VkDevice device
--- >     , const VkSemaphoreCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkSemaphore* pSemaphore
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateSemaphore vkCreateSemaphore registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCreateSemaphoreSafe@ and @vkCreateSemaphore@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateSemaphore <- vkGetDeviceProc @VkCreateSemaphore vkDevice
---
--- or less efficient:
---
--- > myCreateSemaphore <- vkGetProc @VkCreateSemaphore
---
-vkCreateSemaphore ::
-                  VkDevice -- ^ device
-                           ->
-                    Ptr VkSemaphoreCreateInfo -- ^ pCreateInfo
-                                              ->
-                      Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                -> Ptr VkSemaphore -- ^ pSemaphore
-                                                                   -> IO VkResult
-vkCreateSemaphore
-  = unsafeDupablePerformIO (vkGetProc @VkCreateSemaphore)
-
-{-# NOINLINE vkCreateSemaphore #-}
-##endif
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkCreateSemaphore
--- >     ( VkDevice device
--- >     , const VkSemaphoreCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkSemaphore* pSemaphore
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateSemaphore vkCreateSemaphore registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkCreateSemaphore" vkCreateSemaphoreSafe
-               ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkSemaphoreCreateInfo -- ^ pCreateInfo
-                                           ->
-                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                             -> Ptr VkSemaphore -- ^ pSemaphore
-                                                                -> IO VkResult
-
-##else
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkCreateSemaphore
--- >     ( VkDevice device
--- >     , const VkSemaphoreCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkSemaphore* pSemaphore
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateSemaphore vkCreateSemaphore registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCreateSemaphoreSafe@ and @vkCreateSemaphore@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateSemaphore <- vkGetDeviceProc @VkCreateSemaphore vkDevice
---
--- or less efficient:
---
--- > myCreateSemaphore <- vkGetProc @VkCreateSemaphore
---
-vkCreateSemaphoreSafe ::
-                      VkDevice -- ^ device
-                               ->
-                        Ptr VkSemaphoreCreateInfo -- ^ pCreateInfo
-                                                  ->
-                          Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                    -> Ptr VkSemaphore -- ^ pSemaphore
-                                                                       -> IO VkResult
-vkCreateSemaphoreSafe = vkCreateSemaphore
-
-{-# INLINE vkCreateSemaphoreSafe #-}
-##endif
-
--- | Success codes: 'VK_SUCCESS'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
---   > VkResult vkCreateSemaphore
---   >     ( VkDevice device
---   >     , const VkSemaphoreCreateInfo* pCreateInfo
---   >     , const VkAllocationCallbacks* pAllocator
---   >     , VkSemaphore* pSemaphore
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateSemaphore vkCreateSemaphore registry at www.khronos.org>
-type HS_vkCreateSemaphore =
-     VkDevice -- ^ device
-              ->
-       Ptr VkSemaphoreCreateInfo -- ^ pCreateInfo
-                                 ->
-         Ptr VkAllocationCallbacks -- ^ pAllocator
-                                   -> Ptr VkSemaphore -- ^ pSemaphore
-                                                      -> IO VkResult
-
-type PFN_vkCreateSemaphore = FunPtr HS_vkCreateSemaphore
-
-foreign import ccall "dynamic" unwrapVkCreateSemaphore ::
-               PFN_vkCreateSemaphore -> HS_vkCreateSemaphore
-
-instance VulkanProc "vkCreateSemaphore" where
-        type VkProcType "vkCreateSemaphore" = HS_vkCreateSemaphore
-        vkProcSymbol = _VkCreateSemaphore
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCreateSemaphore
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VkDestroySemaphore :: CString
-
-pattern VkDestroySemaphore <- (is_VkDestroySemaphore -> True)
-  where VkDestroySemaphore = _VkDestroySemaphore
-
-{-# INLINE _VkDestroySemaphore #-}
-
-_VkDestroySemaphore :: CString
-_VkDestroySemaphore = Ptr "vkDestroySemaphore\NUL"##
-
-{-# INLINE is_VkDestroySemaphore #-}
-
-is_VkDestroySemaphore :: CString -> Bool
-is_VkDestroySemaphore = (EQ ==) . cmpCStrings _VkDestroySemaphore
-
-type VkDestroySemaphore = "vkDestroySemaphore"
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- > void vkDestroySemaphore
--- >     ( VkDevice device
--- >     , VkSemaphore semaphore
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroySemaphore vkDestroySemaphore registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkDestroySemaphore" vkDestroySemaphore
-               :: VkDevice -- ^ device
-                           -> VkSemaphore -- ^ semaphore
-                                          -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                       -> IO ()
-
-##else
--- |
--- > void vkDestroySemaphore
--- >     ( VkDevice device
--- >     , VkSemaphore semaphore
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroySemaphore vkDestroySemaphore registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkDestroySemaphoreSafe@ and @vkDestroySemaphore@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDestroySemaphore <- vkGetDeviceProc @VkDestroySemaphore vkDevice
---
--- or less efficient:
---
--- > myDestroySemaphore <- vkGetProc @VkDestroySemaphore
---
-vkDestroySemaphore ::
-                   VkDevice -- ^ device
-                            -> VkSemaphore -- ^ semaphore
-                                           -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                        -> IO ()
-vkDestroySemaphore
-  = unsafeDupablePerformIO (vkGetProc @VkDestroySemaphore)
-
-{-# NOINLINE vkDestroySemaphore #-}
-##endif
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- > void vkDestroySemaphore
--- >     ( VkDevice device
--- >     , VkSemaphore semaphore
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroySemaphore vkDestroySemaphore registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkDestroySemaphore"
-               vkDestroySemaphoreSafe ::
-               VkDevice -- ^ device
-                        -> VkSemaphore -- ^ semaphore
-                                       -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                    -> IO ()
-
-##else
--- |
--- > void vkDestroySemaphore
--- >     ( VkDevice device
--- >     , VkSemaphore semaphore
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroySemaphore vkDestroySemaphore registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkDestroySemaphoreSafe@ and @vkDestroySemaphore@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDestroySemaphore <- vkGetDeviceProc @VkDestroySemaphore vkDevice
---
--- or less efficient:
---
--- > myDestroySemaphore <- vkGetProc @VkDestroySemaphore
---
-vkDestroySemaphoreSafe ::
-                       VkDevice -- ^ device
-                                -> VkSemaphore -- ^ semaphore
-                                               -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                            -> IO ()
-vkDestroySemaphoreSafe = vkDestroySemaphore
-
-{-# INLINE vkDestroySemaphoreSafe #-}
-##endif
-
--- | > void vkDestroySemaphore
---   >     ( VkDevice device
---   >     , VkSemaphore semaphore
---   >     , const VkAllocationCallbacks* pAllocator
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroySemaphore vkDestroySemaphore registry at www.khronos.org>
-type HS_vkDestroySemaphore =
-     VkDevice -- ^ device
-              -> VkSemaphore -- ^ semaphore
-                             -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                          -> IO ()
-
-type PFN_vkDestroySemaphore = FunPtr HS_vkDestroySemaphore
-
-foreign import ccall "dynamic" unwrapVkDestroySemaphore ::
-               PFN_vkDestroySemaphore -> HS_vkDestroySemaphore
-
-instance VulkanProc "vkDestroySemaphore" where
-        type VkProcType "vkDestroySemaphore" = HS_vkDestroySemaphore
-        vkProcSymbol = _VkDestroySemaphore
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkDestroySemaphore
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VkCreateEvent :: CString
-
-pattern VkCreateEvent <- (is_VkCreateEvent -> True)
-  where VkCreateEvent = _VkCreateEvent
-
-{-# INLINE _VkCreateEvent #-}
-
-_VkCreateEvent :: CString
-_VkCreateEvent = Ptr "vkCreateEvent\NUL"##
-
-{-# INLINE is_VkCreateEvent #-}
-
-is_VkCreateEvent :: CString -> Bool
-is_VkCreateEvent = (EQ ==) . cmpCStrings _VkCreateEvent
-
-type VkCreateEvent = "vkCreateEvent"
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkCreateEvent
--- >     ( VkDevice device
--- >     , const VkEventCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkEvent* pEvent
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateEvent vkCreateEvent registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkCreateEvent" vkCreateEvent ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkEventCreateInfo -- ^ pCreateInfo
-                                       ->
-                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                             -> Ptr VkEvent -- ^ pEvent
-                                                            -> IO VkResult
-
-##else
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkCreateEvent
--- >     ( VkDevice device
--- >     , const VkEventCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkEvent* pEvent
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateEvent vkCreateEvent registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCreateEventSafe@ and @vkCreateEvent@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateEvent <- vkGetDeviceProc @VkCreateEvent vkDevice
---
--- or less efficient:
---
--- > myCreateEvent <- vkGetProc @VkCreateEvent
---
-vkCreateEvent ::
-              VkDevice -- ^ device
-                       ->
-                Ptr VkEventCreateInfo -- ^ pCreateInfo
-                                      ->
-                  Ptr VkAllocationCallbacks -- ^ pAllocator
-                                            -> Ptr VkEvent -- ^ pEvent
-                                                           -> IO VkResult
-vkCreateEvent = unsafeDupablePerformIO (vkGetProc @VkCreateEvent)
-
-{-# NOINLINE vkCreateEvent #-}
-##endif
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkCreateEvent
--- >     ( VkDevice device
--- >     , const VkEventCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkEvent* pEvent
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateEvent vkCreateEvent registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkCreateEvent" vkCreateEventSafe ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkEventCreateInfo -- ^ pCreateInfo
-                                       ->
-                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                             -> Ptr VkEvent -- ^ pEvent
-                                                            -> IO VkResult
-
-##else
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkCreateEvent
--- >     ( VkDevice device
--- >     , const VkEventCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkEvent* pEvent
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateEvent vkCreateEvent registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCreateEventSafe@ and @vkCreateEvent@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateEvent <- vkGetDeviceProc @VkCreateEvent vkDevice
---
--- or less efficient:
---
--- > myCreateEvent <- vkGetProc @VkCreateEvent
---
-vkCreateEventSafe ::
-                  VkDevice -- ^ device
-                           ->
-                    Ptr VkEventCreateInfo -- ^ pCreateInfo
-                                          ->
-                      Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                -> Ptr VkEvent -- ^ pEvent
-                                                               -> IO VkResult
-vkCreateEventSafe = vkCreateEvent
-
-{-# INLINE vkCreateEventSafe #-}
-##endif
-
--- | Success codes: 'VK_SUCCESS'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
---   > VkResult vkCreateEvent
---   >     ( VkDevice device
---   >     , const VkEventCreateInfo* pCreateInfo
---   >     , const VkAllocationCallbacks* pAllocator
---   >     , VkEvent* pEvent
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateEvent vkCreateEvent registry at www.khronos.org>
-type HS_vkCreateEvent =
-     VkDevice -- ^ device
-              ->
-       Ptr VkEventCreateInfo -- ^ pCreateInfo
-                             ->
-         Ptr VkAllocationCallbacks -- ^ pAllocator
-                                   -> Ptr VkEvent -- ^ pEvent
-                                                  -> IO VkResult
-
-type PFN_vkCreateEvent = FunPtr HS_vkCreateEvent
-
-foreign import ccall "dynamic" unwrapVkCreateEvent ::
-               PFN_vkCreateEvent -> HS_vkCreateEvent
-
-instance VulkanProc "vkCreateEvent" where
-        type VkProcType "vkCreateEvent" = HS_vkCreateEvent
-        vkProcSymbol = _VkCreateEvent
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCreateEvent
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VkDestroyEvent :: CString
-
-pattern VkDestroyEvent <- (is_VkDestroyEvent -> True)
-  where VkDestroyEvent = _VkDestroyEvent
-
-{-# INLINE _VkDestroyEvent #-}
-
-_VkDestroyEvent :: CString
-_VkDestroyEvent = Ptr "vkDestroyEvent\NUL"##
-
-{-# INLINE is_VkDestroyEvent #-}
-
-is_VkDestroyEvent :: CString -> Bool
-is_VkDestroyEvent = (EQ ==) . cmpCStrings _VkDestroyEvent
-
-type VkDestroyEvent = "vkDestroyEvent"
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- > void vkDestroyEvent
--- >     ( VkDevice device
--- >     , VkEvent event
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyEvent vkDestroyEvent registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkDestroyEvent" vkDestroyEvent ::
-               VkDevice -- ^ device
-                        -> VkEvent -- ^ event
-                                   -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                -> IO ()
-
-##else
--- |
--- > void vkDestroyEvent
--- >     ( VkDevice device
--- >     , VkEvent event
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyEvent vkDestroyEvent registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkDestroyEventSafe@ and @vkDestroyEvent@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDestroyEvent <- vkGetDeviceProc @VkDestroyEvent vkDevice
---
--- or less efficient:
---
--- > myDestroyEvent <- vkGetProc @VkDestroyEvent
---
-vkDestroyEvent ::
-               VkDevice -- ^ device
-                        -> VkEvent -- ^ event
-                                   -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                -> IO ()
-vkDestroyEvent = unsafeDupablePerformIO (vkGetProc @VkDestroyEvent)
-
-{-# NOINLINE vkDestroyEvent #-}
-##endif
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- > void vkDestroyEvent
--- >     ( VkDevice device
--- >     , VkEvent event
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyEvent vkDestroyEvent registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkDestroyEvent" vkDestroyEventSafe ::
-               VkDevice -- ^ device
-                        -> VkEvent -- ^ event
-                                   -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                -> IO ()
-
-##else
--- |
--- > void vkDestroyEvent
--- >     ( VkDevice device
--- >     , VkEvent event
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyEvent vkDestroyEvent registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkDestroyEventSafe@ and @vkDestroyEvent@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDestroyEvent <- vkGetDeviceProc @VkDestroyEvent vkDevice
---
--- or less efficient:
---
--- > myDestroyEvent <- vkGetProc @VkDestroyEvent
---
-vkDestroyEventSafe ::
-                   VkDevice -- ^ device
-                            -> VkEvent -- ^ event
-                                       -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                    -> IO ()
-vkDestroyEventSafe = vkDestroyEvent
-
-{-# INLINE vkDestroyEventSafe #-}
-##endif
-
--- | > void vkDestroyEvent
---   >     ( VkDevice device
---   >     , VkEvent event
---   >     , const VkAllocationCallbacks* pAllocator
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyEvent vkDestroyEvent registry at www.khronos.org>
-type HS_vkDestroyEvent =
-     VkDevice -- ^ device
-              -> VkEvent -- ^ event
-                         -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                      -> IO ()
-
-type PFN_vkDestroyEvent = FunPtr HS_vkDestroyEvent
-
-foreign import ccall "dynamic" unwrapVkDestroyEvent ::
-               PFN_vkDestroyEvent -> HS_vkDestroyEvent
-
-instance VulkanProc "vkDestroyEvent" where
-        type VkProcType "vkDestroyEvent" = HS_vkDestroyEvent
-        vkProcSymbol = _VkDestroyEvent
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkDestroyEvent
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VkGetEventStatus :: CString
-
-pattern VkGetEventStatus <- (is_VkGetEventStatus -> True)
-  where VkGetEventStatus = _VkGetEventStatus
-
-{-# INLINE _VkGetEventStatus #-}
-
-_VkGetEventStatus :: CString
-_VkGetEventStatus = Ptr "vkGetEventStatus\NUL"##
-
-{-# INLINE is_VkGetEventStatus #-}
-
-is_VkGetEventStatus :: CString -> Bool
-is_VkGetEventStatus = (EQ ==) . cmpCStrings _VkGetEventStatus
-
-type VkGetEventStatus = "vkGetEventStatus"
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Success codes: 'VK_EVENT_SET', 'VK_EVENT_RESET'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
---
--- > VkResult vkGetEventStatus
--- >     ( VkDevice device
--- >     , VkEvent event
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetEventStatus vkGetEventStatus registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkGetEventStatus" vkGetEventStatus ::
-               VkDevice -- ^ device
-                        -> VkEvent -- ^ event
-                                   -> IO VkResult
-
-##else
--- |
--- Success codes: 'VK_EVENT_SET', 'VK_EVENT_RESET'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
---
--- > VkResult vkGetEventStatus
--- >     ( VkDevice device
--- >     , VkEvent event
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetEventStatus vkGetEventStatus registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkGetEventStatusSafe@ and @vkGetEventStatus@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetEventStatus <- vkGetDeviceProc @VkGetEventStatus vkDevice
---
--- or less efficient:
---
--- > myGetEventStatus <- vkGetProc @VkGetEventStatus
---
-vkGetEventStatus :: VkDevice -- ^ device
-                             -> VkEvent -- ^ event
-                                        -> IO VkResult
-vkGetEventStatus
-  = unsafeDupablePerformIO (vkGetProc @VkGetEventStatus)
-
-{-# NOINLINE vkGetEventStatus #-}
-##endif
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Success codes: 'VK_EVENT_SET', 'VK_EVENT_RESET'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
---
--- > VkResult vkGetEventStatus
--- >     ( VkDevice device
--- >     , VkEvent event
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetEventStatus vkGetEventStatus registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkGetEventStatus" vkGetEventStatusSafe
-               :: VkDevice -- ^ device
-                           -> VkEvent -- ^ event
-                                      -> IO VkResult
-
-##else
--- |
--- Success codes: 'VK_EVENT_SET', 'VK_EVENT_RESET'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
---
--- > VkResult vkGetEventStatus
--- >     ( VkDevice device
--- >     , VkEvent event
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetEventStatus vkGetEventStatus registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkGetEventStatusSafe@ and @vkGetEventStatus@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetEventStatus <- vkGetDeviceProc @VkGetEventStatus vkDevice
---
--- or less efficient:
---
--- > myGetEventStatus <- vkGetProc @VkGetEventStatus
---
-vkGetEventStatusSafe :: VkDevice -- ^ device
-                                 -> VkEvent -- ^ event
-                                            -> IO VkResult
-vkGetEventStatusSafe = vkGetEventStatus
-
-{-# INLINE vkGetEventStatusSafe #-}
-##endif
-
--- | Success codes: 'VK_EVENT_SET', 'VK_EVENT_RESET'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
---
---   > VkResult vkGetEventStatus
---   >     ( VkDevice device
---   >     , VkEvent event
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetEventStatus vkGetEventStatus registry at www.khronos.org>
-type HS_vkGetEventStatus = VkDevice -- ^ device
-                                    -> VkEvent -- ^ event
-                                               -> IO VkResult
-
-type PFN_vkGetEventStatus = FunPtr HS_vkGetEventStatus
-
-foreign import ccall "dynamic" unwrapVkGetEventStatus ::
-               PFN_vkGetEventStatus -> HS_vkGetEventStatus
-
-instance VulkanProc "vkGetEventStatus" where
-        type VkProcType "vkGetEventStatus" = HS_vkGetEventStatus
-        vkProcSymbol = _VkGetEventStatus
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkGetEventStatus
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VkSetEvent :: CString
-
-pattern VkSetEvent <- (is_VkSetEvent -> True)
-  where VkSetEvent = _VkSetEvent
-
-{-# INLINE _VkSetEvent #-}
-
-_VkSetEvent :: CString
-_VkSetEvent = Ptr "vkSetEvent\NUL"##
-
-{-# INLINE is_VkSetEvent #-}
-
-is_VkSetEvent :: CString -> Bool
-is_VkSetEvent = (EQ ==) . cmpCStrings _VkSetEvent
-
-type VkSetEvent = "vkSetEvent"
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkSetEvent
--- >     ( VkDevice device
--- >     , VkEvent event
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkSetEvent vkSetEvent registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkSetEvent" vkSetEvent ::
-               VkDevice -- ^ device
-                        -> VkEvent -- ^ event
-                                   -> IO VkResult
-
-##else
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkSetEvent
--- >     ( VkDevice device
--- >     , VkEvent event
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkSetEvent vkSetEvent registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkSetEventSafe@ and @vkSetEvent@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > mySetEvent <- vkGetDeviceProc @VkSetEvent vkDevice
---
--- or less efficient:
---
--- > mySetEvent <- vkGetProc @VkSetEvent
---
-vkSetEvent :: VkDevice -- ^ device
-                       -> VkEvent -- ^ event
-                                  -> IO VkResult
-vkSetEvent = unsafeDupablePerformIO (vkGetProc @VkSetEvent)
-
-{-# NOINLINE vkSetEvent #-}
-##endif
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkSetEvent
--- >     ( VkDevice device
--- >     , VkEvent event
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkSetEvent vkSetEvent registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkSetEvent" vkSetEventSafe ::
-               VkDevice -- ^ device
-                        -> VkEvent -- ^ event
-                                   -> IO VkResult
-
-##else
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkSetEvent
--- >     ( VkDevice device
--- >     , VkEvent event
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkSetEvent vkSetEvent registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkSetEventSafe@ and @vkSetEvent@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > mySetEvent <- vkGetDeviceProc @VkSetEvent vkDevice
---
--- or less efficient:
---
--- > mySetEvent <- vkGetProc @VkSetEvent
---
-vkSetEventSafe :: VkDevice -- ^ device
-                           -> VkEvent -- ^ event
-                                      -> IO VkResult
-vkSetEventSafe = vkSetEvent
-
-{-# INLINE vkSetEventSafe #-}
-##endif
-
--- | Success codes: 'VK_SUCCESS'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
---   > VkResult vkSetEvent
---   >     ( VkDevice device
---   >     , VkEvent event
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkSetEvent vkSetEvent registry at www.khronos.org>
-type HS_vkSetEvent = VkDevice -- ^ device
-                              -> VkEvent -- ^ event
-                                         -> IO VkResult
-
-type PFN_vkSetEvent = FunPtr HS_vkSetEvent
-
-foreign import ccall "dynamic" unwrapVkSetEvent ::
-               PFN_vkSetEvent -> HS_vkSetEvent
-
-instance VulkanProc "vkSetEvent" where
-        type VkProcType "vkSetEvent" = HS_vkSetEvent
-        vkProcSymbol = _VkSetEvent
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkSetEvent
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VkResetEvent :: CString
-
-pattern VkResetEvent <- (is_VkResetEvent -> True)
-  where VkResetEvent = _VkResetEvent
-
-{-# INLINE _VkResetEvent #-}
-
-_VkResetEvent :: CString
-_VkResetEvent = Ptr "vkResetEvent\NUL"##
-
-{-# INLINE is_VkResetEvent #-}
-
-is_VkResetEvent :: CString -> Bool
-is_VkResetEvent = (EQ ==) . cmpCStrings _VkResetEvent
-
-type VkResetEvent = "vkResetEvent"
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkResetEvent
--- >     ( VkDevice device
--- >     , VkEvent event
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkResetEvent vkResetEvent registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkResetEvent" vkResetEvent ::
-               VkDevice -- ^ device
-                        -> VkEvent -- ^ event
-                                   -> IO VkResult
-
-##else
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkResetEvent
--- >     ( VkDevice device
--- >     , VkEvent event
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkResetEvent vkResetEvent registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkResetEventSafe@ and @vkResetEvent@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myResetEvent <- vkGetDeviceProc @VkResetEvent vkDevice
---
--- or less efficient:
---
--- > myResetEvent <- vkGetProc @VkResetEvent
---
-vkResetEvent :: VkDevice -- ^ device
-                         -> VkEvent -- ^ event
-                                    -> IO VkResult
-vkResetEvent = unsafeDupablePerformIO (vkGetProc @VkResetEvent)
-
-{-# NOINLINE vkResetEvent #-}
-##endif
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkResetEvent
--- >     ( VkDevice device
--- >     , VkEvent event
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkResetEvent vkResetEvent registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkResetEvent" vkResetEventSafe ::
-               VkDevice -- ^ device
-                        -> VkEvent -- ^ event
-                                   -> IO VkResult
-
-##else
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkResetEvent
--- >     ( VkDevice device
--- >     , VkEvent event
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkResetEvent vkResetEvent registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkResetEventSafe@ and @vkResetEvent@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myResetEvent <- vkGetDeviceProc @VkResetEvent vkDevice
---
--- or less efficient:
---
--- > myResetEvent <- vkGetProc @VkResetEvent
---
-vkResetEventSafe :: VkDevice -- ^ device
-                             -> VkEvent -- ^ event
-                                        -> IO VkResult
-vkResetEventSafe = vkResetEvent
-
-{-# INLINE vkResetEventSafe #-}
-##endif
-
--- | Success codes: 'VK_SUCCESS'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
---   > VkResult vkResetEvent
---   >     ( VkDevice device
---   >     , VkEvent event
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkResetEvent vkResetEvent registry at www.khronos.org>
-type HS_vkResetEvent = VkDevice -- ^ device
-                                -> VkEvent -- ^ event
-                                           -> IO VkResult
-
-type PFN_vkResetEvent = FunPtr HS_vkResetEvent
-
-foreign import ccall "dynamic" unwrapVkResetEvent ::
-               PFN_vkResetEvent -> HS_vkResetEvent
-
-instance VulkanProc "vkResetEvent" where
-        type VkProcType "vkResetEvent" = HS_vkResetEvent
-        vkProcSymbol = _VkResetEvent
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkResetEvent
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VkCreateQueryPool :: CString
-
-pattern VkCreateQueryPool <- (is_VkCreateQueryPool -> True)
-  where VkCreateQueryPool = _VkCreateQueryPool
-
-{-# INLINE _VkCreateQueryPool #-}
-
-_VkCreateQueryPool :: CString
-_VkCreateQueryPool = Ptr "vkCreateQueryPool\NUL"##
-
-{-# INLINE is_VkCreateQueryPool #-}
-
-is_VkCreateQueryPool :: CString -> Bool
-is_VkCreateQueryPool = (EQ ==) . cmpCStrings _VkCreateQueryPool
-
-type VkCreateQueryPool = "vkCreateQueryPool"
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkCreateQueryPool
--- >     ( VkDevice device
--- >     , const VkQueryPoolCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkQueryPool* pQueryPool
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateQueryPool vkCreateQueryPool registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkCreateQueryPool" vkCreateQueryPool
-               ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkQueryPoolCreateInfo -- ^ pCreateInfo
-                                           ->
-                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                             -> Ptr VkQueryPool -- ^ pQueryPool
-                                                                -> IO VkResult
-
-##else
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkCreateQueryPool
--- >     ( VkDevice device
--- >     , const VkQueryPoolCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkQueryPool* pQueryPool
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateQueryPool vkCreateQueryPool registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCreateQueryPoolSafe@ and @vkCreateQueryPool@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateQueryPool <- vkGetDeviceProc @VkCreateQueryPool vkDevice
---
--- or less efficient:
---
--- > myCreateQueryPool <- vkGetProc @VkCreateQueryPool
---
-vkCreateQueryPool ::
-                  VkDevice -- ^ device
-                           ->
-                    Ptr VkQueryPoolCreateInfo -- ^ pCreateInfo
-                                              ->
-                      Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                -> Ptr VkQueryPool -- ^ pQueryPool
-                                                                   -> IO VkResult
-vkCreateQueryPool
-  = unsafeDupablePerformIO (vkGetProc @VkCreateQueryPool)
-
-{-# NOINLINE vkCreateQueryPool #-}
-##endif
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkCreateQueryPool
--- >     ( VkDevice device
--- >     , const VkQueryPoolCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkQueryPool* pQueryPool
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateQueryPool vkCreateQueryPool registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkCreateQueryPool" vkCreateQueryPoolSafe
-               ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkQueryPoolCreateInfo -- ^ pCreateInfo
-                                           ->
-                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                             -> Ptr VkQueryPool -- ^ pQueryPool
-                                                                -> IO VkResult
-
-##else
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkCreateQueryPool
--- >     ( VkDevice device
--- >     , const VkQueryPoolCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkQueryPool* pQueryPool
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateQueryPool vkCreateQueryPool registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCreateQueryPoolSafe@ and @vkCreateQueryPool@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateQueryPool <- vkGetDeviceProc @VkCreateQueryPool vkDevice
---
--- or less efficient:
---
--- > myCreateQueryPool <- vkGetProc @VkCreateQueryPool
---
-vkCreateQueryPoolSafe ::
-                      VkDevice -- ^ device
-                               ->
-                        Ptr VkQueryPoolCreateInfo -- ^ pCreateInfo
-                                                  ->
-                          Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                    -> Ptr VkQueryPool -- ^ pQueryPool
-                                                                       -> IO VkResult
-vkCreateQueryPoolSafe = vkCreateQueryPool
-
-{-# INLINE vkCreateQueryPoolSafe #-}
-##endif
-
--- | Success codes: 'VK_SUCCESS'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
---   > VkResult vkCreateQueryPool
---   >     ( VkDevice device
---   >     , const VkQueryPoolCreateInfo* pCreateInfo
---   >     , const VkAllocationCallbacks* pAllocator
---   >     , VkQueryPool* pQueryPool
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateQueryPool vkCreateQueryPool registry at www.khronos.org>
-type HS_vkCreateQueryPool =
-     VkDevice -- ^ device
-              ->
-       Ptr VkQueryPoolCreateInfo -- ^ pCreateInfo
-                                 ->
-         Ptr VkAllocationCallbacks -- ^ pAllocator
-                                   -> Ptr VkQueryPool -- ^ pQueryPool
-                                                      -> IO VkResult
-
-type PFN_vkCreateQueryPool = FunPtr HS_vkCreateQueryPool
-
-foreign import ccall "dynamic" unwrapVkCreateQueryPool ::
-               PFN_vkCreateQueryPool -> HS_vkCreateQueryPool
-
-instance VulkanProc "vkCreateQueryPool" where
-        type VkProcType "vkCreateQueryPool" = HS_vkCreateQueryPool
-        vkProcSymbol = _VkCreateQueryPool
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCreateQueryPool
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VkDestroyQueryPool :: CString
-
-pattern VkDestroyQueryPool <- (is_VkDestroyQueryPool -> True)
-  where VkDestroyQueryPool = _VkDestroyQueryPool
-
-{-# INLINE _VkDestroyQueryPool #-}
-
-_VkDestroyQueryPool :: CString
-_VkDestroyQueryPool = Ptr "vkDestroyQueryPool\NUL"##
-
-{-# INLINE is_VkDestroyQueryPool #-}
-
-is_VkDestroyQueryPool :: CString -> Bool
-is_VkDestroyQueryPool = (EQ ==) . cmpCStrings _VkDestroyQueryPool
-
-type VkDestroyQueryPool = "vkDestroyQueryPool"
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- > void vkDestroyQueryPool
--- >     ( VkDevice device
--- >     , VkQueryPool queryPool
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyQueryPool vkDestroyQueryPool registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkDestroyQueryPool" vkDestroyQueryPool
-               :: VkDevice -- ^ device
-                           -> VkQueryPool -- ^ queryPool
-                                          -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                       -> IO ()
-
-##else
--- |
--- > void vkDestroyQueryPool
--- >     ( VkDevice device
--- >     , VkQueryPool queryPool
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyQueryPool vkDestroyQueryPool registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkDestroyQueryPoolSafe@ and @vkDestroyQueryPool@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDestroyQueryPool <- vkGetDeviceProc @VkDestroyQueryPool vkDevice
---
--- or less efficient:
---
--- > myDestroyQueryPool <- vkGetProc @VkDestroyQueryPool
---
-vkDestroyQueryPool ::
-                   VkDevice -- ^ device
-                            -> VkQueryPool -- ^ queryPool
-                                           -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                        -> IO ()
-vkDestroyQueryPool
-  = unsafeDupablePerformIO (vkGetProc @VkDestroyQueryPool)
-
-{-# NOINLINE vkDestroyQueryPool #-}
-##endif
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- > void vkDestroyQueryPool
--- >     ( VkDevice device
--- >     , VkQueryPool queryPool
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyQueryPool vkDestroyQueryPool registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkDestroyQueryPool"
-               vkDestroyQueryPoolSafe ::
-               VkDevice -- ^ device
-                        -> VkQueryPool -- ^ queryPool
-                                       -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                    -> IO ()
-
-##else
--- |
--- > void vkDestroyQueryPool
--- >     ( VkDevice device
--- >     , VkQueryPool queryPool
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyQueryPool vkDestroyQueryPool registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkDestroyQueryPoolSafe@ and @vkDestroyQueryPool@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDestroyQueryPool <- vkGetDeviceProc @VkDestroyQueryPool vkDevice
---
--- or less efficient:
---
--- > myDestroyQueryPool <- vkGetProc @VkDestroyQueryPool
---
-vkDestroyQueryPoolSafe ::
-                       VkDevice -- ^ device
-                                -> VkQueryPool -- ^ queryPool
-                                               -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                            -> IO ()
-vkDestroyQueryPoolSafe = vkDestroyQueryPool
-
-{-# INLINE vkDestroyQueryPoolSafe #-}
-##endif
-
--- | > void vkDestroyQueryPool
---   >     ( VkDevice device
---   >     , VkQueryPool queryPool
---   >     , const VkAllocationCallbacks* pAllocator
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyQueryPool vkDestroyQueryPool registry at www.khronos.org>
-type HS_vkDestroyQueryPool =
-     VkDevice -- ^ device
-              -> VkQueryPool -- ^ queryPool
-                             -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                          -> IO ()
-
-type PFN_vkDestroyQueryPool = FunPtr HS_vkDestroyQueryPool
-
-foreign import ccall "dynamic" unwrapVkDestroyQueryPool ::
-               PFN_vkDestroyQueryPool -> HS_vkDestroyQueryPool
-
-instance VulkanProc "vkDestroyQueryPool" where
-        type VkProcType "vkDestroyQueryPool" = HS_vkDestroyQueryPool
-        vkProcSymbol = _VkDestroyQueryPool
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkDestroyQueryPool
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VkGetQueryPoolResults :: CString
-
-pattern VkGetQueryPoolResults <- (is_VkGetQueryPoolResults -> True)
-  where VkGetQueryPoolResults = _VkGetQueryPoolResults
-
-{-# INLINE _VkGetQueryPoolResults #-}
-
-_VkGetQueryPoolResults :: CString
-_VkGetQueryPoolResults = Ptr "vkGetQueryPoolResults\NUL"##
-
-{-# INLINE is_VkGetQueryPoolResults #-}
-
-is_VkGetQueryPoolResults :: CString -> Bool
-is_VkGetQueryPoolResults
-  = (EQ ==) . cmpCStrings _VkGetQueryPoolResults
-
-type VkGetQueryPoolResults = "vkGetQueryPoolResults"
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Success codes: 'VK_SUCCESS', 'VK_NOT_READY'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
---
--- > VkResult vkGetQueryPoolResults
--- >     ( VkDevice device
--- >     , VkQueryPool queryPool
--- >     , uint32_t firstQuery
--- >     , uint32_t queryCount
--- >     , size_t dataSize
--- >     , void* pData
--- >     , VkDeviceSize stride
--- >     , VkQueryResultFlags flags
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetQueryPoolResults vkGetQueryPoolResults registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkGetQueryPoolResults"
-               vkGetQueryPoolResults ::
-               VkDevice -- ^ device
-                        ->
-                 VkQueryPool -- ^ queryPool
-                             ->
-                   Word32 -- ^ firstQuery
-                          ->
-                     Word32 -- ^ queryCount
-                            ->
-                       CSize -- ^ dataSize
-                             ->
-                         Ptr Void -- ^ pData
-                                  -> VkDeviceSize -- ^ stride
-                                                  -> VkQueryResultFlags -- ^ flags
-                                                                        -> IO VkResult
-
-##else
--- |
--- Success codes: 'VK_SUCCESS', 'VK_NOT_READY'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
---
--- > VkResult vkGetQueryPoolResults
--- >     ( VkDevice device
--- >     , VkQueryPool queryPool
--- >     , uint32_t firstQuery
--- >     , uint32_t queryCount
--- >     , size_t dataSize
--- >     , void* pData
--- >     , VkDeviceSize stride
--- >     , VkQueryResultFlags flags
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetQueryPoolResults vkGetQueryPoolResults registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkGetQueryPoolResultsSafe@ and @vkGetQueryPoolResults@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetQueryPoolResults <- vkGetDeviceProc @VkGetQueryPoolResults vkDevice
---
--- or less efficient:
---
--- > myGetQueryPoolResults <- vkGetProc @VkGetQueryPoolResults
---
-vkGetQueryPoolResults ::
-                      VkDevice -- ^ device
-                               ->
-                        VkQueryPool -- ^ queryPool
-                                    ->
-                          Word32 -- ^ firstQuery
-                                 ->
-                            Word32 -- ^ queryCount
-                                   ->
-                              CSize -- ^ dataSize
-                                    ->
-                                Ptr Void -- ^ pData
-                                         -> VkDeviceSize -- ^ stride
-                                                         -> VkQueryResultFlags -- ^ flags
-                                                                               -> IO VkResult
-vkGetQueryPoolResults
-  = unsafeDupablePerformIO (vkGetProc @VkGetQueryPoolResults)
-
-{-# NOINLINE vkGetQueryPoolResults #-}
-##endif
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Success codes: 'VK_SUCCESS', 'VK_NOT_READY'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
---
--- > VkResult vkGetQueryPoolResults
--- >     ( VkDevice device
--- >     , VkQueryPool queryPool
--- >     , uint32_t firstQuery
--- >     , uint32_t queryCount
--- >     , size_t dataSize
--- >     , void* pData
--- >     , VkDeviceSize stride
--- >     , VkQueryResultFlags flags
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetQueryPoolResults vkGetQueryPoolResults registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkGetQueryPoolResults"
-               vkGetQueryPoolResultsSafe ::
-               VkDevice -- ^ device
-                        ->
-                 VkQueryPool -- ^ queryPool
-                             ->
-                   Word32 -- ^ firstQuery
-                          ->
-                     Word32 -- ^ queryCount
-                            ->
-                       CSize -- ^ dataSize
-                             ->
-                         Ptr Void -- ^ pData
-                                  -> VkDeviceSize -- ^ stride
-                                                  -> VkQueryResultFlags -- ^ flags
-                                                                        -> IO VkResult
-
-##else
--- |
--- Success codes: 'VK_SUCCESS', 'VK_NOT_READY'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
---
--- > VkResult vkGetQueryPoolResults
--- >     ( VkDevice device
--- >     , VkQueryPool queryPool
--- >     , uint32_t firstQuery
--- >     , uint32_t queryCount
--- >     , size_t dataSize
--- >     , void* pData
--- >     , VkDeviceSize stride
--- >     , VkQueryResultFlags flags
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetQueryPoolResults vkGetQueryPoolResults registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkGetQueryPoolResultsSafe@ and @vkGetQueryPoolResults@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetQueryPoolResults <- vkGetDeviceProc @VkGetQueryPoolResults vkDevice
---
--- or less efficient:
---
--- > myGetQueryPoolResults <- vkGetProc @VkGetQueryPoolResults
---
-vkGetQueryPoolResultsSafe ::
-                          VkDevice -- ^ device
-                                   ->
-                            VkQueryPool -- ^ queryPool
-                                        ->
-                              Word32 -- ^ firstQuery
-                                     ->
-                                Word32 -- ^ queryCount
-                                       ->
-                                  CSize -- ^ dataSize
-                                        ->
-                                    Ptr Void -- ^ pData
-                                             -> VkDeviceSize -- ^ stride
-                                                             -> VkQueryResultFlags -- ^ flags
-                                                                                   -> IO VkResult
-vkGetQueryPoolResultsSafe = vkGetQueryPoolResults
-
-{-# INLINE vkGetQueryPoolResultsSafe #-}
-##endif
-
--- | Success codes: 'VK_SUCCESS', 'VK_NOT_READY'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
---
---   > VkResult vkGetQueryPoolResults
---   >     ( VkDevice device
---   >     , VkQueryPool queryPool
---   >     , uint32_t firstQuery
---   >     , uint32_t queryCount
---   >     , size_t dataSize
---   >     , void* pData
---   >     , VkDeviceSize stride
---   >     , VkQueryResultFlags flags
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetQueryPoolResults vkGetQueryPoolResults registry at www.khronos.org>
-type HS_vkGetQueryPoolResults =
-     VkDevice -- ^ device
-              ->
-       VkQueryPool -- ^ queryPool
-                   ->
-         Word32 -- ^ firstQuery
-                ->
-           Word32 -- ^ queryCount
-                  ->
-             CSize -- ^ dataSize
-                   ->
-               Ptr Void -- ^ pData
-                        -> VkDeviceSize -- ^ stride
-                                        -> VkQueryResultFlags -- ^ flags
-                                                              -> IO VkResult
-
-type PFN_vkGetQueryPoolResults = FunPtr HS_vkGetQueryPoolResults
-
-foreign import ccall "dynamic" unwrapVkGetQueryPoolResults ::
-               PFN_vkGetQueryPoolResults -> HS_vkGetQueryPoolResults
-
-instance VulkanProc "vkGetQueryPoolResults" where
-        type VkProcType "vkGetQueryPoolResults" = HS_vkGetQueryPoolResults
-        vkProcSymbol = _VkGetQueryPoolResults
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkGetQueryPoolResults
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VkCreateBuffer :: CString
-
-pattern VkCreateBuffer <- (is_VkCreateBuffer -> True)
-  where VkCreateBuffer = _VkCreateBuffer
-
-{-# INLINE _VkCreateBuffer #-}
-
-_VkCreateBuffer :: CString
-_VkCreateBuffer = Ptr "vkCreateBuffer\NUL"##
-
-{-# INLINE is_VkCreateBuffer #-}
-
-is_VkCreateBuffer :: CString -> Bool
-is_VkCreateBuffer = (EQ ==) . cmpCStrings _VkCreateBuffer
-
-type VkCreateBuffer = "vkCreateBuffer"
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkCreateBuffer
--- >     ( VkDevice device
--- >     , const VkBufferCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkBuffer* pBuffer
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateBuffer vkCreateBuffer registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkCreateBuffer" vkCreateBuffer ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkBufferCreateInfo -- ^ pCreateInfo
-                                        ->
-                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                             -> Ptr VkBuffer -- ^ pBuffer
-                                                             -> IO VkResult
-
-##else
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkCreateBuffer
--- >     ( VkDevice device
--- >     , const VkBufferCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkBuffer* pBuffer
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateBuffer vkCreateBuffer registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCreateBufferSafe@ and @vkCreateBuffer@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateBuffer <- vkGetDeviceProc @VkCreateBuffer vkDevice
---
--- or less efficient:
---
--- > myCreateBuffer <- vkGetProc @VkCreateBuffer
---
-vkCreateBuffer ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkBufferCreateInfo -- ^ pCreateInfo
-                                        ->
-                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                             -> Ptr VkBuffer -- ^ pBuffer
-                                                             -> IO VkResult
-vkCreateBuffer = unsafeDupablePerformIO (vkGetProc @VkCreateBuffer)
-
-{-# NOINLINE vkCreateBuffer #-}
-##endif
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkCreateBuffer
--- >     ( VkDevice device
--- >     , const VkBufferCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkBuffer* pBuffer
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateBuffer vkCreateBuffer registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkCreateBuffer" vkCreateBufferSafe ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkBufferCreateInfo -- ^ pCreateInfo
-                                        ->
-                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                             -> Ptr VkBuffer -- ^ pBuffer
-                                                             -> IO VkResult
-
-##else
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkCreateBuffer
--- >     ( VkDevice device
--- >     , const VkBufferCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkBuffer* pBuffer
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateBuffer vkCreateBuffer registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCreateBufferSafe@ and @vkCreateBuffer@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateBuffer <- vkGetDeviceProc @VkCreateBuffer vkDevice
---
--- or less efficient:
---
--- > myCreateBuffer <- vkGetProc @VkCreateBuffer
---
-vkCreateBufferSafe ::
-                   VkDevice -- ^ device
-                            ->
-                     Ptr VkBufferCreateInfo -- ^ pCreateInfo
-                                            ->
-                       Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                 -> Ptr VkBuffer -- ^ pBuffer
-                                                                 -> IO VkResult
-vkCreateBufferSafe = vkCreateBuffer
-
-{-# INLINE vkCreateBufferSafe #-}
-##endif
-
--- | Success codes: 'VK_SUCCESS'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
---   > VkResult vkCreateBuffer
---   >     ( VkDevice device
---   >     , const VkBufferCreateInfo* pCreateInfo
---   >     , const VkAllocationCallbacks* pAllocator
---   >     , VkBuffer* pBuffer
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateBuffer vkCreateBuffer registry at www.khronos.org>
-type HS_vkCreateBuffer =
-     VkDevice -- ^ device
-              ->
-       Ptr VkBufferCreateInfo -- ^ pCreateInfo
-                              ->
-         Ptr VkAllocationCallbacks -- ^ pAllocator
-                                   -> Ptr VkBuffer -- ^ pBuffer
-                                                   -> IO VkResult
-
-type PFN_vkCreateBuffer = FunPtr HS_vkCreateBuffer
-
-foreign import ccall "dynamic" unwrapVkCreateBuffer ::
-               PFN_vkCreateBuffer -> HS_vkCreateBuffer
-
-instance VulkanProc "vkCreateBuffer" where
-        type VkProcType "vkCreateBuffer" = HS_vkCreateBuffer
-        vkProcSymbol = _VkCreateBuffer
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCreateBuffer
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VkDestroyBuffer :: CString
-
-pattern VkDestroyBuffer <- (is_VkDestroyBuffer -> True)
-  where VkDestroyBuffer = _VkDestroyBuffer
-
-{-# INLINE _VkDestroyBuffer #-}
-
-_VkDestroyBuffer :: CString
-_VkDestroyBuffer = Ptr "vkDestroyBuffer\NUL"##
-
-{-# INLINE is_VkDestroyBuffer #-}
-
-is_VkDestroyBuffer :: CString -> Bool
-is_VkDestroyBuffer = (EQ ==) . cmpCStrings _VkDestroyBuffer
-
-type VkDestroyBuffer = "vkDestroyBuffer"
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- > void vkDestroyBuffer
--- >     ( VkDevice device
--- >     , VkBuffer buffer
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyBuffer vkDestroyBuffer registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkDestroyBuffer" vkDestroyBuffer ::
-               VkDevice -- ^ device
-                        -> VkBuffer -- ^ buffer
-                                    -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                 -> IO ()
-
-##else
--- |
--- > void vkDestroyBuffer
--- >     ( VkDevice device
--- >     , VkBuffer buffer
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyBuffer vkDestroyBuffer registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkDestroyBufferSafe@ and @vkDestroyBuffer@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDestroyBuffer <- vkGetDeviceProc @VkDestroyBuffer vkDevice
---
--- or less efficient:
---
--- > myDestroyBuffer <- vkGetProc @VkDestroyBuffer
---
-vkDestroyBuffer ::
-                VkDevice -- ^ device
-                         -> VkBuffer -- ^ buffer
-                                     -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                  -> IO ()
-vkDestroyBuffer
-  = unsafeDupablePerformIO (vkGetProc @VkDestroyBuffer)
-
-{-# NOINLINE vkDestroyBuffer #-}
-##endif
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- > void vkDestroyBuffer
--- >     ( VkDevice device
--- >     , VkBuffer buffer
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyBuffer vkDestroyBuffer registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkDestroyBuffer" vkDestroyBufferSafe ::
-               VkDevice -- ^ device
-                        -> VkBuffer -- ^ buffer
-                                    -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                 -> IO ()
-
-##else
--- |
--- > void vkDestroyBuffer
--- >     ( VkDevice device
--- >     , VkBuffer buffer
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyBuffer vkDestroyBuffer registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkDestroyBufferSafe@ and @vkDestroyBuffer@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDestroyBuffer <- vkGetDeviceProc @VkDestroyBuffer vkDevice
---
--- or less efficient:
---
--- > myDestroyBuffer <- vkGetProc @VkDestroyBuffer
---
-vkDestroyBufferSafe ::
-                    VkDevice -- ^ device
-                             -> VkBuffer -- ^ buffer
-                                         -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                      -> IO ()
-vkDestroyBufferSafe = vkDestroyBuffer
-
-{-# INLINE vkDestroyBufferSafe #-}
-##endif
-
--- | > void vkDestroyBuffer
---   >     ( VkDevice device
---   >     , VkBuffer buffer
---   >     , const VkAllocationCallbacks* pAllocator
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyBuffer vkDestroyBuffer registry at www.khronos.org>
-type HS_vkDestroyBuffer =
-     VkDevice -- ^ device
-              -> VkBuffer -- ^ buffer
-                          -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                       -> IO ()
-
-type PFN_vkDestroyBuffer = FunPtr HS_vkDestroyBuffer
-
-foreign import ccall "dynamic" unwrapVkDestroyBuffer ::
-               PFN_vkDestroyBuffer -> HS_vkDestroyBuffer
-
-instance VulkanProc "vkDestroyBuffer" where
-        type VkProcType "vkDestroyBuffer" = HS_vkDestroyBuffer
-        vkProcSymbol = _VkDestroyBuffer
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkDestroyBuffer
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VkCreateBufferView :: CString
-
-pattern VkCreateBufferView <- (is_VkCreateBufferView -> True)
-  where VkCreateBufferView = _VkCreateBufferView
-
-{-# INLINE _VkCreateBufferView #-}
-
-_VkCreateBufferView :: CString
-_VkCreateBufferView = Ptr "vkCreateBufferView\NUL"##
-
-{-# INLINE is_VkCreateBufferView #-}
-
-is_VkCreateBufferView :: CString -> Bool
-is_VkCreateBufferView = (EQ ==) . cmpCStrings _VkCreateBufferView
-
-type VkCreateBufferView = "vkCreateBufferView"
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkCreateBufferView
--- >     ( VkDevice device
--- >     , const VkBufferViewCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkBufferView* pView
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateBufferView vkCreateBufferView registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkCreateBufferView" vkCreateBufferView
-               ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkBufferViewCreateInfo -- ^ pCreateInfo
-                                            ->
-                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                             -> Ptr VkBufferView -- ^ pView
-                                                                 -> IO VkResult
-
-##else
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkCreateBufferView
--- >     ( VkDevice device
--- >     , const VkBufferViewCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkBufferView* pView
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateBufferView vkCreateBufferView registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCreateBufferViewSafe@ and @vkCreateBufferView@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateBufferView <- vkGetDeviceProc @VkCreateBufferView vkDevice
---
--- or less efficient:
---
--- > myCreateBufferView <- vkGetProc @VkCreateBufferView
---
-vkCreateBufferView ::
-                   VkDevice -- ^ device
-                            ->
-                     Ptr VkBufferViewCreateInfo -- ^ pCreateInfo
-                                                ->
-                       Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                 -> Ptr VkBufferView -- ^ pView
-                                                                     -> IO VkResult
-vkCreateBufferView
-  = unsafeDupablePerformIO (vkGetProc @VkCreateBufferView)
-
-{-# NOINLINE vkCreateBufferView #-}
-##endif
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkCreateBufferView
--- >     ( VkDevice device
--- >     , const VkBufferViewCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkBufferView* pView
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateBufferView vkCreateBufferView registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkCreateBufferView"
-               vkCreateBufferViewSafe ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkBufferViewCreateInfo -- ^ pCreateInfo
-                                            ->
-                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                             -> Ptr VkBufferView -- ^ pView
-                                                                 -> IO VkResult
-
-##else
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkCreateBufferView
--- >     ( VkDevice device
--- >     , const VkBufferViewCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkBufferView* pView
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateBufferView vkCreateBufferView registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCreateBufferViewSafe@ and @vkCreateBufferView@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateBufferView <- vkGetDeviceProc @VkCreateBufferView vkDevice
---
--- or less efficient:
---
--- > myCreateBufferView <- vkGetProc @VkCreateBufferView
---
-vkCreateBufferViewSafe ::
-                       VkDevice -- ^ device
-                                ->
-                         Ptr VkBufferViewCreateInfo -- ^ pCreateInfo
-                                                    ->
-                           Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                     -> Ptr VkBufferView -- ^ pView
-                                                                         -> IO VkResult
-vkCreateBufferViewSafe = vkCreateBufferView
-
-{-# INLINE vkCreateBufferViewSafe #-}
-##endif
-
--- | Success codes: 'VK_SUCCESS'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
---   > VkResult vkCreateBufferView
---   >     ( VkDevice device
---   >     , const VkBufferViewCreateInfo* pCreateInfo
---   >     , const VkAllocationCallbacks* pAllocator
---   >     , VkBufferView* pView
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateBufferView vkCreateBufferView registry at www.khronos.org>
-type HS_vkCreateBufferView =
-     VkDevice -- ^ device
-              ->
-       Ptr VkBufferViewCreateInfo -- ^ pCreateInfo
-                                  ->
-         Ptr VkAllocationCallbacks -- ^ pAllocator
-                                   -> Ptr VkBufferView -- ^ pView
-                                                       -> IO VkResult
-
-type PFN_vkCreateBufferView = FunPtr HS_vkCreateBufferView
-
-foreign import ccall "dynamic" unwrapVkCreateBufferView ::
-               PFN_vkCreateBufferView -> HS_vkCreateBufferView
-
-instance VulkanProc "vkCreateBufferView" where
-        type VkProcType "vkCreateBufferView" = HS_vkCreateBufferView
-        vkProcSymbol = _VkCreateBufferView
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCreateBufferView
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VkDestroyBufferView :: CString
-
-pattern VkDestroyBufferView <- (is_VkDestroyBufferView -> True)
-  where VkDestroyBufferView = _VkDestroyBufferView
-
-{-# INLINE _VkDestroyBufferView #-}
-
-_VkDestroyBufferView :: CString
-_VkDestroyBufferView = Ptr "vkDestroyBufferView\NUL"##
-
-{-# INLINE is_VkDestroyBufferView #-}
-
-is_VkDestroyBufferView :: CString -> Bool
-is_VkDestroyBufferView = (EQ ==) . cmpCStrings _VkDestroyBufferView
-
-type VkDestroyBufferView = "vkDestroyBufferView"
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- > void vkDestroyBufferView
--- >     ( VkDevice device
--- >     , VkBufferView bufferView
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyBufferView vkDestroyBufferView registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkDestroyBufferView"
-               vkDestroyBufferView ::
-               VkDevice -- ^ device
-                        -> VkBufferView -- ^ bufferView
-                                        -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                     -> IO ()
-
-##else
--- |
--- > void vkDestroyBufferView
--- >     ( VkDevice device
--- >     , VkBufferView bufferView
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyBufferView vkDestroyBufferView registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkDestroyBufferViewSafe@ and @vkDestroyBufferView@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDestroyBufferView <- vkGetDeviceProc @VkDestroyBufferView vkDevice
---
--- or less efficient:
---
--- > myDestroyBufferView <- vkGetProc @VkDestroyBufferView
---
-vkDestroyBufferView ::
-                    VkDevice -- ^ device
-                             -> VkBufferView -- ^ bufferView
-                                             -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                          -> IO ()
-vkDestroyBufferView
-  = unsafeDupablePerformIO (vkGetProc @VkDestroyBufferView)
-
-{-# NOINLINE vkDestroyBufferView #-}
-##endif
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- > void vkDestroyBufferView
--- >     ( VkDevice device
--- >     , VkBufferView bufferView
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyBufferView vkDestroyBufferView registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkDestroyBufferView"
-               vkDestroyBufferViewSafe ::
-               VkDevice -- ^ device
-                        -> VkBufferView -- ^ bufferView
-                                        -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                     -> IO ()
-
-##else
--- |
--- > void vkDestroyBufferView
--- >     ( VkDevice device
--- >     , VkBufferView bufferView
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyBufferView vkDestroyBufferView registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkDestroyBufferViewSafe@ and @vkDestroyBufferView@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDestroyBufferView <- vkGetDeviceProc @VkDestroyBufferView vkDevice
---
--- or less efficient:
---
--- > myDestroyBufferView <- vkGetProc @VkDestroyBufferView
---
-vkDestroyBufferViewSafe ::
-                        VkDevice -- ^ device
-                                 -> VkBufferView -- ^ bufferView
-                                                 -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                              -> IO ()
-vkDestroyBufferViewSafe = vkDestroyBufferView
-
-{-# INLINE vkDestroyBufferViewSafe #-}
-##endif
-
--- | > void vkDestroyBufferView
---   >     ( VkDevice device
---   >     , VkBufferView bufferView
---   >     , const VkAllocationCallbacks* pAllocator
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyBufferView vkDestroyBufferView registry at www.khronos.org>
-type HS_vkDestroyBufferView =
-     VkDevice -- ^ device
-              -> VkBufferView -- ^ bufferView
-                              -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                           -> IO ()
-
-type PFN_vkDestroyBufferView = FunPtr HS_vkDestroyBufferView
-
-foreign import ccall "dynamic" unwrapVkDestroyBufferView ::
-               PFN_vkDestroyBufferView -> HS_vkDestroyBufferView
-
-instance VulkanProc "vkDestroyBufferView" where
-        type VkProcType "vkDestroyBufferView" = HS_vkDestroyBufferView
-        vkProcSymbol = _VkDestroyBufferView
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkDestroyBufferView
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VkCreateImage :: CString
-
-pattern VkCreateImage <- (is_VkCreateImage -> True)
-  where VkCreateImage = _VkCreateImage
-
-{-# INLINE _VkCreateImage #-}
-
-_VkCreateImage :: CString
-_VkCreateImage = Ptr "vkCreateImage\NUL"##
-
-{-# INLINE is_VkCreateImage #-}
-
-is_VkCreateImage :: CString -> Bool
-is_VkCreateImage = (EQ ==) . cmpCStrings _VkCreateImage
-
-type VkCreateImage = "vkCreateImage"
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkCreateImage
--- >     ( VkDevice device
--- >     , const VkImageCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkImage* pImage
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateImage vkCreateImage registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkCreateImage" vkCreateImage ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkImageCreateInfo -- ^ pCreateInfo
-                                       ->
-                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                             -> Ptr VkImage -- ^ pImage
-                                                            -> IO VkResult
-
-##else
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkCreateImage
--- >     ( VkDevice device
--- >     , const VkImageCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkImage* pImage
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateImage vkCreateImage registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCreateImageSafe@ and @vkCreateImage@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateImage <- vkGetDeviceProc @VkCreateImage vkDevice
---
--- or less efficient:
---
--- > myCreateImage <- vkGetProc @VkCreateImage
---
-vkCreateImage ::
-              VkDevice -- ^ device
-                       ->
-                Ptr VkImageCreateInfo -- ^ pCreateInfo
-                                      ->
-                  Ptr VkAllocationCallbacks -- ^ pAllocator
-                                            -> Ptr VkImage -- ^ pImage
-                                                           -> IO VkResult
-vkCreateImage = unsafeDupablePerformIO (vkGetProc @VkCreateImage)
-
-{-# NOINLINE vkCreateImage #-}
-##endif
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkCreateImage
--- >     ( VkDevice device
--- >     , const VkImageCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkImage* pImage
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateImage vkCreateImage registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkCreateImage" vkCreateImageSafe ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkImageCreateInfo -- ^ pCreateInfo
-                                       ->
-                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                             -> Ptr VkImage -- ^ pImage
-                                                            -> IO VkResult
-
-##else
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkCreateImage
--- >     ( VkDevice device
--- >     , const VkImageCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkImage* pImage
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateImage vkCreateImage registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCreateImageSafe@ and @vkCreateImage@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateImage <- vkGetDeviceProc @VkCreateImage vkDevice
---
--- or less efficient:
---
--- > myCreateImage <- vkGetProc @VkCreateImage
---
-vkCreateImageSafe ::
-                  VkDevice -- ^ device
-                           ->
-                    Ptr VkImageCreateInfo -- ^ pCreateInfo
-                                          ->
-                      Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                -> Ptr VkImage -- ^ pImage
-                                                               -> IO VkResult
-vkCreateImageSafe = vkCreateImage
-
-{-# INLINE vkCreateImageSafe #-}
-##endif
-
--- | Success codes: 'VK_SUCCESS'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
---   > VkResult vkCreateImage
---   >     ( VkDevice device
---   >     , const VkImageCreateInfo* pCreateInfo
---   >     , const VkAllocationCallbacks* pAllocator
---   >     , VkImage* pImage
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateImage vkCreateImage registry at www.khronos.org>
-type HS_vkCreateImage =
-     VkDevice -- ^ device
-              ->
-       Ptr VkImageCreateInfo -- ^ pCreateInfo
-                             ->
-         Ptr VkAllocationCallbacks -- ^ pAllocator
-                                   -> Ptr VkImage -- ^ pImage
-                                                  -> IO VkResult
-
-type PFN_vkCreateImage = FunPtr HS_vkCreateImage
-
-foreign import ccall "dynamic" unwrapVkCreateImage ::
-               PFN_vkCreateImage -> HS_vkCreateImage
-
-instance VulkanProc "vkCreateImage" where
-        type VkProcType "vkCreateImage" = HS_vkCreateImage
-        vkProcSymbol = _VkCreateImage
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCreateImage
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VkDestroyImage :: CString
-
-pattern VkDestroyImage <- (is_VkDestroyImage -> True)
-  where VkDestroyImage = _VkDestroyImage
-
-{-# INLINE _VkDestroyImage #-}
-
-_VkDestroyImage :: CString
-_VkDestroyImage = Ptr "vkDestroyImage\NUL"##
-
-{-# INLINE is_VkDestroyImage #-}
-
-is_VkDestroyImage :: CString -> Bool
-is_VkDestroyImage = (EQ ==) . cmpCStrings _VkDestroyImage
-
-type VkDestroyImage = "vkDestroyImage"
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- > void vkDestroyImage
--- >     ( VkDevice device
--- >     , VkImage image
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyImage vkDestroyImage registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkDestroyImage" vkDestroyImage ::
-               VkDevice -- ^ device
-                        -> VkImage -- ^ image
-                                   -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                -> IO ()
-
-##else
--- |
--- > void vkDestroyImage
--- >     ( VkDevice device
--- >     , VkImage image
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyImage vkDestroyImage registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkDestroyImageSafe@ and @vkDestroyImage@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDestroyImage <- vkGetDeviceProc @VkDestroyImage vkDevice
---
--- or less efficient:
---
--- > myDestroyImage <- vkGetProc @VkDestroyImage
---
-vkDestroyImage ::
-               VkDevice -- ^ device
-                        -> VkImage -- ^ image
-                                   -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                -> IO ()
-vkDestroyImage = unsafeDupablePerformIO (vkGetProc @VkDestroyImage)
-
-{-# NOINLINE vkDestroyImage #-}
-##endif
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- > void vkDestroyImage
--- >     ( VkDevice device
--- >     , VkImage image
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyImage vkDestroyImage registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkDestroyImage" vkDestroyImageSafe ::
-               VkDevice -- ^ device
-                        -> VkImage -- ^ image
-                                   -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                -> IO ()
-
-##else
--- |
--- > void vkDestroyImage
--- >     ( VkDevice device
--- >     , VkImage image
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyImage vkDestroyImage registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkDestroyImageSafe@ and @vkDestroyImage@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDestroyImage <- vkGetDeviceProc @VkDestroyImage vkDevice
---
--- or less efficient:
---
--- > myDestroyImage <- vkGetProc @VkDestroyImage
---
-vkDestroyImageSafe ::
-                   VkDevice -- ^ device
-                            -> VkImage -- ^ image
-                                       -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                    -> IO ()
-vkDestroyImageSafe = vkDestroyImage
-
-{-# INLINE vkDestroyImageSafe #-}
-##endif
-
--- | > void vkDestroyImage
---   >     ( VkDevice device
---   >     , VkImage image
---   >     , const VkAllocationCallbacks* pAllocator
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyImage vkDestroyImage registry at www.khronos.org>
-type HS_vkDestroyImage =
-     VkDevice -- ^ device
-              -> VkImage -- ^ image
-                         -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                      -> IO ()
-
-type PFN_vkDestroyImage = FunPtr HS_vkDestroyImage
-
-foreign import ccall "dynamic" unwrapVkDestroyImage ::
-               PFN_vkDestroyImage -> HS_vkDestroyImage
-
-instance VulkanProc "vkDestroyImage" where
-        type VkProcType "vkDestroyImage" = HS_vkDestroyImage
-        vkProcSymbol = _VkDestroyImage
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkDestroyImage
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VkGetImageSubresourceLayout :: CString
-
-pattern VkGetImageSubresourceLayout <-
-        (is_VkGetImageSubresourceLayout -> True)
-  where VkGetImageSubresourceLayout = _VkGetImageSubresourceLayout
-
-{-# INLINE _VkGetImageSubresourceLayout #-}
-
-_VkGetImageSubresourceLayout :: CString
-_VkGetImageSubresourceLayout
-  = Ptr "vkGetImageSubresourceLayout\NUL"##
-
-{-# INLINE is_VkGetImageSubresourceLayout #-}
-
-is_VkGetImageSubresourceLayout :: CString -> Bool
-is_VkGetImageSubresourceLayout
-  = (EQ ==) . cmpCStrings _VkGetImageSubresourceLayout
-
-type VkGetImageSubresourceLayout = "vkGetImageSubresourceLayout"
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- > void vkGetImageSubresourceLayout
--- >     ( VkDevice device
--- >     , VkImage image
--- >     , const VkImageSubresource* pSubresource
--- >     , VkSubresourceLayout* pLayout
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetImageSubresourceLayout vkGetImageSubresourceLayout registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkGetImageSubresourceLayout"
-               vkGetImageSubresourceLayout ::
-               VkDevice -- ^ device
-                        ->
-                 VkImage -- ^ image
-                         ->
-                   Ptr VkImageSubresource -- ^ pSubresource
-                                          -> Ptr VkSubresourceLayout -- ^ pLayout
-                                                                     -> IO ()
-
-##else
--- |
--- > void vkGetImageSubresourceLayout
--- >     ( VkDevice device
--- >     , VkImage image
--- >     , const VkImageSubresource* pSubresource
--- >     , VkSubresourceLayout* pLayout
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetImageSubresourceLayout vkGetImageSubresourceLayout registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkGetImageSubresourceLayoutSafe@ and @vkGetImageSubresourceLayout@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetImageSubresourceLayout <- vkGetDeviceProc @VkGetImageSubresourceLayout vkDevice
---
--- or less efficient:
---
--- > myGetImageSubresourceLayout <- vkGetProc @VkGetImageSubresourceLayout
---
-vkGetImageSubresourceLayout ::
-                            VkDevice -- ^ device
-                                     ->
-                              VkImage -- ^ image
-                                      ->
-                                Ptr VkImageSubresource -- ^ pSubresource
-                                                       -> Ptr VkSubresourceLayout -- ^ pLayout
-                                                                                  -> IO ()
-vkGetImageSubresourceLayout
-  = unsafeDupablePerformIO (vkGetProc @VkGetImageSubresourceLayout)
-
-{-# NOINLINE vkGetImageSubresourceLayout #-}
-##endif
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- > void vkGetImageSubresourceLayout
--- >     ( VkDevice device
--- >     , VkImage image
--- >     , const VkImageSubresource* pSubresource
--- >     , VkSubresourceLayout* pLayout
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetImageSubresourceLayout vkGetImageSubresourceLayout registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkGetImageSubresourceLayout"
-               vkGetImageSubresourceLayoutSafe ::
-               VkDevice -- ^ device
-                        ->
-                 VkImage -- ^ image
-                         ->
-                   Ptr VkImageSubresource -- ^ pSubresource
-                                          -> Ptr VkSubresourceLayout -- ^ pLayout
-                                                                     -> IO ()
-
-##else
--- |
--- > void vkGetImageSubresourceLayout
--- >     ( VkDevice device
--- >     , VkImage image
--- >     , const VkImageSubresource* pSubresource
--- >     , VkSubresourceLayout* pLayout
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetImageSubresourceLayout vkGetImageSubresourceLayout registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkGetImageSubresourceLayoutSafe@ and @vkGetImageSubresourceLayout@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetImageSubresourceLayout <- vkGetDeviceProc @VkGetImageSubresourceLayout vkDevice
---
--- or less efficient:
---
--- > myGetImageSubresourceLayout <- vkGetProc @VkGetImageSubresourceLayout
---
-vkGetImageSubresourceLayoutSafe ::
-                                VkDevice -- ^ device
-                                         ->
-                                  VkImage -- ^ image
-                                          ->
-                                    Ptr VkImageSubresource -- ^ pSubresource
-                                                           -> Ptr VkSubresourceLayout -- ^ pLayout
-                                                                                      -> IO ()
-vkGetImageSubresourceLayoutSafe = vkGetImageSubresourceLayout
-
-{-# INLINE vkGetImageSubresourceLayoutSafe #-}
-##endif
-
--- | > void vkGetImageSubresourceLayout
---   >     ( VkDevice device
---   >     , VkImage image
---   >     , const VkImageSubresource* pSubresource
---   >     , VkSubresourceLayout* pLayout
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetImageSubresourceLayout vkGetImageSubresourceLayout registry at www.khronos.org>
-type HS_vkGetImageSubresourceLayout =
-     VkDevice -- ^ device
-              ->
-       VkImage -- ^ image
-               ->
-         Ptr VkImageSubresource -- ^ pSubresource
-                                -> Ptr VkSubresourceLayout -- ^ pLayout
-                                                           -> IO ()
-
-type PFN_vkGetImageSubresourceLayout =
-     FunPtr HS_vkGetImageSubresourceLayout
-
-foreign import ccall "dynamic" unwrapVkGetImageSubresourceLayout ::
-               PFN_vkGetImageSubresourceLayout -> HS_vkGetImageSubresourceLayout
-
-instance VulkanProc "vkGetImageSubresourceLayout" where
-        type VkProcType "vkGetImageSubresourceLayout" =
-             HS_vkGetImageSubresourceLayout
-        vkProcSymbol = _VkGetImageSubresourceLayout
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkGetImageSubresourceLayout
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VkCreateImageView :: CString
-
-pattern VkCreateImageView <- (is_VkCreateImageView -> True)
-  where VkCreateImageView = _VkCreateImageView
-
-{-# INLINE _VkCreateImageView #-}
-
-_VkCreateImageView :: CString
-_VkCreateImageView = Ptr "vkCreateImageView\NUL"##
-
-{-# INLINE is_VkCreateImageView #-}
-
-is_VkCreateImageView :: CString -> Bool
-is_VkCreateImageView = (EQ ==) . cmpCStrings _VkCreateImageView
-
-type VkCreateImageView = "vkCreateImageView"
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkCreateImageView
--- >     ( VkDevice device
--- >     , const VkImageViewCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkImageView* pView
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateImageView vkCreateImageView registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkCreateImageView" vkCreateImageView
-               ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkImageViewCreateInfo -- ^ pCreateInfo
-                                           ->
-                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                             -> Ptr VkImageView -- ^ pView
-                                                                -> IO VkResult
-
-##else
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkCreateImageView
--- >     ( VkDevice device
--- >     , const VkImageViewCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkImageView* pView
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateImageView vkCreateImageView registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCreateImageViewSafe@ and @vkCreateImageView@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateImageView <- vkGetDeviceProc @VkCreateImageView vkDevice
---
--- or less efficient:
---
--- > myCreateImageView <- vkGetProc @VkCreateImageView
---
-vkCreateImageView ::
-                  VkDevice -- ^ device
-                           ->
-                    Ptr VkImageViewCreateInfo -- ^ pCreateInfo
-                                              ->
-                      Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                -> Ptr VkImageView -- ^ pView
-                                                                   -> IO VkResult
-vkCreateImageView
-  = unsafeDupablePerformIO (vkGetProc @VkCreateImageView)
-
-{-# NOINLINE vkCreateImageView #-}
-##endif
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkCreateImageView
--- >     ( VkDevice device
--- >     , const VkImageViewCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkImageView* pView
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateImageView vkCreateImageView registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkCreateImageView" vkCreateImageViewSafe
-               ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkImageViewCreateInfo -- ^ pCreateInfo
-                                           ->
-                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                             -> Ptr VkImageView -- ^ pView
-                                                                -> IO VkResult
-
-##else
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkCreateImageView
--- >     ( VkDevice device
--- >     , const VkImageViewCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkImageView* pView
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateImageView vkCreateImageView registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCreateImageViewSafe@ and @vkCreateImageView@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateImageView <- vkGetDeviceProc @VkCreateImageView vkDevice
---
--- or less efficient:
---
--- > myCreateImageView <- vkGetProc @VkCreateImageView
---
-vkCreateImageViewSafe ::
-                      VkDevice -- ^ device
-                               ->
-                        Ptr VkImageViewCreateInfo -- ^ pCreateInfo
-                                                  ->
-                          Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                    -> Ptr VkImageView -- ^ pView
-                                                                       -> IO VkResult
-vkCreateImageViewSafe = vkCreateImageView
-
-{-# INLINE vkCreateImageViewSafe #-}
-##endif
-
--- | Success codes: 'VK_SUCCESS'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
---   > VkResult vkCreateImageView
---   >     ( VkDevice device
---   >     , const VkImageViewCreateInfo* pCreateInfo
---   >     , const VkAllocationCallbacks* pAllocator
---   >     , VkImageView* pView
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateImageView vkCreateImageView registry at www.khronos.org>
-type HS_vkCreateImageView =
-     VkDevice -- ^ device
-              ->
-       Ptr VkImageViewCreateInfo -- ^ pCreateInfo
-                                 ->
-         Ptr VkAllocationCallbacks -- ^ pAllocator
-                                   -> Ptr VkImageView -- ^ pView
-                                                      -> IO VkResult
-
-type PFN_vkCreateImageView = FunPtr HS_vkCreateImageView
-
-foreign import ccall "dynamic" unwrapVkCreateImageView ::
-               PFN_vkCreateImageView -> HS_vkCreateImageView
-
-instance VulkanProc "vkCreateImageView" where
-        type VkProcType "vkCreateImageView" = HS_vkCreateImageView
-        vkProcSymbol = _VkCreateImageView
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCreateImageView
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VkDestroyImageView :: CString
-
-pattern VkDestroyImageView <- (is_VkDestroyImageView -> True)
-  where VkDestroyImageView = _VkDestroyImageView
-
-{-# INLINE _VkDestroyImageView #-}
-
-_VkDestroyImageView :: CString
-_VkDestroyImageView = Ptr "vkDestroyImageView\NUL"##
-
-{-# INLINE is_VkDestroyImageView #-}
-
-is_VkDestroyImageView :: CString -> Bool
-is_VkDestroyImageView = (EQ ==) . cmpCStrings _VkDestroyImageView
-
-type VkDestroyImageView = "vkDestroyImageView"
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- > void vkDestroyImageView
--- >     ( VkDevice device
--- >     , VkImageView imageView
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyImageView vkDestroyImageView registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkDestroyImageView" vkDestroyImageView
-               :: VkDevice -- ^ device
-                           -> VkImageView -- ^ imageView
-                                          -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                       -> IO ()
-
-##else
--- |
--- > void vkDestroyImageView
--- >     ( VkDevice device
--- >     , VkImageView imageView
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyImageView vkDestroyImageView registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkDestroyImageViewSafe@ and @vkDestroyImageView@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDestroyImageView <- vkGetDeviceProc @VkDestroyImageView vkDevice
---
--- or less efficient:
---
--- > myDestroyImageView <- vkGetProc @VkDestroyImageView
---
-vkDestroyImageView ::
-                   VkDevice -- ^ device
-                            -> VkImageView -- ^ imageView
-                                           -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                        -> IO ()
-vkDestroyImageView
-  = unsafeDupablePerformIO (vkGetProc @VkDestroyImageView)
-
-{-# NOINLINE vkDestroyImageView #-}
-##endif
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- > void vkDestroyImageView
--- >     ( VkDevice device
--- >     , VkImageView imageView
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyImageView vkDestroyImageView registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkDestroyImageView"
-               vkDestroyImageViewSafe ::
-               VkDevice -- ^ device
-                        -> VkImageView -- ^ imageView
-                                       -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                    -> IO ()
-
-##else
--- |
--- > void vkDestroyImageView
--- >     ( VkDevice device
--- >     , VkImageView imageView
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyImageView vkDestroyImageView registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkDestroyImageViewSafe@ and @vkDestroyImageView@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDestroyImageView <- vkGetDeviceProc @VkDestroyImageView vkDevice
---
--- or less efficient:
---
--- > myDestroyImageView <- vkGetProc @VkDestroyImageView
---
-vkDestroyImageViewSafe ::
-                       VkDevice -- ^ device
-                                -> VkImageView -- ^ imageView
-                                               -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                            -> IO ()
-vkDestroyImageViewSafe = vkDestroyImageView
-
-{-# INLINE vkDestroyImageViewSafe #-}
-##endif
-
--- | > void vkDestroyImageView
---   >     ( VkDevice device
---   >     , VkImageView imageView
---   >     , const VkAllocationCallbacks* pAllocator
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyImageView vkDestroyImageView registry at www.khronos.org>
-type HS_vkDestroyImageView =
-     VkDevice -- ^ device
-              -> VkImageView -- ^ imageView
-                             -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                          -> IO ()
-
-type PFN_vkDestroyImageView = FunPtr HS_vkDestroyImageView
-
-foreign import ccall "dynamic" unwrapVkDestroyImageView ::
-               PFN_vkDestroyImageView -> HS_vkDestroyImageView
-
-instance VulkanProc "vkDestroyImageView" where
-        type VkProcType "vkDestroyImageView" = HS_vkDestroyImageView
-        vkProcSymbol = _VkDestroyImageView
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkDestroyImageView
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VkCreateShaderModule :: CString
-
-pattern VkCreateShaderModule <- (is_VkCreateShaderModule -> True)
-  where VkCreateShaderModule = _VkCreateShaderModule
-
-{-# INLINE _VkCreateShaderModule #-}
-
-_VkCreateShaderModule :: CString
-_VkCreateShaderModule = Ptr "vkCreateShaderModule\NUL"##
-
-{-# INLINE is_VkCreateShaderModule #-}
-
-is_VkCreateShaderModule :: CString -> Bool
-is_VkCreateShaderModule
-  = (EQ ==) . cmpCStrings _VkCreateShaderModule
-
-type VkCreateShaderModule = "vkCreateShaderModule"
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INVALID_SHADER_NV'.
---
--- > VkResult vkCreateShaderModule
--- >     ( VkDevice device
--- >     , const VkShaderModuleCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkShaderModule* pShaderModule
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateShaderModule vkCreateShaderModule registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkCreateShaderModule"
-               vkCreateShaderModule ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkShaderModuleCreateInfo -- ^ pCreateInfo
-                                              ->
-                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                             -> Ptr VkShaderModule -- ^ pShaderModule
-                                                                   -> IO VkResult
-
-##else
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INVALID_SHADER_NV'.
---
--- > VkResult vkCreateShaderModule
--- >     ( VkDevice device
--- >     , const VkShaderModuleCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkShaderModule* pShaderModule
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateShaderModule vkCreateShaderModule registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCreateShaderModuleSafe@ and @vkCreateShaderModule@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateShaderModule <- vkGetDeviceProc @VkCreateShaderModule vkDevice
---
--- or less efficient:
---
--- > myCreateShaderModule <- vkGetProc @VkCreateShaderModule
---
-vkCreateShaderModule ::
-                     VkDevice -- ^ device
-                              ->
-                       Ptr VkShaderModuleCreateInfo -- ^ pCreateInfo
-                                                    ->
-                         Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                   -> Ptr VkShaderModule -- ^ pShaderModule
-                                                                         -> IO VkResult
-vkCreateShaderModule
-  = unsafeDupablePerformIO (vkGetProc @VkCreateShaderModule)
-
-{-# NOINLINE vkCreateShaderModule #-}
-##endif
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INVALID_SHADER_NV'.
---
--- > VkResult vkCreateShaderModule
--- >     ( VkDevice device
--- >     , const VkShaderModuleCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkShaderModule* pShaderModule
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateShaderModule vkCreateShaderModule registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkCreateShaderModule"
-               vkCreateShaderModuleSafe ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkShaderModuleCreateInfo -- ^ pCreateInfo
-                                              ->
-                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                             -> Ptr VkShaderModule -- ^ pShaderModule
-                                                                   -> IO VkResult
-
-##else
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INVALID_SHADER_NV'.
---
--- > VkResult vkCreateShaderModule
--- >     ( VkDevice device
--- >     , const VkShaderModuleCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkShaderModule* pShaderModule
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateShaderModule vkCreateShaderModule registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCreateShaderModuleSafe@ and @vkCreateShaderModule@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateShaderModule <- vkGetDeviceProc @VkCreateShaderModule vkDevice
---
--- or less efficient:
---
--- > myCreateShaderModule <- vkGetProc @VkCreateShaderModule
---
-vkCreateShaderModuleSafe ::
-                         VkDevice -- ^ device
-                                  ->
-                           Ptr VkShaderModuleCreateInfo -- ^ pCreateInfo
-                                                        ->
-                             Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                       -> Ptr VkShaderModule -- ^ pShaderModule
-                                                                             -> IO VkResult
-vkCreateShaderModuleSafe = vkCreateShaderModule
-
-{-# INLINE vkCreateShaderModuleSafe #-}
-##endif
-
--- | Success codes: 'VK_SUCCESS'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INVALID_SHADER_NV'.
---
---   > VkResult vkCreateShaderModule
---   >     ( VkDevice device
---   >     , const VkShaderModuleCreateInfo* pCreateInfo
---   >     , const VkAllocationCallbacks* pAllocator
---   >     , VkShaderModule* pShaderModule
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateShaderModule vkCreateShaderModule registry at www.khronos.org>
-type HS_vkCreateShaderModule =
-     VkDevice -- ^ device
-              ->
-       Ptr VkShaderModuleCreateInfo -- ^ pCreateInfo
-                                    ->
-         Ptr VkAllocationCallbacks -- ^ pAllocator
-                                   -> Ptr VkShaderModule -- ^ pShaderModule
-                                                         -> IO VkResult
-
-type PFN_vkCreateShaderModule = FunPtr HS_vkCreateShaderModule
-
-foreign import ccall "dynamic" unwrapVkCreateShaderModule ::
-               PFN_vkCreateShaderModule -> HS_vkCreateShaderModule
-
-instance VulkanProc "vkCreateShaderModule" where
-        type VkProcType "vkCreateShaderModule" = HS_vkCreateShaderModule
-        vkProcSymbol = _VkCreateShaderModule
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCreateShaderModule
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VkDestroyShaderModule :: CString
-
-pattern VkDestroyShaderModule <- (is_VkDestroyShaderModule -> True)
-  where VkDestroyShaderModule = _VkDestroyShaderModule
-
-{-# INLINE _VkDestroyShaderModule #-}
-
-_VkDestroyShaderModule :: CString
-_VkDestroyShaderModule = Ptr "vkDestroyShaderModule\NUL"##
-
-{-# INLINE is_VkDestroyShaderModule #-}
-
-is_VkDestroyShaderModule :: CString -> Bool
-is_VkDestroyShaderModule
-  = (EQ ==) . cmpCStrings _VkDestroyShaderModule
-
-type VkDestroyShaderModule = "vkDestroyShaderModule"
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- > void vkDestroyShaderModule
--- >     ( VkDevice device
--- >     , VkShaderModule shaderModule
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyShaderModule vkDestroyShaderModule registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkDestroyShaderModule"
-               vkDestroyShaderModule ::
-               VkDevice -- ^ device
-                        -> VkShaderModule -- ^ shaderModule
-                                          -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                       -> IO ()
-
-##else
--- |
--- > void vkDestroyShaderModule
--- >     ( VkDevice device
--- >     , VkShaderModule shaderModule
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyShaderModule vkDestroyShaderModule registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkDestroyShaderModuleSafe@ and @vkDestroyShaderModule@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDestroyShaderModule <- vkGetDeviceProc @VkDestroyShaderModule vkDevice
---
--- or less efficient:
---
--- > myDestroyShaderModule <- vkGetProc @VkDestroyShaderModule
---
-vkDestroyShaderModule ::
-                      VkDevice -- ^ device
-                               -> VkShaderModule -- ^ shaderModule
-                                                 -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                              -> IO ()
-vkDestroyShaderModule
-  = unsafeDupablePerformIO (vkGetProc @VkDestroyShaderModule)
-
-{-# NOINLINE vkDestroyShaderModule #-}
-##endif
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- > void vkDestroyShaderModule
--- >     ( VkDevice device
--- >     , VkShaderModule shaderModule
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyShaderModule vkDestroyShaderModule registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkDestroyShaderModule"
-               vkDestroyShaderModuleSafe ::
-               VkDevice -- ^ device
-                        -> VkShaderModule -- ^ shaderModule
-                                          -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                       -> IO ()
-
-##else
--- |
--- > void vkDestroyShaderModule
--- >     ( VkDevice device
--- >     , VkShaderModule shaderModule
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyShaderModule vkDestroyShaderModule registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkDestroyShaderModuleSafe@ and @vkDestroyShaderModule@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDestroyShaderModule <- vkGetDeviceProc @VkDestroyShaderModule vkDevice
---
--- or less efficient:
---
--- > myDestroyShaderModule <- vkGetProc @VkDestroyShaderModule
---
-vkDestroyShaderModuleSafe ::
-                          VkDevice -- ^ device
-                                   -> VkShaderModule -- ^ shaderModule
-                                                     -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                                  -> IO ()
-vkDestroyShaderModuleSafe = vkDestroyShaderModule
-
-{-# INLINE vkDestroyShaderModuleSafe #-}
-##endif
-
--- | > void vkDestroyShaderModule
---   >     ( VkDevice device
---   >     , VkShaderModule shaderModule
---   >     , const VkAllocationCallbacks* pAllocator
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyShaderModule vkDestroyShaderModule registry at www.khronos.org>
-type HS_vkDestroyShaderModule =
-     VkDevice -- ^ device
-              -> VkShaderModule -- ^ shaderModule
-                                -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                             -> IO ()
-
-type PFN_vkDestroyShaderModule = FunPtr HS_vkDestroyShaderModule
-
-foreign import ccall "dynamic" unwrapVkDestroyShaderModule ::
-               PFN_vkDestroyShaderModule -> HS_vkDestroyShaderModule
-
-instance VulkanProc "vkDestroyShaderModule" where
-        type VkProcType "vkDestroyShaderModule" = HS_vkDestroyShaderModule
-        vkProcSymbol = _VkDestroyShaderModule
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkDestroyShaderModule
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VkCreatePipelineCache :: CString
-
-pattern VkCreatePipelineCache <- (is_VkCreatePipelineCache -> True)
-  where VkCreatePipelineCache = _VkCreatePipelineCache
-
-{-# INLINE _VkCreatePipelineCache #-}
-
-_VkCreatePipelineCache :: CString
-_VkCreatePipelineCache = Ptr "vkCreatePipelineCache\NUL"##
-
-{-# INLINE is_VkCreatePipelineCache #-}
-
-is_VkCreatePipelineCache :: CString -> Bool
-is_VkCreatePipelineCache
-  = (EQ ==) . cmpCStrings _VkCreatePipelineCache
-
-type VkCreatePipelineCache = "vkCreatePipelineCache"
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkCreatePipelineCache
--- >     ( VkDevice device
--- >     , const VkPipelineCacheCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkPipelineCache* pPipelineCache
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreatePipelineCache vkCreatePipelineCache registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkCreatePipelineCache"
-               vkCreatePipelineCache ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkPipelineCacheCreateInfo -- ^ pCreateInfo
-                                               ->
-                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                             -> Ptr VkPipelineCache -- ^ pPipelineCache
-                                                                    -> IO VkResult
-
-##else
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkCreatePipelineCache
--- >     ( VkDevice device
--- >     , const VkPipelineCacheCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkPipelineCache* pPipelineCache
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreatePipelineCache vkCreatePipelineCache registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCreatePipelineCacheSafe@ and @vkCreatePipelineCache@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreatePipelineCache <- vkGetDeviceProc @VkCreatePipelineCache vkDevice
---
--- or less efficient:
---
--- > myCreatePipelineCache <- vkGetProc @VkCreatePipelineCache
---
-vkCreatePipelineCache ::
-                      VkDevice -- ^ device
-                               ->
-                        Ptr VkPipelineCacheCreateInfo -- ^ pCreateInfo
-                                                      ->
-                          Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                    -> Ptr VkPipelineCache -- ^ pPipelineCache
-                                                                           -> IO VkResult
-vkCreatePipelineCache
-  = unsafeDupablePerformIO (vkGetProc @VkCreatePipelineCache)
-
-{-# NOINLINE vkCreatePipelineCache #-}
-##endif
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkCreatePipelineCache
--- >     ( VkDevice device
--- >     , const VkPipelineCacheCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkPipelineCache* pPipelineCache
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreatePipelineCache vkCreatePipelineCache registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkCreatePipelineCache"
-               vkCreatePipelineCacheSafe ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkPipelineCacheCreateInfo -- ^ pCreateInfo
-                                               ->
-                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                             -> Ptr VkPipelineCache -- ^ pPipelineCache
-                                                                    -> IO VkResult
-
-##else
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkCreatePipelineCache
--- >     ( VkDevice device
--- >     , const VkPipelineCacheCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkPipelineCache* pPipelineCache
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreatePipelineCache vkCreatePipelineCache registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCreatePipelineCacheSafe@ and @vkCreatePipelineCache@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreatePipelineCache <- vkGetDeviceProc @VkCreatePipelineCache vkDevice
---
--- or less efficient:
---
--- > myCreatePipelineCache <- vkGetProc @VkCreatePipelineCache
---
-vkCreatePipelineCacheSafe ::
-                          VkDevice -- ^ device
-                                   ->
-                            Ptr VkPipelineCacheCreateInfo -- ^ pCreateInfo
-                                                          ->
-                              Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                        -> Ptr VkPipelineCache -- ^ pPipelineCache
-                                                                               -> IO VkResult
-vkCreatePipelineCacheSafe = vkCreatePipelineCache
-
-{-# INLINE vkCreatePipelineCacheSafe #-}
-##endif
-
--- | Success codes: 'VK_SUCCESS'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
---   > VkResult vkCreatePipelineCache
---   >     ( VkDevice device
---   >     , const VkPipelineCacheCreateInfo* pCreateInfo
---   >     , const VkAllocationCallbacks* pAllocator
---   >     , VkPipelineCache* pPipelineCache
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreatePipelineCache vkCreatePipelineCache registry at www.khronos.org>
-type HS_vkCreatePipelineCache =
-     VkDevice -- ^ device
-              ->
-       Ptr VkPipelineCacheCreateInfo -- ^ pCreateInfo
-                                     ->
-         Ptr VkAllocationCallbacks -- ^ pAllocator
-                                   -> Ptr VkPipelineCache -- ^ pPipelineCache
-                                                          -> IO VkResult
-
-type PFN_vkCreatePipelineCache = FunPtr HS_vkCreatePipelineCache
-
-foreign import ccall "dynamic" unwrapVkCreatePipelineCache ::
-               PFN_vkCreatePipelineCache -> HS_vkCreatePipelineCache
-
-instance VulkanProc "vkCreatePipelineCache" where
-        type VkProcType "vkCreatePipelineCache" = HS_vkCreatePipelineCache
-        vkProcSymbol = _VkCreatePipelineCache
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCreatePipelineCache
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VkDestroyPipelineCache :: CString
-
-pattern VkDestroyPipelineCache <-
-        (is_VkDestroyPipelineCache -> True)
-  where VkDestroyPipelineCache = _VkDestroyPipelineCache
-
-{-# INLINE _VkDestroyPipelineCache #-}
-
-_VkDestroyPipelineCache :: CString
-_VkDestroyPipelineCache = Ptr "vkDestroyPipelineCache\NUL"##
-
-{-# INLINE is_VkDestroyPipelineCache #-}
-
-is_VkDestroyPipelineCache :: CString -> Bool
-is_VkDestroyPipelineCache
-  = (EQ ==) . cmpCStrings _VkDestroyPipelineCache
-
-type VkDestroyPipelineCache = "vkDestroyPipelineCache"
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- > void vkDestroyPipelineCache
--- >     ( VkDevice device
--- >     , VkPipelineCache pipelineCache
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyPipelineCache vkDestroyPipelineCache registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkDestroyPipelineCache"
-               vkDestroyPipelineCache ::
-               VkDevice -- ^ device
-                        -> VkPipelineCache -- ^ pipelineCache
-                                           -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                        -> IO ()
-
-##else
--- |
--- > void vkDestroyPipelineCache
--- >     ( VkDevice device
--- >     , VkPipelineCache pipelineCache
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyPipelineCache vkDestroyPipelineCache registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkDestroyPipelineCacheSafe@ and @vkDestroyPipelineCache@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDestroyPipelineCache <- vkGetDeviceProc @VkDestroyPipelineCache vkDevice
---
--- or less efficient:
---
--- > myDestroyPipelineCache <- vkGetProc @VkDestroyPipelineCache
---
-vkDestroyPipelineCache ::
-                       VkDevice -- ^ device
-                                -> VkPipelineCache -- ^ pipelineCache
-                                                   -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                                -> IO ()
-vkDestroyPipelineCache
-  = unsafeDupablePerformIO (vkGetProc @VkDestroyPipelineCache)
-
-{-# NOINLINE vkDestroyPipelineCache #-}
-##endif
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- > void vkDestroyPipelineCache
--- >     ( VkDevice device
--- >     , VkPipelineCache pipelineCache
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyPipelineCache vkDestroyPipelineCache registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkDestroyPipelineCache"
-               vkDestroyPipelineCacheSafe ::
-               VkDevice -- ^ device
-                        -> VkPipelineCache -- ^ pipelineCache
-                                           -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                        -> IO ()
-
-##else
--- |
--- > void vkDestroyPipelineCache
--- >     ( VkDevice device
--- >     , VkPipelineCache pipelineCache
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyPipelineCache vkDestroyPipelineCache registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkDestroyPipelineCacheSafe@ and @vkDestroyPipelineCache@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDestroyPipelineCache <- vkGetDeviceProc @VkDestroyPipelineCache vkDevice
---
--- or less efficient:
---
--- > myDestroyPipelineCache <- vkGetProc @VkDestroyPipelineCache
---
-vkDestroyPipelineCacheSafe ::
-                           VkDevice -- ^ device
-                                    -> VkPipelineCache -- ^ pipelineCache
-                                                       -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                                    -> IO ()
-vkDestroyPipelineCacheSafe = vkDestroyPipelineCache
-
-{-# INLINE vkDestroyPipelineCacheSafe #-}
-##endif
-
--- | > void vkDestroyPipelineCache
---   >     ( VkDevice device
---   >     , VkPipelineCache pipelineCache
---   >     , const VkAllocationCallbacks* pAllocator
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyPipelineCache vkDestroyPipelineCache registry at www.khronos.org>
-type HS_vkDestroyPipelineCache =
-     VkDevice -- ^ device
-              -> VkPipelineCache -- ^ pipelineCache
-                                 -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                              -> IO ()
-
-type PFN_vkDestroyPipelineCache = FunPtr HS_vkDestroyPipelineCache
-
-foreign import ccall "dynamic" unwrapVkDestroyPipelineCache ::
-               PFN_vkDestroyPipelineCache -> HS_vkDestroyPipelineCache
-
-instance VulkanProc "vkDestroyPipelineCache" where
-        type VkProcType "vkDestroyPipelineCache" =
-             HS_vkDestroyPipelineCache
-        vkProcSymbol = _VkDestroyPipelineCache
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkDestroyPipelineCache
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VkGetPipelineCacheData :: CString
-
-pattern VkGetPipelineCacheData <-
-        (is_VkGetPipelineCacheData -> True)
-  where VkGetPipelineCacheData = _VkGetPipelineCacheData
-
-{-# INLINE _VkGetPipelineCacheData #-}
-
-_VkGetPipelineCacheData :: CString
-_VkGetPipelineCacheData = Ptr "vkGetPipelineCacheData\NUL"##
-
-{-# INLINE is_VkGetPipelineCacheData #-}
-
-is_VkGetPipelineCacheData :: CString -> Bool
-is_VkGetPipelineCacheData
-  = (EQ ==) . cmpCStrings _VkGetPipelineCacheData
-
-type VkGetPipelineCacheData = "vkGetPipelineCacheData"
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkGetPipelineCacheData
--- >     ( VkDevice device
--- >     , VkPipelineCache pipelineCache
--- >     , size_t* pDataSize
--- >     , void* pData
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPipelineCacheData vkGetPipelineCacheData registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkGetPipelineCacheData"
-               vkGetPipelineCacheData ::
-               VkDevice -- ^ device
-                        -> VkPipelineCache -- ^ pipelineCache
-                                           -> Ptr CSize -- ^ pDataSize
-                                                        -> Ptr Void -- ^ pData
-                                                                    -> IO VkResult
-
-##else
--- |
--- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkGetPipelineCacheData
--- >     ( VkDevice device
--- >     , VkPipelineCache pipelineCache
--- >     , size_t* pDataSize
--- >     , void* pData
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPipelineCacheData vkGetPipelineCacheData registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkGetPipelineCacheDataSafe@ and @vkGetPipelineCacheData@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetPipelineCacheData <- vkGetDeviceProc @VkGetPipelineCacheData vkDevice
---
--- or less efficient:
---
--- > myGetPipelineCacheData <- vkGetProc @VkGetPipelineCacheData
---
-vkGetPipelineCacheData ::
-                       VkDevice -- ^ device
-                                -> VkPipelineCache -- ^ pipelineCache
-                                                   -> Ptr CSize -- ^ pDataSize
-                                                                -> Ptr Void -- ^ pData
-                                                                            -> IO VkResult
-vkGetPipelineCacheData
-  = unsafeDupablePerformIO (vkGetProc @VkGetPipelineCacheData)
-
-{-# NOINLINE vkGetPipelineCacheData #-}
-##endif
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkGetPipelineCacheData
--- >     ( VkDevice device
--- >     , VkPipelineCache pipelineCache
--- >     , size_t* pDataSize
--- >     , void* pData
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPipelineCacheData vkGetPipelineCacheData registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkGetPipelineCacheData"
-               vkGetPipelineCacheDataSafe ::
-               VkDevice -- ^ device
-                        -> VkPipelineCache -- ^ pipelineCache
-                                           -> Ptr CSize -- ^ pDataSize
-                                                        -> Ptr Void -- ^ pData
-                                                                    -> IO VkResult
-
-##else
--- |
--- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkGetPipelineCacheData
--- >     ( VkDevice device
--- >     , VkPipelineCache pipelineCache
--- >     , size_t* pDataSize
--- >     , void* pData
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPipelineCacheData vkGetPipelineCacheData registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkGetPipelineCacheDataSafe@ and @vkGetPipelineCacheData@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetPipelineCacheData <- vkGetDeviceProc @VkGetPipelineCacheData vkDevice
---
--- or less efficient:
---
--- > myGetPipelineCacheData <- vkGetProc @VkGetPipelineCacheData
---
-vkGetPipelineCacheDataSafe ::
-                           VkDevice -- ^ device
-                                    -> VkPipelineCache -- ^ pipelineCache
-                                                       -> Ptr CSize -- ^ pDataSize
-                                                                    -> Ptr Void -- ^ pData
-                                                                                -> IO VkResult
-vkGetPipelineCacheDataSafe = vkGetPipelineCacheData
-
-{-# INLINE vkGetPipelineCacheDataSafe #-}
-##endif
-
--- | Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
---   > VkResult vkGetPipelineCacheData
---   >     ( VkDevice device
---   >     , VkPipelineCache pipelineCache
---   >     , size_t* pDataSize
---   >     , void* pData
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPipelineCacheData vkGetPipelineCacheData registry at www.khronos.org>
-type HS_vkGetPipelineCacheData =
-     VkDevice -- ^ device
-              -> VkPipelineCache -- ^ pipelineCache
-                                 -> Ptr CSize -- ^ pDataSize
-                                              -> Ptr Void -- ^ pData
-                                                          -> IO VkResult
-
-type PFN_vkGetPipelineCacheData = FunPtr HS_vkGetPipelineCacheData
-
-foreign import ccall "dynamic" unwrapVkGetPipelineCacheData ::
-               PFN_vkGetPipelineCacheData -> HS_vkGetPipelineCacheData
-
-instance VulkanProc "vkGetPipelineCacheData" where
-        type VkProcType "vkGetPipelineCacheData" =
-             HS_vkGetPipelineCacheData
-        vkProcSymbol = _VkGetPipelineCacheData
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkGetPipelineCacheData
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VkMergePipelineCaches :: CString
-
-pattern VkMergePipelineCaches <- (is_VkMergePipelineCaches -> True)
-  where VkMergePipelineCaches = _VkMergePipelineCaches
-
-{-# INLINE _VkMergePipelineCaches #-}
-
-_VkMergePipelineCaches :: CString
-_VkMergePipelineCaches = Ptr "vkMergePipelineCaches\NUL"##
-
-{-# INLINE is_VkMergePipelineCaches #-}
-
-is_VkMergePipelineCaches :: CString -> Bool
-is_VkMergePipelineCaches
-  = (EQ ==) . cmpCStrings _VkMergePipelineCaches
-
-type VkMergePipelineCaches = "vkMergePipelineCaches"
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkMergePipelineCaches
--- >     ( VkDevice device
--- >     , VkPipelineCache dstCache
--- >     , uint32_t srcCacheCount
--- >     , const VkPipelineCache* pSrcCaches
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkMergePipelineCaches vkMergePipelineCaches registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkMergePipelineCaches"
-               vkMergePipelineCaches ::
-               VkDevice -- ^ device
-                        ->
-                 VkPipelineCache -- ^ dstCache
-                                 -> Word32 -- ^ srcCacheCount
-                                           -> Ptr VkPipelineCache -- ^ pSrcCaches
-                                                                  -> IO VkResult
-
-##else
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkMergePipelineCaches
--- >     ( VkDevice device
--- >     , VkPipelineCache dstCache
--- >     , uint32_t srcCacheCount
--- >     , const VkPipelineCache* pSrcCaches
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkMergePipelineCaches vkMergePipelineCaches registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkMergePipelineCachesSafe@ and @vkMergePipelineCaches@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myMergePipelineCaches <- vkGetDeviceProc @VkMergePipelineCaches vkDevice
---
--- or less efficient:
---
--- > myMergePipelineCaches <- vkGetProc @VkMergePipelineCaches
---
-vkMergePipelineCaches ::
-                      VkDevice -- ^ device
-                               ->
-                        VkPipelineCache -- ^ dstCache
-                                        -> Word32 -- ^ srcCacheCount
-                                                  -> Ptr VkPipelineCache -- ^ pSrcCaches
-                                                                         -> IO VkResult
-vkMergePipelineCaches
-  = unsafeDupablePerformIO (vkGetProc @VkMergePipelineCaches)
-
-{-# NOINLINE vkMergePipelineCaches #-}
-##endif
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkMergePipelineCaches
--- >     ( VkDevice device
--- >     , VkPipelineCache dstCache
--- >     , uint32_t srcCacheCount
--- >     , const VkPipelineCache* pSrcCaches
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkMergePipelineCaches vkMergePipelineCaches registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkMergePipelineCaches"
-               vkMergePipelineCachesSafe ::
-               VkDevice -- ^ device
-                        ->
-                 VkPipelineCache -- ^ dstCache
-                                 -> Word32 -- ^ srcCacheCount
-                                           -> Ptr VkPipelineCache -- ^ pSrcCaches
-                                                                  -> IO VkResult
-
-##else
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkMergePipelineCaches
--- >     ( VkDevice device
--- >     , VkPipelineCache dstCache
--- >     , uint32_t srcCacheCount
--- >     , const VkPipelineCache* pSrcCaches
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkMergePipelineCaches vkMergePipelineCaches registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkMergePipelineCachesSafe@ and @vkMergePipelineCaches@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myMergePipelineCaches <- vkGetDeviceProc @VkMergePipelineCaches vkDevice
---
--- or less efficient:
---
--- > myMergePipelineCaches <- vkGetProc @VkMergePipelineCaches
---
-vkMergePipelineCachesSafe ::
-                          VkDevice -- ^ device
-                                   ->
-                            VkPipelineCache -- ^ dstCache
-                                            -> Word32 -- ^ srcCacheCount
-                                                      -> Ptr VkPipelineCache -- ^ pSrcCaches
-                                                                             -> IO VkResult
-vkMergePipelineCachesSafe = vkMergePipelineCaches
-
-{-# INLINE vkMergePipelineCachesSafe #-}
-##endif
-
--- | Success codes: 'VK_SUCCESS'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
---   > VkResult vkMergePipelineCaches
---   >     ( VkDevice device
---   >     , VkPipelineCache dstCache
---   >     , uint32_t srcCacheCount
---   >     , const VkPipelineCache* pSrcCaches
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkMergePipelineCaches vkMergePipelineCaches registry at www.khronos.org>
-type HS_vkMergePipelineCaches =
-     VkDevice -- ^ device
-              ->
-       VkPipelineCache -- ^ dstCache
-                       -> Word32 -- ^ srcCacheCount
-                                 -> Ptr VkPipelineCache -- ^ pSrcCaches
-                                                        -> IO VkResult
-
-type PFN_vkMergePipelineCaches = FunPtr HS_vkMergePipelineCaches
-
-foreign import ccall "dynamic" unwrapVkMergePipelineCaches ::
-               PFN_vkMergePipelineCaches -> HS_vkMergePipelineCaches
-
-instance VulkanProc "vkMergePipelineCaches" where
-        type VkProcType "vkMergePipelineCaches" = HS_vkMergePipelineCaches
-        vkProcSymbol = _VkMergePipelineCaches
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkMergePipelineCaches
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VkCreateGraphicsPipelines :: CString
-
-pattern VkCreateGraphicsPipelines <-
-        (is_VkCreateGraphicsPipelines -> True)
-  where VkCreateGraphicsPipelines = _VkCreateGraphicsPipelines
-
-{-# INLINE _VkCreateGraphicsPipelines #-}
-
-_VkCreateGraphicsPipelines :: CString
-_VkCreateGraphicsPipelines = Ptr "vkCreateGraphicsPipelines\NUL"##
-
-{-# INLINE is_VkCreateGraphicsPipelines #-}
-
-is_VkCreateGraphicsPipelines :: CString -> Bool
-is_VkCreateGraphicsPipelines
-  = (EQ ==) . cmpCStrings _VkCreateGraphicsPipelines
-
-type VkCreateGraphicsPipelines = "vkCreateGraphicsPipelines"
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INVALID_SHADER_NV'.
---
--- > VkResult vkCreateGraphicsPipelines
--- >     ( VkDevice device
--- >     , VkPipelineCache pipelineCache
--- >     , uint32_t createInfoCount
--- >     , const VkGraphicsPipelineCreateInfo* pCreateInfos
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkPipeline* pPipelines
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateGraphicsPipelines vkCreateGraphicsPipelines registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkCreateGraphicsPipelines"
-               vkCreateGraphicsPipelines ::
-               VkDevice -- ^ device
-                        ->
-                 VkPipelineCache -- ^ pipelineCache
-                                 ->
-                   Word32 -- ^ createInfoCount
-                          ->
-                     Ptr VkGraphicsPipelineCreateInfo -- ^ pCreateInfos
-                                                      ->
-                       Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                 -> Ptr VkPipeline -- ^ pPipelines
-                                                                   -> IO VkResult
-
-##else
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INVALID_SHADER_NV'.
---
--- > VkResult vkCreateGraphicsPipelines
--- >     ( VkDevice device
--- >     , VkPipelineCache pipelineCache
--- >     , uint32_t createInfoCount
--- >     , const VkGraphicsPipelineCreateInfo* pCreateInfos
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkPipeline* pPipelines
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateGraphicsPipelines vkCreateGraphicsPipelines registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCreateGraphicsPipelinesSafe@ and @vkCreateGraphicsPipelines@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateGraphicsPipelines <- vkGetDeviceProc @VkCreateGraphicsPipelines vkDevice
---
--- or less efficient:
---
--- > myCreateGraphicsPipelines <- vkGetProc @VkCreateGraphicsPipelines
---
-vkCreateGraphicsPipelines ::
-                          VkDevice -- ^ device
-                                   ->
-                            VkPipelineCache -- ^ pipelineCache
-                                            ->
-                              Word32 -- ^ createInfoCount
-                                     ->
-                                Ptr VkGraphicsPipelineCreateInfo -- ^ pCreateInfos
-                                                                 ->
-                                  Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                            -> Ptr VkPipeline -- ^ pPipelines
-                                                                              -> IO VkResult
-vkCreateGraphicsPipelines
-  = unsafeDupablePerformIO (vkGetProc @VkCreateGraphicsPipelines)
-
-{-# NOINLINE vkCreateGraphicsPipelines #-}
-##endif
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INVALID_SHADER_NV'.
---
--- > VkResult vkCreateGraphicsPipelines
--- >     ( VkDevice device
--- >     , VkPipelineCache pipelineCache
--- >     , uint32_t createInfoCount
--- >     , const VkGraphicsPipelineCreateInfo* pCreateInfos
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkPipeline* pPipelines
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateGraphicsPipelines vkCreateGraphicsPipelines registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkCreateGraphicsPipelines"
-               vkCreateGraphicsPipelinesSafe ::
-               VkDevice -- ^ device
-                        ->
-                 VkPipelineCache -- ^ pipelineCache
-                                 ->
-                   Word32 -- ^ createInfoCount
-                          ->
-                     Ptr VkGraphicsPipelineCreateInfo -- ^ pCreateInfos
-                                                      ->
-                       Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                 -> Ptr VkPipeline -- ^ pPipelines
-                                                                   -> IO VkResult
-
-##else
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INVALID_SHADER_NV'.
---
--- > VkResult vkCreateGraphicsPipelines
--- >     ( VkDevice device
--- >     , VkPipelineCache pipelineCache
--- >     , uint32_t createInfoCount
--- >     , const VkGraphicsPipelineCreateInfo* pCreateInfos
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkPipeline* pPipelines
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateGraphicsPipelines vkCreateGraphicsPipelines registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCreateGraphicsPipelinesSafe@ and @vkCreateGraphicsPipelines@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateGraphicsPipelines <- vkGetDeviceProc @VkCreateGraphicsPipelines vkDevice
---
--- or less efficient:
---
--- > myCreateGraphicsPipelines <- vkGetProc @VkCreateGraphicsPipelines
---
-vkCreateGraphicsPipelinesSafe ::
-                              VkDevice -- ^ device
-                                       ->
-                                VkPipelineCache -- ^ pipelineCache
-                                                ->
-                                  Word32 -- ^ createInfoCount
-                                         ->
-                                    Ptr VkGraphicsPipelineCreateInfo -- ^ pCreateInfos
-                                                                     ->
-                                      Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                -> Ptr VkPipeline -- ^ pPipelines
-                                                                                  -> IO VkResult
-vkCreateGraphicsPipelinesSafe = vkCreateGraphicsPipelines
-
-{-# INLINE vkCreateGraphicsPipelinesSafe #-}
-##endif
-
--- | Success codes: 'VK_SUCCESS'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INVALID_SHADER_NV'.
---
---   > VkResult vkCreateGraphicsPipelines
---   >     ( VkDevice device
---   >     , VkPipelineCache pipelineCache
---   >     , uint32_t createInfoCount
---   >     , const VkGraphicsPipelineCreateInfo* pCreateInfos
---   >     , const VkAllocationCallbacks* pAllocator
---   >     , VkPipeline* pPipelines
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateGraphicsPipelines vkCreateGraphicsPipelines registry at www.khronos.org>
-type HS_vkCreateGraphicsPipelines =
-     VkDevice -- ^ device
-              ->
-       VkPipelineCache -- ^ pipelineCache
-                       ->
-         Word32 -- ^ createInfoCount
-                ->
-           Ptr VkGraphicsPipelineCreateInfo -- ^ pCreateInfos
-                                            ->
-             Ptr VkAllocationCallbacks -- ^ pAllocator
-                                       -> Ptr VkPipeline -- ^ pPipelines
-                                                         -> IO VkResult
-
-type PFN_vkCreateGraphicsPipelines =
-     FunPtr HS_vkCreateGraphicsPipelines
-
-foreign import ccall "dynamic" unwrapVkCreateGraphicsPipelines ::
-               PFN_vkCreateGraphicsPipelines -> HS_vkCreateGraphicsPipelines
-
-instance VulkanProc "vkCreateGraphicsPipelines" where
-        type VkProcType "vkCreateGraphicsPipelines" =
-             HS_vkCreateGraphicsPipelines
-        vkProcSymbol = _VkCreateGraphicsPipelines
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCreateGraphicsPipelines
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VkCreateComputePipelines :: CString
-
-pattern VkCreateComputePipelines <-
-        (is_VkCreateComputePipelines -> True)
-  where VkCreateComputePipelines = _VkCreateComputePipelines
-
-{-# INLINE _VkCreateComputePipelines #-}
-
-_VkCreateComputePipelines :: CString
-_VkCreateComputePipelines = Ptr "vkCreateComputePipelines\NUL"##
-
-{-# INLINE is_VkCreateComputePipelines #-}
-
-is_VkCreateComputePipelines :: CString -> Bool
-is_VkCreateComputePipelines
-  = (EQ ==) . cmpCStrings _VkCreateComputePipelines
-
-type VkCreateComputePipelines = "vkCreateComputePipelines"
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INVALID_SHADER_NV'.
---
--- > VkResult vkCreateComputePipelines
--- >     ( VkDevice device
--- >     , VkPipelineCache pipelineCache
--- >     , uint32_t createInfoCount
--- >     , const VkComputePipelineCreateInfo* pCreateInfos
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkPipeline* pPipelines
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateComputePipelines vkCreateComputePipelines registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkCreateComputePipelines"
-               vkCreateComputePipelines ::
-               VkDevice -- ^ device
-                        ->
-                 VkPipelineCache -- ^ pipelineCache
-                                 ->
-                   Word32 -- ^ createInfoCount
-                          ->
-                     Ptr VkComputePipelineCreateInfo -- ^ pCreateInfos
-                                                     ->
-                       Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                 -> Ptr VkPipeline -- ^ pPipelines
-                                                                   -> IO VkResult
-
-##else
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INVALID_SHADER_NV'.
---
--- > VkResult vkCreateComputePipelines
--- >     ( VkDevice device
--- >     , VkPipelineCache pipelineCache
--- >     , uint32_t createInfoCount
--- >     , const VkComputePipelineCreateInfo* pCreateInfos
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkPipeline* pPipelines
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateComputePipelines vkCreateComputePipelines registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCreateComputePipelinesSafe@ and @vkCreateComputePipelines@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateComputePipelines <- vkGetDeviceProc @VkCreateComputePipelines vkDevice
---
--- or less efficient:
---
--- > myCreateComputePipelines <- vkGetProc @VkCreateComputePipelines
---
-vkCreateComputePipelines ::
-                         VkDevice -- ^ device
-                                  ->
-                           VkPipelineCache -- ^ pipelineCache
-                                           ->
-                             Word32 -- ^ createInfoCount
-                                    ->
-                               Ptr VkComputePipelineCreateInfo -- ^ pCreateInfos
-                                                               ->
-                                 Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                           -> Ptr VkPipeline -- ^ pPipelines
-                                                                             -> IO VkResult
-vkCreateComputePipelines
-  = unsafeDupablePerformIO (vkGetProc @VkCreateComputePipelines)
-
-{-# NOINLINE vkCreateComputePipelines #-}
-##endif
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INVALID_SHADER_NV'.
---
--- > VkResult vkCreateComputePipelines
--- >     ( VkDevice device
--- >     , VkPipelineCache pipelineCache
--- >     , uint32_t createInfoCount
--- >     , const VkComputePipelineCreateInfo* pCreateInfos
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkPipeline* pPipelines
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateComputePipelines vkCreateComputePipelines registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkCreateComputePipelines"
-               vkCreateComputePipelinesSafe ::
-               VkDevice -- ^ device
-                        ->
-                 VkPipelineCache -- ^ pipelineCache
-                                 ->
-                   Word32 -- ^ createInfoCount
-                          ->
-                     Ptr VkComputePipelineCreateInfo -- ^ pCreateInfos
-                                                     ->
-                       Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                 -> Ptr VkPipeline -- ^ pPipelines
-                                                                   -> IO VkResult
-
-##else
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INVALID_SHADER_NV'.
---
--- > VkResult vkCreateComputePipelines
--- >     ( VkDevice device
--- >     , VkPipelineCache pipelineCache
--- >     , uint32_t createInfoCount
--- >     , const VkComputePipelineCreateInfo* pCreateInfos
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkPipeline* pPipelines
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateComputePipelines vkCreateComputePipelines registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCreateComputePipelinesSafe@ and @vkCreateComputePipelines@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateComputePipelines <- vkGetDeviceProc @VkCreateComputePipelines vkDevice
---
--- or less efficient:
---
--- > myCreateComputePipelines <- vkGetProc @VkCreateComputePipelines
---
-vkCreateComputePipelinesSafe ::
-                             VkDevice -- ^ device
-                                      ->
-                               VkPipelineCache -- ^ pipelineCache
-                                               ->
-                                 Word32 -- ^ createInfoCount
-                                        ->
-                                   Ptr VkComputePipelineCreateInfo -- ^ pCreateInfos
-                                                                   ->
-                                     Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                               -> Ptr VkPipeline -- ^ pPipelines
-                                                                                 -> IO VkResult
-vkCreateComputePipelinesSafe = vkCreateComputePipelines
-
-{-# INLINE vkCreateComputePipelinesSafe #-}
-##endif
-
--- | Success codes: 'VK_SUCCESS'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INVALID_SHADER_NV'.
---
---   > VkResult vkCreateComputePipelines
---   >     ( VkDevice device
---   >     , VkPipelineCache pipelineCache
---   >     , uint32_t createInfoCount
---   >     , const VkComputePipelineCreateInfo* pCreateInfos
---   >     , const VkAllocationCallbacks* pAllocator
---   >     , VkPipeline* pPipelines
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateComputePipelines vkCreateComputePipelines registry at www.khronos.org>
-type HS_vkCreateComputePipelines =
-     VkDevice -- ^ device
-              ->
-       VkPipelineCache -- ^ pipelineCache
-                       ->
-         Word32 -- ^ createInfoCount
-                ->
-           Ptr VkComputePipelineCreateInfo -- ^ pCreateInfos
-                                           ->
-             Ptr VkAllocationCallbacks -- ^ pAllocator
-                                       -> Ptr VkPipeline -- ^ pPipelines
-                                                         -> IO VkResult
-
-type PFN_vkCreateComputePipelines =
-     FunPtr HS_vkCreateComputePipelines
-
-foreign import ccall "dynamic" unwrapVkCreateComputePipelines ::
-               PFN_vkCreateComputePipelines -> HS_vkCreateComputePipelines
-
-instance VulkanProc "vkCreateComputePipelines" where
-        type VkProcType "vkCreateComputePipelines" =
-             HS_vkCreateComputePipelines
-        vkProcSymbol = _VkCreateComputePipelines
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCreateComputePipelines
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VkDestroyPipeline :: CString
-
-pattern VkDestroyPipeline <- (is_VkDestroyPipeline -> True)
-  where VkDestroyPipeline = _VkDestroyPipeline
-
-{-# INLINE _VkDestroyPipeline #-}
-
-_VkDestroyPipeline :: CString
-_VkDestroyPipeline = Ptr "vkDestroyPipeline\NUL"##
-
-{-# INLINE is_VkDestroyPipeline #-}
-
-is_VkDestroyPipeline :: CString -> Bool
-is_VkDestroyPipeline = (EQ ==) . cmpCStrings _VkDestroyPipeline
-
-type VkDestroyPipeline = "vkDestroyPipeline"
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- > void vkDestroyPipeline
--- >     ( VkDevice device
--- >     , VkPipeline pipeline
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyPipeline vkDestroyPipeline registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkDestroyPipeline" vkDestroyPipeline
-               :: VkDevice -- ^ device
-                           -> VkPipeline -- ^ pipeline
-                                         -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                      -> IO ()
-
-##else
--- |
--- > void vkDestroyPipeline
--- >     ( VkDevice device
--- >     , VkPipeline pipeline
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyPipeline vkDestroyPipeline registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkDestroyPipelineSafe@ and @vkDestroyPipeline@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDestroyPipeline <- vkGetDeviceProc @VkDestroyPipeline vkDevice
---
--- or less efficient:
---
--- > myDestroyPipeline <- vkGetProc @VkDestroyPipeline
---
-vkDestroyPipeline ::
-                  VkDevice -- ^ device
-                           -> VkPipeline -- ^ pipeline
-                                         -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                      -> IO ()
-vkDestroyPipeline
-  = unsafeDupablePerformIO (vkGetProc @VkDestroyPipeline)
-
-{-# NOINLINE vkDestroyPipeline #-}
-##endif
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- > void vkDestroyPipeline
--- >     ( VkDevice device
--- >     , VkPipeline pipeline
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyPipeline vkDestroyPipeline registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkDestroyPipeline" vkDestroyPipelineSafe
-               :: VkDevice -- ^ device
-                           -> VkPipeline -- ^ pipeline
-                                         -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                      -> IO ()
-
-##else
--- |
--- > void vkDestroyPipeline
--- >     ( VkDevice device
--- >     , VkPipeline pipeline
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyPipeline vkDestroyPipeline registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkDestroyPipelineSafe@ and @vkDestroyPipeline@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDestroyPipeline <- vkGetDeviceProc @VkDestroyPipeline vkDevice
---
--- or less efficient:
---
--- > myDestroyPipeline <- vkGetProc @VkDestroyPipeline
---
-vkDestroyPipelineSafe ::
-                      VkDevice -- ^ device
-                               -> VkPipeline -- ^ pipeline
-                                             -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                          -> IO ()
-vkDestroyPipelineSafe = vkDestroyPipeline
-
-{-# INLINE vkDestroyPipelineSafe #-}
-##endif
-
--- | > void vkDestroyPipeline
---   >     ( VkDevice device
---   >     , VkPipeline pipeline
---   >     , const VkAllocationCallbacks* pAllocator
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyPipeline vkDestroyPipeline registry at www.khronos.org>
-type HS_vkDestroyPipeline =
-     VkDevice -- ^ device
-              -> VkPipeline -- ^ pipeline
-                            -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                         -> IO ()
-
-type PFN_vkDestroyPipeline = FunPtr HS_vkDestroyPipeline
-
-foreign import ccall "dynamic" unwrapVkDestroyPipeline ::
-               PFN_vkDestroyPipeline -> HS_vkDestroyPipeline
-
-instance VulkanProc "vkDestroyPipeline" where
-        type VkProcType "vkDestroyPipeline" = HS_vkDestroyPipeline
-        vkProcSymbol = _VkDestroyPipeline
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkDestroyPipeline
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VkCreatePipelineLayout :: CString
-
-pattern VkCreatePipelineLayout <-
-        (is_VkCreatePipelineLayout -> True)
-  where VkCreatePipelineLayout = _VkCreatePipelineLayout
-
-{-# INLINE _VkCreatePipelineLayout #-}
-
-_VkCreatePipelineLayout :: CString
-_VkCreatePipelineLayout = Ptr "vkCreatePipelineLayout\NUL"##
-
-{-# INLINE is_VkCreatePipelineLayout #-}
-
-is_VkCreatePipelineLayout :: CString -> Bool
-is_VkCreatePipelineLayout
-  = (EQ ==) . cmpCStrings _VkCreatePipelineLayout
-
-type VkCreatePipelineLayout = "vkCreatePipelineLayout"
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkCreatePipelineLayout
--- >     ( VkDevice device
--- >     , const VkPipelineLayoutCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkPipelineLayout* pPipelineLayout
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreatePipelineLayout vkCreatePipelineLayout registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkCreatePipelineLayout"
-               vkCreatePipelineLayout ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkPipelineLayoutCreateInfo -- ^ pCreateInfo
-                                                ->
-                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                             -> Ptr VkPipelineLayout -- ^ pPipelineLayout
-                                                                     -> IO VkResult
-
-##else
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkCreatePipelineLayout
--- >     ( VkDevice device
--- >     , const VkPipelineLayoutCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkPipelineLayout* pPipelineLayout
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreatePipelineLayout vkCreatePipelineLayout registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCreatePipelineLayoutSafe@ and @vkCreatePipelineLayout@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreatePipelineLayout <- vkGetDeviceProc @VkCreatePipelineLayout vkDevice
---
--- or less efficient:
---
--- > myCreatePipelineLayout <- vkGetProc @VkCreatePipelineLayout
---
-vkCreatePipelineLayout ::
-                       VkDevice -- ^ device
-                                ->
-                         Ptr VkPipelineLayoutCreateInfo -- ^ pCreateInfo
-                                                        ->
-                           Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                     -> Ptr VkPipelineLayout -- ^ pPipelineLayout
-                                                                             -> IO VkResult
-vkCreatePipelineLayout
-  = unsafeDupablePerformIO (vkGetProc @VkCreatePipelineLayout)
-
-{-# NOINLINE vkCreatePipelineLayout #-}
-##endif
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkCreatePipelineLayout
--- >     ( VkDevice device
--- >     , const VkPipelineLayoutCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkPipelineLayout* pPipelineLayout
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreatePipelineLayout vkCreatePipelineLayout registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkCreatePipelineLayout"
-               vkCreatePipelineLayoutSafe ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkPipelineLayoutCreateInfo -- ^ pCreateInfo
-                                                ->
-                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                             -> Ptr VkPipelineLayout -- ^ pPipelineLayout
-                                                                     -> IO VkResult
-
-##else
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkCreatePipelineLayout
--- >     ( VkDevice device
--- >     , const VkPipelineLayoutCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkPipelineLayout* pPipelineLayout
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreatePipelineLayout vkCreatePipelineLayout registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCreatePipelineLayoutSafe@ and @vkCreatePipelineLayout@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreatePipelineLayout <- vkGetDeviceProc @VkCreatePipelineLayout vkDevice
---
--- or less efficient:
---
--- > myCreatePipelineLayout <- vkGetProc @VkCreatePipelineLayout
---
-vkCreatePipelineLayoutSafe ::
-                           VkDevice -- ^ device
-                                    ->
-                             Ptr VkPipelineLayoutCreateInfo -- ^ pCreateInfo
-                                                            ->
-                               Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                         -> Ptr VkPipelineLayout -- ^ pPipelineLayout
-                                                                                 -> IO VkResult
-vkCreatePipelineLayoutSafe = vkCreatePipelineLayout
-
-{-# INLINE vkCreatePipelineLayoutSafe #-}
-##endif
-
--- | Success codes: 'VK_SUCCESS'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
---   > VkResult vkCreatePipelineLayout
---   >     ( VkDevice device
---   >     , const VkPipelineLayoutCreateInfo* pCreateInfo
---   >     , const VkAllocationCallbacks* pAllocator
---   >     , VkPipelineLayout* pPipelineLayout
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreatePipelineLayout vkCreatePipelineLayout registry at www.khronos.org>
-type HS_vkCreatePipelineLayout =
-     VkDevice -- ^ device
-              ->
-       Ptr VkPipelineLayoutCreateInfo -- ^ pCreateInfo
-                                      ->
-         Ptr VkAllocationCallbacks -- ^ pAllocator
-                                   -> Ptr VkPipelineLayout -- ^ pPipelineLayout
-                                                           -> IO VkResult
-
-type PFN_vkCreatePipelineLayout = FunPtr HS_vkCreatePipelineLayout
-
-foreign import ccall "dynamic" unwrapVkCreatePipelineLayout ::
-               PFN_vkCreatePipelineLayout -> HS_vkCreatePipelineLayout
-
-instance VulkanProc "vkCreatePipelineLayout" where
-        type VkProcType "vkCreatePipelineLayout" =
-             HS_vkCreatePipelineLayout
-        vkProcSymbol = _VkCreatePipelineLayout
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCreatePipelineLayout
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VkDestroyPipelineLayout :: CString
-
-pattern VkDestroyPipelineLayout <-
-        (is_VkDestroyPipelineLayout -> True)
-  where VkDestroyPipelineLayout = _VkDestroyPipelineLayout
-
-{-# INLINE _VkDestroyPipelineLayout #-}
-
-_VkDestroyPipelineLayout :: CString
-_VkDestroyPipelineLayout = Ptr "vkDestroyPipelineLayout\NUL"##
-
-{-# INLINE is_VkDestroyPipelineLayout #-}
-
-is_VkDestroyPipelineLayout :: CString -> Bool
-is_VkDestroyPipelineLayout
-  = (EQ ==) . cmpCStrings _VkDestroyPipelineLayout
-
-type VkDestroyPipelineLayout = "vkDestroyPipelineLayout"
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- > void vkDestroyPipelineLayout
--- >     ( VkDevice device
--- >     , VkPipelineLayout pipelineLayout
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyPipelineLayout vkDestroyPipelineLayout registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkDestroyPipelineLayout"
-               vkDestroyPipelineLayout ::
-               VkDevice -- ^ device
-                        -> VkPipelineLayout -- ^ pipelineLayout
-                                            -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                         -> IO ()
-
-##else
--- |
--- > void vkDestroyPipelineLayout
--- >     ( VkDevice device
--- >     , VkPipelineLayout pipelineLayout
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyPipelineLayout vkDestroyPipelineLayout registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkDestroyPipelineLayoutSafe@ and @vkDestroyPipelineLayout@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDestroyPipelineLayout <- vkGetDeviceProc @VkDestroyPipelineLayout vkDevice
---
--- or less efficient:
---
--- > myDestroyPipelineLayout <- vkGetProc @VkDestroyPipelineLayout
---
-vkDestroyPipelineLayout ::
-                        VkDevice -- ^ device
-                                 -> VkPipelineLayout -- ^ pipelineLayout
-                                                     -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                                  -> IO ()
-vkDestroyPipelineLayout
-  = unsafeDupablePerformIO (vkGetProc @VkDestroyPipelineLayout)
-
-{-# NOINLINE vkDestroyPipelineLayout #-}
-##endif
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- > void vkDestroyPipelineLayout
--- >     ( VkDevice device
--- >     , VkPipelineLayout pipelineLayout
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyPipelineLayout vkDestroyPipelineLayout registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkDestroyPipelineLayout"
-               vkDestroyPipelineLayoutSafe ::
-               VkDevice -- ^ device
-                        -> VkPipelineLayout -- ^ pipelineLayout
-                                            -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                         -> IO ()
-
-##else
--- |
--- > void vkDestroyPipelineLayout
--- >     ( VkDevice device
--- >     , VkPipelineLayout pipelineLayout
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyPipelineLayout vkDestroyPipelineLayout registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkDestroyPipelineLayoutSafe@ and @vkDestroyPipelineLayout@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDestroyPipelineLayout <- vkGetDeviceProc @VkDestroyPipelineLayout vkDevice
---
--- or less efficient:
---
--- > myDestroyPipelineLayout <- vkGetProc @VkDestroyPipelineLayout
---
-vkDestroyPipelineLayoutSafe ::
-                            VkDevice -- ^ device
-                                     -> VkPipelineLayout -- ^ pipelineLayout
-                                                         -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                                      -> IO ()
-vkDestroyPipelineLayoutSafe = vkDestroyPipelineLayout
-
-{-# INLINE vkDestroyPipelineLayoutSafe #-}
-##endif
-
--- | > void vkDestroyPipelineLayout
---   >     ( VkDevice device
---   >     , VkPipelineLayout pipelineLayout
---   >     , const VkAllocationCallbacks* pAllocator
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyPipelineLayout vkDestroyPipelineLayout registry at www.khronos.org>
-type HS_vkDestroyPipelineLayout =
-     VkDevice -- ^ device
-              -> VkPipelineLayout -- ^ pipelineLayout
-                                  -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                               -> IO ()
-
-type PFN_vkDestroyPipelineLayout =
-     FunPtr HS_vkDestroyPipelineLayout
-
-foreign import ccall "dynamic" unwrapVkDestroyPipelineLayout ::
-               PFN_vkDestroyPipelineLayout -> HS_vkDestroyPipelineLayout
-
-instance VulkanProc "vkDestroyPipelineLayout" where
-        type VkProcType "vkDestroyPipelineLayout" =
-             HS_vkDestroyPipelineLayout
-        vkProcSymbol = _VkDestroyPipelineLayout
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkDestroyPipelineLayout
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VkCreateSampler :: CString
-
-pattern VkCreateSampler <- (is_VkCreateSampler -> True)
-  where VkCreateSampler = _VkCreateSampler
-
-{-# INLINE _VkCreateSampler #-}
-
-_VkCreateSampler :: CString
-_VkCreateSampler = Ptr "vkCreateSampler\NUL"##
-
-{-# INLINE is_VkCreateSampler #-}
-
-is_VkCreateSampler :: CString -> Bool
-is_VkCreateSampler = (EQ ==) . cmpCStrings _VkCreateSampler
-
-type VkCreateSampler = "vkCreateSampler"
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_TOO_MANY_OBJECTS'.
---
--- > VkResult vkCreateSampler
--- >     ( VkDevice device
--- >     , const VkSamplerCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkSampler* pSampler
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateSampler vkCreateSampler registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkCreateSampler" vkCreateSampler ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkSamplerCreateInfo -- ^ pCreateInfo
-                                         ->
-                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                             -> Ptr VkSampler -- ^ pSampler
-                                                              -> IO VkResult
-
-##else
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_TOO_MANY_OBJECTS'.
---
--- > VkResult vkCreateSampler
--- >     ( VkDevice device
--- >     , const VkSamplerCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkSampler* pSampler
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateSampler vkCreateSampler registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCreateSamplerSafe@ and @vkCreateSampler@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateSampler <- vkGetDeviceProc @VkCreateSampler vkDevice
---
--- or less efficient:
---
--- > myCreateSampler <- vkGetProc @VkCreateSampler
---
-vkCreateSampler ::
-                VkDevice -- ^ device
-                         ->
-                  Ptr VkSamplerCreateInfo -- ^ pCreateInfo
-                                          ->
-                    Ptr VkAllocationCallbacks -- ^ pAllocator
-                                              -> Ptr VkSampler -- ^ pSampler
-                                                               -> IO VkResult
-vkCreateSampler
-  = unsafeDupablePerformIO (vkGetProc @VkCreateSampler)
-
-{-# NOINLINE vkCreateSampler #-}
-##endif
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_TOO_MANY_OBJECTS'.
---
--- > VkResult vkCreateSampler
--- >     ( VkDevice device
--- >     , const VkSamplerCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkSampler* pSampler
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateSampler vkCreateSampler registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkCreateSampler" vkCreateSamplerSafe ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkSamplerCreateInfo -- ^ pCreateInfo
-                                         ->
-                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                             -> Ptr VkSampler -- ^ pSampler
-                                                              -> IO VkResult
-
-##else
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_TOO_MANY_OBJECTS'.
---
--- > VkResult vkCreateSampler
--- >     ( VkDevice device
--- >     , const VkSamplerCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkSampler* pSampler
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateSampler vkCreateSampler registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCreateSamplerSafe@ and @vkCreateSampler@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateSampler <- vkGetDeviceProc @VkCreateSampler vkDevice
---
--- or less efficient:
---
--- > myCreateSampler <- vkGetProc @VkCreateSampler
---
-vkCreateSamplerSafe ::
-                    VkDevice -- ^ device
-                             ->
-                      Ptr VkSamplerCreateInfo -- ^ pCreateInfo
-                                              ->
-                        Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                  -> Ptr VkSampler -- ^ pSampler
-                                                                   -> IO VkResult
-vkCreateSamplerSafe = vkCreateSampler
-
-{-# INLINE vkCreateSamplerSafe #-}
-##endif
-
--- | Success codes: 'VK_SUCCESS'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_TOO_MANY_OBJECTS'.
---
---   > VkResult vkCreateSampler
---   >     ( VkDevice device
---   >     , const VkSamplerCreateInfo* pCreateInfo
---   >     , const VkAllocationCallbacks* pAllocator
---   >     , VkSampler* pSampler
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateSampler vkCreateSampler registry at www.khronos.org>
-type HS_vkCreateSampler =
-     VkDevice -- ^ device
-              ->
-       Ptr VkSamplerCreateInfo -- ^ pCreateInfo
-                               ->
-         Ptr VkAllocationCallbacks -- ^ pAllocator
-                                   -> Ptr VkSampler -- ^ pSampler
-                                                    -> IO VkResult
-
-type PFN_vkCreateSampler = FunPtr HS_vkCreateSampler
-
-foreign import ccall "dynamic" unwrapVkCreateSampler ::
-               PFN_vkCreateSampler -> HS_vkCreateSampler
-
-instance VulkanProc "vkCreateSampler" where
-        type VkProcType "vkCreateSampler" = HS_vkCreateSampler
-        vkProcSymbol = _VkCreateSampler
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCreateSampler
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VkDestroySampler :: CString
-
-pattern VkDestroySampler <- (is_VkDestroySampler -> True)
-  where VkDestroySampler = _VkDestroySampler
-
-{-# INLINE _VkDestroySampler #-}
-
-_VkDestroySampler :: CString
-_VkDestroySampler = Ptr "vkDestroySampler\NUL"##
-
-{-# INLINE is_VkDestroySampler #-}
-
-is_VkDestroySampler :: CString -> Bool
-is_VkDestroySampler = (EQ ==) . cmpCStrings _VkDestroySampler
-
-type VkDestroySampler = "vkDestroySampler"
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- > void vkDestroySampler
--- >     ( VkDevice device
--- >     , VkSampler sampler
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroySampler vkDestroySampler registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkDestroySampler" vkDestroySampler ::
-               VkDevice -- ^ device
-                        -> VkSampler -- ^ sampler
-                                     -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                  -> IO ()
-
-##else
--- |
--- > void vkDestroySampler
--- >     ( VkDevice device
--- >     , VkSampler sampler
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroySampler vkDestroySampler registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkDestroySamplerSafe@ and @vkDestroySampler@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDestroySampler <- vkGetDeviceProc @VkDestroySampler vkDevice
---
--- or less efficient:
---
--- > myDestroySampler <- vkGetProc @VkDestroySampler
---
-vkDestroySampler ::
-                 VkDevice -- ^ device
-                          -> VkSampler -- ^ sampler
-                                       -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                    -> IO ()
-vkDestroySampler
-  = unsafeDupablePerformIO (vkGetProc @VkDestroySampler)
-
-{-# NOINLINE vkDestroySampler #-}
-##endif
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- > void vkDestroySampler
--- >     ( VkDevice device
--- >     , VkSampler sampler
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroySampler vkDestroySampler registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkDestroySampler" vkDestroySamplerSafe
-               :: VkDevice -- ^ device
-                           -> VkSampler -- ^ sampler
-                                        -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                     -> IO ()
-
-##else
--- |
--- > void vkDestroySampler
--- >     ( VkDevice device
--- >     , VkSampler sampler
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroySampler vkDestroySampler registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkDestroySamplerSafe@ and @vkDestroySampler@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDestroySampler <- vkGetDeviceProc @VkDestroySampler vkDevice
---
--- or less efficient:
---
--- > myDestroySampler <- vkGetProc @VkDestroySampler
---
-vkDestroySamplerSafe ::
-                     VkDevice -- ^ device
-                              -> VkSampler -- ^ sampler
-                                           -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                        -> IO ()
-vkDestroySamplerSafe = vkDestroySampler
-
-{-# INLINE vkDestroySamplerSafe #-}
-##endif
-
--- | > void vkDestroySampler
---   >     ( VkDevice device
---   >     , VkSampler sampler
---   >     , const VkAllocationCallbacks* pAllocator
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroySampler vkDestroySampler registry at www.khronos.org>
-type HS_vkDestroySampler =
-     VkDevice -- ^ device
-              -> VkSampler -- ^ sampler
-                           -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                        -> IO ()
-
-type PFN_vkDestroySampler = FunPtr HS_vkDestroySampler
-
-foreign import ccall "dynamic" unwrapVkDestroySampler ::
-               PFN_vkDestroySampler -> HS_vkDestroySampler
-
-instance VulkanProc "vkDestroySampler" where
-        type VkProcType "vkDestroySampler" = HS_vkDestroySampler
-        vkProcSymbol = _VkDestroySampler
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkDestroySampler
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VkCreateDescriptorSetLayout :: CString
-
-pattern VkCreateDescriptorSetLayout <-
-        (is_VkCreateDescriptorSetLayout -> True)
-  where VkCreateDescriptorSetLayout = _VkCreateDescriptorSetLayout
-
-{-# INLINE _VkCreateDescriptorSetLayout #-}
-
-_VkCreateDescriptorSetLayout :: CString
-_VkCreateDescriptorSetLayout
-  = Ptr "vkCreateDescriptorSetLayout\NUL"##
-
-{-# INLINE is_VkCreateDescriptorSetLayout #-}
-
-is_VkCreateDescriptorSetLayout :: CString -> Bool
-is_VkCreateDescriptorSetLayout
-  = (EQ ==) . cmpCStrings _VkCreateDescriptorSetLayout
-
-type VkCreateDescriptorSetLayout = "vkCreateDescriptorSetLayout"
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkCreateDescriptorSetLayout
--- >     ( VkDevice device
--- >     , const VkDescriptorSetLayoutCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkDescriptorSetLayout* pSetLayout
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateDescriptorSetLayout vkCreateDescriptorSetLayout registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkCreateDescriptorSetLayout"
-               vkCreateDescriptorSetLayout ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkDescriptorSetLayoutCreateInfo -- ^ pCreateInfo
-                                                     ->
-                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                             ->
-                     Ptr VkDescriptorSetLayout -- ^ pSetLayout
-                                               -> IO VkResult
-
-##else
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkCreateDescriptorSetLayout
--- >     ( VkDevice device
--- >     , const VkDescriptorSetLayoutCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkDescriptorSetLayout* pSetLayout
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateDescriptorSetLayout vkCreateDescriptorSetLayout registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCreateDescriptorSetLayoutSafe@ and @vkCreateDescriptorSetLayout@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateDescriptorSetLayout <- vkGetDeviceProc @VkCreateDescriptorSetLayout vkDevice
---
--- or less efficient:
---
--- > myCreateDescriptorSetLayout <- vkGetProc @VkCreateDescriptorSetLayout
---
-vkCreateDescriptorSetLayout ::
-                            VkDevice -- ^ device
-                                     ->
-                              Ptr VkDescriptorSetLayoutCreateInfo -- ^ pCreateInfo
-                                                                  ->
-                                Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                          ->
-                                  Ptr VkDescriptorSetLayout -- ^ pSetLayout
-                                                            -> IO VkResult
-vkCreateDescriptorSetLayout
-  = unsafeDupablePerformIO (vkGetProc @VkCreateDescriptorSetLayout)
-
-{-# NOINLINE vkCreateDescriptorSetLayout #-}
-##endif
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkCreateDescriptorSetLayout
--- >     ( VkDevice device
--- >     , const VkDescriptorSetLayoutCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkDescriptorSetLayout* pSetLayout
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateDescriptorSetLayout vkCreateDescriptorSetLayout registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkCreateDescriptorSetLayout"
-               vkCreateDescriptorSetLayoutSafe ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkDescriptorSetLayoutCreateInfo -- ^ pCreateInfo
-                                                     ->
-                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                             ->
-                     Ptr VkDescriptorSetLayout -- ^ pSetLayout
-                                               -> IO VkResult
-
-##else
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkCreateDescriptorSetLayout
--- >     ( VkDevice device
--- >     , const VkDescriptorSetLayoutCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkDescriptorSetLayout* pSetLayout
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateDescriptorSetLayout vkCreateDescriptorSetLayout registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCreateDescriptorSetLayoutSafe@ and @vkCreateDescriptorSetLayout@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateDescriptorSetLayout <- vkGetDeviceProc @VkCreateDescriptorSetLayout vkDevice
---
--- or less efficient:
---
--- > myCreateDescriptorSetLayout <- vkGetProc @VkCreateDescriptorSetLayout
---
-vkCreateDescriptorSetLayoutSafe ::
-                                VkDevice -- ^ device
-                                         ->
-                                  Ptr VkDescriptorSetLayoutCreateInfo -- ^ pCreateInfo
-                                                                      ->
-                                    Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                              ->
-                                      Ptr VkDescriptorSetLayout -- ^ pSetLayout
-                                                                -> IO VkResult
-vkCreateDescriptorSetLayoutSafe = vkCreateDescriptorSetLayout
-
-{-# INLINE vkCreateDescriptorSetLayoutSafe #-}
-##endif
-
--- | Success codes: 'VK_SUCCESS'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
---   > VkResult vkCreateDescriptorSetLayout
---   >     ( VkDevice device
---   >     , const VkDescriptorSetLayoutCreateInfo* pCreateInfo
---   >     , const VkAllocationCallbacks* pAllocator
---   >     , VkDescriptorSetLayout* pSetLayout
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateDescriptorSetLayout vkCreateDescriptorSetLayout registry at www.khronos.org>
-type HS_vkCreateDescriptorSetLayout =
-     VkDevice -- ^ device
-              ->
-       Ptr VkDescriptorSetLayoutCreateInfo -- ^ pCreateInfo
-                                           ->
-         Ptr VkAllocationCallbacks -- ^ pAllocator
-                                   ->
-           Ptr VkDescriptorSetLayout -- ^ pSetLayout
-                                     -> IO VkResult
-
-type PFN_vkCreateDescriptorSetLayout =
-     FunPtr HS_vkCreateDescriptorSetLayout
-
-foreign import ccall "dynamic" unwrapVkCreateDescriptorSetLayout ::
-               PFN_vkCreateDescriptorSetLayout -> HS_vkCreateDescriptorSetLayout
-
-instance VulkanProc "vkCreateDescriptorSetLayout" where
-        type VkProcType "vkCreateDescriptorSetLayout" =
-             HS_vkCreateDescriptorSetLayout
-        vkProcSymbol = _VkCreateDescriptorSetLayout
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCreateDescriptorSetLayout
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VkDestroyDescriptorSetLayout :: CString
-
-pattern VkDestroyDescriptorSetLayout <-
-        (is_VkDestroyDescriptorSetLayout -> True)
-  where VkDestroyDescriptorSetLayout = _VkDestroyDescriptorSetLayout
-
-{-# INLINE _VkDestroyDescriptorSetLayout #-}
-
-_VkDestroyDescriptorSetLayout :: CString
-_VkDestroyDescriptorSetLayout
-  = Ptr "vkDestroyDescriptorSetLayout\NUL"##
-
-{-# INLINE is_VkDestroyDescriptorSetLayout #-}
-
-is_VkDestroyDescriptorSetLayout :: CString -> Bool
-is_VkDestroyDescriptorSetLayout
-  = (EQ ==) . cmpCStrings _VkDestroyDescriptorSetLayout
-
-type VkDestroyDescriptorSetLayout = "vkDestroyDescriptorSetLayout"
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- > void vkDestroyDescriptorSetLayout
--- >     ( VkDevice device
--- >     , VkDescriptorSetLayout descriptorSetLayout
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyDescriptorSetLayout vkDestroyDescriptorSetLayout registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkDestroyDescriptorSetLayout"
-               vkDestroyDescriptorSetLayout ::
-               VkDevice -- ^ device
-                        ->
-                 VkDescriptorSetLayout -- ^ descriptorSetLayout
-                                       -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                    -> IO ()
-
-##else
--- |
--- > void vkDestroyDescriptorSetLayout
--- >     ( VkDevice device
--- >     , VkDescriptorSetLayout descriptorSetLayout
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyDescriptorSetLayout vkDestroyDescriptorSetLayout registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkDestroyDescriptorSetLayoutSafe@ and @vkDestroyDescriptorSetLayout@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDestroyDescriptorSetLayout <- vkGetDeviceProc @VkDestroyDescriptorSetLayout vkDevice
---
--- or less efficient:
---
--- > myDestroyDescriptorSetLayout <- vkGetProc @VkDestroyDescriptorSetLayout
---
-vkDestroyDescriptorSetLayout ::
-                             VkDevice -- ^ device
-                                      ->
-                               VkDescriptorSetLayout -- ^ descriptorSetLayout
-                                                     -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                                  -> IO ()
-vkDestroyDescriptorSetLayout
-  = unsafeDupablePerformIO (vkGetProc @VkDestroyDescriptorSetLayout)
-
-{-# NOINLINE vkDestroyDescriptorSetLayout #-}
-##endif
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- > void vkDestroyDescriptorSetLayout
--- >     ( VkDevice device
--- >     , VkDescriptorSetLayout descriptorSetLayout
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyDescriptorSetLayout vkDestroyDescriptorSetLayout registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkDestroyDescriptorSetLayout"
-               vkDestroyDescriptorSetLayoutSafe ::
-               VkDevice -- ^ device
-                        ->
-                 VkDescriptorSetLayout -- ^ descriptorSetLayout
-                                       -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                    -> IO ()
-
-##else
--- |
--- > void vkDestroyDescriptorSetLayout
--- >     ( VkDevice device
--- >     , VkDescriptorSetLayout descriptorSetLayout
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyDescriptorSetLayout vkDestroyDescriptorSetLayout registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkDestroyDescriptorSetLayoutSafe@ and @vkDestroyDescriptorSetLayout@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDestroyDescriptorSetLayout <- vkGetDeviceProc @VkDestroyDescriptorSetLayout vkDevice
---
--- or less efficient:
---
--- > myDestroyDescriptorSetLayout <- vkGetProc @VkDestroyDescriptorSetLayout
---
-vkDestroyDescriptorSetLayoutSafe ::
-                                 VkDevice -- ^ device
-                                          ->
-                                   VkDescriptorSetLayout -- ^ descriptorSetLayout
-                                                         -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                                      -> IO ()
-vkDestroyDescriptorSetLayoutSafe = vkDestroyDescriptorSetLayout
-
-{-# INLINE vkDestroyDescriptorSetLayoutSafe #-}
-##endif
-
--- | > void vkDestroyDescriptorSetLayout
---   >     ( VkDevice device
---   >     , VkDescriptorSetLayout descriptorSetLayout
---   >     , const VkAllocationCallbacks* pAllocator
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyDescriptorSetLayout vkDestroyDescriptorSetLayout registry at www.khronos.org>
-type HS_vkDestroyDescriptorSetLayout =
-     VkDevice -- ^ device
-              ->
-       VkDescriptorSetLayout -- ^ descriptorSetLayout
-                             -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                          -> IO ()
-
-type PFN_vkDestroyDescriptorSetLayout =
-     FunPtr HS_vkDestroyDescriptorSetLayout
-
-foreign import ccall "dynamic" unwrapVkDestroyDescriptorSetLayout
-               ::
-               PFN_vkDestroyDescriptorSetLayout -> HS_vkDestroyDescriptorSetLayout
-
-instance VulkanProc "vkDestroyDescriptorSetLayout" where
-        type VkProcType "vkDestroyDescriptorSetLayout" =
-             HS_vkDestroyDescriptorSetLayout
-        vkProcSymbol = _VkDestroyDescriptorSetLayout
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkDestroyDescriptorSetLayout
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VkCreateDescriptorPool :: CString
-
-pattern VkCreateDescriptorPool <-
-        (is_VkCreateDescriptorPool -> True)
-  where VkCreateDescriptorPool = _VkCreateDescriptorPool
-
-{-# INLINE _VkCreateDescriptorPool #-}
-
-_VkCreateDescriptorPool :: CString
-_VkCreateDescriptorPool = Ptr "vkCreateDescriptorPool\NUL"##
-
-{-# INLINE is_VkCreateDescriptorPool #-}
-
-is_VkCreateDescriptorPool :: CString -> Bool
-is_VkCreateDescriptorPool
-  = (EQ ==) . cmpCStrings _VkCreateDescriptorPool
-
-type VkCreateDescriptorPool = "vkCreateDescriptorPool"
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_FRAGMENTATION_EXT'.
---
--- > VkResult vkCreateDescriptorPool
--- >     ( VkDevice device
--- >     , const VkDescriptorPoolCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkDescriptorPool* pDescriptorPool
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateDescriptorPool vkCreateDescriptorPool registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkCreateDescriptorPool"
-               vkCreateDescriptorPool ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkDescriptorPoolCreateInfo -- ^ pCreateInfo
-                                                ->
-                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                             -> Ptr VkDescriptorPool -- ^ pDescriptorPool
-                                                                     -> IO VkResult
-
-##else
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_FRAGMENTATION_EXT'.
---
--- > VkResult vkCreateDescriptorPool
--- >     ( VkDevice device
--- >     , const VkDescriptorPoolCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkDescriptorPool* pDescriptorPool
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateDescriptorPool vkCreateDescriptorPool registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCreateDescriptorPoolSafe@ and @vkCreateDescriptorPool@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateDescriptorPool <- vkGetDeviceProc @VkCreateDescriptorPool vkDevice
---
--- or less efficient:
---
--- > myCreateDescriptorPool <- vkGetProc @VkCreateDescriptorPool
---
-vkCreateDescriptorPool ::
-                       VkDevice -- ^ device
-                                ->
-                         Ptr VkDescriptorPoolCreateInfo -- ^ pCreateInfo
-                                                        ->
-                           Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                     -> Ptr VkDescriptorPool -- ^ pDescriptorPool
-                                                                             -> IO VkResult
-vkCreateDescriptorPool
-  = unsafeDupablePerformIO (vkGetProc @VkCreateDescriptorPool)
-
-{-# NOINLINE vkCreateDescriptorPool #-}
-##endif
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_FRAGMENTATION_EXT'.
---
--- > VkResult vkCreateDescriptorPool
--- >     ( VkDevice device
--- >     , const VkDescriptorPoolCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkDescriptorPool* pDescriptorPool
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateDescriptorPool vkCreateDescriptorPool registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkCreateDescriptorPool"
-               vkCreateDescriptorPoolSafe ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkDescriptorPoolCreateInfo -- ^ pCreateInfo
-                                                ->
-                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                             -> Ptr VkDescriptorPool -- ^ pDescriptorPool
-                                                                     -> IO VkResult
-
-##else
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_FRAGMENTATION_EXT'.
---
--- > VkResult vkCreateDescriptorPool
--- >     ( VkDevice device
--- >     , const VkDescriptorPoolCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkDescriptorPool* pDescriptorPool
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateDescriptorPool vkCreateDescriptorPool registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCreateDescriptorPoolSafe@ and @vkCreateDescriptorPool@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateDescriptorPool <- vkGetDeviceProc @VkCreateDescriptorPool vkDevice
---
--- or less efficient:
---
--- > myCreateDescriptorPool <- vkGetProc @VkCreateDescriptorPool
---
-vkCreateDescriptorPoolSafe ::
-                           VkDevice -- ^ device
-                                    ->
-                             Ptr VkDescriptorPoolCreateInfo -- ^ pCreateInfo
-                                                            ->
-                               Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                         -> Ptr VkDescriptorPool -- ^ pDescriptorPool
-                                                                                 -> IO VkResult
-vkCreateDescriptorPoolSafe = vkCreateDescriptorPool
-
-{-# INLINE vkCreateDescriptorPoolSafe #-}
-##endif
-
--- | Success codes: 'VK_SUCCESS'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_FRAGMENTATION_EXT'.
---
---   > VkResult vkCreateDescriptorPool
---   >     ( VkDevice device
---   >     , const VkDescriptorPoolCreateInfo* pCreateInfo
---   >     , const VkAllocationCallbacks* pAllocator
---   >     , VkDescriptorPool* pDescriptorPool
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateDescriptorPool vkCreateDescriptorPool registry at www.khronos.org>
-type HS_vkCreateDescriptorPool =
-     VkDevice -- ^ device
-              ->
-       Ptr VkDescriptorPoolCreateInfo -- ^ pCreateInfo
-                                      ->
-         Ptr VkAllocationCallbacks -- ^ pAllocator
-                                   -> Ptr VkDescriptorPool -- ^ pDescriptorPool
-                                                           -> IO VkResult
-
-type PFN_vkCreateDescriptorPool = FunPtr HS_vkCreateDescriptorPool
-
-foreign import ccall "dynamic" unwrapVkCreateDescriptorPool ::
-               PFN_vkCreateDescriptorPool -> HS_vkCreateDescriptorPool
-
-instance VulkanProc "vkCreateDescriptorPool" where
-        type VkProcType "vkCreateDescriptorPool" =
-             HS_vkCreateDescriptorPool
-        vkProcSymbol = _VkCreateDescriptorPool
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCreateDescriptorPool
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VkDestroyDescriptorPool :: CString
-
-pattern VkDestroyDescriptorPool <-
-        (is_VkDestroyDescriptorPool -> True)
-  where VkDestroyDescriptorPool = _VkDestroyDescriptorPool
-
-{-# INLINE _VkDestroyDescriptorPool #-}
-
-_VkDestroyDescriptorPool :: CString
-_VkDestroyDescriptorPool = Ptr "vkDestroyDescriptorPool\NUL"##
-
-{-# INLINE is_VkDestroyDescriptorPool #-}
-
-is_VkDestroyDescriptorPool :: CString -> Bool
-is_VkDestroyDescriptorPool
-  = (EQ ==) . cmpCStrings _VkDestroyDescriptorPool
-
-type VkDestroyDescriptorPool = "vkDestroyDescriptorPool"
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- > void vkDestroyDescriptorPool
--- >     ( VkDevice device
--- >     , VkDescriptorPool descriptorPool
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyDescriptorPool vkDestroyDescriptorPool registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkDestroyDescriptorPool"
-               vkDestroyDescriptorPool ::
-               VkDevice -- ^ device
-                        -> VkDescriptorPool -- ^ descriptorPool
-                                            -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                         -> IO ()
-
-##else
--- |
--- > void vkDestroyDescriptorPool
--- >     ( VkDevice device
--- >     , VkDescriptorPool descriptorPool
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyDescriptorPool vkDestroyDescriptorPool registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkDestroyDescriptorPoolSafe@ and @vkDestroyDescriptorPool@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDestroyDescriptorPool <- vkGetDeviceProc @VkDestroyDescriptorPool vkDevice
---
--- or less efficient:
---
--- > myDestroyDescriptorPool <- vkGetProc @VkDestroyDescriptorPool
---
-vkDestroyDescriptorPool ::
-                        VkDevice -- ^ device
-                                 -> VkDescriptorPool -- ^ descriptorPool
-                                                     -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                                  -> IO ()
-vkDestroyDescriptorPool
-  = unsafeDupablePerformIO (vkGetProc @VkDestroyDescriptorPool)
-
-{-# NOINLINE vkDestroyDescriptorPool #-}
-##endif
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- > void vkDestroyDescriptorPool
--- >     ( VkDevice device
--- >     , VkDescriptorPool descriptorPool
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyDescriptorPool vkDestroyDescriptorPool registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkDestroyDescriptorPool"
-               vkDestroyDescriptorPoolSafe ::
-               VkDevice -- ^ device
-                        -> VkDescriptorPool -- ^ descriptorPool
-                                            -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                         -> IO ()
-
-##else
--- |
--- > void vkDestroyDescriptorPool
--- >     ( VkDevice device
--- >     , VkDescriptorPool descriptorPool
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyDescriptorPool vkDestroyDescriptorPool registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkDestroyDescriptorPoolSafe@ and @vkDestroyDescriptorPool@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDestroyDescriptorPool <- vkGetDeviceProc @VkDestroyDescriptorPool vkDevice
---
--- or less efficient:
---
--- > myDestroyDescriptorPool <- vkGetProc @VkDestroyDescriptorPool
---
-vkDestroyDescriptorPoolSafe ::
-                            VkDevice -- ^ device
-                                     -> VkDescriptorPool -- ^ descriptorPool
-                                                         -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                                      -> IO ()
-vkDestroyDescriptorPoolSafe = vkDestroyDescriptorPool
-
-{-# INLINE vkDestroyDescriptorPoolSafe #-}
-##endif
-
--- | > void vkDestroyDescriptorPool
---   >     ( VkDevice device
---   >     , VkDescriptorPool descriptorPool
---   >     , const VkAllocationCallbacks* pAllocator
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyDescriptorPool vkDestroyDescriptorPool registry at www.khronos.org>
-type HS_vkDestroyDescriptorPool =
-     VkDevice -- ^ device
-              -> VkDescriptorPool -- ^ descriptorPool
-                                  -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                               -> IO ()
-
-type PFN_vkDestroyDescriptorPool =
-     FunPtr HS_vkDestroyDescriptorPool
-
-foreign import ccall "dynamic" unwrapVkDestroyDescriptorPool ::
-               PFN_vkDestroyDescriptorPool -> HS_vkDestroyDescriptorPool
-
-instance VulkanProc "vkDestroyDescriptorPool" where
-        type VkProcType "vkDestroyDescriptorPool" =
-             HS_vkDestroyDescriptorPool
-        vkProcSymbol = _VkDestroyDescriptorPool
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkDestroyDescriptorPool
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VkResetDescriptorPool :: CString
-
-pattern VkResetDescriptorPool <- (is_VkResetDescriptorPool -> True)
-  where VkResetDescriptorPool = _VkResetDescriptorPool
-
-{-# INLINE _VkResetDescriptorPool #-}
-
-_VkResetDescriptorPool :: CString
-_VkResetDescriptorPool = Ptr "vkResetDescriptorPool\NUL"##
-
-{-# INLINE is_VkResetDescriptorPool #-}
-
-is_VkResetDescriptorPool :: CString -> Bool
-is_VkResetDescriptorPool
-  = (EQ ==) . cmpCStrings _VkResetDescriptorPool
-
-type VkResetDescriptorPool = "vkResetDescriptorPool"
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkResetDescriptorPool
--- >     ( VkDevice device
--- >     , VkDescriptorPool descriptorPool
--- >     , VkDescriptorPoolResetFlags flags
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkResetDescriptorPool vkResetDescriptorPool registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkResetDescriptorPool"
-               vkResetDescriptorPool ::
-               VkDevice -- ^ device
-                        ->
-                 VkDescriptorPool -- ^ descriptorPool
-                                  -> VkDescriptorPoolResetFlags -- ^ flags
-                                                                -> IO VkResult
-
-##else
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkResetDescriptorPool
--- >     ( VkDevice device
--- >     , VkDescriptorPool descriptorPool
--- >     , VkDescriptorPoolResetFlags flags
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkResetDescriptorPool vkResetDescriptorPool registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkResetDescriptorPoolSafe@ and @vkResetDescriptorPool@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myResetDescriptorPool <- vkGetDeviceProc @VkResetDescriptorPool vkDevice
---
--- or less efficient:
---
--- > myResetDescriptorPool <- vkGetProc @VkResetDescriptorPool
---
-vkResetDescriptorPool ::
-                      VkDevice -- ^ device
-                               ->
-                        VkDescriptorPool -- ^ descriptorPool
-                                         -> VkDescriptorPoolResetFlags -- ^ flags
-                                                                       -> IO VkResult
-vkResetDescriptorPool
-  = unsafeDupablePerformIO (vkGetProc @VkResetDescriptorPool)
-
-{-# NOINLINE vkResetDescriptorPool #-}
-##endif
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkResetDescriptorPool
--- >     ( VkDevice device
--- >     , VkDescriptorPool descriptorPool
--- >     , VkDescriptorPoolResetFlags flags
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkResetDescriptorPool vkResetDescriptorPool registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkResetDescriptorPool"
-               vkResetDescriptorPoolSafe ::
-               VkDevice -- ^ device
-                        ->
-                 VkDescriptorPool -- ^ descriptorPool
-                                  -> VkDescriptorPoolResetFlags -- ^ flags
-                                                                -> IO VkResult
-
-##else
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkResetDescriptorPool
--- >     ( VkDevice device
--- >     , VkDescriptorPool descriptorPool
--- >     , VkDescriptorPoolResetFlags flags
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkResetDescriptorPool vkResetDescriptorPool registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkResetDescriptorPoolSafe@ and @vkResetDescriptorPool@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myResetDescriptorPool <- vkGetDeviceProc @VkResetDescriptorPool vkDevice
---
--- or less efficient:
---
--- > myResetDescriptorPool <- vkGetProc @VkResetDescriptorPool
---
-vkResetDescriptorPoolSafe ::
-                          VkDevice -- ^ device
-                                   ->
-                            VkDescriptorPool -- ^ descriptorPool
-                                             -> VkDescriptorPoolResetFlags -- ^ flags
-                                                                           -> IO VkResult
-vkResetDescriptorPoolSafe = vkResetDescriptorPool
-
-{-# INLINE vkResetDescriptorPoolSafe #-}
-##endif
-
--- | Success codes: 'VK_SUCCESS'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
---   > VkResult vkResetDescriptorPool
---   >     ( VkDevice device
---   >     , VkDescriptorPool descriptorPool
---   >     , VkDescriptorPoolResetFlags flags
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkResetDescriptorPool vkResetDescriptorPool registry at www.khronos.org>
-type HS_vkResetDescriptorPool =
-     VkDevice -- ^ device
-              ->
-       VkDescriptorPool -- ^ descriptorPool
-                        -> VkDescriptorPoolResetFlags -- ^ flags
-                                                      -> IO VkResult
-
-type PFN_vkResetDescriptorPool = FunPtr HS_vkResetDescriptorPool
-
-foreign import ccall "dynamic" unwrapVkResetDescriptorPool ::
-               PFN_vkResetDescriptorPool -> HS_vkResetDescriptorPool
-
-instance VulkanProc "vkResetDescriptorPool" where
-        type VkProcType "vkResetDescriptorPool" = HS_vkResetDescriptorPool
-        vkProcSymbol = _VkResetDescriptorPool
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkResetDescriptorPool
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VkAllocateDescriptorSets :: CString
-
-pattern VkAllocateDescriptorSets <-
-        (is_VkAllocateDescriptorSets -> True)
-  where VkAllocateDescriptorSets = _VkAllocateDescriptorSets
-
-{-# INLINE _VkAllocateDescriptorSets #-}
-
-_VkAllocateDescriptorSets :: CString
-_VkAllocateDescriptorSets = Ptr "vkAllocateDescriptorSets\NUL"##
-
-{-# INLINE is_VkAllocateDescriptorSets #-}
-
-is_VkAllocateDescriptorSets :: CString -> Bool
-is_VkAllocateDescriptorSets
-  = (EQ ==) . cmpCStrings _VkAllocateDescriptorSets
-
-type VkAllocateDescriptorSets = "vkAllocateDescriptorSets"
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_FRAGMENTED_POOL', 'VK_ERROR_OUT_OF_POOL_MEMORY'.
---
--- > VkResult vkAllocateDescriptorSets
--- >     ( VkDevice device
--- >     , const VkDescriptorSetAllocateInfo* pAllocateInfo
--- >     , VkDescriptorSet* pDescriptorSets
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkAllocateDescriptorSets vkAllocateDescriptorSets registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkAllocateDescriptorSets"
-               vkAllocateDescriptorSets ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkDescriptorSetAllocateInfo -- ^ pAllocateInfo
-                                                 ->
-                   Ptr VkDescriptorSet -- ^ pDescriptorSets
-                                       -> IO VkResult
-
-##else
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_FRAGMENTED_POOL', 'VK_ERROR_OUT_OF_POOL_MEMORY'.
---
--- > VkResult vkAllocateDescriptorSets
--- >     ( VkDevice device
--- >     , const VkDescriptorSetAllocateInfo* pAllocateInfo
--- >     , VkDescriptorSet* pDescriptorSets
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkAllocateDescriptorSets vkAllocateDescriptorSets registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkAllocateDescriptorSetsSafe@ and @vkAllocateDescriptorSets@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myAllocateDescriptorSets <- vkGetDeviceProc @VkAllocateDescriptorSets vkDevice
---
--- or less efficient:
---
--- > myAllocateDescriptorSets <- vkGetProc @VkAllocateDescriptorSets
---
-vkAllocateDescriptorSets ::
-                         VkDevice -- ^ device
-                                  ->
-                           Ptr VkDescriptorSetAllocateInfo -- ^ pAllocateInfo
-                                                           ->
-                             Ptr VkDescriptorSet -- ^ pDescriptorSets
-                                                 -> IO VkResult
-vkAllocateDescriptorSets
-  = unsafeDupablePerformIO (vkGetProc @VkAllocateDescriptorSets)
-
-{-# NOINLINE vkAllocateDescriptorSets #-}
-##endif
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_FRAGMENTED_POOL', 'VK_ERROR_OUT_OF_POOL_MEMORY'.
---
--- > VkResult vkAllocateDescriptorSets
--- >     ( VkDevice device
--- >     , const VkDescriptorSetAllocateInfo* pAllocateInfo
--- >     , VkDescriptorSet* pDescriptorSets
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkAllocateDescriptorSets vkAllocateDescriptorSets registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkAllocateDescriptorSets"
-               vkAllocateDescriptorSetsSafe ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkDescriptorSetAllocateInfo -- ^ pAllocateInfo
-                                                 ->
-                   Ptr VkDescriptorSet -- ^ pDescriptorSets
-                                       -> IO VkResult
-
-##else
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_FRAGMENTED_POOL', 'VK_ERROR_OUT_OF_POOL_MEMORY'.
---
--- > VkResult vkAllocateDescriptorSets
--- >     ( VkDevice device
--- >     , const VkDescriptorSetAllocateInfo* pAllocateInfo
--- >     , VkDescriptorSet* pDescriptorSets
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkAllocateDescriptorSets vkAllocateDescriptorSets registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkAllocateDescriptorSetsSafe@ and @vkAllocateDescriptorSets@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myAllocateDescriptorSets <- vkGetDeviceProc @VkAllocateDescriptorSets vkDevice
---
--- or less efficient:
---
--- > myAllocateDescriptorSets <- vkGetProc @VkAllocateDescriptorSets
---
-vkAllocateDescriptorSetsSafe ::
-                             VkDevice -- ^ device
-                                      ->
-                               Ptr VkDescriptorSetAllocateInfo -- ^ pAllocateInfo
-                                                               ->
-                                 Ptr VkDescriptorSet -- ^ pDescriptorSets
-                                                     -> IO VkResult
-vkAllocateDescriptorSetsSafe = vkAllocateDescriptorSets
-
-{-# INLINE vkAllocateDescriptorSetsSafe #-}
-##endif
-
--- | Success codes: 'VK_SUCCESS'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_FRAGMENTED_POOL', 'VK_ERROR_OUT_OF_POOL_MEMORY'.
---
---   > VkResult vkAllocateDescriptorSets
---   >     ( VkDevice device
---   >     , const VkDescriptorSetAllocateInfo* pAllocateInfo
---   >     , VkDescriptorSet* pDescriptorSets
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkAllocateDescriptorSets vkAllocateDescriptorSets registry at www.khronos.org>
-type HS_vkAllocateDescriptorSets =
-     VkDevice -- ^ device
-              ->
-       Ptr VkDescriptorSetAllocateInfo -- ^ pAllocateInfo
-                                       ->
-         Ptr VkDescriptorSet -- ^ pDescriptorSets
-                             -> IO VkResult
-
-type PFN_vkAllocateDescriptorSets =
-     FunPtr HS_vkAllocateDescriptorSets
-
-foreign import ccall "dynamic" unwrapVkAllocateDescriptorSets ::
-               PFN_vkAllocateDescriptorSets -> HS_vkAllocateDescriptorSets
-
-instance VulkanProc "vkAllocateDescriptorSets" where
-        type VkProcType "vkAllocateDescriptorSets" =
-             HS_vkAllocateDescriptorSets
-        vkProcSymbol = _VkAllocateDescriptorSets
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkAllocateDescriptorSets
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VkFreeDescriptorSets :: CString
-
-pattern VkFreeDescriptorSets <- (is_VkFreeDescriptorSets -> True)
-  where VkFreeDescriptorSets = _VkFreeDescriptorSets
-
-{-# INLINE _VkFreeDescriptorSets #-}
-
-_VkFreeDescriptorSets :: CString
-_VkFreeDescriptorSets = Ptr "vkFreeDescriptorSets\NUL"##
-
-{-# INLINE is_VkFreeDescriptorSets #-}
-
-is_VkFreeDescriptorSets :: CString -> Bool
-is_VkFreeDescriptorSets
-  = (EQ ==) . cmpCStrings _VkFreeDescriptorSets
-
-type VkFreeDescriptorSets = "vkFreeDescriptorSets"
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkFreeDescriptorSets
--- >     ( VkDevice device
--- >     , VkDescriptorPool descriptorPool
--- >     , uint32_t descriptorSetCount
--- >     , const VkDescriptorSet* pDescriptorSets
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkFreeDescriptorSets vkFreeDescriptorSets registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkFreeDescriptorSets"
-               vkFreeDescriptorSets ::
-               VkDevice -- ^ device
-                        ->
-                 VkDescriptorPool -- ^ descriptorPool
-                                  -> Word32 -- ^ descriptorSetCount
-                                            -> Ptr VkDescriptorSet -- ^ pDescriptorSets
-                                                                   -> IO VkResult
-
-##else
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkFreeDescriptorSets
--- >     ( VkDevice device
--- >     , VkDescriptorPool descriptorPool
--- >     , uint32_t descriptorSetCount
--- >     , const VkDescriptorSet* pDescriptorSets
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkFreeDescriptorSets vkFreeDescriptorSets registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkFreeDescriptorSetsSafe@ and @vkFreeDescriptorSets@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myFreeDescriptorSets <- vkGetDeviceProc @VkFreeDescriptorSets vkDevice
---
--- or less efficient:
---
--- > myFreeDescriptorSets <- vkGetProc @VkFreeDescriptorSets
---
-vkFreeDescriptorSets ::
-                     VkDevice -- ^ device
-                              ->
-                       VkDescriptorPool -- ^ descriptorPool
-                                        -> Word32 -- ^ descriptorSetCount
-                                                  -> Ptr VkDescriptorSet -- ^ pDescriptorSets
-                                                                         -> IO VkResult
-vkFreeDescriptorSets
-  = unsafeDupablePerformIO (vkGetProc @VkFreeDescriptorSets)
-
-{-# NOINLINE vkFreeDescriptorSets #-}
-##endif
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkFreeDescriptorSets
--- >     ( VkDevice device
--- >     , VkDescriptorPool descriptorPool
--- >     , uint32_t descriptorSetCount
--- >     , const VkDescriptorSet* pDescriptorSets
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkFreeDescriptorSets vkFreeDescriptorSets registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkFreeDescriptorSets"
-               vkFreeDescriptorSetsSafe ::
-               VkDevice -- ^ device
-                        ->
-                 VkDescriptorPool -- ^ descriptorPool
-                                  -> Word32 -- ^ descriptorSetCount
-                                            -> Ptr VkDescriptorSet -- ^ pDescriptorSets
-                                                                   -> IO VkResult
-
-##else
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkFreeDescriptorSets
--- >     ( VkDevice device
--- >     , VkDescriptorPool descriptorPool
--- >     , uint32_t descriptorSetCount
--- >     , const VkDescriptorSet* pDescriptorSets
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkFreeDescriptorSets vkFreeDescriptorSets registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkFreeDescriptorSetsSafe@ and @vkFreeDescriptorSets@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myFreeDescriptorSets <- vkGetDeviceProc @VkFreeDescriptorSets vkDevice
---
--- or less efficient:
---
--- > myFreeDescriptorSets <- vkGetProc @VkFreeDescriptorSets
---
-vkFreeDescriptorSetsSafe ::
-                         VkDevice -- ^ device
-                                  ->
-                           VkDescriptorPool -- ^ descriptorPool
-                                            -> Word32 -- ^ descriptorSetCount
-                                                      -> Ptr VkDescriptorSet -- ^ pDescriptorSets
-                                                                             -> IO VkResult
-vkFreeDescriptorSetsSafe = vkFreeDescriptorSets
-
-{-# INLINE vkFreeDescriptorSetsSafe #-}
-##endif
-
--- | Success codes: 'VK_SUCCESS'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
---   > VkResult vkFreeDescriptorSets
---   >     ( VkDevice device
---   >     , VkDescriptorPool descriptorPool
---   >     , uint32_t descriptorSetCount
---   >     , const VkDescriptorSet* pDescriptorSets
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkFreeDescriptorSets vkFreeDescriptorSets registry at www.khronos.org>
-type HS_vkFreeDescriptorSets =
-     VkDevice -- ^ device
-              ->
-       VkDescriptorPool -- ^ descriptorPool
-                        -> Word32 -- ^ descriptorSetCount
-                                  -> Ptr VkDescriptorSet -- ^ pDescriptorSets
-                                                         -> IO VkResult
-
-type PFN_vkFreeDescriptorSets = FunPtr HS_vkFreeDescriptorSets
-
-foreign import ccall "dynamic" unwrapVkFreeDescriptorSets ::
-               PFN_vkFreeDescriptorSets -> HS_vkFreeDescriptorSets
-
-instance VulkanProc "vkFreeDescriptorSets" where
-        type VkProcType "vkFreeDescriptorSets" = HS_vkFreeDescriptorSets
-        vkProcSymbol = _VkFreeDescriptorSets
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkFreeDescriptorSets
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VkUpdateDescriptorSets :: CString
-
-pattern VkUpdateDescriptorSets <-
-        (is_VkUpdateDescriptorSets -> True)
-  where VkUpdateDescriptorSets = _VkUpdateDescriptorSets
-
-{-# INLINE _VkUpdateDescriptorSets #-}
-
-_VkUpdateDescriptorSets :: CString
-_VkUpdateDescriptorSets = Ptr "vkUpdateDescriptorSets\NUL"##
-
-{-# INLINE is_VkUpdateDescriptorSets #-}
-
-is_VkUpdateDescriptorSets :: CString -> Bool
-is_VkUpdateDescriptorSets
-  = (EQ ==) . cmpCStrings _VkUpdateDescriptorSets
-
-type VkUpdateDescriptorSets = "vkUpdateDescriptorSets"
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- > void vkUpdateDescriptorSets
--- >     ( VkDevice device
--- >     , uint32_t descriptorWriteCount
--- >     , const VkWriteDescriptorSet* pDescriptorWrites
--- >     , uint32_t descriptorCopyCount
--- >     , const VkCopyDescriptorSet* pDescriptorCopies
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkUpdateDescriptorSets vkUpdateDescriptorSets registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkUpdateDescriptorSets"
-               vkUpdateDescriptorSets ::
-               VkDevice -- ^ device
-                        ->
-                 Word32 -- ^ descriptorWriteCount
-                        ->
-                   Ptr VkWriteDescriptorSet -- ^ pDescriptorWrites
-                                            ->
-                     Word32 -- ^ descriptorCopyCount
-                            -> Ptr VkCopyDescriptorSet -- ^ pDescriptorCopies
-                                                       -> IO ()
-
-##else
--- |
--- > void vkUpdateDescriptorSets
--- >     ( VkDevice device
--- >     , uint32_t descriptorWriteCount
--- >     , const VkWriteDescriptorSet* pDescriptorWrites
--- >     , uint32_t descriptorCopyCount
--- >     , const VkCopyDescriptorSet* pDescriptorCopies
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkUpdateDescriptorSets vkUpdateDescriptorSets registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkUpdateDescriptorSetsSafe@ and @vkUpdateDescriptorSets@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myUpdateDescriptorSets <- vkGetDeviceProc @VkUpdateDescriptorSets vkDevice
---
--- or less efficient:
---
--- > myUpdateDescriptorSets <- vkGetProc @VkUpdateDescriptorSets
---
-vkUpdateDescriptorSets ::
-                       VkDevice -- ^ device
-                                ->
-                         Word32 -- ^ descriptorWriteCount
-                                ->
-                           Ptr VkWriteDescriptorSet -- ^ pDescriptorWrites
-                                                    ->
-                             Word32 -- ^ descriptorCopyCount
-                                    -> Ptr VkCopyDescriptorSet -- ^ pDescriptorCopies
-                                                               -> IO ()
-vkUpdateDescriptorSets
-  = unsafeDupablePerformIO (vkGetProc @VkUpdateDescriptorSets)
-
-{-# NOINLINE vkUpdateDescriptorSets #-}
-##endif
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- > void vkUpdateDescriptorSets
--- >     ( VkDevice device
--- >     , uint32_t descriptorWriteCount
--- >     , const VkWriteDescriptorSet* pDescriptorWrites
--- >     , uint32_t descriptorCopyCount
--- >     , const VkCopyDescriptorSet* pDescriptorCopies
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkUpdateDescriptorSets vkUpdateDescriptorSets registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkUpdateDescriptorSets"
-               vkUpdateDescriptorSetsSafe ::
-               VkDevice -- ^ device
-                        ->
-                 Word32 -- ^ descriptorWriteCount
-                        ->
-                   Ptr VkWriteDescriptorSet -- ^ pDescriptorWrites
-                                            ->
-                     Word32 -- ^ descriptorCopyCount
-                            -> Ptr VkCopyDescriptorSet -- ^ pDescriptorCopies
-                                                       -> IO ()
-
-##else
--- |
--- > void vkUpdateDescriptorSets
--- >     ( VkDevice device
--- >     , uint32_t descriptorWriteCount
--- >     , const VkWriteDescriptorSet* pDescriptorWrites
--- >     , uint32_t descriptorCopyCount
--- >     , const VkCopyDescriptorSet* pDescriptorCopies
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkUpdateDescriptorSets vkUpdateDescriptorSets registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkUpdateDescriptorSetsSafe@ and @vkUpdateDescriptorSets@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myUpdateDescriptorSets <- vkGetDeviceProc @VkUpdateDescriptorSets vkDevice
---
--- or less efficient:
---
--- > myUpdateDescriptorSets <- vkGetProc @VkUpdateDescriptorSets
---
-vkUpdateDescriptorSetsSafe ::
-                           VkDevice -- ^ device
-                                    ->
-                             Word32 -- ^ descriptorWriteCount
-                                    ->
-                               Ptr VkWriteDescriptorSet -- ^ pDescriptorWrites
-                                                        ->
-                                 Word32 -- ^ descriptorCopyCount
-                                        -> Ptr VkCopyDescriptorSet -- ^ pDescriptorCopies
-                                                                   -> IO ()
-vkUpdateDescriptorSetsSafe = vkUpdateDescriptorSets
-
-{-# INLINE vkUpdateDescriptorSetsSafe #-}
-##endif
-
--- | > void vkUpdateDescriptorSets
---   >     ( VkDevice device
---   >     , uint32_t descriptorWriteCount
---   >     , const VkWriteDescriptorSet* pDescriptorWrites
---   >     , uint32_t descriptorCopyCount
---   >     , const VkCopyDescriptorSet* pDescriptorCopies
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkUpdateDescriptorSets vkUpdateDescriptorSets registry at www.khronos.org>
-type HS_vkUpdateDescriptorSets =
-     VkDevice -- ^ device
-              ->
-       Word32 -- ^ descriptorWriteCount
-              ->
-         Ptr VkWriteDescriptorSet -- ^ pDescriptorWrites
-                                  ->
-           Word32 -- ^ descriptorCopyCount
-                  -> Ptr VkCopyDescriptorSet -- ^ pDescriptorCopies
-                                             -> IO ()
-
-type PFN_vkUpdateDescriptorSets = FunPtr HS_vkUpdateDescriptorSets
-
-foreign import ccall "dynamic" unwrapVkUpdateDescriptorSets ::
-               PFN_vkUpdateDescriptorSets -> HS_vkUpdateDescriptorSets
-
-instance VulkanProc "vkUpdateDescriptorSets" where
-        type VkProcType "vkUpdateDescriptorSets" =
-             HS_vkUpdateDescriptorSets
-        vkProcSymbol = _VkUpdateDescriptorSets
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkUpdateDescriptorSets
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VkCreateFramebuffer :: CString
-
-pattern VkCreateFramebuffer <- (is_VkCreateFramebuffer -> True)
-  where VkCreateFramebuffer = _VkCreateFramebuffer
-
-{-# INLINE _VkCreateFramebuffer #-}
-
-_VkCreateFramebuffer :: CString
-_VkCreateFramebuffer = Ptr "vkCreateFramebuffer\NUL"##
-
-{-# INLINE is_VkCreateFramebuffer #-}
-
-is_VkCreateFramebuffer :: CString -> Bool
-is_VkCreateFramebuffer = (EQ ==) . cmpCStrings _VkCreateFramebuffer
-
-type VkCreateFramebuffer = "vkCreateFramebuffer"
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkCreateFramebuffer
--- >     ( VkDevice device
--- >     , const VkFramebufferCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkFramebuffer* pFramebuffer
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateFramebuffer vkCreateFramebuffer registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkCreateFramebuffer"
-               vkCreateFramebuffer ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkFramebufferCreateInfo -- ^ pCreateInfo
-                                             ->
-                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                             -> Ptr VkFramebuffer -- ^ pFramebuffer
-                                                                  -> IO VkResult
-
-##else
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkCreateFramebuffer
--- >     ( VkDevice device
--- >     , const VkFramebufferCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkFramebuffer* pFramebuffer
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateFramebuffer vkCreateFramebuffer registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCreateFramebufferSafe@ and @vkCreateFramebuffer@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateFramebuffer <- vkGetDeviceProc @VkCreateFramebuffer vkDevice
---
--- or less efficient:
---
--- > myCreateFramebuffer <- vkGetProc @VkCreateFramebuffer
---
-vkCreateFramebuffer ::
-                    VkDevice -- ^ device
-                             ->
-                      Ptr VkFramebufferCreateInfo -- ^ pCreateInfo
-                                                  ->
-                        Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                  -> Ptr VkFramebuffer -- ^ pFramebuffer
-                                                                       -> IO VkResult
-vkCreateFramebuffer
-  = unsafeDupablePerformIO (vkGetProc @VkCreateFramebuffer)
-
-{-# NOINLINE vkCreateFramebuffer #-}
-##endif
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkCreateFramebuffer
--- >     ( VkDevice device
--- >     , const VkFramebufferCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkFramebuffer* pFramebuffer
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateFramebuffer vkCreateFramebuffer registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkCreateFramebuffer"
-               vkCreateFramebufferSafe ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkFramebufferCreateInfo -- ^ pCreateInfo
-                                             ->
-                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                             -> Ptr VkFramebuffer -- ^ pFramebuffer
-                                                                  -> IO VkResult
-
-##else
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkCreateFramebuffer
--- >     ( VkDevice device
--- >     , const VkFramebufferCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkFramebuffer* pFramebuffer
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateFramebuffer vkCreateFramebuffer registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCreateFramebufferSafe@ and @vkCreateFramebuffer@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateFramebuffer <- vkGetDeviceProc @VkCreateFramebuffer vkDevice
---
--- or less efficient:
---
--- > myCreateFramebuffer <- vkGetProc @VkCreateFramebuffer
---
-vkCreateFramebufferSafe ::
-                        VkDevice -- ^ device
-                                 ->
-                          Ptr VkFramebufferCreateInfo -- ^ pCreateInfo
-                                                      ->
-                            Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                      -> Ptr VkFramebuffer -- ^ pFramebuffer
-                                                                           -> IO VkResult
-vkCreateFramebufferSafe = vkCreateFramebuffer
-
-{-# INLINE vkCreateFramebufferSafe #-}
-##endif
-
--- | Success codes: 'VK_SUCCESS'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
---   > VkResult vkCreateFramebuffer
---   >     ( VkDevice device
---   >     , const VkFramebufferCreateInfo* pCreateInfo
---   >     , const VkAllocationCallbacks* pAllocator
---   >     , VkFramebuffer* pFramebuffer
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateFramebuffer vkCreateFramebuffer registry at www.khronos.org>
-type HS_vkCreateFramebuffer =
-     VkDevice -- ^ device
-              ->
-       Ptr VkFramebufferCreateInfo -- ^ pCreateInfo
-                                   ->
-         Ptr VkAllocationCallbacks -- ^ pAllocator
-                                   -> Ptr VkFramebuffer -- ^ pFramebuffer
-                                                        -> IO VkResult
-
-type PFN_vkCreateFramebuffer = FunPtr HS_vkCreateFramebuffer
-
-foreign import ccall "dynamic" unwrapVkCreateFramebuffer ::
-               PFN_vkCreateFramebuffer -> HS_vkCreateFramebuffer
-
-instance VulkanProc "vkCreateFramebuffer" where
-        type VkProcType "vkCreateFramebuffer" = HS_vkCreateFramebuffer
-        vkProcSymbol = _VkCreateFramebuffer
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCreateFramebuffer
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VkDestroyFramebuffer :: CString
-
-pattern VkDestroyFramebuffer <- (is_VkDestroyFramebuffer -> True)
-  where VkDestroyFramebuffer = _VkDestroyFramebuffer
-
-{-# INLINE _VkDestroyFramebuffer #-}
-
-_VkDestroyFramebuffer :: CString
-_VkDestroyFramebuffer = Ptr "vkDestroyFramebuffer\NUL"##
-
-{-# INLINE is_VkDestroyFramebuffer #-}
-
-is_VkDestroyFramebuffer :: CString -> Bool
-is_VkDestroyFramebuffer
-  = (EQ ==) . cmpCStrings _VkDestroyFramebuffer
-
-type VkDestroyFramebuffer = "vkDestroyFramebuffer"
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- > void vkDestroyFramebuffer
--- >     ( VkDevice device
--- >     , VkFramebuffer framebuffer
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyFramebuffer vkDestroyFramebuffer registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkDestroyFramebuffer"
-               vkDestroyFramebuffer ::
-               VkDevice -- ^ device
-                        -> VkFramebuffer -- ^ framebuffer
-                                         -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                      -> IO ()
-
-##else
--- |
--- > void vkDestroyFramebuffer
--- >     ( VkDevice device
--- >     , VkFramebuffer framebuffer
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyFramebuffer vkDestroyFramebuffer registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkDestroyFramebufferSafe@ and @vkDestroyFramebuffer@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDestroyFramebuffer <- vkGetDeviceProc @VkDestroyFramebuffer vkDevice
---
--- or less efficient:
---
--- > myDestroyFramebuffer <- vkGetProc @VkDestroyFramebuffer
---
-vkDestroyFramebuffer ::
-                     VkDevice -- ^ device
-                              -> VkFramebuffer -- ^ framebuffer
-                                               -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                            -> IO ()
-vkDestroyFramebuffer
-  = unsafeDupablePerformIO (vkGetProc @VkDestroyFramebuffer)
-
-{-# NOINLINE vkDestroyFramebuffer #-}
-##endif
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- > void vkDestroyFramebuffer
--- >     ( VkDevice device
--- >     , VkFramebuffer framebuffer
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyFramebuffer vkDestroyFramebuffer registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkDestroyFramebuffer"
-               vkDestroyFramebufferSafe ::
-               VkDevice -- ^ device
-                        -> VkFramebuffer -- ^ framebuffer
-                                         -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                      -> IO ()
-
-##else
--- |
--- > void vkDestroyFramebuffer
--- >     ( VkDevice device
--- >     , VkFramebuffer framebuffer
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyFramebuffer vkDestroyFramebuffer registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkDestroyFramebufferSafe@ and @vkDestroyFramebuffer@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDestroyFramebuffer <- vkGetDeviceProc @VkDestroyFramebuffer vkDevice
---
--- or less efficient:
---
--- > myDestroyFramebuffer <- vkGetProc @VkDestroyFramebuffer
---
-vkDestroyFramebufferSafe ::
-                         VkDevice -- ^ device
-                                  -> VkFramebuffer -- ^ framebuffer
-                                                   -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                                -> IO ()
-vkDestroyFramebufferSafe = vkDestroyFramebuffer
-
-{-# INLINE vkDestroyFramebufferSafe #-}
-##endif
-
--- | > void vkDestroyFramebuffer
---   >     ( VkDevice device
---   >     , VkFramebuffer framebuffer
---   >     , const VkAllocationCallbacks* pAllocator
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyFramebuffer vkDestroyFramebuffer registry at www.khronos.org>
-type HS_vkDestroyFramebuffer =
-     VkDevice -- ^ device
-              -> VkFramebuffer -- ^ framebuffer
-                               -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                            -> IO ()
-
-type PFN_vkDestroyFramebuffer = FunPtr HS_vkDestroyFramebuffer
-
-foreign import ccall "dynamic" unwrapVkDestroyFramebuffer ::
-               PFN_vkDestroyFramebuffer -> HS_vkDestroyFramebuffer
-
-instance VulkanProc "vkDestroyFramebuffer" where
-        type VkProcType "vkDestroyFramebuffer" = HS_vkDestroyFramebuffer
-        vkProcSymbol = _VkDestroyFramebuffer
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkDestroyFramebuffer
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VkCreateRenderPass :: CString
-
-pattern VkCreateRenderPass <- (is_VkCreateRenderPass -> True)
-  where VkCreateRenderPass = _VkCreateRenderPass
-
-{-# INLINE _VkCreateRenderPass #-}
-
-_VkCreateRenderPass :: CString
-_VkCreateRenderPass = Ptr "vkCreateRenderPass\NUL"##
-
-{-# INLINE is_VkCreateRenderPass #-}
-
-is_VkCreateRenderPass :: CString -> Bool
-is_VkCreateRenderPass = (EQ ==) . cmpCStrings _VkCreateRenderPass
-
-type VkCreateRenderPass = "vkCreateRenderPass"
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkCreateRenderPass
--- >     ( VkDevice device
--- >     , const VkRenderPassCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkRenderPass* pRenderPass
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateRenderPass vkCreateRenderPass registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkCreateRenderPass" vkCreateRenderPass
-               ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkRenderPassCreateInfo -- ^ pCreateInfo
-                                            ->
-                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                             -> Ptr VkRenderPass -- ^ pRenderPass
-                                                                 -> IO VkResult
-
-##else
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkCreateRenderPass
--- >     ( VkDevice device
--- >     , const VkRenderPassCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkRenderPass* pRenderPass
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateRenderPass vkCreateRenderPass registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCreateRenderPassSafe@ and @vkCreateRenderPass@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateRenderPass <- vkGetDeviceProc @VkCreateRenderPass vkDevice
---
--- or less efficient:
---
--- > myCreateRenderPass <- vkGetProc @VkCreateRenderPass
---
-vkCreateRenderPass ::
-                   VkDevice -- ^ device
-                            ->
-                     Ptr VkRenderPassCreateInfo -- ^ pCreateInfo
-                                                ->
-                       Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                 -> Ptr VkRenderPass -- ^ pRenderPass
-                                                                     -> IO VkResult
-vkCreateRenderPass
-  = unsafeDupablePerformIO (vkGetProc @VkCreateRenderPass)
-
-{-# NOINLINE vkCreateRenderPass #-}
-##endif
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkCreateRenderPass
--- >     ( VkDevice device
--- >     , const VkRenderPassCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkRenderPass* pRenderPass
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateRenderPass vkCreateRenderPass registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkCreateRenderPass"
-               vkCreateRenderPassSafe ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkRenderPassCreateInfo -- ^ pCreateInfo
-                                            ->
-                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                             -> Ptr VkRenderPass -- ^ pRenderPass
-                                                                 -> IO VkResult
-
-##else
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkCreateRenderPass
--- >     ( VkDevice device
--- >     , const VkRenderPassCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkRenderPass* pRenderPass
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateRenderPass vkCreateRenderPass registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCreateRenderPassSafe@ and @vkCreateRenderPass@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateRenderPass <- vkGetDeviceProc @VkCreateRenderPass vkDevice
---
--- or less efficient:
---
--- > myCreateRenderPass <- vkGetProc @VkCreateRenderPass
---
-vkCreateRenderPassSafe ::
-                       VkDevice -- ^ device
-                                ->
-                         Ptr VkRenderPassCreateInfo -- ^ pCreateInfo
-                                                    ->
-                           Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                     -> Ptr VkRenderPass -- ^ pRenderPass
-                                                                         -> IO VkResult
-vkCreateRenderPassSafe = vkCreateRenderPass
-
-{-# INLINE vkCreateRenderPassSafe #-}
-##endif
-
--- | Success codes: 'VK_SUCCESS'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
---   > VkResult vkCreateRenderPass
---   >     ( VkDevice device
---   >     , const VkRenderPassCreateInfo* pCreateInfo
---   >     , const VkAllocationCallbacks* pAllocator
---   >     , VkRenderPass* pRenderPass
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateRenderPass vkCreateRenderPass registry at www.khronos.org>
-type HS_vkCreateRenderPass =
-     VkDevice -- ^ device
-              ->
-       Ptr VkRenderPassCreateInfo -- ^ pCreateInfo
-                                  ->
-         Ptr VkAllocationCallbacks -- ^ pAllocator
-                                   -> Ptr VkRenderPass -- ^ pRenderPass
-                                                       -> IO VkResult
-
-type PFN_vkCreateRenderPass = FunPtr HS_vkCreateRenderPass
-
-foreign import ccall "dynamic" unwrapVkCreateRenderPass ::
-               PFN_vkCreateRenderPass -> HS_vkCreateRenderPass
-
-instance VulkanProc "vkCreateRenderPass" where
-        type VkProcType "vkCreateRenderPass" = HS_vkCreateRenderPass
-        vkProcSymbol = _VkCreateRenderPass
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCreateRenderPass
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VkDestroyRenderPass :: CString
-
-pattern VkDestroyRenderPass <- (is_VkDestroyRenderPass -> True)
-  where VkDestroyRenderPass = _VkDestroyRenderPass
-
-{-# INLINE _VkDestroyRenderPass #-}
-
-_VkDestroyRenderPass :: CString
-_VkDestroyRenderPass = Ptr "vkDestroyRenderPass\NUL"##
-
-{-# INLINE is_VkDestroyRenderPass #-}
-
-is_VkDestroyRenderPass :: CString -> Bool
-is_VkDestroyRenderPass = (EQ ==) . cmpCStrings _VkDestroyRenderPass
-
-type VkDestroyRenderPass = "vkDestroyRenderPass"
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- > void vkDestroyRenderPass
--- >     ( VkDevice device
--- >     , VkRenderPass renderPass
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyRenderPass vkDestroyRenderPass registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkDestroyRenderPass"
-               vkDestroyRenderPass ::
-               VkDevice -- ^ device
-                        -> VkRenderPass -- ^ renderPass
-                                        -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                     -> IO ()
-
-##else
--- |
--- > void vkDestroyRenderPass
--- >     ( VkDevice device
--- >     , VkRenderPass renderPass
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyRenderPass vkDestroyRenderPass registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkDestroyRenderPassSafe@ and @vkDestroyRenderPass@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDestroyRenderPass <- vkGetDeviceProc @VkDestroyRenderPass vkDevice
---
--- or less efficient:
---
--- > myDestroyRenderPass <- vkGetProc @VkDestroyRenderPass
---
-vkDestroyRenderPass ::
-                    VkDevice -- ^ device
-                             -> VkRenderPass -- ^ renderPass
-                                             -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                          -> IO ()
-vkDestroyRenderPass
-  = unsafeDupablePerformIO (vkGetProc @VkDestroyRenderPass)
-
-{-# NOINLINE vkDestroyRenderPass #-}
-##endif
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- > void vkDestroyRenderPass
--- >     ( VkDevice device
--- >     , VkRenderPass renderPass
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyRenderPass vkDestroyRenderPass registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkDestroyRenderPass"
-               vkDestroyRenderPassSafe ::
-               VkDevice -- ^ device
-                        -> VkRenderPass -- ^ renderPass
-                                        -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                     -> IO ()
-
-##else
--- |
--- > void vkDestroyRenderPass
--- >     ( VkDevice device
--- >     , VkRenderPass renderPass
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyRenderPass vkDestroyRenderPass registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkDestroyRenderPassSafe@ and @vkDestroyRenderPass@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDestroyRenderPass <- vkGetDeviceProc @VkDestroyRenderPass vkDevice
---
--- or less efficient:
---
--- > myDestroyRenderPass <- vkGetProc @VkDestroyRenderPass
---
-vkDestroyRenderPassSafe ::
-                        VkDevice -- ^ device
-                                 -> VkRenderPass -- ^ renderPass
-                                                 -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                              -> IO ()
-vkDestroyRenderPassSafe = vkDestroyRenderPass
-
-{-# INLINE vkDestroyRenderPassSafe #-}
-##endif
-
--- | > void vkDestroyRenderPass
---   >     ( VkDevice device
---   >     , VkRenderPass renderPass
---   >     , const VkAllocationCallbacks* pAllocator
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyRenderPass vkDestroyRenderPass registry at www.khronos.org>
-type HS_vkDestroyRenderPass =
-     VkDevice -- ^ device
-              -> VkRenderPass -- ^ renderPass
-                              -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                           -> IO ()
-
-type PFN_vkDestroyRenderPass = FunPtr HS_vkDestroyRenderPass
-
-foreign import ccall "dynamic" unwrapVkDestroyRenderPass ::
-               PFN_vkDestroyRenderPass -> HS_vkDestroyRenderPass
-
-instance VulkanProc "vkDestroyRenderPass" where
-        type VkProcType "vkDestroyRenderPass" = HS_vkDestroyRenderPass
-        vkProcSymbol = _VkDestroyRenderPass
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkDestroyRenderPass
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VkGetRenderAreaGranularity :: CString
-
-pattern VkGetRenderAreaGranularity <-
-        (is_VkGetRenderAreaGranularity -> True)
-  where VkGetRenderAreaGranularity = _VkGetRenderAreaGranularity
-
-{-# INLINE _VkGetRenderAreaGranularity #-}
-
-_VkGetRenderAreaGranularity :: CString
-_VkGetRenderAreaGranularity = Ptr "vkGetRenderAreaGranularity\NUL"##
-
-{-# INLINE is_VkGetRenderAreaGranularity #-}
-
-is_VkGetRenderAreaGranularity :: CString -> Bool
-is_VkGetRenderAreaGranularity
-  = (EQ ==) . cmpCStrings _VkGetRenderAreaGranularity
-
-type VkGetRenderAreaGranularity = "vkGetRenderAreaGranularity"
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- > void vkGetRenderAreaGranularity
--- >     ( VkDevice device
--- >     , VkRenderPass renderPass
--- >     , VkExtent2D* pGranularity
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetRenderAreaGranularity vkGetRenderAreaGranularity registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkGetRenderAreaGranularity"
-               vkGetRenderAreaGranularity ::
-               VkDevice -- ^ device
-                        -> VkRenderPass -- ^ renderPass
-                                        -> Ptr VkExtent2D -- ^ pGranularity
-                                                          -> IO ()
-
-##else
--- |
--- > void vkGetRenderAreaGranularity
--- >     ( VkDevice device
--- >     , VkRenderPass renderPass
--- >     , VkExtent2D* pGranularity
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetRenderAreaGranularity vkGetRenderAreaGranularity registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkGetRenderAreaGranularitySafe@ and @vkGetRenderAreaGranularity@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetRenderAreaGranularity <- vkGetDeviceProc @VkGetRenderAreaGranularity vkDevice
---
--- or less efficient:
---
--- > myGetRenderAreaGranularity <- vkGetProc @VkGetRenderAreaGranularity
---
-vkGetRenderAreaGranularity ::
-                           VkDevice -- ^ device
-                                    -> VkRenderPass -- ^ renderPass
-                                                    -> Ptr VkExtent2D -- ^ pGranularity
-                                                                      -> IO ()
-vkGetRenderAreaGranularity
-  = unsafeDupablePerformIO (vkGetProc @VkGetRenderAreaGranularity)
-
-{-# NOINLINE vkGetRenderAreaGranularity #-}
-##endif
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- > void vkGetRenderAreaGranularity
--- >     ( VkDevice device
--- >     , VkRenderPass renderPass
--- >     , VkExtent2D* pGranularity
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetRenderAreaGranularity vkGetRenderAreaGranularity registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkGetRenderAreaGranularity"
-               vkGetRenderAreaGranularitySafe ::
-               VkDevice -- ^ device
-                        -> VkRenderPass -- ^ renderPass
-                                        -> Ptr VkExtent2D -- ^ pGranularity
-                                                          -> IO ()
-
-##else
--- |
--- > void vkGetRenderAreaGranularity
--- >     ( VkDevice device
--- >     , VkRenderPass renderPass
--- >     , VkExtent2D* pGranularity
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetRenderAreaGranularity vkGetRenderAreaGranularity registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkGetRenderAreaGranularitySafe@ and @vkGetRenderAreaGranularity@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetRenderAreaGranularity <- vkGetDeviceProc @VkGetRenderAreaGranularity vkDevice
---
--- or less efficient:
---
--- > myGetRenderAreaGranularity <- vkGetProc @VkGetRenderAreaGranularity
---
-vkGetRenderAreaGranularitySafe ::
-                               VkDevice -- ^ device
-                                        -> VkRenderPass -- ^ renderPass
-                                                        -> Ptr VkExtent2D -- ^ pGranularity
-                                                                          -> IO ()
-vkGetRenderAreaGranularitySafe = vkGetRenderAreaGranularity
-
-{-# INLINE vkGetRenderAreaGranularitySafe #-}
-##endif
-
--- | > void vkGetRenderAreaGranularity
---   >     ( VkDevice device
---   >     , VkRenderPass renderPass
---   >     , VkExtent2D* pGranularity
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetRenderAreaGranularity vkGetRenderAreaGranularity registry at www.khronos.org>
-type HS_vkGetRenderAreaGranularity =
-     VkDevice -- ^ device
-              -> VkRenderPass -- ^ renderPass
-                              -> Ptr VkExtent2D -- ^ pGranularity
-                                                -> IO ()
-
-type PFN_vkGetRenderAreaGranularity =
-     FunPtr HS_vkGetRenderAreaGranularity
-
-foreign import ccall "dynamic" unwrapVkGetRenderAreaGranularity ::
-               PFN_vkGetRenderAreaGranularity -> HS_vkGetRenderAreaGranularity
-
-instance VulkanProc "vkGetRenderAreaGranularity" where
-        type VkProcType "vkGetRenderAreaGranularity" =
-             HS_vkGetRenderAreaGranularity
-        vkProcSymbol = _VkGetRenderAreaGranularity
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkGetRenderAreaGranularity
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VkCreateCommandPool :: CString
-
-pattern VkCreateCommandPool <- (is_VkCreateCommandPool -> True)
-  where VkCreateCommandPool = _VkCreateCommandPool
-
-{-# INLINE _VkCreateCommandPool #-}
-
-_VkCreateCommandPool :: CString
-_VkCreateCommandPool = Ptr "vkCreateCommandPool\NUL"##
-
-{-# INLINE is_VkCreateCommandPool #-}
-
-is_VkCreateCommandPool :: CString -> Bool
-is_VkCreateCommandPool = (EQ ==) . cmpCStrings _VkCreateCommandPool
-
-type VkCreateCommandPool = "vkCreateCommandPool"
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkCreateCommandPool
--- >     ( VkDevice device
--- >     , const VkCommandPoolCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkCommandPool* pCommandPool
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateCommandPool vkCreateCommandPool registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkCreateCommandPool"
-               vkCreateCommandPool ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkCommandPoolCreateInfo -- ^ pCreateInfo
-                                             ->
-                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                             -> Ptr VkCommandPool -- ^ pCommandPool
-                                                                  -> IO VkResult
-
-##else
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkCreateCommandPool
--- >     ( VkDevice device
--- >     , const VkCommandPoolCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkCommandPool* pCommandPool
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateCommandPool vkCreateCommandPool registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCreateCommandPoolSafe@ and @vkCreateCommandPool@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateCommandPool <- vkGetDeviceProc @VkCreateCommandPool vkDevice
---
--- or less efficient:
---
--- > myCreateCommandPool <- vkGetProc @VkCreateCommandPool
---
-vkCreateCommandPool ::
-                    VkDevice -- ^ device
-                             ->
-                      Ptr VkCommandPoolCreateInfo -- ^ pCreateInfo
-                                                  ->
-                        Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                  -> Ptr VkCommandPool -- ^ pCommandPool
-                                                                       -> IO VkResult
-vkCreateCommandPool
-  = unsafeDupablePerformIO (vkGetProc @VkCreateCommandPool)
-
-{-# NOINLINE vkCreateCommandPool #-}
-##endif
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkCreateCommandPool
--- >     ( VkDevice device
--- >     , const VkCommandPoolCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkCommandPool* pCommandPool
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateCommandPool vkCreateCommandPool registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkCreateCommandPool"
-               vkCreateCommandPoolSafe ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkCommandPoolCreateInfo -- ^ pCreateInfo
-                                             ->
-                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                             -> Ptr VkCommandPool -- ^ pCommandPool
-                                                                  -> IO VkResult
-
-##else
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkCreateCommandPool
--- >     ( VkDevice device
--- >     , const VkCommandPoolCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkCommandPool* pCommandPool
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateCommandPool vkCreateCommandPool registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCreateCommandPoolSafe@ and @vkCreateCommandPool@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateCommandPool <- vkGetDeviceProc @VkCreateCommandPool vkDevice
---
--- or less efficient:
---
--- > myCreateCommandPool <- vkGetProc @VkCreateCommandPool
---
-vkCreateCommandPoolSafe ::
-                        VkDevice -- ^ device
-                                 ->
-                          Ptr VkCommandPoolCreateInfo -- ^ pCreateInfo
-                                                      ->
-                            Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                      -> Ptr VkCommandPool -- ^ pCommandPool
-                                                                           -> IO VkResult
-vkCreateCommandPoolSafe = vkCreateCommandPool
-
-{-# INLINE vkCreateCommandPoolSafe #-}
-##endif
-
--- | Success codes: 'VK_SUCCESS'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
---   > VkResult vkCreateCommandPool
---   >     ( VkDevice device
---   >     , const VkCommandPoolCreateInfo* pCreateInfo
---   >     , const VkAllocationCallbacks* pAllocator
---   >     , VkCommandPool* pCommandPool
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateCommandPool vkCreateCommandPool registry at www.khronos.org>
-type HS_vkCreateCommandPool =
-     VkDevice -- ^ device
-              ->
-       Ptr VkCommandPoolCreateInfo -- ^ pCreateInfo
-                                   ->
-         Ptr VkAllocationCallbacks -- ^ pAllocator
-                                   -> Ptr VkCommandPool -- ^ pCommandPool
-                                                        -> IO VkResult
-
-type PFN_vkCreateCommandPool = FunPtr HS_vkCreateCommandPool
-
-foreign import ccall "dynamic" unwrapVkCreateCommandPool ::
-               PFN_vkCreateCommandPool -> HS_vkCreateCommandPool
-
-instance VulkanProc "vkCreateCommandPool" where
-        type VkProcType "vkCreateCommandPool" = HS_vkCreateCommandPool
-        vkProcSymbol = _VkCreateCommandPool
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCreateCommandPool
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VkDestroyCommandPool :: CString
-
-pattern VkDestroyCommandPool <- (is_VkDestroyCommandPool -> True)
-  where VkDestroyCommandPool = _VkDestroyCommandPool
-
-{-# INLINE _VkDestroyCommandPool #-}
-
-_VkDestroyCommandPool :: CString
-_VkDestroyCommandPool = Ptr "vkDestroyCommandPool\NUL"##
-
-{-# INLINE is_VkDestroyCommandPool #-}
-
-is_VkDestroyCommandPool :: CString -> Bool
-is_VkDestroyCommandPool
-  = (EQ ==) . cmpCStrings _VkDestroyCommandPool
-
-type VkDestroyCommandPool = "vkDestroyCommandPool"
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- > void vkDestroyCommandPool
--- >     ( VkDevice device
--- >     , VkCommandPool commandPool
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyCommandPool vkDestroyCommandPool registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkDestroyCommandPool"
-               vkDestroyCommandPool ::
-               VkDevice -- ^ device
-                        -> VkCommandPool -- ^ commandPool
-                                         -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                      -> IO ()
-
-##else
--- |
--- > void vkDestroyCommandPool
--- >     ( VkDevice device
--- >     , VkCommandPool commandPool
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyCommandPool vkDestroyCommandPool registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkDestroyCommandPoolSafe@ and @vkDestroyCommandPool@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDestroyCommandPool <- vkGetDeviceProc @VkDestroyCommandPool vkDevice
---
--- or less efficient:
---
--- > myDestroyCommandPool <- vkGetProc @VkDestroyCommandPool
---
-vkDestroyCommandPool ::
-                     VkDevice -- ^ device
-                              -> VkCommandPool -- ^ commandPool
-                                               -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                            -> IO ()
-vkDestroyCommandPool
-  = unsafeDupablePerformIO (vkGetProc @VkDestroyCommandPool)
-
-{-# NOINLINE vkDestroyCommandPool #-}
-##endif
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- > void vkDestroyCommandPool
--- >     ( VkDevice device
--- >     , VkCommandPool commandPool
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyCommandPool vkDestroyCommandPool registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkDestroyCommandPool"
-               vkDestroyCommandPoolSafe ::
-               VkDevice -- ^ device
-                        -> VkCommandPool -- ^ commandPool
-                                         -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                      -> IO ()
-
-##else
--- |
--- > void vkDestroyCommandPool
--- >     ( VkDevice device
--- >     , VkCommandPool commandPool
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyCommandPool vkDestroyCommandPool registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkDestroyCommandPoolSafe@ and @vkDestroyCommandPool@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDestroyCommandPool <- vkGetDeviceProc @VkDestroyCommandPool vkDevice
---
--- or less efficient:
---
--- > myDestroyCommandPool <- vkGetProc @VkDestroyCommandPool
---
-vkDestroyCommandPoolSafe ::
-                         VkDevice -- ^ device
-                                  -> VkCommandPool -- ^ commandPool
-                                                   -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                                -> IO ()
-vkDestroyCommandPoolSafe = vkDestroyCommandPool
-
-{-# INLINE vkDestroyCommandPoolSafe #-}
-##endif
-
--- | > void vkDestroyCommandPool
---   >     ( VkDevice device
---   >     , VkCommandPool commandPool
---   >     , const VkAllocationCallbacks* pAllocator
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyCommandPool vkDestroyCommandPool registry at www.khronos.org>
-type HS_vkDestroyCommandPool =
-     VkDevice -- ^ device
-              -> VkCommandPool -- ^ commandPool
-                               -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                            -> IO ()
-
-type PFN_vkDestroyCommandPool = FunPtr HS_vkDestroyCommandPool
-
-foreign import ccall "dynamic" unwrapVkDestroyCommandPool ::
-               PFN_vkDestroyCommandPool -> HS_vkDestroyCommandPool
-
-instance VulkanProc "vkDestroyCommandPool" where
-        type VkProcType "vkDestroyCommandPool" = HS_vkDestroyCommandPool
-        vkProcSymbol = _VkDestroyCommandPool
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkDestroyCommandPool
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VkResetCommandPool :: CString
-
-pattern VkResetCommandPool <- (is_VkResetCommandPool -> True)
-  where VkResetCommandPool = _VkResetCommandPool
-
-{-# INLINE _VkResetCommandPool #-}
-
-_VkResetCommandPool :: CString
-_VkResetCommandPool = Ptr "vkResetCommandPool\NUL"##
-
-{-# INLINE is_VkResetCommandPool #-}
-
-is_VkResetCommandPool :: CString -> Bool
-is_VkResetCommandPool = (EQ ==) . cmpCStrings _VkResetCommandPool
-
-type VkResetCommandPool = "vkResetCommandPool"
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkResetCommandPool
--- >     ( VkDevice device
--- >     , VkCommandPool commandPool
--- >     , VkCommandPoolResetFlags flags
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkResetCommandPool vkResetCommandPool registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkResetCommandPool" vkResetCommandPool
-               ::
-               VkDevice -- ^ device
-                        -> VkCommandPool -- ^ commandPool
-                                         -> VkCommandPoolResetFlags -- ^ flags
-                                                                    -> IO VkResult
-
-##else
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkResetCommandPool
--- >     ( VkDevice device
--- >     , VkCommandPool commandPool
--- >     , VkCommandPoolResetFlags flags
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkResetCommandPool vkResetCommandPool registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkResetCommandPoolSafe@ and @vkResetCommandPool@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myResetCommandPool <- vkGetDeviceProc @VkResetCommandPool vkDevice
---
--- or less efficient:
---
--- > myResetCommandPool <- vkGetProc @VkResetCommandPool
---
-vkResetCommandPool ::
-                   VkDevice -- ^ device
-                            -> VkCommandPool -- ^ commandPool
-                                             -> VkCommandPoolResetFlags -- ^ flags
-                                                                        -> IO VkResult
-vkResetCommandPool
-  = unsafeDupablePerformIO (vkGetProc @VkResetCommandPool)
-
-{-# NOINLINE vkResetCommandPool #-}
-##endif
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkResetCommandPool
--- >     ( VkDevice device
--- >     , VkCommandPool commandPool
--- >     , VkCommandPoolResetFlags flags
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkResetCommandPool vkResetCommandPool registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkResetCommandPool"
-               vkResetCommandPoolSafe ::
-               VkDevice -- ^ device
-                        -> VkCommandPool -- ^ commandPool
-                                         -> VkCommandPoolResetFlags -- ^ flags
-                                                                    -> IO VkResult
-
-##else
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkResetCommandPool
--- >     ( VkDevice device
--- >     , VkCommandPool commandPool
--- >     , VkCommandPoolResetFlags flags
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkResetCommandPool vkResetCommandPool registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkResetCommandPoolSafe@ and @vkResetCommandPool@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myResetCommandPool <- vkGetDeviceProc @VkResetCommandPool vkDevice
---
--- or less efficient:
---
--- > myResetCommandPool <- vkGetProc @VkResetCommandPool
---
-vkResetCommandPoolSafe ::
-                       VkDevice -- ^ device
-                                -> VkCommandPool -- ^ commandPool
-                                                 -> VkCommandPoolResetFlags -- ^ flags
-                                                                            -> IO VkResult
-vkResetCommandPoolSafe = vkResetCommandPool
-
-{-# INLINE vkResetCommandPoolSafe #-}
-##endif
-
--- | Success codes: 'VK_SUCCESS'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
---   > VkResult vkResetCommandPool
---   >     ( VkDevice device
---   >     , VkCommandPool commandPool
---   >     , VkCommandPoolResetFlags flags
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkResetCommandPool vkResetCommandPool registry at www.khronos.org>
-type HS_vkResetCommandPool =
-     VkDevice -- ^ device
-              -> VkCommandPool -- ^ commandPool
-                               -> VkCommandPoolResetFlags -- ^ flags
-                                                          -> IO VkResult
-
-type PFN_vkResetCommandPool = FunPtr HS_vkResetCommandPool
-
-foreign import ccall "dynamic" unwrapVkResetCommandPool ::
-               PFN_vkResetCommandPool -> HS_vkResetCommandPool
-
-instance VulkanProc "vkResetCommandPool" where
-        type VkProcType "vkResetCommandPool" = HS_vkResetCommandPool
-        vkProcSymbol = _VkResetCommandPool
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkResetCommandPool
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VkAllocateCommandBuffers :: CString
-
-pattern VkAllocateCommandBuffers <-
-        (is_VkAllocateCommandBuffers -> True)
-  where VkAllocateCommandBuffers = _VkAllocateCommandBuffers
-
-{-# INLINE _VkAllocateCommandBuffers #-}
-
-_VkAllocateCommandBuffers :: CString
-_VkAllocateCommandBuffers = Ptr "vkAllocateCommandBuffers\NUL"##
-
-{-# INLINE is_VkAllocateCommandBuffers #-}
-
-is_VkAllocateCommandBuffers :: CString -> Bool
-is_VkAllocateCommandBuffers
-  = (EQ ==) . cmpCStrings _VkAllocateCommandBuffers
-
-type VkAllocateCommandBuffers = "vkAllocateCommandBuffers"
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkAllocateCommandBuffers
--- >     ( VkDevice device
--- >     , const VkCommandBufferAllocateInfo* pAllocateInfo
--- >     , VkCommandBuffer* pCommandBuffers
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkAllocateCommandBuffers vkAllocateCommandBuffers registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkAllocateCommandBuffers"
-               vkAllocateCommandBuffers ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkCommandBufferAllocateInfo -- ^ pAllocateInfo
-                                                 ->
-                   Ptr VkCommandBuffer -- ^ pCommandBuffers
-                                       -> IO VkResult
-
-##else
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkAllocateCommandBuffers
--- >     ( VkDevice device
--- >     , const VkCommandBufferAllocateInfo* pAllocateInfo
--- >     , VkCommandBuffer* pCommandBuffers
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkAllocateCommandBuffers vkAllocateCommandBuffers registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkAllocateCommandBuffersSafe@ and @vkAllocateCommandBuffers@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myAllocateCommandBuffers <- vkGetDeviceProc @VkAllocateCommandBuffers vkDevice
---
--- or less efficient:
---
--- > myAllocateCommandBuffers <- vkGetProc @VkAllocateCommandBuffers
---
-vkAllocateCommandBuffers ::
-                         VkDevice -- ^ device
-                                  ->
-                           Ptr VkCommandBufferAllocateInfo -- ^ pAllocateInfo
-                                                           ->
-                             Ptr VkCommandBuffer -- ^ pCommandBuffers
-                                                 -> IO VkResult
-vkAllocateCommandBuffers
-  = unsafeDupablePerformIO (vkGetProc @VkAllocateCommandBuffers)
-
-{-# NOINLINE vkAllocateCommandBuffers #-}
-##endif
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkAllocateCommandBuffers
--- >     ( VkDevice device
--- >     , const VkCommandBufferAllocateInfo* pAllocateInfo
--- >     , VkCommandBuffer* pCommandBuffers
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkAllocateCommandBuffers vkAllocateCommandBuffers registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkAllocateCommandBuffers"
-               vkAllocateCommandBuffersSafe ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkCommandBufferAllocateInfo -- ^ pAllocateInfo
-                                                 ->
-                   Ptr VkCommandBuffer -- ^ pCommandBuffers
-                                       -> IO VkResult
-
-##else
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkAllocateCommandBuffers
--- >     ( VkDevice device
--- >     , const VkCommandBufferAllocateInfo* pAllocateInfo
--- >     , VkCommandBuffer* pCommandBuffers
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkAllocateCommandBuffers vkAllocateCommandBuffers registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkAllocateCommandBuffersSafe@ and @vkAllocateCommandBuffers@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myAllocateCommandBuffers <- vkGetDeviceProc @VkAllocateCommandBuffers vkDevice
---
--- or less efficient:
---
--- > myAllocateCommandBuffers <- vkGetProc @VkAllocateCommandBuffers
---
-vkAllocateCommandBuffersSafe ::
-                             VkDevice -- ^ device
-                                      ->
-                               Ptr VkCommandBufferAllocateInfo -- ^ pAllocateInfo
-                                                               ->
-                                 Ptr VkCommandBuffer -- ^ pCommandBuffers
-                                                     -> IO VkResult
-vkAllocateCommandBuffersSafe = vkAllocateCommandBuffers
-
-{-# INLINE vkAllocateCommandBuffersSafe #-}
-##endif
-
--- | Success codes: 'VK_SUCCESS'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
---   > VkResult vkAllocateCommandBuffers
---   >     ( VkDevice device
---   >     , const VkCommandBufferAllocateInfo* pAllocateInfo
---   >     , VkCommandBuffer* pCommandBuffers
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkAllocateCommandBuffers vkAllocateCommandBuffers registry at www.khronos.org>
-type HS_vkAllocateCommandBuffers =
-     VkDevice -- ^ device
-              ->
-       Ptr VkCommandBufferAllocateInfo -- ^ pAllocateInfo
-                                       ->
-         Ptr VkCommandBuffer -- ^ pCommandBuffers
-                             -> IO VkResult
-
-type PFN_vkAllocateCommandBuffers =
-     FunPtr HS_vkAllocateCommandBuffers
-
-foreign import ccall "dynamic" unwrapVkAllocateCommandBuffers ::
-               PFN_vkAllocateCommandBuffers -> HS_vkAllocateCommandBuffers
-
-instance VulkanProc "vkAllocateCommandBuffers" where
-        type VkProcType "vkAllocateCommandBuffers" =
-             HS_vkAllocateCommandBuffers
-        vkProcSymbol = _VkAllocateCommandBuffers
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkAllocateCommandBuffers
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VkFreeCommandBuffers :: CString
-
-pattern VkFreeCommandBuffers <- (is_VkFreeCommandBuffers -> True)
-  where VkFreeCommandBuffers = _VkFreeCommandBuffers
-
-{-# INLINE _VkFreeCommandBuffers #-}
-
-_VkFreeCommandBuffers :: CString
-_VkFreeCommandBuffers = Ptr "vkFreeCommandBuffers\NUL"##
-
-{-# INLINE is_VkFreeCommandBuffers #-}
-
-is_VkFreeCommandBuffers :: CString -> Bool
-is_VkFreeCommandBuffers
-  = (EQ ==) . cmpCStrings _VkFreeCommandBuffers
-
-type VkFreeCommandBuffers = "vkFreeCommandBuffers"
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- > void vkFreeCommandBuffers
--- >     ( VkDevice device
--- >     , VkCommandPool commandPool
--- >     , uint32_t commandBufferCount
--- >     , const VkCommandBuffer* pCommandBuffers
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkFreeCommandBuffers vkFreeCommandBuffers registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkFreeCommandBuffers"
-               vkFreeCommandBuffers ::
-               VkDevice -- ^ device
-                        -> VkCommandPool -- ^ commandPool
-                                         -> Word32 -- ^ commandBufferCount
-                                                   -> Ptr VkCommandBuffer -- ^ pCommandBuffers
-                                                                          -> IO ()
-
-##else
--- |
--- > void vkFreeCommandBuffers
--- >     ( VkDevice device
--- >     , VkCommandPool commandPool
--- >     , uint32_t commandBufferCount
--- >     , const VkCommandBuffer* pCommandBuffers
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkFreeCommandBuffers vkFreeCommandBuffers registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkFreeCommandBuffersSafe@ and @vkFreeCommandBuffers@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myFreeCommandBuffers <- vkGetDeviceProc @VkFreeCommandBuffers vkDevice
---
--- or less efficient:
---
--- > myFreeCommandBuffers <- vkGetProc @VkFreeCommandBuffers
---
-vkFreeCommandBuffers ::
-                     VkDevice -- ^ device
-                              -> VkCommandPool -- ^ commandPool
-                                               -> Word32 -- ^ commandBufferCount
-                                                         -> Ptr VkCommandBuffer -- ^ pCommandBuffers
-                                                                                -> IO ()
-vkFreeCommandBuffers
-  = unsafeDupablePerformIO (vkGetProc @VkFreeCommandBuffers)
-
-{-# NOINLINE vkFreeCommandBuffers #-}
-##endif
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- > void vkFreeCommandBuffers
--- >     ( VkDevice device
--- >     , VkCommandPool commandPool
--- >     , uint32_t commandBufferCount
--- >     , const VkCommandBuffer* pCommandBuffers
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkFreeCommandBuffers vkFreeCommandBuffers registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkFreeCommandBuffers"
-               vkFreeCommandBuffersSafe ::
-               VkDevice -- ^ device
-                        -> VkCommandPool -- ^ commandPool
-                                         -> Word32 -- ^ commandBufferCount
-                                                   -> Ptr VkCommandBuffer -- ^ pCommandBuffers
-                                                                          -> IO ()
-
-##else
--- |
--- > void vkFreeCommandBuffers
--- >     ( VkDevice device
--- >     , VkCommandPool commandPool
--- >     , uint32_t commandBufferCount
--- >     , const VkCommandBuffer* pCommandBuffers
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkFreeCommandBuffers vkFreeCommandBuffers registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkFreeCommandBuffersSafe@ and @vkFreeCommandBuffers@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myFreeCommandBuffers <- vkGetDeviceProc @VkFreeCommandBuffers vkDevice
---
--- or less efficient:
---
--- > myFreeCommandBuffers <- vkGetProc @VkFreeCommandBuffers
---
-vkFreeCommandBuffersSafe ::
-                         VkDevice -- ^ device
-                                  -> VkCommandPool -- ^ commandPool
-                                                   -> Word32 -- ^ commandBufferCount
-                                                             -> Ptr VkCommandBuffer -- ^ pCommandBuffers
-                                                                                    -> IO ()
-vkFreeCommandBuffersSafe = vkFreeCommandBuffers
-
-{-# INLINE vkFreeCommandBuffersSafe #-}
-##endif
-
--- | > void vkFreeCommandBuffers
---   >     ( VkDevice device
---   >     , VkCommandPool commandPool
---   >     , uint32_t commandBufferCount
---   >     , const VkCommandBuffer* pCommandBuffers
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkFreeCommandBuffers vkFreeCommandBuffers registry at www.khronos.org>
-type HS_vkFreeCommandBuffers =
-     VkDevice -- ^ device
-              -> VkCommandPool -- ^ commandPool
-                               -> Word32 -- ^ commandBufferCount
-                                         -> Ptr VkCommandBuffer -- ^ pCommandBuffers
-                                                                -> IO ()
-
-type PFN_vkFreeCommandBuffers = FunPtr HS_vkFreeCommandBuffers
-
-foreign import ccall "dynamic" unwrapVkFreeCommandBuffers ::
-               PFN_vkFreeCommandBuffers -> HS_vkFreeCommandBuffers
-
-instance VulkanProc "vkFreeCommandBuffers" where
-        type VkProcType "vkFreeCommandBuffers" = HS_vkFreeCommandBuffers
-        vkProcSymbol = _VkFreeCommandBuffers
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkFreeCommandBuffers
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VkBeginCommandBuffer :: CString
-
-pattern VkBeginCommandBuffer <- (is_VkBeginCommandBuffer -> True)
-  where VkBeginCommandBuffer = _VkBeginCommandBuffer
-
-{-# INLINE _VkBeginCommandBuffer #-}
-
-_VkBeginCommandBuffer :: CString
-_VkBeginCommandBuffer = Ptr "vkBeginCommandBuffer\NUL"##
-
-{-# INLINE is_VkBeginCommandBuffer #-}
-
-is_VkBeginCommandBuffer :: CString -> Bool
-is_VkBeginCommandBuffer
-  = (EQ ==) . cmpCStrings _VkBeginCommandBuffer
-
-type VkBeginCommandBuffer = "vkBeginCommandBuffer"
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkBeginCommandBuffer
--- >     ( VkCommandBuffer commandBuffer
--- >     , const VkCommandBufferBeginInfo* pBeginInfo
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkBeginCommandBuffer vkBeginCommandBuffer registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkBeginCommandBuffer"
-               vkBeginCommandBuffer ::
-               VkCommandBuffer -- ^ commandBuffer
-                               -> Ptr VkCommandBufferBeginInfo -- ^ pBeginInfo
-                                                               -> IO VkResult
-
-##else
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkBeginCommandBuffer
--- >     ( VkCommandBuffer commandBuffer
--- >     , const VkCommandBufferBeginInfo* pBeginInfo
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkBeginCommandBuffer vkBeginCommandBuffer registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkBeginCommandBufferSafe@ and @vkBeginCommandBuffer@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myBeginCommandBuffer <- vkGetInstanceProc @VkBeginCommandBuffer vkInstance
---
--- or less efficient:
---
--- > myBeginCommandBuffer <- vkGetProc @VkBeginCommandBuffer
---
-vkBeginCommandBuffer ::
-                     VkCommandBuffer -- ^ commandBuffer
-                                     -> Ptr VkCommandBufferBeginInfo -- ^ pBeginInfo
-                                                                     -> IO VkResult
-vkBeginCommandBuffer
-  = unsafeDupablePerformIO (vkGetProc @VkBeginCommandBuffer)
-
-{-# NOINLINE vkBeginCommandBuffer #-}
-##endif
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkBeginCommandBuffer
--- >     ( VkCommandBuffer commandBuffer
--- >     , const VkCommandBufferBeginInfo* pBeginInfo
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkBeginCommandBuffer vkBeginCommandBuffer registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkBeginCommandBuffer"
-               vkBeginCommandBufferSafe ::
-               VkCommandBuffer -- ^ commandBuffer
-                               -> Ptr VkCommandBufferBeginInfo -- ^ pBeginInfo
-                                                               -> IO VkResult
-
-##else
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkBeginCommandBuffer
--- >     ( VkCommandBuffer commandBuffer
--- >     , const VkCommandBufferBeginInfo* pBeginInfo
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkBeginCommandBuffer vkBeginCommandBuffer registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkBeginCommandBufferSafe@ and @vkBeginCommandBuffer@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myBeginCommandBuffer <- vkGetInstanceProc @VkBeginCommandBuffer vkInstance
---
--- or less efficient:
---
--- > myBeginCommandBuffer <- vkGetProc @VkBeginCommandBuffer
---
-vkBeginCommandBufferSafe ::
-                         VkCommandBuffer -- ^ commandBuffer
-                                         -> Ptr VkCommandBufferBeginInfo -- ^ pBeginInfo
-                                                                         -> IO VkResult
-vkBeginCommandBufferSafe = vkBeginCommandBuffer
-
-{-# INLINE vkBeginCommandBufferSafe #-}
-##endif
-
--- | Success codes: 'VK_SUCCESS'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
---   > VkResult vkBeginCommandBuffer
---   >     ( VkCommandBuffer commandBuffer
---   >     , const VkCommandBufferBeginInfo* pBeginInfo
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkBeginCommandBuffer vkBeginCommandBuffer registry at www.khronos.org>
-type HS_vkBeginCommandBuffer =
-     VkCommandBuffer -- ^ commandBuffer
-                     -> Ptr VkCommandBufferBeginInfo -- ^ pBeginInfo
-                                                     -> IO VkResult
-
-type PFN_vkBeginCommandBuffer = FunPtr HS_vkBeginCommandBuffer
-
-foreign import ccall "dynamic" unwrapVkBeginCommandBuffer ::
-               PFN_vkBeginCommandBuffer -> HS_vkBeginCommandBuffer
-
-instance VulkanProc "vkBeginCommandBuffer" where
-        type VkProcType "vkBeginCommandBuffer" = HS_vkBeginCommandBuffer
-        vkProcSymbol = _VkBeginCommandBuffer
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkBeginCommandBuffer
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VkEndCommandBuffer :: CString
-
-pattern VkEndCommandBuffer <- (is_VkEndCommandBuffer -> True)
-  where VkEndCommandBuffer = _VkEndCommandBuffer
-
-{-# INLINE _VkEndCommandBuffer #-}
-
-_VkEndCommandBuffer :: CString
-_VkEndCommandBuffer = Ptr "vkEndCommandBuffer\NUL"##
-
-{-# INLINE is_VkEndCommandBuffer #-}
-
-is_VkEndCommandBuffer :: CString -> Bool
-is_VkEndCommandBuffer = (EQ ==) . cmpCStrings _VkEndCommandBuffer
-
-type VkEndCommandBuffer = "vkEndCommandBuffer"
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkEndCommandBuffer
--- >     ( VkCommandBuffer commandBuffer
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEndCommandBuffer vkEndCommandBuffer registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkEndCommandBuffer" vkEndCommandBuffer
-               :: VkCommandBuffer -- ^ commandBuffer
-                                  -> IO VkResult
-
-##else
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkEndCommandBuffer
--- >     ( VkCommandBuffer commandBuffer
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEndCommandBuffer vkEndCommandBuffer registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkEndCommandBufferSafe@ and @vkEndCommandBuffer@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myEndCommandBuffer <- vkGetInstanceProc @VkEndCommandBuffer vkInstance
---
--- or less efficient:
---
--- > myEndCommandBuffer <- vkGetProc @VkEndCommandBuffer
---
-vkEndCommandBuffer :: VkCommandBuffer -- ^ commandBuffer
-                                      -> IO VkResult
-vkEndCommandBuffer
-  = unsafeDupablePerformIO (vkGetProc @VkEndCommandBuffer)
-
-{-# NOINLINE vkEndCommandBuffer #-}
-##endif
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkEndCommandBuffer
--- >     ( VkCommandBuffer commandBuffer
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEndCommandBuffer vkEndCommandBuffer registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkEndCommandBuffer"
-               vkEndCommandBufferSafe :: VkCommandBuffer -- ^ commandBuffer
-                                                         -> IO VkResult
-
-##else
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkEndCommandBuffer
--- >     ( VkCommandBuffer commandBuffer
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEndCommandBuffer vkEndCommandBuffer registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkEndCommandBufferSafe@ and @vkEndCommandBuffer@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myEndCommandBuffer <- vkGetInstanceProc @VkEndCommandBuffer vkInstance
---
--- or less efficient:
---
--- > myEndCommandBuffer <- vkGetProc @VkEndCommandBuffer
---
-vkEndCommandBufferSafe :: VkCommandBuffer -- ^ commandBuffer
-                                          -> IO VkResult
-vkEndCommandBufferSafe = vkEndCommandBuffer
-
-{-# INLINE vkEndCommandBufferSafe #-}
-##endif
-
--- | Success codes: 'VK_SUCCESS'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
---   > VkResult vkEndCommandBuffer
---   >     ( VkCommandBuffer commandBuffer
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEndCommandBuffer vkEndCommandBuffer registry at www.khronos.org>
-type HS_vkEndCommandBuffer = VkCommandBuffer -- ^ commandBuffer
-                                             -> IO VkResult
-
-type PFN_vkEndCommandBuffer = FunPtr HS_vkEndCommandBuffer
-
-foreign import ccall "dynamic" unwrapVkEndCommandBuffer ::
-               PFN_vkEndCommandBuffer -> HS_vkEndCommandBuffer
-
-instance VulkanProc "vkEndCommandBuffer" where
-        type VkProcType "vkEndCommandBuffer" = HS_vkEndCommandBuffer
-        vkProcSymbol = _VkEndCommandBuffer
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkEndCommandBuffer
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VkResetCommandBuffer :: CString
-
-pattern VkResetCommandBuffer <- (is_VkResetCommandBuffer -> True)
-  where VkResetCommandBuffer = _VkResetCommandBuffer
-
-{-# INLINE _VkResetCommandBuffer #-}
-
-_VkResetCommandBuffer :: CString
-_VkResetCommandBuffer = Ptr "vkResetCommandBuffer\NUL"##
-
-{-# INLINE is_VkResetCommandBuffer #-}
-
-is_VkResetCommandBuffer :: CString -> Bool
-is_VkResetCommandBuffer
-  = (EQ ==) . cmpCStrings _VkResetCommandBuffer
-
-type VkResetCommandBuffer = "vkResetCommandBuffer"
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkResetCommandBuffer
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkCommandBufferResetFlags flags
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkResetCommandBuffer vkResetCommandBuffer registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkResetCommandBuffer"
-               vkResetCommandBuffer ::
-               VkCommandBuffer -- ^ commandBuffer
-                               -> VkCommandBufferResetFlags -- ^ flags
-                                                            -> IO VkResult
-
-##else
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkResetCommandBuffer
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkCommandBufferResetFlags flags
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkResetCommandBuffer vkResetCommandBuffer registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkResetCommandBufferSafe@ and @vkResetCommandBuffer@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myResetCommandBuffer <- vkGetInstanceProc @VkResetCommandBuffer vkInstance
---
--- or less efficient:
---
--- > myResetCommandBuffer <- vkGetProc @VkResetCommandBuffer
---
-vkResetCommandBuffer ::
-                     VkCommandBuffer -- ^ commandBuffer
-                                     -> VkCommandBufferResetFlags -- ^ flags
-                                                                  -> IO VkResult
-vkResetCommandBuffer
-  = unsafeDupablePerformIO (vkGetProc @VkResetCommandBuffer)
-
-{-# NOINLINE vkResetCommandBuffer #-}
-##endif
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkResetCommandBuffer
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkCommandBufferResetFlags flags
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkResetCommandBuffer vkResetCommandBuffer registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkResetCommandBuffer"
-               vkResetCommandBufferSafe ::
-               VkCommandBuffer -- ^ commandBuffer
-                               -> VkCommandBufferResetFlags -- ^ flags
-                                                            -> IO VkResult
-
-##else
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkResetCommandBuffer
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkCommandBufferResetFlags flags
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkResetCommandBuffer vkResetCommandBuffer registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkResetCommandBufferSafe@ and @vkResetCommandBuffer@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myResetCommandBuffer <- vkGetInstanceProc @VkResetCommandBuffer vkInstance
---
--- or less efficient:
---
--- > myResetCommandBuffer <- vkGetProc @VkResetCommandBuffer
---
-vkResetCommandBufferSafe ::
-                         VkCommandBuffer -- ^ commandBuffer
-                                         -> VkCommandBufferResetFlags -- ^ flags
-                                                                      -> IO VkResult
-vkResetCommandBufferSafe = vkResetCommandBuffer
-
-{-# INLINE vkResetCommandBufferSafe #-}
-##endif
-
--- | Success codes: 'VK_SUCCESS'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
---   > VkResult vkResetCommandBuffer
---   >     ( VkCommandBuffer commandBuffer
---   >     , VkCommandBufferResetFlags flags
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkResetCommandBuffer vkResetCommandBuffer registry at www.khronos.org>
-type HS_vkResetCommandBuffer =
-     VkCommandBuffer -- ^ commandBuffer
-                     -> VkCommandBufferResetFlags -- ^ flags
-                                                  -> IO VkResult
-
-type PFN_vkResetCommandBuffer = FunPtr HS_vkResetCommandBuffer
-
-foreign import ccall "dynamic" unwrapVkResetCommandBuffer ::
-               PFN_vkResetCommandBuffer -> HS_vkResetCommandBuffer
-
-instance VulkanProc "vkResetCommandBuffer" where
-        type VkProcType "vkResetCommandBuffer" = HS_vkResetCommandBuffer
-        vkProcSymbol = _VkResetCommandBuffer
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkResetCommandBuffer
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VkCmdBindPipeline :: CString
-
-pattern VkCmdBindPipeline <- (is_VkCmdBindPipeline -> True)
-  where VkCmdBindPipeline = _VkCmdBindPipeline
-
-{-# INLINE _VkCmdBindPipeline #-}
-
-_VkCmdBindPipeline :: CString
-_VkCmdBindPipeline = Ptr "vkCmdBindPipeline\NUL"##
-
-{-# INLINE is_VkCmdBindPipeline #-}
-
-is_VkCmdBindPipeline :: CString -> Bool
-is_VkCmdBindPipeline = (EQ ==) . cmpCStrings _VkCmdBindPipeline
-
-type VkCmdBindPipeline = "vkCmdBindPipeline"
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Queues: 'graphics', 'compute'.
---
--- Renderpass: @both@
---
--- > void vkCmdBindPipeline
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkPipelineBindPoint pipelineBindPoint
--- >     , VkPipeline pipeline
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBindPipeline vkCmdBindPipeline registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkCmdBindPipeline" vkCmdBindPipeline
-               :: VkCommandBuffer -- ^ commandBuffer
-                                  -> VkPipelineBindPoint -- ^ pipelineBindPoint
-                                                         -> VkPipeline -- ^ pipeline
-                                                                       -> IO ()
-
-##else
--- |
--- Queues: 'graphics', 'compute'.
---
--- Renderpass: @both@
---
--- > void vkCmdBindPipeline
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkPipelineBindPoint pipelineBindPoint
--- >     , VkPipeline pipeline
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBindPipeline vkCmdBindPipeline registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCmdBindPipelineSafe@ and @vkCmdBindPipeline@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdBindPipeline <- vkGetInstanceProc @VkCmdBindPipeline vkInstance
---
--- or less efficient:
---
--- > myCmdBindPipeline <- vkGetProc @VkCmdBindPipeline
---
-vkCmdBindPipeline ::
-                  VkCommandBuffer -- ^ commandBuffer
-                                  -> VkPipelineBindPoint -- ^ pipelineBindPoint
-                                                         -> VkPipeline -- ^ pipeline
-                                                                       -> IO ()
-vkCmdBindPipeline
-  = unsafeDupablePerformIO (vkGetProc @VkCmdBindPipeline)
-
-{-# NOINLINE vkCmdBindPipeline #-}
-##endif
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Queues: 'graphics', 'compute'.
---
--- Renderpass: @both@
---
--- > void vkCmdBindPipeline
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkPipelineBindPoint pipelineBindPoint
--- >     , VkPipeline pipeline
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBindPipeline vkCmdBindPipeline registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkCmdBindPipeline" vkCmdBindPipelineSafe
-               :: VkCommandBuffer -- ^ commandBuffer
-                                  -> VkPipelineBindPoint -- ^ pipelineBindPoint
-                                                         -> VkPipeline -- ^ pipeline
-                                                                       -> IO ()
-
-##else
--- |
--- Queues: 'graphics', 'compute'.
---
--- Renderpass: @both@
---
--- > void vkCmdBindPipeline
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkPipelineBindPoint pipelineBindPoint
--- >     , VkPipeline pipeline
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBindPipeline vkCmdBindPipeline registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCmdBindPipelineSafe@ and @vkCmdBindPipeline@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdBindPipeline <- vkGetInstanceProc @VkCmdBindPipeline vkInstance
---
--- or less efficient:
---
--- > myCmdBindPipeline <- vkGetProc @VkCmdBindPipeline
---
-vkCmdBindPipelineSafe ::
-                      VkCommandBuffer -- ^ commandBuffer
-                                      -> VkPipelineBindPoint -- ^ pipelineBindPoint
-                                                             -> VkPipeline -- ^ pipeline
-                                                                           -> IO ()
-vkCmdBindPipelineSafe = vkCmdBindPipeline
-
-{-# INLINE vkCmdBindPipelineSafe #-}
-##endif
-
--- | Queues: 'graphics', 'compute'.
---
---   Renderpass: @both@
---
---   > void vkCmdBindPipeline
---   >     ( VkCommandBuffer commandBuffer
---   >     , VkPipelineBindPoint pipelineBindPoint
---   >     , VkPipeline pipeline
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBindPipeline vkCmdBindPipeline registry at www.khronos.org>
-type HS_vkCmdBindPipeline =
-     VkCommandBuffer -- ^ commandBuffer
-                     -> VkPipelineBindPoint -- ^ pipelineBindPoint
-                                            -> VkPipeline -- ^ pipeline
-                                                          -> IO ()
-
-type PFN_vkCmdBindPipeline = FunPtr HS_vkCmdBindPipeline
-
-foreign import ccall "dynamic" unwrapVkCmdBindPipeline ::
-               PFN_vkCmdBindPipeline -> HS_vkCmdBindPipeline
-
-instance VulkanProc "vkCmdBindPipeline" where
-        type VkProcType "vkCmdBindPipeline" = HS_vkCmdBindPipeline
-        vkProcSymbol = _VkCmdBindPipeline
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCmdBindPipeline
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VkCmdSetViewport :: CString
-
-pattern VkCmdSetViewport <- (is_VkCmdSetViewport -> True)
-  where VkCmdSetViewport = _VkCmdSetViewport
-
-{-# INLINE _VkCmdSetViewport #-}
-
-_VkCmdSetViewport :: CString
-_VkCmdSetViewport = Ptr "vkCmdSetViewport\NUL"##
-
-{-# INLINE is_VkCmdSetViewport #-}
-
-is_VkCmdSetViewport :: CString -> Bool
-is_VkCmdSetViewport = (EQ ==) . cmpCStrings _VkCmdSetViewport
-
-type VkCmdSetViewport = "vkCmdSetViewport"
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @both@
---
--- > void vkCmdSetViewport
--- >     ( VkCommandBuffer commandBuffer
--- >     , uint32_t firstViewport
--- >     , uint32_t viewportCount
--- >     , const VkViewport* pViewports
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetViewport vkCmdSetViewport registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkCmdSetViewport" vkCmdSetViewport ::
-               VkCommandBuffer -- ^ commandBuffer
-                               -> Word32 -- ^ firstViewport
-                                         -> Word32 -- ^ viewportCount
-                                                   -> Ptr VkViewport -- ^ pViewports
-                                                                     -> IO ()
-
-##else
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @both@
---
--- > void vkCmdSetViewport
--- >     ( VkCommandBuffer commandBuffer
--- >     , uint32_t firstViewport
--- >     , uint32_t viewportCount
--- >     , const VkViewport* pViewports
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetViewport vkCmdSetViewport registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCmdSetViewportSafe@ and @vkCmdSetViewport@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdSetViewport <- vkGetInstanceProc @VkCmdSetViewport vkInstance
---
--- or less efficient:
---
--- > myCmdSetViewport <- vkGetProc @VkCmdSetViewport
---
-vkCmdSetViewport ::
-                 VkCommandBuffer -- ^ commandBuffer
-                                 -> Word32 -- ^ firstViewport
-                                           -> Word32 -- ^ viewportCount
-                                                     -> Ptr VkViewport -- ^ pViewports
-                                                                       -> IO ()
-vkCmdSetViewport
-  = unsafeDupablePerformIO (vkGetProc @VkCmdSetViewport)
-
-{-# NOINLINE vkCmdSetViewport #-}
-##endif
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @both@
---
--- > void vkCmdSetViewport
--- >     ( VkCommandBuffer commandBuffer
--- >     , uint32_t firstViewport
--- >     , uint32_t viewportCount
--- >     , const VkViewport* pViewports
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetViewport vkCmdSetViewport registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkCmdSetViewport" vkCmdSetViewportSafe
-               :: VkCommandBuffer -- ^ commandBuffer
-                                  -> Word32 -- ^ firstViewport
-                                            -> Word32 -- ^ viewportCount
-                                                      -> Ptr VkViewport -- ^ pViewports
-                                                                        -> IO ()
-
-##else
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @both@
---
--- > void vkCmdSetViewport
--- >     ( VkCommandBuffer commandBuffer
--- >     , uint32_t firstViewport
--- >     , uint32_t viewportCount
--- >     , const VkViewport* pViewports
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetViewport vkCmdSetViewport registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCmdSetViewportSafe@ and @vkCmdSetViewport@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdSetViewport <- vkGetInstanceProc @VkCmdSetViewport vkInstance
---
--- or less efficient:
---
--- > myCmdSetViewport <- vkGetProc @VkCmdSetViewport
---
-vkCmdSetViewportSafe ::
-                     VkCommandBuffer -- ^ commandBuffer
-                                     -> Word32 -- ^ firstViewport
-                                               -> Word32 -- ^ viewportCount
-                                                         -> Ptr VkViewport -- ^ pViewports
-                                                                           -> IO ()
-vkCmdSetViewportSafe = vkCmdSetViewport
-
-{-# INLINE vkCmdSetViewportSafe #-}
-##endif
-
--- | Queues: 'graphics'.
---
---   Renderpass: @both@
---
---   > void vkCmdSetViewport
---   >     ( VkCommandBuffer commandBuffer
---   >     , uint32_t firstViewport
---   >     , uint32_t viewportCount
---   >     , const VkViewport* pViewports
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetViewport vkCmdSetViewport registry at www.khronos.org>
-type HS_vkCmdSetViewport =
-     VkCommandBuffer -- ^ commandBuffer
-                     -> Word32 -- ^ firstViewport
-                               -> Word32 -- ^ viewportCount
-                                         -> Ptr VkViewport -- ^ pViewports
-                                                           -> IO ()
-
-type PFN_vkCmdSetViewport = FunPtr HS_vkCmdSetViewport
-
-foreign import ccall "dynamic" unwrapVkCmdSetViewport ::
-               PFN_vkCmdSetViewport -> HS_vkCmdSetViewport
-
-instance VulkanProc "vkCmdSetViewport" where
-        type VkProcType "vkCmdSetViewport" = HS_vkCmdSetViewport
-        vkProcSymbol = _VkCmdSetViewport
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCmdSetViewport
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VkCmdSetScissor :: CString
-
-pattern VkCmdSetScissor <- (is_VkCmdSetScissor -> True)
-  where VkCmdSetScissor = _VkCmdSetScissor
-
-{-# INLINE _VkCmdSetScissor #-}
-
-_VkCmdSetScissor :: CString
-_VkCmdSetScissor = Ptr "vkCmdSetScissor\NUL"##
-
-{-# INLINE is_VkCmdSetScissor #-}
-
-is_VkCmdSetScissor :: CString -> Bool
-is_VkCmdSetScissor = (EQ ==) . cmpCStrings _VkCmdSetScissor
-
-type VkCmdSetScissor = "vkCmdSetScissor"
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @both@
---
--- > void vkCmdSetScissor
--- >     ( VkCommandBuffer commandBuffer
--- >     , uint32_t firstScissor
--- >     , uint32_t scissorCount
--- >     , const VkRect2D* pScissors
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetScissor vkCmdSetScissor registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkCmdSetScissor" vkCmdSetScissor ::
-               VkCommandBuffer -- ^ commandBuffer
-                               -> Word32 -- ^ firstScissor
-                                         -> Word32 -- ^ scissorCount
-                                                   -> Ptr VkRect2D -- ^ pScissors
-                                                                   -> IO ()
-
-##else
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @both@
---
--- > void vkCmdSetScissor
--- >     ( VkCommandBuffer commandBuffer
--- >     , uint32_t firstScissor
--- >     , uint32_t scissorCount
--- >     , const VkRect2D* pScissors
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetScissor vkCmdSetScissor registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCmdSetScissorSafe@ and @vkCmdSetScissor@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdSetScissor <- vkGetInstanceProc @VkCmdSetScissor vkInstance
---
--- or less efficient:
---
--- > myCmdSetScissor <- vkGetProc @VkCmdSetScissor
---
-vkCmdSetScissor ::
-                VkCommandBuffer -- ^ commandBuffer
-                                -> Word32 -- ^ firstScissor
-                                          -> Word32 -- ^ scissorCount
-                                                    -> Ptr VkRect2D -- ^ pScissors
-                                                                    -> IO ()
-vkCmdSetScissor
-  = unsafeDupablePerformIO (vkGetProc @VkCmdSetScissor)
-
-{-# NOINLINE vkCmdSetScissor #-}
-##endif
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @both@
---
--- > void vkCmdSetScissor
--- >     ( VkCommandBuffer commandBuffer
--- >     , uint32_t firstScissor
--- >     , uint32_t scissorCount
--- >     , const VkRect2D* pScissors
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetScissor vkCmdSetScissor registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkCmdSetScissor" vkCmdSetScissorSafe ::
-               VkCommandBuffer -- ^ commandBuffer
-                               -> Word32 -- ^ firstScissor
-                                         -> Word32 -- ^ scissorCount
-                                                   -> Ptr VkRect2D -- ^ pScissors
-                                                                   -> IO ()
-
-##else
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @both@
---
--- > void vkCmdSetScissor
--- >     ( VkCommandBuffer commandBuffer
--- >     , uint32_t firstScissor
--- >     , uint32_t scissorCount
--- >     , const VkRect2D* pScissors
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetScissor vkCmdSetScissor registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCmdSetScissorSafe@ and @vkCmdSetScissor@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdSetScissor <- vkGetInstanceProc @VkCmdSetScissor vkInstance
---
--- or less efficient:
---
--- > myCmdSetScissor <- vkGetProc @VkCmdSetScissor
---
-vkCmdSetScissorSafe ::
-                    VkCommandBuffer -- ^ commandBuffer
-                                    -> Word32 -- ^ firstScissor
-                                              -> Word32 -- ^ scissorCount
-                                                        -> Ptr VkRect2D -- ^ pScissors
-                                                                        -> IO ()
-vkCmdSetScissorSafe = vkCmdSetScissor
-
-{-# INLINE vkCmdSetScissorSafe #-}
-##endif
-
--- | Queues: 'graphics'.
---
---   Renderpass: @both@
---
---   > void vkCmdSetScissor
---   >     ( VkCommandBuffer commandBuffer
---   >     , uint32_t firstScissor
---   >     , uint32_t scissorCount
---   >     , const VkRect2D* pScissors
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetScissor vkCmdSetScissor registry at www.khronos.org>
-type HS_vkCmdSetScissor =
-     VkCommandBuffer -- ^ commandBuffer
-                     -> Word32 -- ^ firstScissor
-                               -> Word32 -- ^ scissorCount
-                                         -> Ptr VkRect2D -- ^ pScissors
-                                                         -> IO ()
-
-type PFN_vkCmdSetScissor = FunPtr HS_vkCmdSetScissor
-
-foreign import ccall "dynamic" unwrapVkCmdSetScissor ::
-               PFN_vkCmdSetScissor -> HS_vkCmdSetScissor
-
-instance VulkanProc "vkCmdSetScissor" where
-        type VkProcType "vkCmdSetScissor" = HS_vkCmdSetScissor
-        vkProcSymbol = _VkCmdSetScissor
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCmdSetScissor
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VkCmdSetLineWidth :: CString
-
-pattern VkCmdSetLineWidth <- (is_VkCmdSetLineWidth -> True)
-  where VkCmdSetLineWidth = _VkCmdSetLineWidth
-
-{-# INLINE _VkCmdSetLineWidth #-}
-
-_VkCmdSetLineWidth :: CString
-_VkCmdSetLineWidth = Ptr "vkCmdSetLineWidth\NUL"##
-
-{-# INLINE is_VkCmdSetLineWidth #-}
-
-is_VkCmdSetLineWidth :: CString -> Bool
-is_VkCmdSetLineWidth = (EQ ==) . cmpCStrings _VkCmdSetLineWidth
-
-type VkCmdSetLineWidth = "vkCmdSetLineWidth"
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @both@
---
--- > void vkCmdSetLineWidth
--- >     ( VkCommandBuffer commandBuffer
--- >     , float lineWidth
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetLineWidth vkCmdSetLineWidth registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkCmdSetLineWidth" vkCmdSetLineWidth
-               :: VkCommandBuffer -- ^ commandBuffer
-                                  -> #{type float} -> IO ()
-
-##else
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @both@
---
--- > void vkCmdSetLineWidth
--- >     ( VkCommandBuffer commandBuffer
--- >     , float lineWidth
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetLineWidth vkCmdSetLineWidth registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCmdSetLineWidthSafe@ and @vkCmdSetLineWidth@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdSetLineWidth <- vkGetInstanceProc @VkCmdSetLineWidth vkInstance
---
--- or less efficient:
---
--- > myCmdSetLineWidth <- vkGetProc @VkCmdSetLineWidth
---
-vkCmdSetLineWidth ::
-                  VkCommandBuffer -- ^ commandBuffer
-                                  -> #{type float} -> IO ()
-vkCmdSetLineWidth
-  = unsafeDupablePerformIO (vkGetProc @VkCmdSetLineWidth)
-
-{-# NOINLINE vkCmdSetLineWidth #-}
-##endif
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @both@
---
--- > void vkCmdSetLineWidth
--- >     ( VkCommandBuffer commandBuffer
--- >     , float lineWidth
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetLineWidth vkCmdSetLineWidth registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkCmdSetLineWidth" vkCmdSetLineWidthSafe
-               :: VkCommandBuffer -- ^ commandBuffer
-                                  -> #{type float} -> IO ()
-
-##else
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @both@
---
--- > void vkCmdSetLineWidth
--- >     ( VkCommandBuffer commandBuffer
--- >     , float lineWidth
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetLineWidth vkCmdSetLineWidth registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCmdSetLineWidthSafe@ and @vkCmdSetLineWidth@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdSetLineWidth <- vkGetInstanceProc @VkCmdSetLineWidth vkInstance
---
--- or less efficient:
---
--- > myCmdSetLineWidth <- vkGetProc @VkCmdSetLineWidth
---
-vkCmdSetLineWidthSafe ::
-                      VkCommandBuffer -- ^ commandBuffer
-                                      -> #{type float} -> IO ()
-vkCmdSetLineWidthSafe = vkCmdSetLineWidth
-
-{-# INLINE vkCmdSetLineWidthSafe #-}
-##endif
-
--- | Queues: 'graphics'.
---
---   Renderpass: @both@
---
---   > void vkCmdSetLineWidth
---   >     ( VkCommandBuffer commandBuffer
---   >     , float lineWidth
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetLineWidth vkCmdSetLineWidth registry at www.khronos.org>
-type HS_vkCmdSetLineWidth =
-     VkCommandBuffer -- ^ commandBuffer
-                     -> #{type float} -> IO ()
-
-type PFN_vkCmdSetLineWidth = FunPtr HS_vkCmdSetLineWidth
-
-foreign import ccall "dynamic" unwrapVkCmdSetLineWidth ::
-               PFN_vkCmdSetLineWidth -> HS_vkCmdSetLineWidth
-
-instance VulkanProc "vkCmdSetLineWidth" where
-        type VkProcType "vkCmdSetLineWidth" = HS_vkCmdSetLineWidth
-        vkProcSymbol = _VkCmdSetLineWidth
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCmdSetLineWidth
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VkCmdSetDepthBias :: CString
-
-pattern VkCmdSetDepthBias <- (is_VkCmdSetDepthBias -> True)
-  where VkCmdSetDepthBias = _VkCmdSetDepthBias
-
-{-# INLINE _VkCmdSetDepthBias #-}
-
-_VkCmdSetDepthBias :: CString
-_VkCmdSetDepthBias = Ptr "vkCmdSetDepthBias\NUL"##
-
-{-# INLINE is_VkCmdSetDepthBias #-}
-
-is_VkCmdSetDepthBias :: CString -> Bool
-is_VkCmdSetDepthBias = (EQ ==) . cmpCStrings _VkCmdSetDepthBias
-
-type VkCmdSetDepthBias = "vkCmdSetDepthBias"
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @both@
---
--- > void vkCmdSetDepthBias
--- >     ( VkCommandBuffer commandBuffer
--- >     , float depthBiasConstantFactor
--- >     , float depthBiasClamp
--- >     , float depthBiasSlopeFactor
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetDepthBias vkCmdSetDepthBias registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkCmdSetDepthBias" vkCmdSetDepthBias
-               ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 #{type float} ->
-                   #{type float} -> #{type float} -> IO ()
-
-##else
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @both@
---
--- > void vkCmdSetDepthBias
--- >     ( VkCommandBuffer commandBuffer
--- >     , float depthBiasConstantFactor
--- >     , float depthBiasClamp
--- >     , float depthBiasSlopeFactor
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetDepthBias vkCmdSetDepthBias registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCmdSetDepthBiasSafe@ and @vkCmdSetDepthBias@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdSetDepthBias <- vkGetInstanceProc @VkCmdSetDepthBias vkInstance
---
--- or less efficient:
---
--- > myCmdSetDepthBias <- vkGetProc @VkCmdSetDepthBias
---
-vkCmdSetDepthBias ::
-                  VkCommandBuffer -- ^ commandBuffer
-                                  ->
-                    #{type float} ->
-                      #{type float} -> #{type float} -> IO ()
-vkCmdSetDepthBias
-  = unsafeDupablePerformIO (vkGetProc @VkCmdSetDepthBias)
-
-{-# NOINLINE vkCmdSetDepthBias #-}
-##endif
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @both@
---
--- > void vkCmdSetDepthBias
--- >     ( VkCommandBuffer commandBuffer
--- >     , float depthBiasConstantFactor
--- >     , float depthBiasClamp
--- >     , float depthBiasSlopeFactor
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetDepthBias vkCmdSetDepthBias registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkCmdSetDepthBias" vkCmdSetDepthBiasSafe
-               ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 #{type float} ->
-                   #{type float} -> #{type float} -> IO ()
-
-##else
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @both@
---
--- > void vkCmdSetDepthBias
--- >     ( VkCommandBuffer commandBuffer
--- >     , float depthBiasConstantFactor
--- >     , float depthBiasClamp
--- >     , float depthBiasSlopeFactor
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetDepthBias vkCmdSetDepthBias registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCmdSetDepthBiasSafe@ and @vkCmdSetDepthBias@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdSetDepthBias <- vkGetInstanceProc @VkCmdSetDepthBias vkInstance
---
--- or less efficient:
---
--- > myCmdSetDepthBias <- vkGetProc @VkCmdSetDepthBias
---
-vkCmdSetDepthBiasSafe ::
-                      VkCommandBuffer -- ^ commandBuffer
-                                      ->
-                        #{type float} ->
-                          #{type float} -> #{type float} -> IO ()
-vkCmdSetDepthBiasSafe = vkCmdSetDepthBias
-
-{-# INLINE vkCmdSetDepthBiasSafe #-}
-##endif
-
--- | Queues: 'graphics'.
---
---   Renderpass: @both@
---
---   > void vkCmdSetDepthBias
---   >     ( VkCommandBuffer commandBuffer
---   >     , float depthBiasConstantFactor
---   >     , float depthBiasClamp
---   >     , float depthBiasSlopeFactor
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetDepthBias vkCmdSetDepthBias registry at www.khronos.org>
-type HS_vkCmdSetDepthBias =
-     VkCommandBuffer -- ^ commandBuffer
-                     ->
-       #{type float} ->
-         #{type float} -> #{type float} -> IO ()
-
-type PFN_vkCmdSetDepthBias = FunPtr HS_vkCmdSetDepthBias
-
-foreign import ccall "dynamic" unwrapVkCmdSetDepthBias ::
-               PFN_vkCmdSetDepthBias -> HS_vkCmdSetDepthBias
-
-instance VulkanProc "vkCmdSetDepthBias" where
-        type VkProcType "vkCmdSetDepthBias" = HS_vkCmdSetDepthBias
-        vkProcSymbol = _VkCmdSetDepthBias
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCmdSetDepthBias
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VkCmdSetBlendConstants :: CString
-
-pattern VkCmdSetBlendConstants <-
-        (is_VkCmdSetBlendConstants -> True)
-  where VkCmdSetBlendConstants = _VkCmdSetBlendConstants
-
-{-# INLINE _VkCmdSetBlendConstants #-}
-
-_VkCmdSetBlendConstants :: CString
-_VkCmdSetBlendConstants = Ptr "vkCmdSetBlendConstants\NUL"##
-
-{-# INLINE is_VkCmdSetBlendConstants #-}
-
-is_VkCmdSetBlendConstants :: CString -> Bool
-is_VkCmdSetBlendConstants
-  = (EQ ==) . cmpCStrings _VkCmdSetBlendConstants
-
-type VkCmdSetBlendConstants = "vkCmdSetBlendConstants"
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @both@
---
--- > void vkCmdSetBlendConstants
--- >     ( VkCommandBuffer commandBuffer
--- >     , const float blendConstants[4]
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetBlendConstants vkCmdSetBlendConstants registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkCmdSetBlendConstants"
-               vkCmdSetBlendConstants ::
-               VkCommandBuffer -- ^ commandBuffer
-                               -> Ptr #{type float} -- ^ blendConstants
-                                                                -> IO ()
-
-##else
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @both@
---
--- > void vkCmdSetBlendConstants
--- >     ( VkCommandBuffer commandBuffer
--- >     , const float blendConstants[4]
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetBlendConstants vkCmdSetBlendConstants registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCmdSetBlendConstantsSafe@ and @vkCmdSetBlendConstants@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdSetBlendConstants <- vkGetInstanceProc @VkCmdSetBlendConstants vkInstance
---
--- or less efficient:
---
--- > myCmdSetBlendConstants <- vkGetProc @VkCmdSetBlendConstants
---
-vkCmdSetBlendConstants ::
-                       VkCommandBuffer -- ^ commandBuffer
-                                       -> Ptr #{type float} -- ^ blendConstants
-                                                                        -> IO ()
-vkCmdSetBlendConstants
-  = unsafeDupablePerformIO (vkGetProc @VkCmdSetBlendConstants)
-
-{-# NOINLINE vkCmdSetBlendConstants #-}
-##endif
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @both@
---
--- > void vkCmdSetBlendConstants
--- >     ( VkCommandBuffer commandBuffer
--- >     , const float blendConstants[4]
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetBlendConstants vkCmdSetBlendConstants registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkCmdSetBlendConstants"
-               vkCmdSetBlendConstantsSafe ::
-               VkCommandBuffer -- ^ commandBuffer
-                               -> Ptr #{type float} -- ^ blendConstants
-                                                                -> IO ()
-
-##else
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @both@
---
--- > void vkCmdSetBlendConstants
--- >     ( VkCommandBuffer commandBuffer
--- >     , const float blendConstants[4]
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetBlendConstants vkCmdSetBlendConstants registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCmdSetBlendConstantsSafe@ and @vkCmdSetBlendConstants@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdSetBlendConstants <- vkGetInstanceProc @VkCmdSetBlendConstants vkInstance
---
--- or less efficient:
---
--- > myCmdSetBlendConstants <- vkGetProc @VkCmdSetBlendConstants
---
-vkCmdSetBlendConstantsSafe ::
-                           VkCommandBuffer -- ^ commandBuffer
-                                           -> Ptr #{type float} -- ^ blendConstants
-                                                                            -> IO ()
-vkCmdSetBlendConstantsSafe = vkCmdSetBlendConstants
-
-{-# INLINE vkCmdSetBlendConstantsSafe #-}
-##endif
-
--- | Queues: 'graphics'.
---
---   Renderpass: @both@
---
---   > void vkCmdSetBlendConstants
---   >     ( VkCommandBuffer commandBuffer
---   >     , const float blendConstants[4]
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetBlendConstants vkCmdSetBlendConstants registry at www.khronos.org>
-type HS_vkCmdSetBlendConstants =
-     VkCommandBuffer -- ^ commandBuffer
-                     -> Ptr #{type float} -- ^ blendConstants
-                                                      -> IO ()
-
-type PFN_vkCmdSetBlendConstants = FunPtr HS_vkCmdSetBlendConstants
-
-foreign import ccall "dynamic" unwrapVkCmdSetBlendConstants ::
-               PFN_vkCmdSetBlendConstants -> HS_vkCmdSetBlendConstants
-
-instance VulkanProc "vkCmdSetBlendConstants" where
-        type VkProcType "vkCmdSetBlendConstants" =
-             HS_vkCmdSetBlendConstants
-        vkProcSymbol = _VkCmdSetBlendConstants
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCmdSetBlendConstants
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VkCmdSetDepthBounds :: CString
-
-pattern VkCmdSetDepthBounds <- (is_VkCmdSetDepthBounds -> True)
-  where VkCmdSetDepthBounds = _VkCmdSetDepthBounds
-
-{-# INLINE _VkCmdSetDepthBounds #-}
-
-_VkCmdSetDepthBounds :: CString
-_VkCmdSetDepthBounds = Ptr "vkCmdSetDepthBounds\NUL"##
-
-{-# INLINE is_VkCmdSetDepthBounds #-}
-
-is_VkCmdSetDepthBounds :: CString -> Bool
-is_VkCmdSetDepthBounds = (EQ ==) . cmpCStrings _VkCmdSetDepthBounds
-
-type VkCmdSetDepthBounds = "vkCmdSetDepthBounds"
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @both@
---
--- > void vkCmdSetDepthBounds
--- >     ( VkCommandBuffer commandBuffer
--- >     , float minDepthBounds
--- >     , float maxDepthBounds
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetDepthBounds vkCmdSetDepthBounds registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkCmdSetDepthBounds"
-               vkCmdSetDepthBounds ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 #{type float} -> #{type float} -> IO ()
-
-##else
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @both@
---
--- > void vkCmdSetDepthBounds
--- >     ( VkCommandBuffer commandBuffer
--- >     , float minDepthBounds
--- >     , float maxDepthBounds
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetDepthBounds vkCmdSetDepthBounds registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCmdSetDepthBoundsSafe@ and @vkCmdSetDepthBounds@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdSetDepthBounds <- vkGetInstanceProc @VkCmdSetDepthBounds vkInstance
---
--- or less efficient:
---
--- > myCmdSetDepthBounds <- vkGetProc @VkCmdSetDepthBounds
---
-vkCmdSetDepthBounds ::
-                    VkCommandBuffer -- ^ commandBuffer
-                                    ->
-                      #{type float} -> #{type float} -> IO ()
-vkCmdSetDepthBounds
-  = unsafeDupablePerformIO (vkGetProc @VkCmdSetDepthBounds)
-
-{-# NOINLINE vkCmdSetDepthBounds #-}
-##endif
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @both@
---
--- > void vkCmdSetDepthBounds
--- >     ( VkCommandBuffer commandBuffer
--- >     , float minDepthBounds
--- >     , float maxDepthBounds
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetDepthBounds vkCmdSetDepthBounds registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkCmdSetDepthBounds"
-               vkCmdSetDepthBoundsSafe ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 #{type float} -> #{type float} -> IO ()
-
-##else
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @both@
---
--- > void vkCmdSetDepthBounds
--- >     ( VkCommandBuffer commandBuffer
--- >     , float minDepthBounds
--- >     , float maxDepthBounds
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetDepthBounds vkCmdSetDepthBounds registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCmdSetDepthBoundsSafe@ and @vkCmdSetDepthBounds@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdSetDepthBounds <- vkGetInstanceProc @VkCmdSetDepthBounds vkInstance
---
--- or less efficient:
---
--- > myCmdSetDepthBounds <- vkGetProc @VkCmdSetDepthBounds
---
-vkCmdSetDepthBoundsSafe ::
-                        VkCommandBuffer -- ^ commandBuffer
-                                        ->
-                          #{type float} -> #{type float} -> IO ()
-vkCmdSetDepthBoundsSafe = vkCmdSetDepthBounds
-
-{-# INLINE vkCmdSetDepthBoundsSafe #-}
-##endif
-
--- | Queues: 'graphics'.
---
---   Renderpass: @both@
---
---   > void vkCmdSetDepthBounds
---   >     ( VkCommandBuffer commandBuffer
---   >     , float minDepthBounds
---   >     , float maxDepthBounds
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetDepthBounds vkCmdSetDepthBounds registry at www.khronos.org>
-type HS_vkCmdSetDepthBounds =
-     VkCommandBuffer -- ^ commandBuffer
-                     ->
-       #{type float} -> #{type float} -> IO ()
-
-type PFN_vkCmdSetDepthBounds = FunPtr HS_vkCmdSetDepthBounds
-
-foreign import ccall "dynamic" unwrapVkCmdSetDepthBounds ::
-               PFN_vkCmdSetDepthBounds -> HS_vkCmdSetDepthBounds
-
-instance VulkanProc "vkCmdSetDepthBounds" where
-        type VkProcType "vkCmdSetDepthBounds" = HS_vkCmdSetDepthBounds
-        vkProcSymbol = _VkCmdSetDepthBounds
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCmdSetDepthBounds
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VkCmdSetStencilCompareMask :: CString
-
-pattern VkCmdSetStencilCompareMask <-
-        (is_VkCmdSetStencilCompareMask -> True)
-  where VkCmdSetStencilCompareMask = _VkCmdSetStencilCompareMask
-
-{-# INLINE _VkCmdSetStencilCompareMask #-}
-
-_VkCmdSetStencilCompareMask :: CString
-_VkCmdSetStencilCompareMask = Ptr "vkCmdSetStencilCompareMask\NUL"##
-
-{-# INLINE is_VkCmdSetStencilCompareMask #-}
-
-is_VkCmdSetStencilCompareMask :: CString -> Bool
-is_VkCmdSetStencilCompareMask
-  = (EQ ==) . cmpCStrings _VkCmdSetStencilCompareMask
-
-type VkCmdSetStencilCompareMask = "vkCmdSetStencilCompareMask"
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @both@
---
--- > void vkCmdSetStencilCompareMask
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkStencilFaceFlags faceMask
--- >     , uint32_t compareMask
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetStencilCompareMask vkCmdSetStencilCompareMask registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkCmdSetStencilCompareMask"
-               vkCmdSetStencilCompareMask ::
-               VkCommandBuffer -- ^ commandBuffer
-                               -> VkStencilFaceFlags -- ^ faceMask
-                                                     -> Word32 -- ^ compareMask
-                                                               -> IO ()
-
-##else
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @both@
---
--- > void vkCmdSetStencilCompareMask
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkStencilFaceFlags faceMask
--- >     , uint32_t compareMask
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetStencilCompareMask vkCmdSetStencilCompareMask registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCmdSetStencilCompareMaskSafe@ and @vkCmdSetStencilCompareMask@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdSetStencilCompareMask <- vkGetInstanceProc @VkCmdSetStencilCompareMask vkInstance
---
--- or less efficient:
---
--- > myCmdSetStencilCompareMask <- vkGetProc @VkCmdSetStencilCompareMask
---
-vkCmdSetStencilCompareMask ::
-                           VkCommandBuffer -- ^ commandBuffer
-                                           -> VkStencilFaceFlags -- ^ faceMask
-                                                                 -> Word32 -- ^ compareMask
-                                                                           -> IO ()
-vkCmdSetStencilCompareMask
-  = unsafeDupablePerformIO (vkGetProc @VkCmdSetStencilCompareMask)
-
-{-# NOINLINE vkCmdSetStencilCompareMask #-}
-##endif
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @both@
---
--- > void vkCmdSetStencilCompareMask
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkStencilFaceFlags faceMask
--- >     , uint32_t compareMask
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetStencilCompareMask vkCmdSetStencilCompareMask registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkCmdSetStencilCompareMask"
-               vkCmdSetStencilCompareMaskSafe ::
-               VkCommandBuffer -- ^ commandBuffer
-                               -> VkStencilFaceFlags -- ^ faceMask
-                                                     -> Word32 -- ^ compareMask
-                                                               -> IO ()
-
-##else
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @both@
---
--- > void vkCmdSetStencilCompareMask
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkStencilFaceFlags faceMask
--- >     , uint32_t compareMask
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetStencilCompareMask vkCmdSetStencilCompareMask registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCmdSetStencilCompareMaskSafe@ and @vkCmdSetStencilCompareMask@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdSetStencilCompareMask <- vkGetInstanceProc @VkCmdSetStencilCompareMask vkInstance
---
--- or less efficient:
---
--- > myCmdSetStencilCompareMask <- vkGetProc @VkCmdSetStencilCompareMask
---
-vkCmdSetStencilCompareMaskSafe ::
-                               VkCommandBuffer -- ^ commandBuffer
-                                               -> VkStencilFaceFlags -- ^ faceMask
-                                                                     -> Word32 -- ^ compareMask
-                                                                               -> IO ()
-vkCmdSetStencilCompareMaskSafe = vkCmdSetStencilCompareMask
-
-{-# INLINE vkCmdSetStencilCompareMaskSafe #-}
-##endif
-
--- | Queues: 'graphics'.
---
---   Renderpass: @both@
---
---   > void vkCmdSetStencilCompareMask
---   >     ( VkCommandBuffer commandBuffer
---   >     , VkStencilFaceFlags faceMask
---   >     , uint32_t compareMask
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetStencilCompareMask vkCmdSetStencilCompareMask registry at www.khronos.org>
-type HS_vkCmdSetStencilCompareMask =
-     VkCommandBuffer -- ^ commandBuffer
-                     -> VkStencilFaceFlags -- ^ faceMask
-                                           -> Word32 -- ^ compareMask
-                                                     -> IO ()
-
-type PFN_vkCmdSetStencilCompareMask =
-     FunPtr HS_vkCmdSetStencilCompareMask
-
-foreign import ccall "dynamic" unwrapVkCmdSetStencilCompareMask ::
-               PFN_vkCmdSetStencilCompareMask -> HS_vkCmdSetStencilCompareMask
-
-instance VulkanProc "vkCmdSetStencilCompareMask" where
-        type VkProcType "vkCmdSetStencilCompareMask" =
-             HS_vkCmdSetStencilCompareMask
-        vkProcSymbol = _VkCmdSetStencilCompareMask
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCmdSetStencilCompareMask
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VkCmdSetStencilWriteMask :: CString
-
-pattern VkCmdSetStencilWriteMask <-
-        (is_VkCmdSetStencilWriteMask -> True)
-  where VkCmdSetStencilWriteMask = _VkCmdSetStencilWriteMask
-
-{-# INLINE _VkCmdSetStencilWriteMask #-}
-
-_VkCmdSetStencilWriteMask :: CString
-_VkCmdSetStencilWriteMask = Ptr "vkCmdSetStencilWriteMask\NUL"##
-
-{-# INLINE is_VkCmdSetStencilWriteMask #-}
-
-is_VkCmdSetStencilWriteMask :: CString -> Bool
-is_VkCmdSetStencilWriteMask
-  = (EQ ==) . cmpCStrings _VkCmdSetStencilWriteMask
-
-type VkCmdSetStencilWriteMask = "vkCmdSetStencilWriteMask"
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @both@
---
--- > void vkCmdSetStencilWriteMask
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkStencilFaceFlags faceMask
--- >     , uint32_t writeMask
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetStencilWriteMask vkCmdSetStencilWriteMask registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkCmdSetStencilWriteMask"
-               vkCmdSetStencilWriteMask ::
-               VkCommandBuffer -- ^ commandBuffer
-                               -> VkStencilFaceFlags -- ^ faceMask
-                                                     -> Word32 -- ^ writeMask
-                                                               -> IO ()
-
-##else
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @both@
---
--- > void vkCmdSetStencilWriteMask
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkStencilFaceFlags faceMask
--- >     , uint32_t writeMask
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetStencilWriteMask vkCmdSetStencilWriteMask registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCmdSetStencilWriteMaskSafe@ and @vkCmdSetStencilWriteMask@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdSetStencilWriteMask <- vkGetInstanceProc @VkCmdSetStencilWriteMask vkInstance
---
--- or less efficient:
---
--- > myCmdSetStencilWriteMask <- vkGetProc @VkCmdSetStencilWriteMask
---
-vkCmdSetStencilWriteMask ::
-                         VkCommandBuffer -- ^ commandBuffer
-                                         -> VkStencilFaceFlags -- ^ faceMask
-                                                               -> Word32 -- ^ writeMask
-                                                                         -> IO ()
-vkCmdSetStencilWriteMask
-  = unsafeDupablePerformIO (vkGetProc @VkCmdSetStencilWriteMask)
-
-{-# NOINLINE vkCmdSetStencilWriteMask #-}
-##endif
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @both@
---
--- > void vkCmdSetStencilWriteMask
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkStencilFaceFlags faceMask
--- >     , uint32_t writeMask
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetStencilWriteMask vkCmdSetStencilWriteMask registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkCmdSetStencilWriteMask"
-               vkCmdSetStencilWriteMaskSafe ::
-               VkCommandBuffer -- ^ commandBuffer
-                               -> VkStencilFaceFlags -- ^ faceMask
-                                                     -> Word32 -- ^ writeMask
-                                                               -> IO ()
-
-##else
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @both@
---
--- > void vkCmdSetStencilWriteMask
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkStencilFaceFlags faceMask
--- >     , uint32_t writeMask
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetStencilWriteMask vkCmdSetStencilWriteMask registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCmdSetStencilWriteMaskSafe@ and @vkCmdSetStencilWriteMask@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdSetStencilWriteMask <- vkGetInstanceProc @VkCmdSetStencilWriteMask vkInstance
---
--- or less efficient:
---
--- > myCmdSetStencilWriteMask <- vkGetProc @VkCmdSetStencilWriteMask
---
-vkCmdSetStencilWriteMaskSafe ::
-                             VkCommandBuffer -- ^ commandBuffer
-                                             -> VkStencilFaceFlags -- ^ faceMask
-                                                                   -> Word32 -- ^ writeMask
-                                                                             -> IO ()
-vkCmdSetStencilWriteMaskSafe = vkCmdSetStencilWriteMask
-
-{-# INLINE vkCmdSetStencilWriteMaskSafe #-}
-##endif
-
--- | Queues: 'graphics'.
---
---   Renderpass: @both@
---
---   > void vkCmdSetStencilWriteMask
---   >     ( VkCommandBuffer commandBuffer
---   >     , VkStencilFaceFlags faceMask
---   >     , uint32_t writeMask
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetStencilWriteMask vkCmdSetStencilWriteMask registry at www.khronos.org>
-type HS_vkCmdSetStencilWriteMask =
-     VkCommandBuffer -- ^ commandBuffer
-                     -> VkStencilFaceFlags -- ^ faceMask
-                                           -> Word32 -- ^ writeMask
-                                                     -> IO ()
-
-type PFN_vkCmdSetStencilWriteMask =
-     FunPtr HS_vkCmdSetStencilWriteMask
-
-foreign import ccall "dynamic" unwrapVkCmdSetStencilWriteMask ::
-               PFN_vkCmdSetStencilWriteMask -> HS_vkCmdSetStencilWriteMask
-
-instance VulkanProc "vkCmdSetStencilWriteMask" where
-        type VkProcType "vkCmdSetStencilWriteMask" =
-             HS_vkCmdSetStencilWriteMask
-        vkProcSymbol = _VkCmdSetStencilWriteMask
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCmdSetStencilWriteMask
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VkCmdSetStencilReference :: CString
-
-pattern VkCmdSetStencilReference <-
-        (is_VkCmdSetStencilReference -> True)
-  where VkCmdSetStencilReference = _VkCmdSetStencilReference
-
-{-# INLINE _VkCmdSetStencilReference #-}
-
-_VkCmdSetStencilReference :: CString
-_VkCmdSetStencilReference = Ptr "vkCmdSetStencilReference\NUL"##
-
-{-# INLINE is_VkCmdSetStencilReference #-}
-
-is_VkCmdSetStencilReference :: CString -> Bool
-is_VkCmdSetStencilReference
-  = (EQ ==) . cmpCStrings _VkCmdSetStencilReference
-
-type VkCmdSetStencilReference = "vkCmdSetStencilReference"
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @both@
---
--- > void vkCmdSetStencilReference
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkStencilFaceFlags faceMask
--- >     , uint32_t reference
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetStencilReference vkCmdSetStencilReference registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkCmdSetStencilReference"
-               vkCmdSetStencilReference ::
-               VkCommandBuffer -- ^ commandBuffer
-                               -> VkStencilFaceFlags -- ^ faceMask
-                                                     -> Word32 -- ^ reference
-                                                               -> IO ()
-
-##else
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @both@
---
--- > void vkCmdSetStencilReference
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkStencilFaceFlags faceMask
--- >     , uint32_t reference
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetStencilReference vkCmdSetStencilReference registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCmdSetStencilReferenceSafe@ and @vkCmdSetStencilReference@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdSetStencilReference <- vkGetInstanceProc @VkCmdSetStencilReference vkInstance
---
--- or less efficient:
---
--- > myCmdSetStencilReference <- vkGetProc @VkCmdSetStencilReference
---
-vkCmdSetStencilReference ::
-                         VkCommandBuffer -- ^ commandBuffer
-                                         -> VkStencilFaceFlags -- ^ faceMask
-                                                               -> Word32 -- ^ reference
-                                                                         -> IO ()
-vkCmdSetStencilReference
-  = unsafeDupablePerformIO (vkGetProc @VkCmdSetStencilReference)
-
-{-# NOINLINE vkCmdSetStencilReference #-}
-##endif
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @both@
---
--- > void vkCmdSetStencilReference
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkStencilFaceFlags faceMask
--- >     , uint32_t reference
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetStencilReference vkCmdSetStencilReference registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkCmdSetStencilReference"
-               vkCmdSetStencilReferenceSafe ::
-               VkCommandBuffer -- ^ commandBuffer
-                               -> VkStencilFaceFlags -- ^ faceMask
-                                                     -> Word32 -- ^ reference
-                                                               -> IO ()
-
-##else
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @both@
---
--- > void vkCmdSetStencilReference
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkStencilFaceFlags faceMask
--- >     , uint32_t reference
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetStencilReference vkCmdSetStencilReference registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCmdSetStencilReferenceSafe@ and @vkCmdSetStencilReference@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdSetStencilReference <- vkGetInstanceProc @VkCmdSetStencilReference vkInstance
---
--- or less efficient:
---
--- > myCmdSetStencilReference <- vkGetProc @VkCmdSetStencilReference
---
-vkCmdSetStencilReferenceSafe ::
-                             VkCommandBuffer -- ^ commandBuffer
-                                             -> VkStencilFaceFlags -- ^ faceMask
-                                                                   -> Word32 -- ^ reference
-                                                                             -> IO ()
-vkCmdSetStencilReferenceSafe = vkCmdSetStencilReference
-
-{-# INLINE vkCmdSetStencilReferenceSafe #-}
-##endif
-
--- | Queues: 'graphics'.
---
---   Renderpass: @both@
---
---   > void vkCmdSetStencilReference
---   >     ( VkCommandBuffer commandBuffer
---   >     , VkStencilFaceFlags faceMask
---   >     , uint32_t reference
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetStencilReference vkCmdSetStencilReference registry at www.khronos.org>
-type HS_vkCmdSetStencilReference =
-     VkCommandBuffer -- ^ commandBuffer
-                     -> VkStencilFaceFlags -- ^ faceMask
-                                           -> Word32 -- ^ reference
-                                                     -> IO ()
-
-type PFN_vkCmdSetStencilReference =
-     FunPtr HS_vkCmdSetStencilReference
-
-foreign import ccall "dynamic" unwrapVkCmdSetStencilReference ::
-               PFN_vkCmdSetStencilReference -> HS_vkCmdSetStencilReference
-
-instance VulkanProc "vkCmdSetStencilReference" where
-        type VkProcType "vkCmdSetStencilReference" =
-             HS_vkCmdSetStencilReference
-        vkProcSymbol = _VkCmdSetStencilReference
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCmdSetStencilReference
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VkCmdBindDescriptorSets :: CString
-
-pattern VkCmdBindDescriptorSets <-
-        (is_VkCmdBindDescriptorSets -> True)
-  where VkCmdBindDescriptorSets = _VkCmdBindDescriptorSets
-
-{-# INLINE _VkCmdBindDescriptorSets #-}
-
-_VkCmdBindDescriptorSets :: CString
-_VkCmdBindDescriptorSets = Ptr "vkCmdBindDescriptorSets\NUL"##
-
-{-# INLINE is_VkCmdBindDescriptorSets #-}
-
-is_VkCmdBindDescriptorSets :: CString -> Bool
-is_VkCmdBindDescriptorSets
-  = (EQ ==) . cmpCStrings _VkCmdBindDescriptorSets
-
-type VkCmdBindDescriptorSets = "vkCmdBindDescriptorSets"
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Queues: 'graphics', 'compute'.
---
--- Renderpass: @both@
---
--- > void vkCmdBindDescriptorSets
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkPipelineBindPoint pipelineBindPoint
--- >     , VkPipelineLayout layout
--- >     , uint32_t firstSet
--- >     , uint32_t descriptorSetCount
--- >     , const VkDescriptorSet* pDescriptorSets
--- >     , uint32_t dynamicOffsetCount
--- >     , const uint32_t* pDynamicOffsets
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBindDescriptorSets vkCmdBindDescriptorSets registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkCmdBindDescriptorSets"
-               vkCmdBindDescriptorSets ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 VkPipelineBindPoint -- ^ pipelineBindPoint
-                                     ->
-                   VkPipelineLayout -- ^ layout
-                                    ->
-                     Word32 -- ^ firstSet
-                            ->
-                       Word32 -- ^ descriptorSetCount
-                              -> Ptr VkDescriptorSet -- ^ pDescriptorSets
-                                                     -> Word32 -- ^ dynamicOffsetCount
-                                                               -> Ptr Word32 -- ^ pDynamicOffsets
-                                                                             -> IO ()
-
-##else
--- |
--- Queues: 'graphics', 'compute'.
---
--- Renderpass: @both@
---
--- > void vkCmdBindDescriptorSets
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkPipelineBindPoint pipelineBindPoint
--- >     , VkPipelineLayout layout
--- >     , uint32_t firstSet
--- >     , uint32_t descriptorSetCount
--- >     , const VkDescriptorSet* pDescriptorSets
--- >     , uint32_t dynamicOffsetCount
--- >     , const uint32_t* pDynamicOffsets
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBindDescriptorSets vkCmdBindDescriptorSets registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCmdBindDescriptorSetsSafe@ and @vkCmdBindDescriptorSets@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdBindDescriptorSets <- vkGetInstanceProc @VkCmdBindDescriptorSets vkInstance
---
--- or less efficient:
---
--- > myCmdBindDescriptorSets <- vkGetProc @VkCmdBindDescriptorSets
---
-vkCmdBindDescriptorSets ::
-                        VkCommandBuffer -- ^ commandBuffer
-                                        ->
-                          VkPipelineBindPoint -- ^ pipelineBindPoint
-                                              ->
-                            VkPipelineLayout -- ^ layout
-                                             ->
-                              Word32 -- ^ firstSet
-                                     ->
-                                Word32 -- ^ descriptorSetCount
-                                       -> Ptr VkDescriptorSet -- ^ pDescriptorSets
-                                                              -> Word32 -- ^ dynamicOffsetCount
-                                                                        -> Ptr Word32 -- ^ pDynamicOffsets
-                                                                                      -> IO ()
-vkCmdBindDescriptorSets
-  = unsafeDupablePerformIO (vkGetProc @VkCmdBindDescriptorSets)
-
-{-# NOINLINE vkCmdBindDescriptorSets #-}
-##endif
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Queues: 'graphics', 'compute'.
---
--- Renderpass: @both@
---
--- > void vkCmdBindDescriptorSets
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkPipelineBindPoint pipelineBindPoint
--- >     , VkPipelineLayout layout
--- >     , uint32_t firstSet
--- >     , uint32_t descriptorSetCount
--- >     , const VkDescriptorSet* pDescriptorSets
--- >     , uint32_t dynamicOffsetCount
--- >     , const uint32_t* pDynamicOffsets
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBindDescriptorSets vkCmdBindDescriptorSets registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkCmdBindDescriptorSets"
-               vkCmdBindDescriptorSetsSafe ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 VkPipelineBindPoint -- ^ pipelineBindPoint
-                                     ->
-                   VkPipelineLayout -- ^ layout
-                                    ->
-                     Word32 -- ^ firstSet
-                            ->
-                       Word32 -- ^ descriptorSetCount
-                              -> Ptr VkDescriptorSet -- ^ pDescriptorSets
-                                                     -> Word32 -- ^ dynamicOffsetCount
-                                                               -> Ptr Word32 -- ^ pDynamicOffsets
-                                                                             -> IO ()
-
-##else
--- |
--- Queues: 'graphics', 'compute'.
---
--- Renderpass: @both@
---
--- > void vkCmdBindDescriptorSets
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkPipelineBindPoint pipelineBindPoint
--- >     , VkPipelineLayout layout
--- >     , uint32_t firstSet
--- >     , uint32_t descriptorSetCount
--- >     , const VkDescriptorSet* pDescriptorSets
--- >     , uint32_t dynamicOffsetCount
--- >     , const uint32_t* pDynamicOffsets
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBindDescriptorSets vkCmdBindDescriptorSets registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCmdBindDescriptorSetsSafe@ and @vkCmdBindDescriptorSets@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdBindDescriptorSets <- vkGetInstanceProc @VkCmdBindDescriptorSets vkInstance
---
--- or less efficient:
---
--- > myCmdBindDescriptorSets <- vkGetProc @VkCmdBindDescriptorSets
---
-vkCmdBindDescriptorSetsSafe ::
-                            VkCommandBuffer -- ^ commandBuffer
-                                            ->
-                              VkPipelineBindPoint -- ^ pipelineBindPoint
-                                                  ->
-                                VkPipelineLayout -- ^ layout
-                                                 ->
-                                  Word32 -- ^ firstSet
-                                         ->
-                                    Word32 -- ^ descriptorSetCount
-                                           -> Ptr VkDescriptorSet -- ^ pDescriptorSets
-                                                                  -> Word32 -- ^ dynamicOffsetCount
-                                                                            -> Ptr Word32 -- ^ pDynamicOffsets
-                                                                                          -> IO ()
-vkCmdBindDescriptorSetsSafe = vkCmdBindDescriptorSets
-
-{-# INLINE vkCmdBindDescriptorSetsSafe #-}
-##endif
-
--- | Queues: 'graphics', 'compute'.
---
---   Renderpass: @both@
---
---   > void vkCmdBindDescriptorSets
---   >     ( VkCommandBuffer commandBuffer
---   >     , VkPipelineBindPoint pipelineBindPoint
---   >     , VkPipelineLayout layout
---   >     , uint32_t firstSet
---   >     , uint32_t descriptorSetCount
---   >     , const VkDescriptorSet* pDescriptorSets
---   >     , uint32_t dynamicOffsetCount
---   >     , const uint32_t* pDynamicOffsets
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBindDescriptorSets vkCmdBindDescriptorSets registry at www.khronos.org>
-type HS_vkCmdBindDescriptorSets =
-     VkCommandBuffer -- ^ commandBuffer
-                     ->
-       VkPipelineBindPoint -- ^ pipelineBindPoint
-                           ->
-         VkPipelineLayout -- ^ layout
-                          ->
-           Word32 -- ^ firstSet
-                  ->
-             Word32 -- ^ descriptorSetCount
-                    -> Ptr VkDescriptorSet -- ^ pDescriptorSets
-                                           -> Word32 -- ^ dynamicOffsetCount
-                                                     -> Ptr Word32 -- ^ pDynamicOffsets
-                                                                   -> IO ()
-
-type PFN_vkCmdBindDescriptorSets =
-     FunPtr HS_vkCmdBindDescriptorSets
-
-foreign import ccall "dynamic" unwrapVkCmdBindDescriptorSets ::
-               PFN_vkCmdBindDescriptorSets -> HS_vkCmdBindDescriptorSets
-
-instance VulkanProc "vkCmdBindDescriptorSets" where
-        type VkProcType "vkCmdBindDescriptorSets" =
-             HS_vkCmdBindDescriptorSets
-        vkProcSymbol = _VkCmdBindDescriptorSets
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCmdBindDescriptorSets
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VkCmdBindIndexBuffer :: CString
-
-pattern VkCmdBindIndexBuffer <- (is_VkCmdBindIndexBuffer -> True)
-  where VkCmdBindIndexBuffer = _VkCmdBindIndexBuffer
-
-{-# INLINE _VkCmdBindIndexBuffer #-}
-
-_VkCmdBindIndexBuffer :: CString
-_VkCmdBindIndexBuffer = Ptr "vkCmdBindIndexBuffer\NUL"##
-
-{-# INLINE is_VkCmdBindIndexBuffer #-}
-
-is_VkCmdBindIndexBuffer :: CString -> Bool
-is_VkCmdBindIndexBuffer
-  = (EQ ==) . cmpCStrings _VkCmdBindIndexBuffer
-
-type VkCmdBindIndexBuffer = "vkCmdBindIndexBuffer"
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @both@
---
--- > void vkCmdBindIndexBuffer
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkBuffer buffer
--- >     , VkDeviceSize offset
--- >     , VkIndexType indexType
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBindIndexBuffer vkCmdBindIndexBuffer registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkCmdBindIndexBuffer"
-               vkCmdBindIndexBuffer ::
-               VkCommandBuffer -- ^ commandBuffer
-                               -> VkBuffer -- ^ buffer
-                                           -> VkDeviceSize -- ^ offset
-                                                           -> VkIndexType -- ^ indexType
-                                                                          -> IO ()
-
-##else
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @both@
---
--- > void vkCmdBindIndexBuffer
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkBuffer buffer
--- >     , VkDeviceSize offset
--- >     , VkIndexType indexType
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBindIndexBuffer vkCmdBindIndexBuffer registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCmdBindIndexBufferSafe@ and @vkCmdBindIndexBuffer@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdBindIndexBuffer <- vkGetInstanceProc @VkCmdBindIndexBuffer vkInstance
---
--- or less efficient:
---
--- > myCmdBindIndexBuffer <- vkGetProc @VkCmdBindIndexBuffer
---
-vkCmdBindIndexBuffer ::
-                     VkCommandBuffer -- ^ commandBuffer
-                                     -> VkBuffer -- ^ buffer
-                                                 -> VkDeviceSize -- ^ offset
-                                                                 -> VkIndexType -- ^ indexType
-                                                                                -> IO ()
-vkCmdBindIndexBuffer
-  = unsafeDupablePerformIO (vkGetProc @VkCmdBindIndexBuffer)
-
-{-# NOINLINE vkCmdBindIndexBuffer #-}
-##endif
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @both@
---
--- > void vkCmdBindIndexBuffer
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkBuffer buffer
--- >     , VkDeviceSize offset
--- >     , VkIndexType indexType
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBindIndexBuffer vkCmdBindIndexBuffer registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkCmdBindIndexBuffer"
-               vkCmdBindIndexBufferSafe ::
-               VkCommandBuffer -- ^ commandBuffer
-                               -> VkBuffer -- ^ buffer
-                                           -> VkDeviceSize -- ^ offset
-                                                           -> VkIndexType -- ^ indexType
-                                                                          -> IO ()
-
-##else
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @both@
---
--- > void vkCmdBindIndexBuffer
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkBuffer buffer
--- >     , VkDeviceSize offset
--- >     , VkIndexType indexType
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBindIndexBuffer vkCmdBindIndexBuffer registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCmdBindIndexBufferSafe@ and @vkCmdBindIndexBuffer@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdBindIndexBuffer <- vkGetInstanceProc @VkCmdBindIndexBuffer vkInstance
---
--- or less efficient:
---
--- > myCmdBindIndexBuffer <- vkGetProc @VkCmdBindIndexBuffer
---
-vkCmdBindIndexBufferSafe ::
-                         VkCommandBuffer -- ^ commandBuffer
-                                         -> VkBuffer -- ^ buffer
-                                                     -> VkDeviceSize -- ^ offset
-                                                                     -> VkIndexType -- ^ indexType
-                                                                                    -> IO ()
-vkCmdBindIndexBufferSafe = vkCmdBindIndexBuffer
-
-{-# INLINE vkCmdBindIndexBufferSafe #-}
-##endif
-
--- | Queues: 'graphics'.
---
---   Renderpass: @both@
---
---   > void vkCmdBindIndexBuffer
---   >     ( VkCommandBuffer commandBuffer
---   >     , VkBuffer buffer
---   >     , VkDeviceSize offset
---   >     , VkIndexType indexType
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBindIndexBuffer vkCmdBindIndexBuffer registry at www.khronos.org>
-type HS_vkCmdBindIndexBuffer =
-     VkCommandBuffer -- ^ commandBuffer
-                     -> VkBuffer -- ^ buffer
-                                 -> VkDeviceSize -- ^ offset
-                                                 -> VkIndexType -- ^ indexType
-                                                                -> IO ()
-
-type PFN_vkCmdBindIndexBuffer = FunPtr HS_vkCmdBindIndexBuffer
-
-foreign import ccall "dynamic" unwrapVkCmdBindIndexBuffer ::
-               PFN_vkCmdBindIndexBuffer -> HS_vkCmdBindIndexBuffer
-
-instance VulkanProc "vkCmdBindIndexBuffer" where
-        type VkProcType "vkCmdBindIndexBuffer" = HS_vkCmdBindIndexBuffer
-        vkProcSymbol = _VkCmdBindIndexBuffer
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCmdBindIndexBuffer
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VkCmdBindVertexBuffers :: CString
-
-pattern VkCmdBindVertexBuffers <-
-        (is_VkCmdBindVertexBuffers -> True)
-  where VkCmdBindVertexBuffers = _VkCmdBindVertexBuffers
-
-{-# INLINE _VkCmdBindVertexBuffers #-}
-
-_VkCmdBindVertexBuffers :: CString
-_VkCmdBindVertexBuffers = Ptr "vkCmdBindVertexBuffers\NUL"##
-
-{-# INLINE is_VkCmdBindVertexBuffers #-}
-
-is_VkCmdBindVertexBuffers :: CString -> Bool
-is_VkCmdBindVertexBuffers
-  = (EQ ==) . cmpCStrings _VkCmdBindVertexBuffers
-
-type VkCmdBindVertexBuffers = "vkCmdBindVertexBuffers"
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @both@
---
--- > void vkCmdBindVertexBuffers
--- >     ( VkCommandBuffer commandBuffer
--- >     , uint32_t firstBinding
--- >     , uint32_t bindingCount
--- >     , const VkBuffer* pBuffers
--- >     , const VkDeviceSize* pOffsets
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBindVertexBuffers vkCmdBindVertexBuffers registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkCmdBindVertexBuffers"
-               vkCmdBindVertexBuffers ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 Word32 -- ^ firstBinding
-                        -> Word32 -- ^ bindingCount
-                                  -> Ptr VkBuffer -- ^ pBuffers
-                                                  -> Ptr VkDeviceSize -- ^ pOffsets
-                                                                      -> IO ()
-
-##else
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @both@
---
--- > void vkCmdBindVertexBuffers
--- >     ( VkCommandBuffer commandBuffer
--- >     , uint32_t firstBinding
--- >     , uint32_t bindingCount
--- >     , const VkBuffer* pBuffers
--- >     , const VkDeviceSize* pOffsets
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBindVertexBuffers vkCmdBindVertexBuffers registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCmdBindVertexBuffersSafe@ and @vkCmdBindVertexBuffers@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdBindVertexBuffers <- vkGetInstanceProc @VkCmdBindVertexBuffers vkInstance
---
--- or less efficient:
---
--- > myCmdBindVertexBuffers <- vkGetProc @VkCmdBindVertexBuffers
---
-vkCmdBindVertexBuffers ::
-                       VkCommandBuffer -- ^ commandBuffer
-                                       ->
-                         Word32 -- ^ firstBinding
-                                -> Word32 -- ^ bindingCount
-                                          -> Ptr VkBuffer -- ^ pBuffers
-                                                          -> Ptr VkDeviceSize -- ^ pOffsets
-                                                                              -> IO ()
-vkCmdBindVertexBuffers
-  = unsafeDupablePerformIO (vkGetProc @VkCmdBindVertexBuffers)
-
-{-# NOINLINE vkCmdBindVertexBuffers #-}
-##endif
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @both@
---
--- > void vkCmdBindVertexBuffers
--- >     ( VkCommandBuffer commandBuffer
--- >     , uint32_t firstBinding
--- >     , uint32_t bindingCount
--- >     , const VkBuffer* pBuffers
--- >     , const VkDeviceSize* pOffsets
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBindVertexBuffers vkCmdBindVertexBuffers registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkCmdBindVertexBuffers"
-               vkCmdBindVertexBuffersSafe ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 Word32 -- ^ firstBinding
-                        -> Word32 -- ^ bindingCount
-                                  -> Ptr VkBuffer -- ^ pBuffers
-                                                  -> Ptr VkDeviceSize -- ^ pOffsets
-                                                                      -> IO ()
-
-##else
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @both@
---
--- > void vkCmdBindVertexBuffers
--- >     ( VkCommandBuffer commandBuffer
--- >     , uint32_t firstBinding
--- >     , uint32_t bindingCount
--- >     , const VkBuffer* pBuffers
--- >     , const VkDeviceSize* pOffsets
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBindVertexBuffers vkCmdBindVertexBuffers registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCmdBindVertexBuffersSafe@ and @vkCmdBindVertexBuffers@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdBindVertexBuffers <- vkGetInstanceProc @VkCmdBindVertexBuffers vkInstance
---
--- or less efficient:
---
--- > myCmdBindVertexBuffers <- vkGetProc @VkCmdBindVertexBuffers
---
-vkCmdBindVertexBuffersSafe ::
-                           VkCommandBuffer -- ^ commandBuffer
-                                           ->
-                             Word32 -- ^ firstBinding
-                                    -> Word32 -- ^ bindingCount
-                                              -> Ptr VkBuffer -- ^ pBuffers
-                                                              -> Ptr VkDeviceSize -- ^ pOffsets
-                                                                                  -> IO ()
-vkCmdBindVertexBuffersSafe = vkCmdBindVertexBuffers
-
-{-# INLINE vkCmdBindVertexBuffersSafe #-}
-##endif
-
--- | Queues: 'graphics'.
---
---   Renderpass: @both@
---
---   > void vkCmdBindVertexBuffers
---   >     ( VkCommandBuffer commandBuffer
---   >     , uint32_t firstBinding
---   >     , uint32_t bindingCount
---   >     , const VkBuffer* pBuffers
---   >     , const VkDeviceSize* pOffsets
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBindVertexBuffers vkCmdBindVertexBuffers registry at www.khronos.org>
-type HS_vkCmdBindVertexBuffers =
-     VkCommandBuffer -- ^ commandBuffer
-                     ->
-       Word32 -- ^ firstBinding
-              -> Word32 -- ^ bindingCount
-                        -> Ptr VkBuffer -- ^ pBuffers
-                                        -> Ptr VkDeviceSize -- ^ pOffsets
-                                                            -> IO ()
-
-type PFN_vkCmdBindVertexBuffers = FunPtr HS_vkCmdBindVertexBuffers
-
-foreign import ccall "dynamic" unwrapVkCmdBindVertexBuffers ::
-               PFN_vkCmdBindVertexBuffers -> HS_vkCmdBindVertexBuffers
-
-instance VulkanProc "vkCmdBindVertexBuffers" where
-        type VkProcType "vkCmdBindVertexBuffers" =
-             HS_vkCmdBindVertexBuffers
-        vkProcSymbol = _VkCmdBindVertexBuffers
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCmdBindVertexBuffers
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VkCmdDraw :: CString
-
-pattern VkCmdDraw <- (is_VkCmdDraw -> True)
-  where VkCmdDraw = _VkCmdDraw
-
-{-# INLINE _VkCmdDraw #-}
-
-_VkCmdDraw :: CString
-_VkCmdDraw = Ptr "vkCmdDraw\NUL"##
-
-{-# INLINE is_VkCmdDraw #-}
-
-is_VkCmdDraw :: CString -> Bool
-is_VkCmdDraw = (EQ ==) . cmpCStrings _VkCmdDraw
-
-type VkCmdDraw = "vkCmdDraw"
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @inside@
---
--- Pipeline: @graphics@
---
--- > void vkCmdDraw
--- >     ( VkCommandBuffer commandBuffer
--- >     , uint32_t vertexCount
--- >     , uint32_t instanceCount
--- >     , uint32_t firstVertex
--- >     , uint32_t firstInstance
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDraw vkCmdDraw registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkCmdDraw" vkCmdDraw ::
-               VkCommandBuffer -- ^ commandBuffer
-                               -> Word32 -- ^ vertexCount
-                                         -> Word32 -- ^ instanceCount
-                                                   -> Word32 -- ^ firstVertex
-                                                             -> Word32 -- ^ firstInstance
-                                                                       -> IO ()
-
-##else
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @inside@
---
--- Pipeline: @graphics@
---
--- > void vkCmdDraw
--- >     ( VkCommandBuffer commandBuffer
--- >     , uint32_t vertexCount
--- >     , uint32_t instanceCount
--- >     , uint32_t firstVertex
--- >     , uint32_t firstInstance
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDraw vkCmdDraw registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCmdDrawSafe@ and @vkCmdDraw@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdDraw <- vkGetInstanceProc @VkCmdDraw vkInstance
---
--- or less efficient:
---
--- > myCmdDraw <- vkGetProc @VkCmdDraw
---
-vkCmdDraw ::
-          VkCommandBuffer -- ^ commandBuffer
-                          -> Word32 -- ^ vertexCount
-                                    -> Word32 -- ^ instanceCount
-                                              -> Word32 -- ^ firstVertex
-                                                        -> Word32 -- ^ firstInstance
-                                                                  -> IO ()
-vkCmdDraw = unsafeDupablePerformIO (vkGetProc @VkCmdDraw)
-
-{-# NOINLINE vkCmdDraw #-}
-##endif
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @inside@
---
--- Pipeline: @graphics@
---
--- > void vkCmdDraw
--- >     ( VkCommandBuffer commandBuffer
--- >     , uint32_t vertexCount
--- >     , uint32_t instanceCount
--- >     , uint32_t firstVertex
--- >     , uint32_t firstInstance
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDraw vkCmdDraw registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkCmdDraw" vkCmdDrawSafe ::
-               VkCommandBuffer -- ^ commandBuffer
-                               -> Word32 -- ^ vertexCount
-                                         -> Word32 -- ^ instanceCount
-                                                   -> Word32 -- ^ firstVertex
-                                                             -> Word32 -- ^ firstInstance
-                                                                       -> IO ()
-
-##else
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @inside@
---
--- Pipeline: @graphics@
---
--- > void vkCmdDraw
--- >     ( VkCommandBuffer commandBuffer
--- >     , uint32_t vertexCount
--- >     , uint32_t instanceCount
--- >     , uint32_t firstVertex
--- >     , uint32_t firstInstance
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDraw vkCmdDraw registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCmdDrawSafe@ and @vkCmdDraw@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdDraw <- vkGetInstanceProc @VkCmdDraw vkInstance
---
--- or less efficient:
---
--- > myCmdDraw <- vkGetProc @VkCmdDraw
---
-vkCmdDrawSafe ::
-              VkCommandBuffer -- ^ commandBuffer
-                              -> Word32 -- ^ vertexCount
-                                        -> Word32 -- ^ instanceCount
-                                                  -> Word32 -- ^ firstVertex
-                                                            -> Word32 -- ^ firstInstance
-                                                                      -> IO ()
-vkCmdDrawSafe = vkCmdDraw
-
-{-# INLINE vkCmdDrawSafe #-}
-##endif
-
--- | Queues: 'graphics'.
---
---   Renderpass: @inside@
---
---   Pipeline: @graphics@
---
---   > void vkCmdDraw
---   >     ( VkCommandBuffer commandBuffer
---   >     , uint32_t vertexCount
---   >     , uint32_t instanceCount
---   >     , uint32_t firstVertex
---   >     , uint32_t firstInstance
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDraw vkCmdDraw registry at www.khronos.org>
-type HS_vkCmdDraw =
-     VkCommandBuffer -- ^ commandBuffer
-                     -> Word32 -- ^ vertexCount
-                               -> Word32 -- ^ instanceCount
-                                         -> Word32 -- ^ firstVertex
-                                                   -> Word32 -- ^ firstInstance
-                                                             -> IO ()
-
-type PFN_vkCmdDraw = FunPtr HS_vkCmdDraw
-
-foreign import ccall "dynamic" unwrapVkCmdDraw ::
-               PFN_vkCmdDraw -> HS_vkCmdDraw
-
-instance VulkanProc "vkCmdDraw" where
-        type VkProcType "vkCmdDraw" = HS_vkCmdDraw
-        vkProcSymbol = _VkCmdDraw
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCmdDraw
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VkCmdDrawIndexed :: CString
-
-pattern VkCmdDrawIndexed <- (is_VkCmdDrawIndexed -> True)
-  where VkCmdDrawIndexed = _VkCmdDrawIndexed
-
-{-# INLINE _VkCmdDrawIndexed #-}
-
-_VkCmdDrawIndexed :: CString
-_VkCmdDrawIndexed = Ptr "vkCmdDrawIndexed\NUL"##
-
-{-# INLINE is_VkCmdDrawIndexed #-}
-
-is_VkCmdDrawIndexed :: CString -> Bool
-is_VkCmdDrawIndexed = (EQ ==) . cmpCStrings _VkCmdDrawIndexed
-
-type VkCmdDrawIndexed = "vkCmdDrawIndexed"
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @inside@
---
--- Pipeline: @graphics@
---
--- > void vkCmdDrawIndexed
--- >     ( VkCommandBuffer commandBuffer
--- >     , uint32_t indexCount
--- >     , uint32_t instanceCount
--- >     , uint32_t firstIndex
--- >     , int32_t vertexOffset
--- >     , uint32_t firstInstance
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDrawIndexed vkCmdDrawIndexed registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkCmdDrawIndexed" vkCmdDrawIndexed ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 Word32 -- ^ indexCount
-                        -> Word32 -- ^ instanceCount
-                                  -> Word32 -- ^ firstIndex
-                                            -> Int32 -- ^ vertexOffset
-                                                     -> Word32 -- ^ firstInstance
-                                                               -> IO ()
-
-##else
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @inside@
---
--- Pipeline: @graphics@
---
--- > void vkCmdDrawIndexed
--- >     ( VkCommandBuffer commandBuffer
--- >     , uint32_t indexCount
--- >     , uint32_t instanceCount
--- >     , uint32_t firstIndex
--- >     , int32_t vertexOffset
--- >     , uint32_t firstInstance
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDrawIndexed vkCmdDrawIndexed registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCmdDrawIndexedSafe@ and @vkCmdDrawIndexed@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdDrawIndexed <- vkGetInstanceProc @VkCmdDrawIndexed vkInstance
---
--- or less efficient:
---
--- > myCmdDrawIndexed <- vkGetProc @VkCmdDrawIndexed
---
-vkCmdDrawIndexed ::
-                 VkCommandBuffer -- ^ commandBuffer
-                                 ->
-                   Word32 -- ^ indexCount
-                          -> Word32 -- ^ instanceCount
-                                    -> Word32 -- ^ firstIndex
-                                              -> Int32 -- ^ vertexOffset
-                                                       -> Word32 -- ^ firstInstance
-                                                                 -> IO ()
-vkCmdDrawIndexed
-  = unsafeDupablePerformIO (vkGetProc @VkCmdDrawIndexed)
-
-{-# NOINLINE vkCmdDrawIndexed #-}
-##endif
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @inside@
---
--- Pipeline: @graphics@
---
--- > void vkCmdDrawIndexed
--- >     ( VkCommandBuffer commandBuffer
--- >     , uint32_t indexCount
--- >     , uint32_t instanceCount
--- >     , uint32_t firstIndex
--- >     , int32_t vertexOffset
--- >     , uint32_t firstInstance
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDrawIndexed vkCmdDrawIndexed registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkCmdDrawIndexed" vkCmdDrawIndexedSafe
-               ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 Word32 -- ^ indexCount
-                        -> Word32 -- ^ instanceCount
-                                  -> Word32 -- ^ firstIndex
-                                            -> Int32 -- ^ vertexOffset
-                                                     -> Word32 -- ^ firstInstance
-                                                               -> IO ()
-
-##else
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @inside@
---
--- Pipeline: @graphics@
---
--- > void vkCmdDrawIndexed
--- >     ( VkCommandBuffer commandBuffer
--- >     , uint32_t indexCount
--- >     , uint32_t instanceCount
--- >     , uint32_t firstIndex
--- >     , int32_t vertexOffset
--- >     , uint32_t firstInstance
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDrawIndexed vkCmdDrawIndexed registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCmdDrawIndexedSafe@ and @vkCmdDrawIndexed@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdDrawIndexed <- vkGetInstanceProc @VkCmdDrawIndexed vkInstance
---
--- or less efficient:
---
--- > myCmdDrawIndexed <- vkGetProc @VkCmdDrawIndexed
---
-vkCmdDrawIndexedSafe ::
-                     VkCommandBuffer -- ^ commandBuffer
-                                     ->
-                       Word32 -- ^ indexCount
-                              -> Word32 -- ^ instanceCount
-                                        -> Word32 -- ^ firstIndex
-                                                  -> Int32 -- ^ vertexOffset
-                                                           -> Word32 -- ^ firstInstance
-                                                                     -> IO ()
-vkCmdDrawIndexedSafe = vkCmdDrawIndexed
-
-{-# INLINE vkCmdDrawIndexedSafe #-}
-##endif
-
--- | Queues: 'graphics'.
---
---   Renderpass: @inside@
---
---   Pipeline: @graphics@
---
---   > void vkCmdDrawIndexed
---   >     ( VkCommandBuffer commandBuffer
---   >     , uint32_t indexCount
---   >     , uint32_t instanceCount
---   >     , uint32_t firstIndex
---   >     , int32_t vertexOffset
---   >     , uint32_t firstInstance
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDrawIndexed vkCmdDrawIndexed registry at www.khronos.org>
-type HS_vkCmdDrawIndexed =
-     VkCommandBuffer -- ^ commandBuffer
-                     ->
-       Word32 -- ^ indexCount
-              -> Word32 -- ^ instanceCount
-                        -> Word32 -- ^ firstIndex
-                                  -> Int32 -- ^ vertexOffset
-                                           -> Word32 -- ^ firstInstance
-                                                     -> IO ()
-
-type PFN_vkCmdDrawIndexed = FunPtr HS_vkCmdDrawIndexed
-
-foreign import ccall "dynamic" unwrapVkCmdDrawIndexed ::
-               PFN_vkCmdDrawIndexed -> HS_vkCmdDrawIndexed
-
-instance VulkanProc "vkCmdDrawIndexed" where
-        type VkProcType "vkCmdDrawIndexed" = HS_vkCmdDrawIndexed
-        vkProcSymbol = _VkCmdDrawIndexed
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCmdDrawIndexed
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VkCmdDrawIndirect :: CString
-
-pattern VkCmdDrawIndirect <- (is_VkCmdDrawIndirect -> True)
-  where VkCmdDrawIndirect = _VkCmdDrawIndirect
-
-{-# INLINE _VkCmdDrawIndirect #-}
-
-_VkCmdDrawIndirect :: CString
-_VkCmdDrawIndirect = Ptr "vkCmdDrawIndirect\NUL"##
-
-{-# INLINE is_VkCmdDrawIndirect #-}
-
-is_VkCmdDrawIndirect :: CString -> Bool
-is_VkCmdDrawIndirect = (EQ ==) . cmpCStrings _VkCmdDrawIndirect
-
-type VkCmdDrawIndirect = "vkCmdDrawIndirect"
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @inside@
---
--- Pipeline: @graphics@
---
--- > void vkCmdDrawIndirect
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkBuffer buffer
--- >     , VkDeviceSize offset
--- >     , uint32_t drawCount
--- >     , uint32_t stride
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDrawIndirect vkCmdDrawIndirect registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkCmdDrawIndirect" vkCmdDrawIndirect
-               ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 VkBuffer -- ^ buffer
-                          -> VkDeviceSize -- ^ offset
-                                          -> Word32 -- ^ drawCount
-                                                    -> Word32 -- ^ stride
-                                                              -> IO ()
-
-##else
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @inside@
---
--- Pipeline: @graphics@
---
--- > void vkCmdDrawIndirect
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkBuffer buffer
--- >     , VkDeviceSize offset
--- >     , uint32_t drawCount
--- >     , uint32_t stride
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDrawIndirect vkCmdDrawIndirect registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCmdDrawIndirectSafe@ and @vkCmdDrawIndirect@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdDrawIndirect <- vkGetInstanceProc @VkCmdDrawIndirect vkInstance
---
--- or less efficient:
---
--- > myCmdDrawIndirect <- vkGetProc @VkCmdDrawIndirect
---
-vkCmdDrawIndirect ::
-                  VkCommandBuffer -- ^ commandBuffer
-                                  ->
-                    VkBuffer -- ^ buffer
-                             -> VkDeviceSize -- ^ offset
-                                             -> Word32 -- ^ drawCount
-                                                       -> Word32 -- ^ stride
-                                                                 -> IO ()
-vkCmdDrawIndirect
-  = unsafeDupablePerformIO (vkGetProc @VkCmdDrawIndirect)
-
-{-# NOINLINE vkCmdDrawIndirect #-}
-##endif
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @inside@
---
--- Pipeline: @graphics@
---
--- > void vkCmdDrawIndirect
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkBuffer buffer
--- >     , VkDeviceSize offset
--- >     , uint32_t drawCount
--- >     , uint32_t stride
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDrawIndirect vkCmdDrawIndirect registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkCmdDrawIndirect" vkCmdDrawIndirectSafe
-               ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 VkBuffer -- ^ buffer
-                          -> VkDeviceSize -- ^ offset
-                                          -> Word32 -- ^ drawCount
-                                                    -> Word32 -- ^ stride
-                                                              -> IO ()
-
-##else
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @inside@
---
--- Pipeline: @graphics@
---
--- > void vkCmdDrawIndirect
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkBuffer buffer
--- >     , VkDeviceSize offset
--- >     , uint32_t drawCount
--- >     , uint32_t stride
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDrawIndirect vkCmdDrawIndirect registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCmdDrawIndirectSafe@ and @vkCmdDrawIndirect@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdDrawIndirect <- vkGetInstanceProc @VkCmdDrawIndirect vkInstance
---
--- or less efficient:
---
--- > myCmdDrawIndirect <- vkGetProc @VkCmdDrawIndirect
---
-vkCmdDrawIndirectSafe ::
-                      VkCommandBuffer -- ^ commandBuffer
-                                      ->
-                        VkBuffer -- ^ buffer
-                                 -> VkDeviceSize -- ^ offset
-                                                 -> Word32 -- ^ drawCount
-                                                           -> Word32 -- ^ stride
-                                                                     -> IO ()
-vkCmdDrawIndirectSafe = vkCmdDrawIndirect
-
-{-# INLINE vkCmdDrawIndirectSafe #-}
-##endif
-
--- | Queues: 'graphics'.
---
---   Renderpass: @inside@
---
---   Pipeline: @graphics@
---
---   > void vkCmdDrawIndirect
---   >     ( VkCommandBuffer commandBuffer
---   >     , VkBuffer buffer
---   >     , VkDeviceSize offset
---   >     , uint32_t drawCount
---   >     , uint32_t stride
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDrawIndirect vkCmdDrawIndirect registry at www.khronos.org>
-type HS_vkCmdDrawIndirect =
-     VkCommandBuffer -- ^ commandBuffer
-                     ->
-       VkBuffer -- ^ buffer
-                -> VkDeviceSize -- ^ offset
-                                -> Word32 -- ^ drawCount
-                                          -> Word32 -- ^ stride
-                                                    -> IO ()
-
-type PFN_vkCmdDrawIndirect = FunPtr HS_vkCmdDrawIndirect
-
-foreign import ccall "dynamic" unwrapVkCmdDrawIndirect ::
-               PFN_vkCmdDrawIndirect -> HS_vkCmdDrawIndirect
-
-instance VulkanProc "vkCmdDrawIndirect" where
-        type VkProcType "vkCmdDrawIndirect" = HS_vkCmdDrawIndirect
-        vkProcSymbol = _VkCmdDrawIndirect
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCmdDrawIndirect
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VkCmdDrawIndexedIndirect :: CString
-
-pattern VkCmdDrawIndexedIndirect <-
-        (is_VkCmdDrawIndexedIndirect -> True)
-  where VkCmdDrawIndexedIndirect = _VkCmdDrawIndexedIndirect
-
-{-# INLINE _VkCmdDrawIndexedIndirect #-}
-
-_VkCmdDrawIndexedIndirect :: CString
-_VkCmdDrawIndexedIndirect = Ptr "vkCmdDrawIndexedIndirect\NUL"##
-
-{-# INLINE is_VkCmdDrawIndexedIndirect #-}
-
-is_VkCmdDrawIndexedIndirect :: CString -> Bool
-is_VkCmdDrawIndexedIndirect
-  = (EQ ==) . cmpCStrings _VkCmdDrawIndexedIndirect
-
-type VkCmdDrawIndexedIndirect = "vkCmdDrawIndexedIndirect"
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @inside@
---
--- Pipeline: @graphics@
---
--- > void vkCmdDrawIndexedIndirect
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkBuffer buffer
--- >     , VkDeviceSize offset
--- >     , uint32_t drawCount
--- >     , uint32_t stride
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDrawIndexedIndirect vkCmdDrawIndexedIndirect registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkCmdDrawIndexedIndirect"
-               vkCmdDrawIndexedIndirect ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 VkBuffer -- ^ buffer
-                          -> VkDeviceSize -- ^ offset
-                                          -> Word32 -- ^ drawCount
-                                                    -> Word32 -- ^ stride
-                                                              -> IO ()
-
-##else
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @inside@
---
--- Pipeline: @graphics@
---
--- > void vkCmdDrawIndexedIndirect
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkBuffer buffer
--- >     , VkDeviceSize offset
--- >     , uint32_t drawCount
--- >     , uint32_t stride
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDrawIndexedIndirect vkCmdDrawIndexedIndirect registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCmdDrawIndexedIndirectSafe@ and @vkCmdDrawIndexedIndirect@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdDrawIndexedIndirect <- vkGetInstanceProc @VkCmdDrawIndexedIndirect vkInstance
---
--- or less efficient:
---
--- > myCmdDrawIndexedIndirect <- vkGetProc @VkCmdDrawIndexedIndirect
---
-vkCmdDrawIndexedIndirect ::
-                         VkCommandBuffer -- ^ commandBuffer
-                                         ->
-                           VkBuffer -- ^ buffer
-                                    -> VkDeviceSize -- ^ offset
-                                                    -> Word32 -- ^ drawCount
-                                                              -> Word32 -- ^ stride
-                                                                        -> IO ()
-vkCmdDrawIndexedIndirect
-  = unsafeDupablePerformIO (vkGetProc @VkCmdDrawIndexedIndirect)
-
-{-# NOINLINE vkCmdDrawIndexedIndirect #-}
-##endif
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @inside@
---
--- Pipeline: @graphics@
---
--- > void vkCmdDrawIndexedIndirect
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkBuffer buffer
--- >     , VkDeviceSize offset
--- >     , uint32_t drawCount
--- >     , uint32_t stride
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDrawIndexedIndirect vkCmdDrawIndexedIndirect registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkCmdDrawIndexedIndirect"
-               vkCmdDrawIndexedIndirectSafe ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 VkBuffer -- ^ buffer
-                          -> VkDeviceSize -- ^ offset
-                                          -> Word32 -- ^ drawCount
-                                                    -> Word32 -- ^ stride
-                                                              -> IO ()
-
-##else
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @inside@
---
--- Pipeline: @graphics@
---
--- > void vkCmdDrawIndexedIndirect
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkBuffer buffer
--- >     , VkDeviceSize offset
--- >     , uint32_t drawCount
--- >     , uint32_t stride
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDrawIndexedIndirect vkCmdDrawIndexedIndirect registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCmdDrawIndexedIndirectSafe@ and @vkCmdDrawIndexedIndirect@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdDrawIndexedIndirect <- vkGetInstanceProc @VkCmdDrawIndexedIndirect vkInstance
---
--- or less efficient:
---
--- > myCmdDrawIndexedIndirect <- vkGetProc @VkCmdDrawIndexedIndirect
---
-vkCmdDrawIndexedIndirectSafe ::
-                             VkCommandBuffer -- ^ commandBuffer
-                                             ->
-                               VkBuffer -- ^ buffer
-                                        -> VkDeviceSize -- ^ offset
-                                                        -> Word32 -- ^ drawCount
-                                                                  -> Word32 -- ^ stride
-                                                                            -> IO ()
-vkCmdDrawIndexedIndirectSafe = vkCmdDrawIndexedIndirect
-
-{-# INLINE vkCmdDrawIndexedIndirectSafe #-}
-##endif
-
--- | Queues: 'graphics'.
---
---   Renderpass: @inside@
---
---   Pipeline: @graphics@
---
---   > void vkCmdDrawIndexedIndirect
---   >     ( VkCommandBuffer commandBuffer
---   >     , VkBuffer buffer
---   >     , VkDeviceSize offset
---   >     , uint32_t drawCount
---   >     , uint32_t stride
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDrawIndexedIndirect vkCmdDrawIndexedIndirect registry at www.khronos.org>
-type HS_vkCmdDrawIndexedIndirect =
-     VkCommandBuffer -- ^ commandBuffer
-                     ->
-       VkBuffer -- ^ buffer
-                -> VkDeviceSize -- ^ offset
-                                -> Word32 -- ^ drawCount
-                                          -> Word32 -- ^ stride
-                                                    -> IO ()
-
-type PFN_vkCmdDrawIndexedIndirect =
-     FunPtr HS_vkCmdDrawIndexedIndirect
-
-foreign import ccall "dynamic" unwrapVkCmdDrawIndexedIndirect ::
-               PFN_vkCmdDrawIndexedIndirect -> HS_vkCmdDrawIndexedIndirect
-
-instance VulkanProc "vkCmdDrawIndexedIndirect" where
-        type VkProcType "vkCmdDrawIndexedIndirect" =
-             HS_vkCmdDrawIndexedIndirect
-        vkProcSymbol = _VkCmdDrawIndexedIndirect
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCmdDrawIndexedIndirect
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VkCmdDispatch :: CString
-
-pattern VkCmdDispatch <- (is_VkCmdDispatch -> True)
-  where VkCmdDispatch = _VkCmdDispatch
-
-{-# INLINE _VkCmdDispatch #-}
-
-_VkCmdDispatch :: CString
-_VkCmdDispatch = Ptr "vkCmdDispatch\NUL"##
-
-{-# INLINE is_VkCmdDispatch #-}
-
-is_VkCmdDispatch :: CString -> Bool
-is_VkCmdDispatch = (EQ ==) . cmpCStrings _VkCmdDispatch
-
-type VkCmdDispatch = "vkCmdDispatch"
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Queues: 'compute'.
---
--- Renderpass: @outside@
---
--- Pipeline: @compute@
---
--- > void vkCmdDispatch
--- >     ( VkCommandBuffer commandBuffer
--- >     , uint32_t groupCountX
--- >     , uint32_t groupCountY
--- >     , uint32_t groupCountZ
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDispatch vkCmdDispatch registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkCmdDispatch" vkCmdDispatch ::
-               VkCommandBuffer -- ^ commandBuffer
-                               -> Word32 -- ^ groupCountX
-                                         -> Word32 -- ^ groupCountY
-                                                   -> Word32 -- ^ groupCountZ
-                                                             -> IO ()
-
-##else
--- |
--- Queues: 'compute'.
---
--- Renderpass: @outside@
---
--- Pipeline: @compute@
---
--- > void vkCmdDispatch
--- >     ( VkCommandBuffer commandBuffer
--- >     , uint32_t groupCountX
--- >     , uint32_t groupCountY
--- >     , uint32_t groupCountZ
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDispatch vkCmdDispatch registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCmdDispatchSafe@ and @vkCmdDispatch@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdDispatch <- vkGetInstanceProc @VkCmdDispatch vkInstance
---
--- or less efficient:
---
--- > myCmdDispatch <- vkGetProc @VkCmdDispatch
---
-vkCmdDispatch ::
-              VkCommandBuffer -- ^ commandBuffer
-                              -> Word32 -- ^ groupCountX
-                                        -> Word32 -- ^ groupCountY
-                                                  -> Word32 -- ^ groupCountZ
-                                                            -> IO ()
-vkCmdDispatch = unsafeDupablePerformIO (vkGetProc @VkCmdDispatch)
-
-{-# NOINLINE vkCmdDispatch #-}
-##endif
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Queues: 'compute'.
---
--- Renderpass: @outside@
---
--- Pipeline: @compute@
---
--- > void vkCmdDispatch
--- >     ( VkCommandBuffer commandBuffer
--- >     , uint32_t groupCountX
--- >     , uint32_t groupCountY
--- >     , uint32_t groupCountZ
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDispatch vkCmdDispatch registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkCmdDispatch" vkCmdDispatchSafe ::
-               VkCommandBuffer -- ^ commandBuffer
-                               -> Word32 -- ^ groupCountX
-                                         -> Word32 -- ^ groupCountY
-                                                   -> Word32 -- ^ groupCountZ
-                                                             -> IO ()
-
-##else
--- |
--- Queues: 'compute'.
---
--- Renderpass: @outside@
---
--- Pipeline: @compute@
---
--- > void vkCmdDispatch
--- >     ( VkCommandBuffer commandBuffer
--- >     , uint32_t groupCountX
--- >     , uint32_t groupCountY
--- >     , uint32_t groupCountZ
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDispatch vkCmdDispatch registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCmdDispatchSafe@ and @vkCmdDispatch@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdDispatch <- vkGetInstanceProc @VkCmdDispatch vkInstance
---
--- or less efficient:
---
--- > myCmdDispatch <- vkGetProc @VkCmdDispatch
---
-vkCmdDispatchSafe ::
-                  VkCommandBuffer -- ^ commandBuffer
-                                  -> Word32 -- ^ groupCountX
-                                            -> Word32 -- ^ groupCountY
-                                                      -> Word32 -- ^ groupCountZ
-                                                                -> IO ()
-vkCmdDispatchSafe = vkCmdDispatch
-
-{-# INLINE vkCmdDispatchSafe #-}
-##endif
-
--- | Queues: 'compute'.
---
---   Renderpass: @outside@
---
---   Pipeline: @compute@
---
---   > void vkCmdDispatch
---   >     ( VkCommandBuffer commandBuffer
---   >     , uint32_t groupCountX
---   >     , uint32_t groupCountY
---   >     , uint32_t groupCountZ
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDispatch vkCmdDispatch registry at www.khronos.org>
-type HS_vkCmdDispatch =
-     VkCommandBuffer -- ^ commandBuffer
-                     -> Word32 -- ^ groupCountX
-                               -> Word32 -- ^ groupCountY
-                                         -> Word32 -- ^ groupCountZ
-                                                   -> IO ()
-
-type PFN_vkCmdDispatch = FunPtr HS_vkCmdDispatch
-
-foreign import ccall "dynamic" unwrapVkCmdDispatch ::
-               PFN_vkCmdDispatch -> HS_vkCmdDispatch
-
-instance VulkanProc "vkCmdDispatch" where
-        type VkProcType "vkCmdDispatch" = HS_vkCmdDispatch
-        vkProcSymbol = _VkCmdDispatch
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCmdDispatch
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VkCmdDispatchIndirect :: CString
-
-pattern VkCmdDispatchIndirect <- (is_VkCmdDispatchIndirect -> True)
-  where VkCmdDispatchIndirect = _VkCmdDispatchIndirect
-
-{-# INLINE _VkCmdDispatchIndirect #-}
-
-_VkCmdDispatchIndirect :: CString
-_VkCmdDispatchIndirect = Ptr "vkCmdDispatchIndirect\NUL"##
-
-{-# INLINE is_VkCmdDispatchIndirect #-}
-
-is_VkCmdDispatchIndirect :: CString -> Bool
-is_VkCmdDispatchIndirect
-  = (EQ ==) . cmpCStrings _VkCmdDispatchIndirect
-
-type VkCmdDispatchIndirect = "vkCmdDispatchIndirect"
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Queues: 'compute'.
---
--- Renderpass: @outside@
---
--- Pipeline: @compute@
---
--- > void vkCmdDispatchIndirect
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkBuffer buffer
--- >     , VkDeviceSize offset
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDispatchIndirect vkCmdDispatchIndirect registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkCmdDispatchIndirect"
-               vkCmdDispatchIndirect ::
-               VkCommandBuffer -- ^ commandBuffer
-                               -> VkBuffer -- ^ buffer
-                                           -> VkDeviceSize -- ^ offset
-                                                           -> IO ()
-
-##else
--- |
--- Queues: 'compute'.
---
--- Renderpass: @outside@
---
--- Pipeline: @compute@
---
--- > void vkCmdDispatchIndirect
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkBuffer buffer
--- >     , VkDeviceSize offset
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDispatchIndirect vkCmdDispatchIndirect registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCmdDispatchIndirectSafe@ and @vkCmdDispatchIndirect@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdDispatchIndirect <- vkGetInstanceProc @VkCmdDispatchIndirect vkInstance
---
--- or less efficient:
---
--- > myCmdDispatchIndirect <- vkGetProc @VkCmdDispatchIndirect
---
-vkCmdDispatchIndirect ::
-                      VkCommandBuffer -- ^ commandBuffer
-                                      -> VkBuffer -- ^ buffer
-                                                  -> VkDeviceSize -- ^ offset
-                                                                  -> IO ()
-vkCmdDispatchIndirect
-  = unsafeDupablePerformIO (vkGetProc @VkCmdDispatchIndirect)
-
-{-# NOINLINE vkCmdDispatchIndirect #-}
-##endif
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Queues: 'compute'.
---
--- Renderpass: @outside@
---
--- Pipeline: @compute@
---
--- > void vkCmdDispatchIndirect
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkBuffer buffer
--- >     , VkDeviceSize offset
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDispatchIndirect vkCmdDispatchIndirect registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkCmdDispatchIndirect"
-               vkCmdDispatchIndirectSafe ::
-               VkCommandBuffer -- ^ commandBuffer
-                               -> VkBuffer -- ^ buffer
-                                           -> VkDeviceSize -- ^ offset
-                                                           -> IO ()
-
-##else
--- |
--- Queues: 'compute'.
---
--- Renderpass: @outside@
---
--- Pipeline: @compute@
---
--- > void vkCmdDispatchIndirect
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkBuffer buffer
--- >     , VkDeviceSize offset
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDispatchIndirect vkCmdDispatchIndirect registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCmdDispatchIndirectSafe@ and @vkCmdDispatchIndirect@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdDispatchIndirect <- vkGetInstanceProc @VkCmdDispatchIndirect vkInstance
---
--- or less efficient:
---
--- > myCmdDispatchIndirect <- vkGetProc @VkCmdDispatchIndirect
---
-vkCmdDispatchIndirectSafe ::
-                          VkCommandBuffer -- ^ commandBuffer
-                                          -> VkBuffer -- ^ buffer
-                                                      -> VkDeviceSize -- ^ offset
-                                                                      -> IO ()
-vkCmdDispatchIndirectSafe = vkCmdDispatchIndirect
-
-{-# INLINE vkCmdDispatchIndirectSafe #-}
-##endif
-
--- | Queues: 'compute'.
---
---   Renderpass: @outside@
---
---   Pipeline: @compute@
---
---   > void vkCmdDispatchIndirect
---   >     ( VkCommandBuffer commandBuffer
---   >     , VkBuffer buffer
---   >     , VkDeviceSize offset
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDispatchIndirect vkCmdDispatchIndirect registry at www.khronos.org>
-type HS_vkCmdDispatchIndirect =
-     VkCommandBuffer -- ^ commandBuffer
-                     -> VkBuffer -- ^ buffer
-                                 -> VkDeviceSize -- ^ offset
-                                                 -> IO ()
-
-type PFN_vkCmdDispatchIndirect = FunPtr HS_vkCmdDispatchIndirect
-
-foreign import ccall "dynamic" unwrapVkCmdDispatchIndirect ::
-               PFN_vkCmdDispatchIndirect -> HS_vkCmdDispatchIndirect
-
-instance VulkanProc "vkCmdDispatchIndirect" where
-        type VkProcType "vkCmdDispatchIndirect" = HS_vkCmdDispatchIndirect
-        vkProcSymbol = _VkCmdDispatchIndirect
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCmdDispatchIndirect
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VkCmdCopyBuffer :: CString
-
-pattern VkCmdCopyBuffer <- (is_VkCmdCopyBuffer -> True)
-  where VkCmdCopyBuffer = _VkCmdCopyBuffer
-
-{-# INLINE _VkCmdCopyBuffer #-}
-
-_VkCmdCopyBuffer :: CString
-_VkCmdCopyBuffer = Ptr "vkCmdCopyBuffer\NUL"##
-
-{-# INLINE is_VkCmdCopyBuffer #-}
-
-is_VkCmdCopyBuffer :: CString -> Bool
-is_VkCmdCopyBuffer = (EQ ==) . cmpCStrings _VkCmdCopyBuffer
-
-type VkCmdCopyBuffer = "vkCmdCopyBuffer"
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Queues: 'transfer', 'graphics', 'compute'.
---
--- Renderpass: @outside@
---
--- Pipeline: @transfer@
---
--- > void vkCmdCopyBuffer
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkBuffer srcBuffer
--- >     , VkBuffer dstBuffer
--- >     , uint32_t regionCount
--- >     , const VkBufferCopy* pRegions
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdCopyBuffer vkCmdCopyBuffer registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkCmdCopyBuffer" vkCmdCopyBuffer ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 VkBuffer -- ^ srcBuffer
-                          -> VkBuffer -- ^ dstBuffer
-                                      -> Word32 -- ^ regionCount
-                                                -> Ptr VkBufferCopy -- ^ pRegions
-                                                                    -> IO ()
-
-##else
--- |
--- Queues: 'transfer', 'graphics', 'compute'.
---
--- Renderpass: @outside@
---
--- Pipeline: @transfer@
---
--- > void vkCmdCopyBuffer
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkBuffer srcBuffer
--- >     , VkBuffer dstBuffer
--- >     , uint32_t regionCount
--- >     , const VkBufferCopy* pRegions
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdCopyBuffer vkCmdCopyBuffer registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCmdCopyBufferSafe@ and @vkCmdCopyBuffer@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdCopyBuffer <- vkGetInstanceProc @VkCmdCopyBuffer vkInstance
---
--- or less efficient:
---
--- > myCmdCopyBuffer <- vkGetProc @VkCmdCopyBuffer
---
-vkCmdCopyBuffer ::
-                VkCommandBuffer -- ^ commandBuffer
-                                ->
-                  VkBuffer -- ^ srcBuffer
-                           -> VkBuffer -- ^ dstBuffer
-                                       -> Word32 -- ^ regionCount
-                                                 -> Ptr VkBufferCopy -- ^ pRegions
-                                                                     -> IO ()
-vkCmdCopyBuffer
-  = unsafeDupablePerformIO (vkGetProc @VkCmdCopyBuffer)
-
-{-# NOINLINE vkCmdCopyBuffer #-}
-##endif
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Queues: 'transfer', 'graphics', 'compute'.
---
--- Renderpass: @outside@
---
--- Pipeline: @transfer@
---
--- > void vkCmdCopyBuffer
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkBuffer srcBuffer
--- >     , VkBuffer dstBuffer
--- >     , uint32_t regionCount
--- >     , const VkBufferCopy* pRegions
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdCopyBuffer vkCmdCopyBuffer registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkCmdCopyBuffer" vkCmdCopyBufferSafe ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 VkBuffer -- ^ srcBuffer
-                          -> VkBuffer -- ^ dstBuffer
-                                      -> Word32 -- ^ regionCount
-                                                -> Ptr VkBufferCopy -- ^ pRegions
-                                                                    -> IO ()
-
-##else
--- |
--- Queues: 'transfer', 'graphics', 'compute'.
---
--- Renderpass: @outside@
---
--- Pipeline: @transfer@
---
--- > void vkCmdCopyBuffer
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkBuffer srcBuffer
--- >     , VkBuffer dstBuffer
--- >     , uint32_t regionCount
--- >     , const VkBufferCopy* pRegions
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdCopyBuffer vkCmdCopyBuffer registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCmdCopyBufferSafe@ and @vkCmdCopyBuffer@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdCopyBuffer <- vkGetInstanceProc @VkCmdCopyBuffer vkInstance
---
--- or less efficient:
---
--- > myCmdCopyBuffer <- vkGetProc @VkCmdCopyBuffer
---
-vkCmdCopyBufferSafe ::
-                    VkCommandBuffer -- ^ commandBuffer
-                                    ->
-                      VkBuffer -- ^ srcBuffer
-                               -> VkBuffer -- ^ dstBuffer
-                                           -> Word32 -- ^ regionCount
-                                                     -> Ptr VkBufferCopy -- ^ pRegions
-                                                                         -> IO ()
-vkCmdCopyBufferSafe = vkCmdCopyBuffer
-
-{-# INLINE vkCmdCopyBufferSafe #-}
-##endif
-
--- | Queues: 'transfer', 'graphics', 'compute'.
---
---   Renderpass: @outside@
---
---   Pipeline: @transfer@
---
---   > void vkCmdCopyBuffer
---   >     ( VkCommandBuffer commandBuffer
---   >     , VkBuffer srcBuffer
---   >     , VkBuffer dstBuffer
---   >     , uint32_t regionCount
---   >     , const VkBufferCopy* pRegions
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdCopyBuffer vkCmdCopyBuffer registry at www.khronos.org>
-type HS_vkCmdCopyBuffer =
-     VkCommandBuffer -- ^ commandBuffer
-                     ->
-       VkBuffer -- ^ srcBuffer
-                -> VkBuffer -- ^ dstBuffer
-                            -> Word32 -- ^ regionCount
-                                      -> Ptr VkBufferCopy -- ^ pRegions
-                                                          -> IO ()
-
-type PFN_vkCmdCopyBuffer = FunPtr HS_vkCmdCopyBuffer
-
-foreign import ccall "dynamic" unwrapVkCmdCopyBuffer ::
-               PFN_vkCmdCopyBuffer -> HS_vkCmdCopyBuffer
-
-instance VulkanProc "vkCmdCopyBuffer" where
-        type VkProcType "vkCmdCopyBuffer" = HS_vkCmdCopyBuffer
-        vkProcSymbol = _VkCmdCopyBuffer
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCmdCopyBuffer
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VkCmdCopyImage :: CString
-
-pattern VkCmdCopyImage <- (is_VkCmdCopyImage -> True)
-  where VkCmdCopyImage = _VkCmdCopyImage
-
-{-# INLINE _VkCmdCopyImage #-}
-
-_VkCmdCopyImage :: CString
-_VkCmdCopyImage = Ptr "vkCmdCopyImage\NUL"##
-
-{-# INLINE is_VkCmdCopyImage #-}
-
-is_VkCmdCopyImage :: CString -> Bool
-is_VkCmdCopyImage = (EQ ==) . cmpCStrings _VkCmdCopyImage
-
-type VkCmdCopyImage = "vkCmdCopyImage"
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Queues: 'transfer', 'graphics', 'compute'.
---
--- Renderpass: @outside@
---
--- Pipeline: @transfer@
---
--- > void vkCmdCopyImage
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkImage srcImage
--- >     , VkImageLayout srcImageLayout
--- >     , VkImage dstImage
--- >     , VkImageLayout dstImageLayout
--- >     , uint32_t regionCount
--- >     , const VkImageCopy* pRegions
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdCopyImage vkCmdCopyImage registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkCmdCopyImage" vkCmdCopyImage ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 VkImage -- ^ srcImage
-                         ->
-                   VkImageLayout -- ^ srcImageLayout
-                                 ->
-                     VkImage -- ^ dstImage
-                             -> VkImageLayout -- ^ dstImageLayout
-                                              -> Word32 -- ^ regionCount
-                                                        -> Ptr VkImageCopy -- ^ pRegions
-                                                                           -> IO ()
-
-##else
--- |
--- Queues: 'transfer', 'graphics', 'compute'.
---
--- Renderpass: @outside@
---
--- Pipeline: @transfer@
---
--- > void vkCmdCopyImage
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkImage srcImage
--- >     , VkImageLayout srcImageLayout
--- >     , VkImage dstImage
--- >     , VkImageLayout dstImageLayout
--- >     , uint32_t regionCount
--- >     , const VkImageCopy* pRegions
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdCopyImage vkCmdCopyImage registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCmdCopyImageSafe@ and @vkCmdCopyImage@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdCopyImage <- vkGetInstanceProc @VkCmdCopyImage vkInstance
---
--- or less efficient:
---
--- > myCmdCopyImage <- vkGetProc @VkCmdCopyImage
---
-vkCmdCopyImage ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 VkImage -- ^ srcImage
-                         ->
-                   VkImageLayout -- ^ srcImageLayout
-                                 ->
-                     VkImage -- ^ dstImage
-                             -> VkImageLayout -- ^ dstImageLayout
-                                              -> Word32 -- ^ regionCount
-                                                        -> Ptr VkImageCopy -- ^ pRegions
-                                                                           -> IO ()
-vkCmdCopyImage = unsafeDupablePerformIO (vkGetProc @VkCmdCopyImage)
-
-{-# NOINLINE vkCmdCopyImage #-}
-##endif
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Queues: 'transfer', 'graphics', 'compute'.
---
--- Renderpass: @outside@
---
--- Pipeline: @transfer@
---
--- > void vkCmdCopyImage
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkImage srcImage
--- >     , VkImageLayout srcImageLayout
--- >     , VkImage dstImage
--- >     , VkImageLayout dstImageLayout
--- >     , uint32_t regionCount
--- >     , const VkImageCopy* pRegions
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdCopyImage vkCmdCopyImage registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkCmdCopyImage" vkCmdCopyImageSafe ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 VkImage -- ^ srcImage
-                         ->
-                   VkImageLayout -- ^ srcImageLayout
-                                 ->
-                     VkImage -- ^ dstImage
-                             -> VkImageLayout -- ^ dstImageLayout
-                                              -> Word32 -- ^ regionCount
-                                                        -> Ptr VkImageCopy -- ^ pRegions
-                                                                           -> IO ()
-
-##else
--- |
--- Queues: 'transfer', 'graphics', 'compute'.
---
--- Renderpass: @outside@
---
--- Pipeline: @transfer@
---
--- > void vkCmdCopyImage
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkImage srcImage
--- >     , VkImageLayout srcImageLayout
--- >     , VkImage dstImage
--- >     , VkImageLayout dstImageLayout
--- >     , uint32_t regionCount
--- >     , const VkImageCopy* pRegions
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdCopyImage vkCmdCopyImage registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCmdCopyImageSafe@ and @vkCmdCopyImage@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdCopyImage <- vkGetInstanceProc @VkCmdCopyImage vkInstance
---
--- or less efficient:
---
--- > myCmdCopyImage <- vkGetProc @VkCmdCopyImage
---
-vkCmdCopyImageSafe ::
-                   VkCommandBuffer -- ^ commandBuffer
-                                   ->
-                     VkImage -- ^ srcImage
-                             ->
-                       VkImageLayout -- ^ srcImageLayout
-                                     ->
-                         VkImage -- ^ dstImage
-                                 -> VkImageLayout -- ^ dstImageLayout
-                                                  -> Word32 -- ^ regionCount
-                                                            -> Ptr VkImageCopy -- ^ pRegions
-                                                                               -> IO ()
-vkCmdCopyImageSafe = vkCmdCopyImage
-
-{-# INLINE vkCmdCopyImageSafe #-}
-##endif
-
--- | Queues: 'transfer', 'graphics', 'compute'.
---
---   Renderpass: @outside@
---
---   Pipeline: @transfer@
---
---   > void vkCmdCopyImage
---   >     ( VkCommandBuffer commandBuffer
---   >     , VkImage srcImage
---   >     , VkImageLayout srcImageLayout
---   >     , VkImage dstImage
---   >     , VkImageLayout dstImageLayout
---   >     , uint32_t regionCount
---   >     , const VkImageCopy* pRegions
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdCopyImage vkCmdCopyImage registry at www.khronos.org>
-type HS_vkCmdCopyImage =
-     VkCommandBuffer -- ^ commandBuffer
-                     ->
-       VkImage -- ^ srcImage
-               ->
-         VkImageLayout -- ^ srcImageLayout
-                       ->
-           VkImage -- ^ dstImage
-                   -> VkImageLayout -- ^ dstImageLayout
-                                    -> Word32 -- ^ regionCount
-                                              -> Ptr VkImageCopy -- ^ pRegions
-                                                                 -> IO ()
-
-type PFN_vkCmdCopyImage = FunPtr HS_vkCmdCopyImage
-
-foreign import ccall "dynamic" unwrapVkCmdCopyImage ::
-               PFN_vkCmdCopyImage -> HS_vkCmdCopyImage
-
-instance VulkanProc "vkCmdCopyImage" where
-        type VkProcType "vkCmdCopyImage" = HS_vkCmdCopyImage
-        vkProcSymbol = _VkCmdCopyImage
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCmdCopyImage
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VkCmdBlitImage :: CString
-
-pattern VkCmdBlitImage <- (is_VkCmdBlitImage -> True)
-  where VkCmdBlitImage = _VkCmdBlitImage
-
-{-# INLINE _VkCmdBlitImage #-}
-
-_VkCmdBlitImage :: CString
-_VkCmdBlitImage = Ptr "vkCmdBlitImage\NUL"##
-
-{-# INLINE is_VkCmdBlitImage #-}
-
-is_VkCmdBlitImage :: CString -> Bool
-is_VkCmdBlitImage = (EQ ==) . cmpCStrings _VkCmdBlitImage
-
-type VkCmdBlitImage = "vkCmdBlitImage"
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @outside@
---
--- Pipeline: @transfer@
---
--- > void vkCmdBlitImage
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkImage srcImage
--- >     , VkImageLayout srcImageLayout
--- >     , VkImage dstImage
--- >     , VkImageLayout dstImageLayout
--- >     , uint32_t regionCount
--- >     , const VkImageBlit* pRegions
--- >     , VkFilter filter
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBlitImage vkCmdBlitImage registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkCmdBlitImage" vkCmdBlitImage ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 VkImage -- ^ srcImage
-                         ->
-                   VkImageLayout -- ^ srcImageLayout
-                                 ->
-                     VkImage -- ^ dstImage
-                             ->
-                       VkImageLayout -- ^ dstImageLayout
-                                     -> Word32 -- ^ regionCount
-                                               -> Ptr VkImageBlit -- ^ pRegions
-                                                                  -> VkFilter -- ^ filter
-                                                                              -> IO ()
-
-##else
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @outside@
---
--- Pipeline: @transfer@
---
--- > void vkCmdBlitImage
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkImage srcImage
--- >     , VkImageLayout srcImageLayout
--- >     , VkImage dstImage
--- >     , VkImageLayout dstImageLayout
--- >     , uint32_t regionCount
--- >     , const VkImageBlit* pRegions
--- >     , VkFilter filter
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBlitImage vkCmdBlitImage registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCmdBlitImageSafe@ and @vkCmdBlitImage@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdBlitImage <- vkGetInstanceProc @VkCmdBlitImage vkInstance
---
--- or less efficient:
---
--- > myCmdBlitImage <- vkGetProc @VkCmdBlitImage
---
-vkCmdBlitImage ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 VkImage -- ^ srcImage
-                         ->
-                   VkImageLayout -- ^ srcImageLayout
-                                 ->
-                     VkImage -- ^ dstImage
-                             ->
-                       VkImageLayout -- ^ dstImageLayout
-                                     -> Word32 -- ^ regionCount
-                                               -> Ptr VkImageBlit -- ^ pRegions
-                                                                  -> VkFilter -- ^ filter
-                                                                              -> IO ()
-vkCmdBlitImage = unsafeDupablePerformIO (vkGetProc @VkCmdBlitImage)
-
-{-# NOINLINE vkCmdBlitImage #-}
-##endif
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @outside@
---
--- Pipeline: @transfer@
---
--- > void vkCmdBlitImage
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkImage srcImage
--- >     , VkImageLayout srcImageLayout
--- >     , VkImage dstImage
--- >     , VkImageLayout dstImageLayout
--- >     , uint32_t regionCount
--- >     , const VkImageBlit* pRegions
--- >     , VkFilter filter
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBlitImage vkCmdBlitImage registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkCmdBlitImage" vkCmdBlitImageSafe ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 VkImage -- ^ srcImage
-                         ->
-                   VkImageLayout -- ^ srcImageLayout
-                                 ->
-                     VkImage -- ^ dstImage
-                             ->
-                       VkImageLayout -- ^ dstImageLayout
-                                     -> Word32 -- ^ regionCount
-                                               -> Ptr VkImageBlit -- ^ pRegions
-                                                                  -> VkFilter -- ^ filter
-                                                                              -> IO ()
-
-##else
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @outside@
---
--- Pipeline: @transfer@
---
--- > void vkCmdBlitImage
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkImage srcImage
--- >     , VkImageLayout srcImageLayout
--- >     , VkImage dstImage
--- >     , VkImageLayout dstImageLayout
--- >     , uint32_t regionCount
--- >     , const VkImageBlit* pRegions
--- >     , VkFilter filter
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBlitImage vkCmdBlitImage registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCmdBlitImageSafe@ and @vkCmdBlitImage@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdBlitImage <- vkGetInstanceProc @VkCmdBlitImage vkInstance
---
--- or less efficient:
---
--- > myCmdBlitImage <- vkGetProc @VkCmdBlitImage
---
-vkCmdBlitImageSafe ::
-                   VkCommandBuffer -- ^ commandBuffer
-                                   ->
-                     VkImage -- ^ srcImage
-                             ->
-                       VkImageLayout -- ^ srcImageLayout
-                                     ->
-                         VkImage -- ^ dstImage
-                                 ->
-                           VkImageLayout -- ^ dstImageLayout
-                                         -> Word32 -- ^ regionCount
-                                                   -> Ptr VkImageBlit -- ^ pRegions
-                                                                      -> VkFilter -- ^ filter
-                                                                                  -> IO ()
-vkCmdBlitImageSafe = vkCmdBlitImage
-
-{-# INLINE vkCmdBlitImageSafe #-}
-##endif
-
--- | Queues: 'graphics'.
---
---   Renderpass: @outside@
---
---   Pipeline: @transfer@
---
---   > void vkCmdBlitImage
---   >     ( VkCommandBuffer commandBuffer
---   >     , VkImage srcImage
---   >     , VkImageLayout srcImageLayout
---   >     , VkImage dstImage
---   >     , VkImageLayout dstImageLayout
---   >     , uint32_t regionCount
---   >     , const VkImageBlit* pRegions
---   >     , VkFilter filter
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBlitImage vkCmdBlitImage registry at www.khronos.org>
-type HS_vkCmdBlitImage =
-     VkCommandBuffer -- ^ commandBuffer
-                     ->
-       VkImage -- ^ srcImage
-               ->
-         VkImageLayout -- ^ srcImageLayout
-                       ->
-           VkImage -- ^ dstImage
-                   ->
-             VkImageLayout -- ^ dstImageLayout
-                           -> Word32 -- ^ regionCount
-                                     -> Ptr VkImageBlit -- ^ pRegions
-                                                        -> VkFilter -- ^ filter
-                                                                    -> IO ()
-
-type PFN_vkCmdBlitImage = FunPtr HS_vkCmdBlitImage
-
-foreign import ccall "dynamic" unwrapVkCmdBlitImage ::
-               PFN_vkCmdBlitImage -> HS_vkCmdBlitImage
-
-instance VulkanProc "vkCmdBlitImage" where
-        type VkProcType "vkCmdBlitImage" = HS_vkCmdBlitImage
-        vkProcSymbol = _VkCmdBlitImage
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCmdBlitImage
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VkCmdCopyBufferToImage :: CString
-
-pattern VkCmdCopyBufferToImage <-
-        (is_VkCmdCopyBufferToImage -> True)
-  where VkCmdCopyBufferToImage = _VkCmdCopyBufferToImage
-
-{-# INLINE _VkCmdCopyBufferToImage #-}
-
-_VkCmdCopyBufferToImage :: CString
-_VkCmdCopyBufferToImage = Ptr "vkCmdCopyBufferToImage\NUL"##
-
-{-# INLINE is_VkCmdCopyBufferToImage #-}
-
-is_VkCmdCopyBufferToImage :: CString -> Bool
-is_VkCmdCopyBufferToImage
-  = (EQ ==) . cmpCStrings _VkCmdCopyBufferToImage
-
-type VkCmdCopyBufferToImage = "vkCmdCopyBufferToImage"
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Queues: 'transfer', 'graphics', 'compute'.
---
--- Renderpass: @outside@
---
--- Pipeline: @transfer@
---
--- > void vkCmdCopyBufferToImage
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkBuffer srcBuffer
--- >     , VkImage dstImage
--- >     , VkImageLayout dstImageLayout
--- >     , uint32_t regionCount
--- >     , const VkBufferImageCopy* pRegions
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdCopyBufferToImage vkCmdCopyBufferToImage registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkCmdCopyBufferToImage"
-               vkCmdCopyBufferToImage ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 VkBuffer -- ^ srcBuffer
-                          ->
-                   VkImage -- ^ dstImage
-                           ->
-                     VkImageLayout -- ^ dstImageLayout
-                                   -> Word32 -- ^ regionCount
-                                             -> Ptr VkBufferImageCopy -- ^ pRegions
-                                                                      -> IO ()
-
-##else
--- |
--- Queues: 'transfer', 'graphics', 'compute'.
---
--- Renderpass: @outside@
---
--- Pipeline: @transfer@
---
--- > void vkCmdCopyBufferToImage
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkBuffer srcBuffer
--- >     , VkImage dstImage
--- >     , VkImageLayout dstImageLayout
--- >     , uint32_t regionCount
--- >     , const VkBufferImageCopy* pRegions
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdCopyBufferToImage vkCmdCopyBufferToImage registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCmdCopyBufferToImageSafe@ and @vkCmdCopyBufferToImage@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdCopyBufferToImage <- vkGetInstanceProc @VkCmdCopyBufferToImage vkInstance
---
--- or less efficient:
---
--- > myCmdCopyBufferToImage <- vkGetProc @VkCmdCopyBufferToImage
---
-vkCmdCopyBufferToImage ::
-                       VkCommandBuffer -- ^ commandBuffer
-                                       ->
-                         VkBuffer -- ^ srcBuffer
-                                  ->
-                           VkImage -- ^ dstImage
-                                   ->
-                             VkImageLayout -- ^ dstImageLayout
-                                           -> Word32 -- ^ regionCount
-                                                     -> Ptr VkBufferImageCopy -- ^ pRegions
-                                                                              -> IO ()
-vkCmdCopyBufferToImage
-  = unsafeDupablePerformIO (vkGetProc @VkCmdCopyBufferToImage)
-
-{-# NOINLINE vkCmdCopyBufferToImage #-}
-##endif
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Queues: 'transfer', 'graphics', 'compute'.
---
--- Renderpass: @outside@
---
--- Pipeline: @transfer@
---
--- > void vkCmdCopyBufferToImage
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkBuffer srcBuffer
--- >     , VkImage dstImage
--- >     , VkImageLayout dstImageLayout
--- >     , uint32_t regionCount
--- >     , const VkBufferImageCopy* pRegions
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdCopyBufferToImage vkCmdCopyBufferToImage registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkCmdCopyBufferToImage"
-               vkCmdCopyBufferToImageSafe ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 VkBuffer -- ^ srcBuffer
-                          ->
-                   VkImage -- ^ dstImage
-                           ->
-                     VkImageLayout -- ^ dstImageLayout
-                                   -> Word32 -- ^ regionCount
-                                             -> Ptr VkBufferImageCopy -- ^ pRegions
-                                                                      -> IO ()
-
-##else
--- |
--- Queues: 'transfer', 'graphics', 'compute'.
---
--- Renderpass: @outside@
---
--- Pipeline: @transfer@
---
--- > void vkCmdCopyBufferToImage
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkBuffer srcBuffer
--- >     , VkImage dstImage
--- >     , VkImageLayout dstImageLayout
--- >     , uint32_t regionCount
--- >     , const VkBufferImageCopy* pRegions
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdCopyBufferToImage vkCmdCopyBufferToImage registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCmdCopyBufferToImageSafe@ and @vkCmdCopyBufferToImage@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdCopyBufferToImage <- vkGetInstanceProc @VkCmdCopyBufferToImage vkInstance
---
--- or less efficient:
---
--- > myCmdCopyBufferToImage <- vkGetProc @VkCmdCopyBufferToImage
---
-vkCmdCopyBufferToImageSafe ::
-                           VkCommandBuffer -- ^ commandBuffer
-                                           ->
-                             VkBuffer -- ^ srcBuffer
-                                      ->
-                               VkImage -- ^ dstImage
-                                       ->
-                                 VkImageLayout -- ^ dstImageLayout
-                                               -> Word32 -- ^ regionCount
-                                                         -> Ptr VkBufferImageCopy -- ^ pRegions
-                                                                                  -> IO ()
-vkCmdCopyBufferToImageSafe = vkCmdCopyBufferToImage
-
-{-# INLINE vkCmdCopyBufferToImageSafe #-}
-##endif
-
--- | Queues: 'transfer', 'graphics', 'compute'.
---
---   Renderpass: @outside@
---
---   Pipeline: @transfer@
---
---   > void vkCmdCopyBufferToImage
---   >     ( VkCommandBuffer commandBuffer
---   >     , VkBuffer srcBuffer
---   >     , VkImage dstImage
---   >     , VkImageLayout dstImageLayout
---   >     , uint32_t regionCount
---   >     , const VkBufferImageCopy* pRegions
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdCopyBufferToImage vkCmdCopyBufferToImage registry at www.khronos.org>
-type HS_vkCmdCopyBufferToImage =
-     VkCommandBuffer -- ^ commandBuffer
-                     ->
-       VkBuffer -- ^ srcBuffer
-                ->
-         VkImage -- ^ dstImage
-                 ->
-           VkImageLayout -- ^ dstImageLayout
-                         -> Word32 -- ^ regionCount
-                                   -> Ptr VkBufferImageCopy -- ^ pRegions
-                                                            -> IO ()
-
-type PFN_vkCmdCopyBufferToImage = FunPtr HS_vkCmdCopyBufferToImage
-
-foreign import ccall "dynamic" unwrapVkCmdCopyBufferToImage ::
-               PFN_vkCmdCopyBufferToImage -> HS_vkCmdCopyBufferToImage
-
-instance VulkanProc "vkCmdCopyBufferToImage" where
-        type VkProcType "vkCmdCopyBufferToImage" =
-             HS_vkCmdCopyBufferToImage
-        vkProcSymbol = _VkCmdCopyBufferToImage
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCmdCopyBufferToImage
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VkCmdCopyImageToBuffer :: CString
-
-pattern VkCmdCopyImageToBuffer <-
-        (is_VkCmdCopyImageToBuffer -> True)
-  where VkCmdCopyImageToBuffer = _VkCmdCopyImageToBuffer
-
-{-# INLINE _VkCmdCopyImageToBuffer #-}
-
-_VkCmdCopyImageToBuffer :: CString
-_VkCmdCopyImageToBuffer = Ptr "vkCmdCopyImageToBuffer\NUL"##
-
-{-# INLINE is_VkCmdCopyImageToBuffer #-}
-
-is_VkCmdCopyImageToBuffer :: CString -> Bool
-is_VkCmdCopyImageToBuffer
-  = (EQ ==) . cmpCStrings _VkCmdCopyImageToBuffer
-
-type VkCmdCopyImageToBuffer = "vkCmdCopyImageToBuffer"
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Queues: 'transfer', 'graphics', 'compute'.
---
--- Renderpass: @outside@
---
--- Pipeline: @transfer@
---
--- > void vkCmdCopyImageToBuffer
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkImage srcImage
--- >     , VkImageLayout srcImageLayout
--- >     , VkBuffer dstBuffer
--- >     , uint32_t regionCount
--- >     , const VkBufferImageCopy* pRegions
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdCopyImageToBuffer vkCmdCopyImageToBuffer registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkCmdCopyImageToBuffer"
-               vkCmdCopyImageToBuffer ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 VkImage -- ^ srcImage
-                         ->
-                   VkImageLayout -- ^ srcImageLayout
-                                 ->
-                     VkBuffer -- ^ dstBuffer
-                              -> Word32 -- ^ regionCount
-                                        -> Ptr VkBufferImageCopy -- ^ pRegions
-                                                                 -> IO ()
-
-##else
--- |
--- Queues: 'transfer', 'graphics', 'compute'.
---
--- Renderpass: @outside@
---
--- Pipeline: @transfer@
---
--- > void vkCmdCopyImageToBuffer
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkImage srcImage
--- >     , VkImageLayout srcImageLayout
--- >     , VkBuffer dstBuffer
--- >     , uint32_t regionCount
--- >     , const VkBufferImageCopy* pRegions
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdCopyImageToBuffer vkCmdCopyImageToBuffer registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCmdCopyImageToBufferSafe@ and @vkCmdCopyImageToBuffer@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdCopyImageToBuffer <- vkGetInstanceProc @VkCmdCopyImageToBuffer vkInstance
---
--- or less efficient:
---
--- > myCmdCopyImageToBuffer <- vkGetProc @VkCmdCopyImageToBuffer
---
-vkCmdCopyImageToBuffer ::
-                       VkCommandBuffer -- ^ commandBuffer
-                                       ->
-                         VkImage -- ^ srcImage
-                                 ->
-                           VkImageLayout -- ^ srcImageLayout
-                                         ->
-                             VkBuffer -- ^ dstBuffer
-                                      -> Word32 -- ^ regionCount
-                                                -> Ptr VkBufferImageCopy -- ^ pRegions
-                                                                         -> IO ()
-vkCmdCopyImageToBuffer
-  = unsafeDupablePerformIO (vkGetProc @VkCmdCopyImageToBuffer)
-
-{-# NOINLINE vkCmdCopyImageToBuffer #-}
-##endif
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Queues: 'transfer', 'graphics', 'compute'.
---
--- Renderpass: @outside@
---
--- Pipeline: @transfer@
---
--- > void vkCmdCopyImageToBuffer
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkImage srcImage
--- >     , VkImageLayout srcImageLayout
--- >     , VkBuffer dstBuffer
--- >     , uint32_t regionCount
--- >     , const VkBufferImageCopy* pRegions
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdCopyImageToBuffer vkCmdCopyImageToBuffer registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkCmdCopyImageToBuffer"
-               vkCmdCopyImageToBufferSafe ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 VkImage -- ^ srcImage
-                         ->
-                   VkImageLayout -- ^ srcImageLayout
-                                 ->
-                     VkBuffer -- ^ dstBuffer
-                              -> Word32 -- ^ regionCount
-                                        -> Ptr VkBufferImageCopy -- ^ pRegions
-                                                                 -> IO ()
-
-##else
--- |
--- Queues: 'transfer', 'graphics', 'compute'.
---
--- Renderpass: @outside@
---
--- Pipeline: @transfer@
---
--- > void vkCmdCopyImageToBuffer
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkImage srcImage
--- >     , VkImageLayout srcImageLayout
--- >     , VkBuffer dstBuffer
--- >     , uint32_t regionCount
--- >     , const VkBufferImageCopy* pRegions
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdCopyImageToBuffer vkCmdCopyImageToBuffer registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCmdCopyImageToBufferSafe@ and @vkCmdCopyImageToBuffer@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdCopyImageToBuffer <- vkGetInstanceProc @VkCmdCopyImageToBuffer vkInstance
---
--- or less efficient:
---
--- > myCmdCopyImageToBuffer <- vkGetProc @VkCmdCopyImageToBuffer
---
-vkCmdCopyImageToBufferSafe ::
-                           VkCommandBuffer -- ^ commandBuffer
-                                           ->
-                             VkImage -- ^ srcImage
-                                     ->
-                               VkImageLayout -- ^ srcImageLayout
-                                             ->
-                                 VkBuffer -- ^ dstBuffer
-                                          -> Word32 -- ^ regionCount
-                                                    -> Ptr VkBufferImageCopy -- ^ pRegions
-                                                                             -> IO ()
-vkCmdCopyImageToBufferSafe = vkCmdCopyImageToBuffer
-
-{-# INLINE vkCmdCopyImageToBufferSafe #-}
-##endif
-
--- | Queues: 'transfer', 'graphics', 'compute'.
---
---   Renderpass: @outside@
---
---   Pipeline: @transfer@
---
---   > void vkCmdCopyImageToBuffer
---   >     ( VkCommandBuffer commandBuffer
---   >     , VkImage srcImage
---   >     , VkImageLayout srcImageLayout
---   >     , VkBuffer dstBuffer
---   >     , uint32_t regionCount
---   >     , const VkBufferImageCopy* pRegions
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdCopyImageToBuffer vkCmdCopyImageToBuffer registry at www.khronos.org>
-type HS_vkCmdCopyImageToBuffer =
-     VkCommandBuffer -- ^ commandBuffer
-                     ->
-       VkImage -- ^ srcImage
-               ->
-         VkImageLayout -- ^ srcImageLayout
-                       ->
-           VkBuffer -- ^ dstBuffer
-                    -> Word32 -- ^ regionCount
-                              -> Ptr VkBufferImageCopy -- ^ pRegions
-                                                       -> IO ()
-
-type PFN_vkCmdCopyImageToBuffer = FunPtr HS_vkCmdCopyImageToBuffer
-
-foreign import ccall "dynamic" unwrapVkCmdCopyImageToBuffer ::
-               PFN_vkCmdCopyImageToBuffer -> HS_vkCmdCopyImageToBuffer
-
-instance VulkanProc "vkCmdCopyImageToBuffer" where
-        type VkProcType "vkCmdCopyImageToBuffer" =
-             HS_vkCmdCopyImageToBuffer
-        vkProcSymbol = _VkCmdCopyImageToBuffer
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCmdCopyImageToBuffer
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VkCmdUpdateBuffer :: CString
-
-pattern VkCmdUpdateBuffer <- (is_VkCmdUpdateBuffer -> True)
-  where VkCmdUpdateBuffer = _VkCmdUpdateBuffer
-
-{-# INLINE _VkCmdUpdateBuffer #-}
-
-_VkCmdUpdateBuffer :: CString
-_VkCmdUpdateBuffer = Ptr "vkCmdUpdateBuffer\NUL"##
-
-{-# INLINE is_VkCmdUpdateBuffer #-}
-
-is_VkCmdUpdateBuffer :: CString -> Bool
-is_VkCmdUpdateBuffer = (EQ ==) . cmpCStrings _VkCmdUpdateBuffer
-
-type VkCmdUpdateBuffer = "vkCmdUpdateBuffer"
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Queues: 'transfer', 'graphics', 'compute'.
---
--- Renderpass: @outside@
---
--- Pipeline: @transfer@
---
--- > void vkCmdUpdateBuffer
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkBuffer dstBuffer
--- >     , VkDeviceSize dstOffset
--- >     , VkDeviceSize dataSize
--- >     , const void* pData
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdUpdateBuffer vkCmdUpdateBuffer registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkCmdUpdateBuffer" vkCmdUpdateBuffer
-               ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 VkBuffer -- ^ dstBuffer
-                          -> VkDeviceSize -- ^ dstOffset
-                                          -> VkDeviceSize -- ^ dataSize
-                                                          -> Ptr Void -- ^ pData
-                                                                      -> IO ()
-
-##else
--- |
--- Queues: 'transfer', 'graphics', 'compute'.
---
--- Renderpass: @outside@
---
--- Pipeline: @transfer@
---
--- > void vkCmdUpdateBuffer
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkBuffer dstBuffer
--- >     , VkDeviceSize dstOffset
--- >     , VkDeviceSize dataSize
--- >     , const void* pData
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdUpdateBuffer vkCmdUpdateBuffer registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCmdUpdateBufferSafe@ and @vkCmdUpdateBuffer@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdUpdateBuffer <- vkGetInstanceProc @VkCmdUpdateBuffer vkInstance
---
--- or less efficient:
---
--- > myCmdUpdateBuffer <- vkGetProc @VkCmdUpdateBuffer
---
-vkCmdUpdateBuffer ::
-                  VkCommandBuffer -- ^ commandBuffer
-                                  ->
-                    VkBuffer -- ^ dstBuffer
-                             -> VkDeviceSize -- ^ dstOffset
-                                             -> VkDeviceSize -- ^ dataSize
-                                                             -> Ptr Void -- ^ pData
-                                                                         -> IO ()
-vkCmdUpdateBuffer
-  = unsafeDupablePerformIO (vkGetProc @VkCmdUpdateBuffer)
-
-{-# NOINLINE vkCmdUpdateBuffer #-}
-##endif
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Queues: 'transfer', 'graphics', 'compute'.
---
--- Renderpass: @outside@
---
--- Pipeline: @transfer@
---
--- > void vkCmdUpdateBuffer
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkBuffer dstBuffer
--- >     , VkDeviceSize dstOffset
--- >     , VkDeviceSize dataSize
--- >     , const void* pData
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdUpdateBuffer vkCmdUpdateBuffer registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkCmdUpdateBuffer" vkCmdUpdateBufferSafe
-               ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 VkBuffer -- ^ dstBuffer
-                          -> VkDeviceSize -- ^ dstOffset
-                                          -> VkDeviceSize -- ^ dataSize
-                                                          -> Ptr Void -- ^ pData
-                                                                      -> IO ()
-
-##else
--- |
--- Queues: 'transfer', 'graphics', 'compute'.
---
--- Renderpass: @outside@
---
--- Pipeline: @transfer@
---
--- > void vkCmdUpdateBuffer
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkBuffer dstBuffer
--- >     , VkDeviceSize dstOffset
--- >     , VkDeviceSize dataSize
--- >     , const void* pData
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdUpdateBuffer vkCmdUpdateBuffer registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCmdUpdateBufferSafe@ and @vkCmdUpdateBuffer@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdUpdateBuffer <- vkGetInstanceProc @VkCmdUpdateBuffer vkInstance
---
--- or less efficient:
---
--- > myCmdUpdateBuffer <- vkGetProc @VkCmdUpdateBuffer
---
-vkCmdUpdateBufferSafe ::
-                      VkCommandBuffer -- ^ commandBuffer
-                                      ->
-                        VkBuffer -- ^ dstBuffer
-                                 -> VkDeviceSize -- ^ dstOffset
-                                                 -> VkDeviceSize -- ^ dataSize
-                                                                 -> Ptr Void -- ^ pData
-                                                                             -> IO ()
-vkCmdUpdateBufferSafe = vkCmdUpdateBuffer
-
-{-# INLINE vkCmdUpdateBufferSafe #-}
-##endif
-
--- | Queues: 'transfer', 'graphics', 'compute'.
---
---   Renderpass: @outside@
---
---   Pipeline: @transfer@
---
---   > void vkCmdUpdateBuffer
---   >     ( VkCommandBuffer commandBuffer
---   >     , VkBuffer dstBuffer
---   >     , VkDeviceSize dstOffset
---   >     , VkDeviceSize dataSize
---   >     , const void* pData
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdUpdateBuffer vkCmdUpdateBuffer registry at www.khronos.org>
-type HS_vkCmdUpdateBuffer =
-     VkCommandBuffer -- ^ commandBuffer
-                     ->
-       VkBuffer -- ^ dstBuffer
-                -> VkDeviceSize -- ^ dstOffset
-                                -> VkDeviceSize -- ^ dataSize
-                                                -> Ptr Void -- ^ pData
-                                                            -> IO ()
-
-type PFN_vkCmdUpdateBuffer = FunPtr HS_vkCmdUpdateBuffer
-
-foreign import ccall "dynamic" unwrapVkCmdUpdateBuffer ::
-               PFN_vkCmdUpdateBuffer -> HS_vkCmdUpdateBuffer
-
-instance VulkanProc "vkCmdUpdateBuffer" where
-        type VkProcType "vkCmdUpdateBuffer" = HS_vkCmdUpdateBuffer
-        vkProcSymbol = _VkCmdUpdateBuffer
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCmdUpdateBuffer
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VkCmdFillBuffer :: CString
-
-pattern VkCmdFillBuffer <- (is_VkCmdFillBuffer -> True)
-  where VkCmdFillBuffer = _VkCmdFillBuffer
-
-{-# INLINE _VkCmdFillBuffer #-}
-
-_VkCmdFillBuffer :: CString
-_VkCmdFillBuffer = Ptr "vkCmdFillBuffer\NUL"##
-
-{-# INLINE is_VkCmdFillBuffer #-}
-
-is_VkCmdFillBuffer :: CString -> Bool
-is_VkCmdFillBuffer = (EQ ==) . cmpCStrings _VkCmdFillBuffer
-
-type VkCmdFillBuffer = "vkCmdFillBuffer"
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- transfer support is only available when VK_KHR_maintenance1 is enabled, as documented in valid usage language in the specification
---
--- Queues: 'transfer', 'graphics', 'compute'.
---
--- Renderpass: @outside@
---
--- Pipeline: @transfer@
---
--- > void vkCmdFillBuffer
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkBuffer dstBuffer
--- >     , VkDeviceSize dstOffset
--- >     , VkDeviceSize size
--- >     , uint32_t data
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdFillBuffer vkCmdFillBuffer registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkCmdFillBuffer" vkCmdFillBuffer ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 VkBuffer -- ^ dstBuffer
-                          -> VkDeviceSize -- ^ dstOffset
-                                          -> VkDeviceSize -- ^ size
-                                                          -> Word32 -- ^ data
-                                                                    -> IO ()
-
-##else
--- |
--- transfer support is only available when VK_KHR_maintenance1 is enabled, as documented in valid usage language in the specification
---
--- Queues: 'transfer', 'graphics', 'compute'.
---
--- Renderpass: @outside@
---
--- Pipeline: @transfer@
---
--- > void vkCmdFillBuffer
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkBuffer dstBuffer
--- >     , VkDeviceSize dstOffset
--- >     , VkDeviceSize size
--- >     , uint32_t data
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdFillBuffer vkCmdFillBuffer registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCmdFillBufferSafe@ and @vkCmdFillBuffer@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdFillBuffer <- vkGetInstanceProc @VkCmdFillBuffer vkInstance
---
--- or less efficient:
---
--- > myCmdFillBuffer <- vkGetProc @VkCmdFillBuffer
---
-vkCmdFillBuffer ::
-                VkCommandBuffer -- ^ commandBuffer
-                                ->
-                  VkBuffer -- ^ dstBuffer
-                           -> VkDeviceSize -- ^ dstOffset
-                                           -> VkDeviceSize -- ^ size
-                                                           -> Word32 -- ^ data
-                                                                     -> IO ()
-vkCmdFillBuffer
-  = unsafeDupablePerformIO (vkGetProc @VkCmdFillBuffer)
-
-{-# NOINLINE vkCmdFillBuffer #-}
-##endif
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- transfer support is only available when VK_KHR_maintenance1 is enabled, as documented in valid usage language in the specification
---
--- Queues: 'transfer', 'graphics', 'compute'.
---
--- Renderpass: @outside@
---
--- Pipeline: @transfer@
---
--- > void vkCmdFillBuffer
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkBuffer dstBuffer
--- >     , VkDeviceSize dstOffset
--- >     , VkDeviceSize size
--- >     , uint32_t data
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdFillBuffer vkCmdFillBuffer registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkCmdFillBuffer" vkCmdFillBufferSafe ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 VkBuffer -- ^ dstBuffer
-                          -> VkDeviceSize -- ^ dstOffset
-                                          -> VkDeviceSize -- ^ size
-                                                          -> Word32 -- ^ data
-                                                                    -> IO ()
-
-##else
--- |
--- transfer support is only available when VK_KHR_maintenance1 is enabled, as documented in valid usage language in the specification
---
--- Queues: 'transfer', 'graphics', 'compute'.
---
--- Renderpass: @outside@
---
--- Pipeline: @transfer@
---
--- > void vkCmdFillBuffer
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkBuffer dstBuffer
--- >     , VkDeviceSize dstOffset
--- >     , VkDeviceSize size
--- >     , uint32_t data
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdFillBuffer vkCmdFillBuffer registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCmdFillBufferSafe@ and @vkCmdFillBuffer@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdFillBuffer <- vkGetInstanceProc @VkCmdFillBuffer vkInstance
---
--- or less efficient:
---
--- > myCmdFillBuffer <- vkGetProc @VkCmdFillBuffer
---
-vkCmdFillBufferSafe ::
-                    VkCommandBuffer -- ^ commandBuffer
-                                    ->
-                      VkBuffer -- ^ dstBuffer
-                               -> VkDeviceSize -- ^ dstOffset
-                                               -> VkDeviceSize -- ^ size
-                                                               -> Word32 -- ^ data
-                                                                         -> IO ()
-vkCmdFillBufferSafe = vkCmdFillBuffer
-
-{-# INLINE vkCmdFillBufferSafe #-}
-##endif
-
--- | transfer support is only available when VK_KHR_maintenance1 is enabled, as documented in valid usage language in the specification
---
---   Queues: 'transfer', 'graphics', 'compute'.
---
---   Renderpass: @outside@
---
---   Pipeline: @transfer@
---
---   > void vkCmdFillBuffer
---   >     ( VkCommandBuffer commandBuffer
---   >     , VkBuffer dstBuffer
---   >     , VkDeviceSize dstOffset
---   >     , VkDeviceSize size
---   >     , uint32_t data
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdFillBuffer vkCmdFillBuffer registry at www.khronos.org>
-type HS_vkCmdFillBuffer =
-     VkCommandBuffer -- ^ commandBuffer
-                     ->
-       VkBuffer -- ^ dstBuffer
-                -> VkDeviceSize -- ^ dstOffset
-                                -> VkDeviceSize -- ^ size
-                                                -> Word32 -- ^ data
-                                                          -> IO ()
-
-type PFN_vkCmdFillBuffer = FunPtr HS_vkCmdFillBuffer
-
-foreign import ccall "dynamic" unwrapVkCmdFillBuffer ::
-               PFN_vkCmdFillBuffer -> HS_vkCmdFillBuffer
-
-instance VulkanProc "vkCmdFillBuffer" where
-        type VkProcType "vkCmdFillBuffer" = HS_vkCmdFillBuffer
-        vkProcSymbol = _VkCmdFillBuffer
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCmdFillBuffer
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VkCmdClearColorImage :: CString
-
-pattern VkCmdClearColorImage <- (is_VkCmdClearColorImage -> True)
-  where VkCmdClearColorImage = _VkCmdClearColorImage
-
-{-# INLINE _VkCmdClearColorImage #-}
-
-_VkCmdClearColorImage :: CString
-_VkCmdClearColorImage = Ptr "vkCmdClearColorImage\NUL"##
-
-{-# INLINE is_VkCmdClearColorImage #-}
-
-is_VkCmdClearColorImage :: CString -> Bool
-is_VkCmdClearColorImage
-  = (EQ ==) . cmpCStrings _VkCmdClearColorImage
-
-type VkCmdClearColorImage = "vkCmdClearColorImage"
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Queues: 'graphics', 'compute'.
---
--- Renderpass: @outside@
---
--- Pipeline: @transfer@
---
--- > void vkCmdClearColorImage
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkImage image
--- >     , VkImageLayout imageLayout
--- >     , const VkClearColorValue* pColor
--- >     , uint32_t rangeCount
--- >     , const VkImageSubresourceRange* pRanges
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdClearColorImage vkCmdClearColorImage registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkCmdClearColorImage"
-               vkCmdClearColorImage ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 VkImage -- ^ image
-                         ->
-                   VkImageLayout -- ^ imageLayout
-                                 ->
-                     Ptr VkClearColorValue -- ^ pColor
-                                           ->
-                       Word32 -- ^ rangeCount
-                              -> Ptr VkImageSubresourceRange -- ^ pRanges
-                                                             -> IO ()
-
-##else
--- |
--- Queues: 'graphics', 'compute'.
---
--- Renderpass: @outside@
---
--- Pipeline: @transfer@
---
--- > void vkCmdClearColorImage
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkImage image
--- >     , VkImageLayout imageLayout
--- >     , const VkClearColorValue* pColor
--- >     , uint32_t rangeCount
--- >     , const VkImageSubresourceRange* pRanges
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdClearColorImage vkCmdClearColorImage registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCmdClearColorImageSafe@ and @vkCmdClearColorImage@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdClearColorImage <- vkGetInstanceProc @VkCmdClearColorImage vkInstance
---
--- or less efficient:
---
--- > myCmdClearColorImage <- vkGetProc @VkCmdClearColorImage
---
-vkCmdClearColorImage ::
-                     VkCommandBuffer -- ^ commandBuffer
-                                     ->
-                       VkImage -- ^ image
-                               ->
-                         VkImageLayout -- ^ imageLayout
-                                       ->
-                           Ptr VkClearColorValue -- ^ pColor
-                                                 ->
-                             Word32 -- ^ rangeCount
-                                    -> Ptr VkImageSubresourceRange -- ^ pRanges
-                                                                   -> IO ()
-vkCmdClearColorImage
-  = unsafeDupablePerformIO (vkGetProc @VkCmdClearColorImage)
-
-{-# NOINLINE vkCmdClearColorImage #-}
-##endif
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Queues: 'graphics', 'compute'.
---
--- Renderpass: @outside@
---
--- Pipeline: @transfer@
---
--- > void vkCmdClearColorImage
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkImage image
--- >     , VkImageLayout imageLayout
--- >     , const VkClearColorValue* pColor
--- >     , uint32_t rangeCount
--- >     , const VkImageSubresourceRange* pRanges
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdClearColorImage vkCmdClearColorImage registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkCmdClearColorImage"
-               vkCmdClearColorImageSafe ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 VkImage -- ^ image
-                         ->
-                   VkImageLayout -- ^ imageLayout
-                                 ->
-                     Ptr VkClearColorValue -- ^ pColor
-                                           ->
-                       Word32 -- ^ rangeCount
-                              -> Ptr VkImageSubresourceRange -- ^ pRanges
-                                                             -> IO ()
-
-##else
--- |
--- Queues: 'graphics', 'compute'.
---
--- Renderpass: @outside@
---
--- Pipeline: @transfer@
---
--- > void vkCmdClearColorImage
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkImage image
--- >     , VkImageLayout imageLayout
--- >     , const VkClearColorValue* pColor
--- >     , uint32_t rangeCount
--- >     , const VkImageSubresourceRange* pRanges
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdClearColorImage vkCmdClearColorImage registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCmdClearColorImageSafe@ and @vkCmdClearColorImage@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdClearColorImage <- vkGetInstanceProc @VkCmdClearColorImage vkInstance
---
--- or less efficient:
---
--- > myCmdClearColorImage <- vkGetProc @VkCmdClearColorImage
---
-vkCmdClearColorImageSafe ::
-                         VkCommandBuffer -- ^ commandBuffer
-                                         ->
-                           VkImage -- ^ image
-                                   ->
-                             VkImageLayout -- ^ imageLayout
-                                           ->
-                               Ptr VkClearColorValue -- ^ pColor
-                                                     ->
-                                 Word32 -- ^ rangeCount
-                                        -> Ptr VkImageSubresourceRange -- ^ pRanges
-                                                                       -> IO ()
-vkCmdClearColorImageSafe = vkCmdClearColorImage
-
-{-# INLINE vkCmdClearColorImageSafe #-}
-##endif
-
--- | Queues: 'graphics', 'compute'.
---
---   Renderpass: @outside@
---
---   Pipeline: @transfer@
---
---   > void vkCmdClearColorImage
---   >     ( VkCommandBuffer commandBuffer
---   >     , VkImage image
---   >     , VkImageLayout imageLayout
---   >     , const VkClearColorValue* pColor
---   >     , uint32_t rangeCount
---   >     , const VkImageSubresourceRange* pRanges
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdClearColorImage vkCmdClearColorImage registry at www.khronos.org>
-type HS_vkCmdClearColorImage =
-     VkCommandBuffer -- ^ commandBuffer
-                     ->
-       VkImage -- ^ image
-               ->
-         VkImageLayout -- ^ imageLayout
-                       ->
-           Ptr VkClearColorValue -- ^ pColor
-                                 ->
-             Word32 -- ^ rangeCount
-                    -> Ptr VkImageSubresourceRange -- ^ pRanges
-                                                   -> IO ()
-
-type PFN_vkCmdClearColorImage = FunPtr HS_vkCmdClearColorImage
-
-foreign import ccall "dynamic" unwrapVkCmdClearColorImage ::
-               PFN_vkCmdClearColorImage -> HS_vkCmdClearColorImage
-
-instance VulkanProc "vkCmdClearColorImage" where
-        type VkProcType "vkCmdClearColorImage" = HS_vkCmdClearColorImage
-        vkProcSymbol = _VkCmdClearColorImage
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCmdClearColorImage
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VkCmdClearDepthStencilImage :: CString
-
-pattern VkCmdClearDepthStencilImage <-
-        (is_VkCmdClearDepthStencilImage -> True)
-  where VkCmdClearDepthStencilImage = _VkCmdClearDepthStencilImage
-
-{-# INLINE _VkCmdClearDepthStencilImage #-}
-
-_VkCmdClearDepthStencilImage :: CString
-_VkCmdClearDepthStencilImage
-  = Ptr "vkCmdClearDepthStencilImage\NUL"##
-
-{-# INLINE is_VkCmdClearDepthStencilImage #-}
-
-is_VkCmdClearDepthStencilImage :: CString -> Bool
-is_VkCmdClearDepthStencilImage
-  = (EQ ==) . cmpCStrings _VkCmdClearDepthStencilImage
-
-type VkCmdClearDepthStencilImage = "vkCmdClearDepthStencilImage"
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @outside@
---
--- Pipeline: @transfer@
---
--- > void vkCmdClearDepthStencilImage
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkImage image
--- >     , VkImageLayout imageLayout
--- >     , const VkClearDepthStencilValue* pDepthStencil
--- >     , uint32_t rangeCount
--- >     , const VkImageSubresourceRange* pRanges
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdClearDepthStencilImage vkCmdClearDepthStencilImage registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkCmdClearDepthStencilImage"
-               vkCmdClearDepthStencilImage ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 VkImage -- ^ image
-                         ->
-                   VkImageLayout -- ^ imageLayout
-                                 ->
-                     Ptr VkClearDepthStencilValue -- ^ pDepthStencil
-                                                  ->
-                       Word32 -- ^ rangeCount
-                              -> Ptr VkImageSubresourceRange -- ^ pRanges
-                                                             -> IO ()
-
-##else
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @outside@
---
--- Pipeline: @transfer@
---
--- > void vkCmdClearDepthStencilImage
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkImage image
--- >     , VkImageLayout imageLayout
--- >     , const VkClearDepthStencilValue* pDepthStencil
--- >     , uint32_t rangeCount
--- >     , const VkImageSubresourceRange* pRanges
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdClearDepthStencilImage vkCmdClearDepthStencilImage registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCmdClearDepthStencilImageSafe@ and @vkCmdClearDepthStencilImage@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdClearDepthStencilImage <- vkGetInstanceProc @VkCmdClearDepthStencilImage vkInstance
---
--- or less efficient:
---
--- > myCmdClearDepthStencilImage <- vkGetProc @VkCmdClearDepthStencilImage
---
-vkCmdClearDepthStencilImage ::
-                            VkCommandBuffer -- ^ commandBuffer
-                                            ->
-                              VkImage -- ^ image
-                                      ->
-                                VkImageLayout -- ^ imageLayout
-                                              ->
-                                  Ptr VkClearDepthStencilValue -- ^ pDepthStencil
-                                                               ->
-                                    Word32 -- ^ rangeCount
-                                           -> Ptr VkImageSubresourceRange -- ^ pRanges
-                                                                          -> IO ()
-vkCmdClearDepthStencilImage
-  = unsafeDupablePerformIO (vkGetProc @VkCmdClearDepthStencilImage)
-
-{-# NOINLINE vkCmdClearDepthStencilImage #-}
-##endif
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @outside@
---
--- Pipeline: @transfer@
---
--- > void vkCmdClearDepthStencilImage
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkImage image
--- >     , VkImageLayout imageLayout
--- >     , const VkClearDepthStencilValue* pDepthStencil
--- >     , uint32_t rangeCount
--- >     , const VkImageSubresourceRange* pRanges
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdClearDepthStencilImage vkCmdClearDepthStencilImage registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkCmdClearDepthStencilImage"
-               vkCmdClearDepthStencilImageSafe ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 VkImage -- ^ image
-                         ->
-                   VkImageLayout -- ^ imageLayout
-                                 ->
-                     Ptr VkClearDepthStencilValue -- ^ pDepthStencil
-                                                  ->
-                       Word32 -- ^ rangeCount
-                              -> Ptr VkImageSubresourceRange -- ^ pRanges
-                                                             -> IO ()
-
-##else
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @outside@
---
--- Pipeline: @transfer@
---
--- > void vkCmdClearDepthStencilImage
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkImage image
--- >     , VkImageLayout imageLayout
--- >     , const VkClearDepthStencilValue* pDepthStencil
--- >     , uint32_t rangeCount
--- >     , const VkImageSubresourceRange* pRanges
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdClearDepthStencilImage vkCmdClearDepthStencilImage registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCmdClearDepthStencilImageSafe@ and @vkCmdClearDepthStencilImage@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdClearDepthStencilImage <- vkGetInstanceProc @VkCmdClearDepthStencilImage vkInstance
---
--- or less efficient:
---
--- > myCmdClearDepthStencilImage <- vkGetProc @VkCmdClearDepthStencilImage
---
-vkCmdClearDepthStencilImageSafe ::
-                                VkCommandBuffer -- ^ commandBuffer
-                                                ->
-                                  VkImage -- ^ image
-                                          ->
-                                    VkImageLayout -- ^ imageLayout
-                                                  ->
-                                      Ptr VkClearDepthStencilValue -- ^ pDepthStencil
-                                                                   ->
-                                        Word32 -- ^ rangeCount
-                                               -> Ptr VkImageSubresourceRange -- ^ pRanges
-                                                                              -> IO ()
-vkCmdClearDepthStencilImageSafe = vkCmdClearDepthStencilImage
-
-{-# INLINE vkCmdClearDepthStencilImageSafe #-}
-##endif
-
--- | Queues: 'graphics'.
---
---   Renderpass: @outside@
---
---   Pipeline: @transfer@
---
---   > void vkCmdClearDepthStencilImage
---   >     ( VkCommandBuffer commandBuffer
---   >     , VkImage image
---   >     , VkImageLayout imageLayout
---   >     , const VkClearDepthStencilValue* pDepthStencil
---   >     , uint32_t rangeCount
---   >     , const VkImageSubresourceRange* pRanges
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdClearDepthStencilImage vkCmdClearDepthStencilImage registry at www.khronos.org>
-type HS_vkCmdClearDepthStencilImage =
-     VkCommandBuffer -- ^ commandBuffer
-                     ->
-       VkImage -- ^ image
-               ->
-         VkImageLayout -- ^ imageLayout
-                       ->
-           Ptr VkClearDepthStencilValue -- ^ pDepthStencil
-                                        ->
-             Word32 -- ^ rangeCount
-                    -> Ptr VkImageSubresourceRange -- ^ pRanges
-                                                   -> IO ()
-
-type PFN_vkCmdClearDepthStencilImage =
-     FunPtr HS_vkCmdClearDepthStencilImage
-
-foreign import ccall "dynamic" unwrapVkCmdClearDepthStencilImage ::
-               PFN_vkCmdClearDepthStencilImage -> HS_vkCmdClearDepthStencilImage
-
-instance VulkanProc "vkCmdClearDepthStencilImage" where
-        type VkProcType "vkCmdClearDepthStencilImage" =
-             HS_vkCmdClearDepthStencilImage
-        vkProcSymbol = _VkCmdClearDepthStencilImage
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCmdClearDepthStencilImage
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VkCmdClearAttachments :: CString
-
-pattern VkCmdClearAttachments <- (is_VkCmdClearAttachments -> True)
-  where VkCmdClearAttachments = _VkCmdClearAttachments
-
-{-# INLINE _VkCmdClearAttachments #-}
-
-_VkCmdClearAttachments :: CString
-_VkCmdClearAttachments = Ptr "vkCmdClearAttachments\NUL"##
-
-{-# INLINE is_VkCmdClearAttachments #-}
-
-is_VkCmdClearAttachments :: CString -> Bool
-is_VkCmdClearAttachments
-  = (EQ ==) . cmpCStrings _VkCmdClearAttachments
-
-type VkCmdClearAttachments = "vkCmdClearAttachments"
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @inside@
---
--- Pipeline: @graphics@
---
--- > void vkCmdClearAttachments
--- >     ( VkCommandBuffer commandBuffer
--- >     , uint32_t attachmentCount
--- >     , const VkClearAttachment* pAttachments
--- >     , uint32_t rectCount
--- >     , const VkClearRect* pRects
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdClearAttachments vkCmdClearAttachments registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkCmdClearAttachments"
-               vkCmdClearAttachments ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 Word32 -- ^ attachmentCount
-                        ->
-                   Ptr VkClearAttachment -- ^ pAttachments
-                                         -> Word32 -- ^ rectCount
-                                                   -> Ptr VkClearRect -- ^ pRects
-                                                                      -> IO ()
-
-##else
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @inside@
---
--- Pipeline: @graphics@
---
--- > void vkCmdClearAttachments
--- >     ( VkCommandBuffer commandBuffer
--- >     , uint32_t attachmentCount
--- >     , const VkClearAttachment* pAttachments
--- >     , uint32_t rectCount
--- >     , const VkClearRect* pRects
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdClearAttachments vkCmdClearAttachments registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCmdClearAttachmentsSafe@ and @vkCmdClearAttachments@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdClearAttachments <- vkGetInstanceProc @VkCmdClearAttachments vkInstance
---
--- or less efficient:
---
--- > myCmdClearAttachments <- vkGetProc @VkCmdClearAttachments
---
-vkCmdClearAttachments ::
-                      VkCommandBuffer -- ^ commandBuffer
-                                      ->
-                        Word32 -- ^ attachmentCount
-                               ->
-                          Ptr VkClearAttachment -- ^ pAttachments
-                                                -> Word32 -- ^ rectCount
-                                                          -> Ptr VkClearRect -- ^ pRects
-                                                                             -> IO ()
-vkCmdClearAttachments
-  = unsafeDupablePerformIO (vkGetProc @VkCmdClearAttachments)
-
-{-# NOINLINE vkCmdClearAttachments #-}
-##endif
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @inside@
---
--- Pipeline: @graphics@
---
--- > void vkCmdClearAttachments
--- >     ( VkCommandBuffer commandBuffer
--- >     , uint32_t attachmentCount
--- >     , const VkClearAttachment* pAttachments
--- >     , uint32_t rectCount
--- >     , const VkClearRect* pRects
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdClearAttachments vkCmdClearAttachments registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkCmdClearAttachments"
-               vkCmdClearAttachmentsSafe ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 Word32 -- ^ attachmentCount
-                        ->
-                   Ptr VkClearAttachment -- ^ pAttachments
-                                         -> Word32 -- ^ rectCount
-                                                   -> Ptr VkClearRect -- ^ pRects
-                                                                      -> IO ()
-
-##else
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @inside@
---
--- Pipeline: @graphics@
---
--- > void vkCmdClearAttachments
--- >     ( VkCommandBuffer commandBuffer
--- >     , uint32_t attachmentCount
--- >     , const VkClearAttachment* pAttachments
--- >     , uint32_t rectCount
--- >     , const VkClearRect* pRects
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdClearAttachments vkCmdClearAttachments registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCmdClearAttachmentsSafe@ and @vkCmdClearAttachments@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdClearAttachments <- vkGetInstanceProc @VkCmdClearAttachments vkInstance
---
--- or less efficient:
---
--- > myCmdClearAttachments <- vkGetProc @VkCmdClearAttachments
---
-vkCmdClearAttachmentsSafe ::
-                          VkCommandBuffer -- ^ commandBuffer
-                                          ->
-                            Word32 -- ^ attachmentCount
-                                   ->
-                              Ptr VkClearAttachment -- ^ pAttachments
-                                                    -> Word32 -- ^ rectCount
-                                                              -> Ptr VkClearRect -- ^ pRects
-                                                                                 -> IO ()
-vkCmdClearAttachmentsSafe = vkCmdClearAttachments
-
-{-# INLINE vkCmdClearAttachmentsSafe #-}
-##endif
-
--- | Queues: 'graphics'.
---
---   Renderpass: @inside@
---
---   Pipeline: @graphics@
---
---   > void vkCmdClearAttachments
---   >     ( VkCommandBuffer commandBuffer
---   >     , uint32_t attachmentCount
---   >     , const VkClearAttachment* pAttachments
---   >     , uint32_t rectCount
---   >     , const VkClearRect* pRects
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdClearAttachments vkCmdClearAttachments registry at www.khronos.org>
-type HS_vkCmdClearAttachments =
-     VkCommandBuffer -- ^ commandBuffer
-                     ->
-       Word32 -- ^ attachmentCount
-              ->
-         Ptr VkClearAttachment -- ^ pAttachments
-                               -> Word32 -- ^ rectCount
-                                         -> Ptr VkClearRect -- ^ pRects
-                                                            -> IO ()
-
-type PFN_vkCmdClearAttachments = FunPtr HS_vkCmdClearAttachments
-
-foreign import ccall "dynamic" unwrapVkCmdClearAttachments ::
-               PFN_vkCmdClearAttachments -> HS_vkCmdClearAttachments
-
-instance VulkanProc "vkCmdClearAttachments" where
-        type VkProcType "vkCmdClearAttachments" = HS_vkCmdClearAttachments
-        vkProcSymbol = _VkCmdClearAttachments
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCmdClearAttachments
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VkCmdResolveImage :: CString
-
-pattern VkCmdResolveImage <- (is_VkCmdResolveImage -> True)
-  where VkCmdResolveImage = _VkCmdResolveImage
-
-{-# INLINE _VkCmdResolveImage #-}
-
-_VkCmdResolveImage :: CString
-_VkCmdResolveImage = Ptr "vkCmdResolveImage\NUL"##
-
-{-# INLINE is_VkCmdResolveImage #-}
-
-is_VkCmdResolveImage :: CString -> Bool
-is_VkCmdResolveImage = (EQ ==) . cmpCStrings _VkCmdResolveImage
-
-type VkCmdResolveImage = "vkCmdResolveImage"
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @outside@
---
--- Pipeline: @transfer@
---
--- > void vkCmdResolveImage
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkImage srcImage
--- >     , VkImageLayout srcImageLayout
--- >     , VkImage dstImage
--- >     , VkImageLayout dstImageLayout
--- >     , uint32_t regionCount
--- >     , const VkImageResolve* pRegions
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdResolveImage vkCmdResolveImage registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkCmdResolveImage" vkCmdResolveImage
-               ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 VkImage -- ^ srcImage
-                         ->
-                   VkImageLayout -- ^ srcImageLayout
-                                 ->
-                     VkImage -- ^ dstImage
-                             -> VkImageLayout -- ^ dstImageLayout
-                                              -> Word32 -- ^ regionCount
-                                                        -> Ptr VkImageResolve -- ^ pRegions
-                                                                              -> IO ()
-
-##else
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @outside@
---
--- Pipeline: @transfer@
---
--- > void vkCmdResolveImage
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkImage srcImage
--- >     , VkImageLayout srcImageLayout
--- >     , VkImage dstImage
--- >     , VkImageLayout dstImageLayout
--- >     , uint32_t regionCount
--- >     , const VkImageResolve* pRegions
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdResolveImage vkCmdResolveImage registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCmdResolveImageSafe@ and @vkCmdResolveImage@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdResolveImage <- vkGetInstanceProc @VkCmdResolveImage vkInstance
---
--- or less efficient:
---
--- > myCmdResolveImage <- vkGetProc @VkCmdResolveImage
---
-vkCmdResolveImage ::
-                  VkCommandBuffer -- ^ commandBuffer
-                                  ->
-                    VkImage -- ^ srcImage
-                            ->
-                      VkImageLayout -- ^ srcImageLayout
-                                    ->
-                        VkImage -- ^ dstImage
-                                -> VkImageLayout -- ^ dstImageLayout
-                                                 -> Word32 -- ^ regionCount
-                                                           -> Ptr VkImageResolve -- ^ pRegions
-                                                                                 -> IO ()
-vkCmdResolveImage
-  = unsafeDupablePerformIO (vkGetProc @VkCmdResolveImage)
-
-{-# NOINLINE vkCmdResolveImage #-}
-##endif
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @outside@
---
--- Pipeline: @transfer@
---
--- > void vkCmdResolveImage
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkImage srcImage
--- >     , VkImageLayout srcImageLayout
--- >     , VkImage dstImage
--- >     , VkImageLayout dstImageLayout
--- >     , uint32_t regionCount
--- >     , const VkImageResolve* pRegions
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdResolveImage vkCmdResolveImage registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkCmdResolveImage" vkCmdResolveImageSafe
-               ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 VkImage -- ^ srcImage
-                         ->
-                   VkImageLayout -- ^ srcImageLayout
-                                 ->
-                     VkImage -- ^ dstImage
-                             -> VkImageLayout -- ^ dstImageLayout
-                                              -> Word32 -- ^ regionCount
-                                                        -> Ptr VkImageResolve -- ^ pRegions
-                                                                              -> IO ()
-
-##else
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @outside@
---
--- Pipeline: @transfer@
---
--- > void vkCmdResolveImage
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkImage srcImage
--- >     , VkImageLayout srcImageLayout
--- >     , VkImage dstImage
--- >     , VkImageLayout dstImageLayout
--- >     , uint32_t regionCount
--- >     , const VkImageResolve* pRegions
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdResolveImage vkCmdResolveImage registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCmdResolveImageSafe@ and @vkCmdResolveImage@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdResolveImage <- vkGetInstanceProc @VkCmdResolveImage vkInstance
---
--- or less efficient:
---
--- > myCmdResolveImage <- vkGetProc @VkCmdResolveImage
---
-vkCmdResolveImageSafe ::
-                      VkCommandBuffer -- ^ commandBuffer
-                                      ->
-                        VkImage -- ^ srcImage
-                                ->
-                          VkImageLayout -- ^ srcImageLayout
-                                        ->
-                            VkImage -- ^ dstImage
-                                    -> VkImageLayout -- ^ dstImageLayout
-                                                     -> Word32 -- ^ regionCount
-                                                               -> Ptr VkImageResolve -- ^ pRegions
-                                                                                     -> IO ()
-vkCmdResolveImageSafe = vkCmdResolveImage
-
-{-# INLINE vkCmdResolveImageSafe #-}
-##endif
-
--- | Queues: 'graphics'.
---
---   Renderpass: @outside@
---
---   Pipeline: @transfer@
---
---   > void vkCmdResolveImage
---   >     ( VkCommandBuffer commandBuffer
---   >     , VkImage srcImage
---   >     , VkImageLayout srcImageLayout
---   >     , VkImage dstImage
---   >     , VkImageLayout dstImageLayout
---   >     , uint32_t regionCount
---   >     , const VkImageResolve* pRegions
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdResolveImage vkCmdResolveImage registry at www.khronos.org>
-type HS_vkCmdResolveImage =
-     VkCommandBuffer -- ^ commandBuffer
-                     ->
-       VkImage -- ^ srcImage
-               ->
-         VkImageLayout -- ^ srcImageLayout
-                       ->
-           VkImage -- ^ dstImage
-                   -> VkImageLayout -- ^ dstImageLayout
-                                    -> Word32 -- ^ regionCount
-                                              -> Ptr VkImageResolve -- ^ pRegions
-                                                                    -> IO ()
-
-type PFN_vkCmdResolveImage = FunPtr HS_vkCmdResolveImage
-
-foreign import ccall "dynamic" unwrapVkCmdResolveImage ::
-               PFN_vkCmdResolveImage -> HS_vkCmdResolveImage
-
-instance VulkanProc "vkCmdResolveImage" where
-        type VkProcType "vkCmdResolveImage" = HS_vkCmdResolveImage
-        vkProcSymbol = _VkCmdResolveImage
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCmdResolveImage
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VkCmdSetEvent :: CString
-
-pattern VkCmdSetEvent <- (is_VkCmdSetEvent -> True)
-  where VkCmdSetEvent = _VkCmdSetEvent
-
-{-# INLINE _VkCmdSetEvent #-}
-
-_VkCmdSetEvent :: CString
-_VkCmdSetEvent = Ptr "vkCmdSetEvent\NUL"##
-
-{-# INLINE is_VkCmdSetEvent #-}
-
-is_VkCmdSetEvent :: CString -> Bool
-is_VkCmdSetEvent = (EQ ==) . cmpCStrings _VkCmdSetEvent
-
-type VkCmdSetEvent = "vkCmdSetEvent"
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Queues: 'graphics', 'compute'.
---
--- Renderpass: @outside@
---
--- > void vkCmdSetEvent
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkEvent event
--- >     , VkPipelineStageFlags stageMask
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetEvent vkCmdSetEvent registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkCmdSetEvent" vkCmdSetEvent ::
-               VkCommandBuffer -- ^ commandBuffer
-                               -> VkEvent -- ^ event
-                                          -> VkPipelineStageFlags -- ^ stageMask
-                                                                  -> IO ()
-
-##else
--- |
--- Queues: 'graphics', 'compute'.
---
--- Renderpass: @outside@
---
--- > void vkCmdSetEvent
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkEvent event
--- >     , VkPipelineStageFlags stageMask
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetEvent vkCmdSetEvent registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCmdSetEventSafe@ and @vkCmdSetEvent@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdSetEvent <- vkGetInstanceProc @VkCmdSetEvent vkInstance
---
--- or less efficient:
---
--- > myCmdSetEvent <- vkGetProc @VkCmdSetEvent
---
-vkCmdSetEvent ::
-              VkCommandBuffer -- ^ commandBuffer
-                              -> VkEvent -- ^ event
-                                         -> VkPipelineStageFlags -- ^ stageMask
-                                                                 -> IO ()
-vkCmdSetEvent = unsafeDupablePerformIO (vkGetProc @VkCmdSetEvent)
-
-{-# NOINLINE vkCmdSetEvent #-}
-##endif
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Queues: 'graphics', 'compute'.
---
--- Renderpass: @outside@
---
--- > void vkCmdSetEvent
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkEvent event
--- >     , VkPipelineStageFlags stageMask
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetEvent vkCmdSetEvent registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkCmdSetEvent" vkCmdSetEventSafe ::
-               VkCommandBuffer -- ^ commandBuffer
-                               -> VkEvent -- ^ event
-                                          -> VkPipelineStageFlags -- ^ stageMask
-                                                                  -> IO ()
-
-##else
--- |
--- Queues: 'graphics', 'compute'.
---
--- Renderpass: @outside@
---
--- > void vkCmdSetEvent
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkEvent event
--- >     , VkPipelineStageFlags stageMask
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetEvent vkCmdSetEvent registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCmdSetEventSafe@ and @vkCmdSetEvent@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdSetEvent <- vkGetInstanceProc @VkCmdSetEvent vkInstance
---
--- or less efficient:
---
--- > myCmdSetEvent <- vkGetProc @VkCmdSetEvent
---
-vkCmdSetEventSafe ::
-                  VkCommandBuffer -- ^ commandBuffer
-                                  -> VkEvent -- ^ event
-                                             -> VkPipelineStageFlags -- ^ stageMask
-                                                                     -> IO ()
-vkCmdSetEventSafe = vkCmdSetEvent
-
-{-# INLINE vkCmdSetEventSafe #-}
-##endif
-
--- | Queues: 'graphics', 'compute'.
---
---   Renderpass: @outside@
---
---   > void vkCmdSetEvent
---   >     ( VkCommandBuffer commandBuffer
---   >     , VkEvent event
---   >     , VkPipelineStageFlags stageMask
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetEvent vkCmdSetEvent registry at www.khronos.org>
-type HS_vkCmdSetEvent =
-     VkCommandBuffer -- ^ commandBuffer
-                     -> VkEvent -- ^ event
-                                -> VkPipelineStageFlags -- ^ stageMask
-                                                        -> IO ()
-
-type PFN_vkCmdSetEvent = FunPtr HS_vkCmdSetEvent
-
-foreign import ccall "dynamic" unwrapVkCmdSetEvent ::
-               PFN_vkCmdSetEvent -> HS_vkCmdSetEvent
-
-instance VulkanProc "vkCmdSetEvent" where
-        type VkProcType "vkCmdSetEvent" = HS_vkCmdSetEvent
-        vkProcSymbol = _VkCmdSetEvent
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCmdSetEvent
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VkCmdResetEvent :: CString
-
-pattern VkCmdResetEvent <- (is_VkCmdResetEvent -> True)
-  where VkCmdResetEvent = _VkCmdResetEvent
-
-{-# INLINE _VkCmdResetEvent #-}
-
-_VkCmdResetEvent :: CString
-_VkCmdResetEvent = Ptr "vkCmdResetEvent\NUL"##
-
-{-# INLINE is_VkCmdResetEvent #-}
-
-is_VkCmdResetEvent :: CString -> Bool
-is_VkCmdResetEvent = (EQ ==) . cmpCStrings _VkCmdResetEvent
-
-type VkCmdResetEvent = "vkCmdResetEvent"
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Queues: 'graphics', 'compute'.
---
--- Renderpass: @outside@
---
--- > void vkCmdResetEvent
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkEvent event
--- >     , VkPipelineStageFlags stageMask
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdResetEvent vkCmdResetEvent registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkCmdResetEvent" vkCmdResetEvent ::
-               VkCommandBuffer -- ^ commandBuffer
-                               -> VkEvent -- ^ event
-                                          -> VkPipelineStageFlags -- ^ stageMask
-                                                                  -> IO ()
-
-##else
--- |
--- Queues: 'graphics', 'compute'.
---
--- Renderpass: @outside@
---
--- > void vkCmdResetEvent
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkEvent event
--- >     , VkPipelineStageFlags stageMask
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdResetEvent vkCmdResetEvent registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCmdResetEventSafe@ and @vkCmdResetEvent@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdResetEvent <- vkGetInstanceProc @VkCmdResetEvent vkInstance
---
--- or less efficient:
---
--- > myCmdResetEvent <- vkGetProc @VkCmdResetEvent
---
-vkCmdResetEvent ::
-                VkCommandBuffer -- ^ commandBuffer
-                                -> VkEvent -- ^ event
-                                           -> VkPipelineStageFlags -- ^ stageMask
-                                                                   -> IO ()
-vkCmdResetEvent
-  = unsafeDupablePerformIO (vkGetProc @VkCmdResetEvent)
-
-{-# NOINLINE vkCmdResetEvent #-}
-##endif
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Queues: 'graphics', 'compute'.
---
--- Renderpass: @outside@
---
--- > void vkCmdResetEvent
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkEvent event
--- >     , VkPipelineStageFlags stageMask
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdResetEvent vkCmdResetEvent registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkCmdResetEvent" vkCmdResetEventSafe ::
-               VkCommandBuffer -- ^ commandBuffer
-                               -> VkEvent -- ^ event
-                                          -> VkPipelineStageFlags -- ^ stageMask
-                                                                  -> IO ()
-
-##else
--- |
--- Queues: 'graphics', 'compute'.
---
--- Renderpass: @outside@
---
--- > void vkCmdResetEvent
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkEvent event
--- >     , VkPipelineStageFlags stageMask
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdResetEvent vkCmdResetEvent registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCmdResetEventSafe@ and @vkCmdResetEvent@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdResetEvent <- vkGetInstanceProc @VkCmdResetEvent vkInstance
---
--- or less efficient:
---
--- > myCmdResetEvent <- vkGetProc @VkCmdResetEvent
---
-vkCmdResetEventSafe ::
-                    VkCommandBuffer -- ^ commandBuffer
-                                    -> VkEvent -- ^ event
-                                               -> VkPipelineStageFlags -- ^ stageMask
-                                                                       -> IO ()
-vkCmdResetEventSafe = vkCmdResetEvent
-
-{-# INLINE vkCmdResetEventSafe #-}
-##endif
-
--- | Queues: 'graphics', 'compute'.
---
---   Renderpass: @outside@
---
---   > void vkCmdResetEvent
---   >     ( VkCommandBuffer commandBuffer
---   >     , VkEvent event
---   >     , VkPipelineStageFlags stageMask
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdResetEvent vkCmdResetEvent registry at www.khronos.org>
-type HS_vkCmdResetEvent =
-     VkCommandBuffer -- ^ commandBuffer
-                     -> VkEvent -- ^ event
-                                -> VkPipelineStageFlags -- ^ stageMask
-                                                        -> IO ()
-
-type PFN_vkCmdResetEvent = FunPtr HS_vkCmdResetEvent
-
-foreign import ccall "dynamic" unwrapVkCmdResetEvent ::
-               PFN_vkCmdResetEvent -> HS_vkCmdResetEvent
-
-instance VulkanProc "vkCmdResetEvent" where
-        type VkProcType "vkCmdResetEvent" = HS_vkCmdResetEvent
-        vkProcSymbol = _VkCmdResetEvent
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCmdResetEvent
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VkCmdWaitEvents :: CString
-
-pattern VkCmdWaitEvents <- (is_VkCmdWaitEvents -> True)
-  where VkCmdWaitEvents = _VkCmdWaitEvents
-
-{-# INLINE _VkCmdWaitEvents #-}
-
-_VkCmdWaitEvents :: CString
-_VkCmdWaitEvents = Ptr "vkCmdWaitEvents\NUL"##
-
-{-# INLINE is_VkCmdWaitEvents #-}
-
-is_VkCmdWaitEvents :: CString -> Bool
-is_VkCmdWaitEvents = (EQ ==) . cmpCStrings _VkCmdWaitEvents
-
-type VkCmdWaitEvents = "vkCmdWaitEvents"
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Queues: 'graphics', 'compute'.
---
--- Renderpass: @both@
---
--- > void vkCmdWaitEvents
--- >     ( VkCommandBuffer commandBuffer
--- >     , uint32_t eventCount
--- >     , const VkEvent* pEvents
--- >     , VkPipelineStageFlags srcStageMask
--- >     , VkPipelineStageFlags dstStageMask
--- >     , uint32_t memoryBarrierCount
--- >     , const VkMemoryBarrier* pMemoryBarriers
--- >     , uint32_t bufferMemoryBarrierCount
--- >     , const VkBufferMemoryBarrier* pBufferMemoryBarriers
--- >     , uint32_t imageMemoryBarrierCount
--- >     , const VkImageMemoryBarrier* pImageMemoryBarriers
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdWaitEvents vkCmdWaitEvents registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkCmdWaitEvents" vkCmdWaitEvents ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 Word32 -- ^ eventCount
-                        ->
-                   Ptr VkEvent -- ^ pEvents
-                               ->
-                     VkPipelineStageFlags -- ^ srcStageMask
-                                          ->
-                       VkPipelineStageFlags -- ^ dstStageMask
-                                            ->
-                         Word32 -- ^ memoryBarrierCount
-                                ->
-                           Ptr VkMemoryBarrier -- ^ pMemoryBarriers
-                                               ->
-                             Word32 -- ^ bufferMemoryBarrierCount
-                                    ->
-                               Ptr VkBufferMemoryBarrier -- ^ pBufferMemoryBarriers
-                                                         ->
-                                 Word32 -- ^ imageMemoryBarrierCount
-                                        -> Ptr VkImageMemoryBarrier -- ^ pImageMemoryBarriers
-                                                                    -> IO ()
-
-##else
--- |
--- Queues: 'graphics', 'compute'.
---
--- Renderpass: @both@
---
--- > void vkCmdWaitEvents
--- >     ( VkCommandBuffer commandBuffer
--- >     , uint32_t eventCount
--- >     , const VkEvent* pEvents
--- >     , VkPipelineStageFlags srcStageMask
--- >     , VkPipelineStageFlags dstStageMask
--- >     , uint32_t memoryBarrierCount
--- >     , const VkMemoryBarrier* pMemoryBarriers
--- >     , uint32_t bufferMemoryBarrierCount
--- >     , const VkBufferMemoryBarrier* pBufferMemoryBarriers
--- >     , uint32_t imageMemoryBarrierCount
--- >     , const VkImageMemoryBarrier* pImageMemoryBarriers
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdWaitEvents vkCmdWaitEvents registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCmdWaitEventsSafe@ and @vkCmdWaitEvents@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdWaitEvents <- vkGetInstanceProc @VkCmdWaitEvents vkInstance
---
--- or less efficient:
---
--- > myCmdWaitEvents <- vkGetProc @VkCmdWaitEvents
---
-vkCmdWaitEvents ::
-                VkCommandBuffer -- ^ commandBuffer
-                                ->
-                  Word32 -- ^ eventCount
-                         ->
-                    Ptr VkEvent -- ^ pEvents
-                                ->
-                      VkPipelineStageFlags -- ^ srcStageMask
-                                           ->
-                        VkPipelineStageFlags -- ^ dstStageMask
-                                             ->
-                          Word32 -- ^ memoryBarrierCount
-                                 ->
-                            Ptr VkMemoryBarrier -- ^ pMemoryBarriers
-                                                ->
-                              Word32 -- ^ bufferMemoryBarrierCount
-                                     ->
-                                Ptr VkBufferMemoryBarrier -- ^ pBufferMemoryBarriers
-                                                          ->
-                                  Word32 -- ^ imageMemoryBarrierCount
-                                         -> Ptr VkImageMemoryBarrier -- ^ pImageMemoryBarriers
-                                                                     -> IO ()
-vkCmdWaitEvents
-  = unsafeDupablePerformIO (vkGetProc @VkCmdWaitEvents)
-
-{-# NOINLINE vkCmdWaitEvents #-}
-##endif
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Queues: 'graphics', 'compute'.
---
--- Renderpass: @both@
---
--- > void vkCmdWaitEvents
--- >     ( VkCommandBuffer commandBuffer
--- >     , uint32_t eventCount
--- >     , const VkEvent* pEvents
--- >     , VkPipelineStageFlags srcStageMask
--- >     , VkPipelineStageFlags dstStageMask
--- >     , uint32_t memoryBarrierCount
--- >     , const VkMemoryBarrier* pMemoryBarriers
--- >     , uint32_t bufferMemoryBarrierCount
--- >     , const VkBufferMemoryBarrier* pBufferMemoryBarriers
--- >     , uint32_t imageMemoryBarrierCount
--- >     , const VkImageMemoryBarrier* pImageMemoryBarriers
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdWaitEvents vkCmdWaitEvents registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkCmdWaitEvents" vkCmdWaitEventsSafe ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 Word32 -- ^ eventCount
-                        ->
-                   Ptr VkEvent -- ^ pEvents
-                               ->
-                     VkPipelineStageFlags -- ^ srcStageMask
-                                          ->
-                       VkPipelineStageFlags -- ^ dstStageMask
-                                            ->
-                         Word32 -- ^ memoryBarrierCount
-                                ->
-                           Ptr VkMemoryBarrier -- ^ pMemoryBarriers
-                                               ->
-                             Word32 -- ^ bufferMemoryBarrierCount
-                                    ->
-                               Ptr VkBufferMemoryBarrier -- ^ pBufferMemoryBarriers
-                                                         ->
-                                 Word32 -- ^ imageMemoryBarrierCount
-                                        -> Ptr VkImageMemoryBarrier -- ^ pImageMemoryBarriers
-                                                                    -> IO ()
-
-##else
--- |
--- Queues: 'graphics', 'compute'.
---
--- Renderpass: @both@
---
--- > void vkCmdWaitEvents
--- >     ( VkCommandBuffer commandBuffer
--- >     , uint32_t eventCount
--- >     , const VkEvent* pEvents
--- >     , VkPipelineStageFlags srcStageMask
--- >     , VkPipelineStageFlags dstStageMask
--- >     , uint32_t memoryBarrierCount
--- >     , const VkMemoryBarrier* pMemoryBarriers
--- >     , uint32_t bufferMemoryBarrierCount
--- >     , const VkBufferMemoryBarrier* pBufferMemoryBarriers
--- >     , uint32_t imageMemoryBarrierCount
--- >     , const VkImageMemoryBarrier* pImageMemoryBarriers
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdWaitEvents vkCmdWaitEvents registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCmdWaitEventsSafe@ and @vkCmdWaitEvents@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdWaitEvents <- vkGetInstanceProc @VkCmdWaitEvents vkInstance
---
--- or less efficient:
---
--- > myCmdWaitEvents <- vkGetProc @VkCmdWaitEvents
---
-vkCmdWaitEventsSafe ::
-                    VkCommandBuffer -- ^ commandBuffer
-                                    ->
-                      Word32 -- ^ eventCount
-                             ->
-                        Ptr VkEvent -- ^ pEvents
-                                    ->
-                          VkPipelineStageFlags -- ^ srcStageMask
-                                               ->
-                            VkPipelineStageFlags -- ^ dstStageMask
-                                                 ->
-                              Word32 -- ^ memoryBarrierCount
-                                     ->
-                                Ptr VkMemoryBarrier -- ^ pMemoryBarriers
-                                                    ->
-                                  Word32 -- ^ bufferMemoryBarrierCount
-                                         ->
-                                    Ptr VkBufferMemoryBarrier -- ^ pBufferMemoryBarriers
-                                                              ->
-                                      Word32 -- ^ imageMemoryBarrierCount
-                                             -> Ptr VkImageMemoryBarrier -- ^ pImageMemoryBarriers
-                                                                         -> IO ()
-vkCmdWaitEventsSafe = vkCmdWaitEvents
-
-{-# INLINE vkCmdWaitEventsSafe #-}
-##endif
-
--- | Queues: 'graphics', 'compute'.
---
---   Renderpass: @both@
---
---   > void vkCmdWaitEvents
---   >     ( VkCommandBuffer commandBuffer
---   >     , uint32_t eventCount
---   >     , const VkEvent* pEvents
---   >     , VkPipelineStageFlags srcStageMask
---   >     , VkPipelineStageFlags dstStageMask
---   >     , uint32_t memoryBarrierCount
---   >     , const VkMemoryBarrier* pMemoryBarriers
---   >     , uint32_t bufferMemoryBarrierCount
---   >     , const VkBufferMemoryBarrier* pBufferMemoryBarriers
---   >     , uint32_t imageMemoryBarrierCount
---   >     , const VkImageMemoryBarrier* pImageMemoryBarriers
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdWaitEvents vkCmdWaitEvents registry at www.khronos.org>
-type HS_vkCmdWaitEvents =
-     VkCommandBuffer -- ^ commandBuffer
-                     ->
-       Word32 -- ^ eventCount
-              ->
-         Ptr VkEvent -- ^ pEvents
-                     ->
-           VkPipelineStageFlags -- ^ srcStageMask
-                                ->
-             VkPipelineStageFlags -- ^ dstStageMask
-                                  ->
-               Word32 -- ^ memoryBarrierCount
-                      ->
-                 Ptr VkMemoryBarrier -- ^ pMemoryBarriers
-                                     ->
-                   Word32 -- ^ bufferMemoryBarrierCount
-                          ->
-                     Ptr VkBufferMemoryBarrier -- ^ pBufferMemoryBarriers
-                                               ->
-                       Word32 -- ^ imageMemoryBarrierCount
-                              -> Ptr VkImageMemoryBarrier -- ^ pImageMemoryBarriers
-                                                          -> IO ()
-
-type PFN_vkCmdWaitEvents = FunPtr HS_vkCmdWaitEvents
-
-foreign import ccall "dynamic" unwrapVkCmdWaitEvents ::
-               PFN_vkCmdWaitEvents -> HS_vkCmdWaitEvents
-
-instance VulkanProc "vkCmdWaitEvents" where
-        type VkProcType "vkCmdWaitEvents" = HS_vkCmdWaitEvents
-        vkProcSymbol = _VkCmdWaitEvents
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCmdWaitEvents
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VkCmdPipelineBarrier :: CString
-
-pattern VkCmdPipelineBarrier <- (is_VkCmdPipelineBarrier -> True)
-  where VkCmdPipelineBarrier = _VkCmdPipelineBarrier
-
-{-# INLINE _VkCmdPipelineBarrier #-}
-
-_VkCmdPipelineBarrier :: CString
-_VkCmdPipelineBarrier = Ptr "vkCmdPipelineBarrier\NUL"##
-
-{-# INLINE is_VkCmdPipelineBarrier #-}
-
-is_VkCmdPipelineBarrier :: CString -> Bool
-is_VkCmdPipelineBarrier
-  = (EQ ==) . cmpCStrings _VkCmdPipelineBarrier
-
-type VkCmdPipelineBarrier = "vkCmdPipelineBarrier"
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Queues: 'transfer', 'graphics', 'compute'.
---
--- Renderpass: @both@
---
--- > void vkCmdPipelineBarrier
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkPipelineStageFlags srcStageMask
--- >     , VkPipelineStageFlags dstStageMask
--- >     , VkDependencyFlags dependencyFlags
--- >     , uint32_t memoryBarrierCount
--- >     , const VkMemoryBarrier* pMemoryBarriers
--- >     , uint32_t bufferMemoryBarrierCount
--- >     , const VkBufferMemoryBarrier* pBufferMemoryBarriers
--- >     , uint32_t imageMemoryBarrierCount
--- >     , const VkImageMemoryBarrier* pImageMemoryBarriers
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdPipelineBarrier vkCmdPipelineBarrier registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkCmdPipelineBarrier"
-               vkCmdPipelineBarrier ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 VkPipelineStageFlags -- ^ srcStageMask
-                                      ->
-                   VkPipelineStageFlags -- ^ dstStageMask
-                                        ->
-                     VkDependencyFlags -- ^ dependencyFlags
-                                       ->
-                       Word32 -- ^ memoryBarrierCount
-                              ->
-                         Ptr VkMemoryBarrier -- ^ pMemoryBarriers
-                                             ->
-                           Word32 -- ^ bufferMemoryBarrierCount
-                                  ->
-                             Ptr VkBufferMemoryBarrier -- ^ pBufferMemoryBarriers
-                                                       ->
-                               Word32 -- ^ imageMemoryBarrierCount
-                                      -> Ptr VkImageMemoryBarrier -- ^ pImageMemoryBarriers
-                                                                  -> IO ()
-
-##else
--- |
--- Queues: 'transfer', 'graphics', 'compute'.
---
--- Renderpass: @both@
---
--- > void vkCmdPipelineBarrier
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkPipelineStageFlags srcStageMask
--- >     , VkPipelineStageFlags dstStageMask
--- >     , VkDependencyFlags dependencyFlags
--- >     , uint32_t memoryBarrierCount
--- >     , const VkMemoryBarrier* pMemoryBarriers
--- >     , uint32_t bufferMemoryBarrierCount
--- >     , const VkBufferMemoryBarrier* pBufferMemoryBarriers
--- >     , uint32_t imageMemoryBarrierCount
--- >     , const VkImageMemoryBarrier* pImageMemoryBarriers
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdPipelineBarrier vkCmdPipelineBarrier registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCmdPipelineBarrierSafe@ and @vkCmdPipelineBarrier@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdPipelineBarrier <- vkGetInstanceProc @VkCmdPipelineBarrier vkInstance
---
--- or less efficient:
---
--- > myCmdPipelineBarrier <- vkGetProc @VkCmdPipelineBarrier
---
-vkCmdPipelineBarrier ::
-                     VkCommandBuffer -- ^ commandBuffer
-                                     ->
-                       VkPipelineStageFlags -- ^ srcStageMask
-                                            ->
-                         VkPipelineStageFlags -- ^ dstStageMask
-                                              ->
-                           VkDependencyFlags -- ^ dependencyFlags
-                                             ->
-                             Word32 -- ^ memoryBarrierCount
-                                    ->
-                               Ptr VkMemoryBarrier -- ^ pMemoryBarriers
-                                                   ->
-                                 Word32 -- ^ bufferMemoryBarrierCount
-                                        ->
-                                   Ptr VkBufferMemoryBarrier -- ^ pBufferMemoryBarriers
-                                                             ->
-                                     Word32 -- ^ imageMemoryBarrierCount
-                                            -> Ptr VkImageMemoryBarrier -- ^ pImageMemoryBarriers
-                                                                        -> IO ()
-vkCmdPipelineBarrier
-  = unsafeDupablePerformIO (vkGetProc @VkCmdPipelineBarrier)
-
-{-# NOINLINE vkCmdPipelineBarrier #-}
-##endif
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Queues: 'transfer', 'graphics', 'compute'.
---
--- Renderpass: @both@
---
--- > void vkCmdPipelineBarrier
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkPipelineStageFlags srcStageMask
--- >     , VkPipelineStageFlags dstStageMask
--- >     , VkDependencyFlags dependencyFlags
--- >     , uint32_t memoryBarrierCount
--- >     , const VkMemoryBarrier* pMemoryBarriers
--- >     , uint32_t bufferMemoryBarrierCount
--- >     , const VkBufferMemoryBarrier* pBufferMemoryBarriers
--- >     , uint32_t imageMemoryBarrierCount
--- >     , const VkImageMemoryBarrier* pImageMemoryBarriers
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdPipelineBarrier vkCmdPipelineBarrier registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkCmdPipelineBarrier"
-               vkCmdPipelineBarrierSafe ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 VkPipelineStageFlags -- ^ srcStageMask
-                                      ->
-                   VkPipelineStageFlags -- ^ dstStageMask
-                                        ->
-                     VkDependencyFlags -- ^ dependencyFlags
-                                       ->
-                       Word32 -- ^ memoryBarrierCount
-                              ->
-                         Ptr VkMemoryBarrier -- ^ pMemoryBarriers
-                                             ->
-                           Word32 -- ^ bufferMemoryBarrierCount
-                                  ->
-                             Ptr VkBufferMemoryBarrier -- ^ pBufferMemoryBarriers
-                                                       ->
-                               Word32 -- ^ imageMemoryBarrierCount
-                                      -> Ptr VkImageMemoryBarrier -- ^ pImageMemoryBarriers
-                                                                  -> IO ()
-
-##else
--- |
--- Queues: 'transfer', 'graphics', 'compute'.
---
--- Renderpass: @both@
---
--- > void vkCmdPipelineBarrier
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkPipelineStageFlags srcStageMask
--- >     , VkPipelineStageFlags dstStageMask
--- >     , VkDependencyFlags dependencyFlags
--- >     , uint32_t memoryBarrierCount
--- >     , const VkMemoryBarrier* pMemoryBarriers
--- >     , uint32_t bufferMemoryBarrierCount
--- >     , const VkBufferMemoryBarrier* pBufferMemoryBarriers
--- >     , uint32_t imageMemoryBarrierCount
--- >     , const VkImageMemoryBarrier* pImageMemoryBarriers
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdPipelineBarrier vkCmdPipelineBarrier registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCmdPipelineBarrierSafe@ and @vkCmdPipelineBarrier@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdPipelineBarrier <- vkGetInstanceProc @VkCmdPipelineBarrier vkInstance
---
--- or less efficient:
---
--- > myCmdPipelineBarrier <- vkGetProc @VkCmdPipelineBarrier
---
-vkCmdPipelineBarrierSafe ::
-                         VkCommandBuffer -- ^ commandBuffer
-                                         ->
-                           VkPipelineStageFlags -- ^ srcStageMask
-                                                ->
-                             VkPipelineStageFlags -- ^ dstStageMask
-                                                  ->
-                               VkDependencyFlags -- ^ dependencyFlags
-                                                 ->
-                                 Word32 -- ^ memoryBarrierCount
-                                        ->
-                                   Ptr VkMemoryBarrier -- ^ pMemoryBarriers
-                                                       ->
-                                     Word32 -- ^ bufferMemoryBarrierCount
-                                            ->
-                                       Ptr VkBufferMemoryBarrier -- ^ pBufferMemoryBarriers
-                                                                 ->
-                                         Word32 -- ^ imageMemoryBarrierCount
-                                                -> Ptr VkImageMemoryBarrier -- ^ pImageMemoryBarriers
-                                                                            -> IO ()
-vkCmdPipelineBarrierSafe = vkCmdPipelineBarrier
-
-{-# INLINE vkCmdPipelineBarrierSafe #-}
-##endif
-
--- | Queues: 'transfer', 'graphics', 'compute'.
---
---   Renderpass: @both@
---
---   > void vkCmdPipelineBarrier
---   >     ( VkCommandBuffer commandBuffer
---   >     , VkPipelineStageFlags srcStageMask
---   >     , VkPipelineStageFlags dstStageMask
---   >     , VkDependencyFlags dependencyFlags
---   >     , uint32_t memoryBarrierCount
---   >     , const VkMemoryBarrier* pMemoryBarriers
---   >     , uint32_t bufferMemoryBarrierCount
---   >     , const VkBufferMemoryBarrier* pBufferMemoryBarriers
---   >     , uint32_t imageMemoryBarrierCount
---   >     , const VkImageMemoryBarrier* pImageMemoryBarriers
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdPipelineBarrier vkCmdPipelineBarrier registry at www.khronos.org>
-type HS_vkCmdPipelineBarrier =
-     VkCommandBuffer -- ^ commandBuffer
-                     ->
-       VkPipelineStageFlags -- ^ srcStageMask
-                            ->
-         VkPipelineStageFlags -- ^ dstStageMask
-                              ->
-           VkDependencyFlags -- ^ dependencyFlags
-                             ->
-             Word32 -- ^ memoryBarrierCount
-                    ->
-               Ptr VkMemoryBarrier -- ^ pMemoryBarriers
-                                   ->
-                 Word32 -- ^ bufferMemoryBarrierCount
-                        ->
-                   Ptr VkBufferMemoryBarrier -- ^ pBufferMemoryBarriers
-                                             ->
-                     Word32 -- ^ imageMemoryBarrierCount
-                            -> Ptr VkImageMemoryBarrier -- ^ pImageMemoryBarriers
-                                                        -> IO ()
-
-type PFN_vkCmdPipelineBarrier = FunPtr HS_vkCmdPipelineBarrier
-
-foreign import ccall "dynamic" unwrapVkCmdPipelineBarrier ::
-               PFN_vkCmdPipelineBarrier -> HS_vkCmdPipelineBarrier
-
-instance VulkanProc "vkCmdPipelineBarrier" where
-        type VkProcType "vkCmdPipelineBarrier" = HS_vkCmdPipelineBarrier
-        vkProcSymbol = _VkCmdPipelineBarrier
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCmdPipelineBarrier
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VkCmdBeginQuery :: CString
-
-pattern VkCmdBeginQuery <- (is_VkCmdBeginQuery -> True)
-  where VkCmdBeginQuery = _VkCmdBeginQuery
-
-{-# INLINE _VkCmdBeginQuery #-}
-
-_VkCmdBeginQuery :: CString
-_VkCmdBeginQuery = Ptr "vkCmdBeginQuery\NUL"##
-
-{-# INLINE is_VkCmdBeginQuery #-}
-
-is_VkCmdBeginQuery :: CString -> Bool
-is_VkCmdBeginQuery = (EQ ==) . cmpCStrings _VkCmdBeginQuery
-
-type VkCmdBeginQuery = "vkCmdBeginQuery"
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Queues: 'graphics', 'compute'.
---
--- Renderpass: @both@
---
--- > void vkCmdBeginQuery
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkQueryPool queryPool
--- >     , uint32_t query
--- >     , VkQueryControlFlags flags
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBeginQuery vkCmdBeginQuery registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkCmdBeginQuery" vkCmdBeginQuery ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 VkQueryPool -- ^ queryPool
-                             -> Word32 -- ^ query
-                                       -> VkQueryControlFlags -- ^ flags
-                                                              -> IO ()
-
-##else
--- |
--- Queues: 'graphics', 'compute'.
---
--- Renderpass: @both@
---
--- > void vkCmdBeginQuery
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkQueryPool queryPool
--- >     , uint32_t query
--- >     , VkQueryControlFlags flags
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBeginQuery vkCmdBeginQuery registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCmdBeginQuerySafe@ and @vkCmdBeginQuery@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdBeginQuery <- vkGetInstanceProc @VkCmdBeginQuery vkInstance
---
--- or less efficient:
---
--- > myCmdBeginQuery <- vkGetProc @VkCmdBeginQuery
---
-vkCmdBeginQuery ::
-                VkCommandBuffer -- ^ commandBuffer
-                                ->
-                  VkQueryPool -- ^ queryPool
-                              -> Word32 -- ^ query
-                                        -> VkQueryControlFlags -- ^ flags
-                                                               -> IO ()
-vkCmdBeginQuery
-  = unsafeDupablePerformIO (vkGetProc @VkCmdBeginQuery)
-
-{-# NOINLINE vkCmdBeginQuery #-}
-##endif
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Queues: 'graphics', 'compute'.
---
--- Renderpass: @both@
---
--- > void vkCmdBeginQuery
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkQueryPool queryPool
--- >     , uint32_t query
--- >     , VkQueryControlFlags flags
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBeginQuery vkCmdBeginQuery registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkCmdBeginQuery" vkCmdBeginQuerySafe ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 VkQueryPool -- ^ queryPool
-                             -> Word32 -- ^ query
-                                       -> VkQueryControlFlags -- ^ flags
-                                                              -> IO ()
-
-##else
--- |
--- Queues: 'graphics', 'compute'.
---
--- Renderpass: @both@
---
--- > void vkCmdBeginQuery
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkQueryPool queryPool
--- >     , uint32_t query
--- >     , VkQueryControlFlags flags
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBeginQuery vkCmdBeginQuery registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCmdBeginQuerySafe@ and @vkCmdBeginQuery@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdBeginQuery <- vkGetInstanceProc @VkCmdBeginQuery vkInstance
---
--- or less efficient:
---
--- > myCmdBeginQuery <- vkGetProc @VkCmdBeginQuery
---
-vkCmdBeginQuerySafe ::
-                    VkCommandBuffer -- ^ commandBuffer
-                                    ->
-                      VkQueryPool -- ^ queryPool
-                                  -> Word32 -- ^ query
-                                            -> VkQueryControlFlags -- ^ flags
-                                                                   -> IO ()
-vkCmdBeginQuerySafe = vkCmdBeginQuery
-
-{-# INLINE vkCmdBeginQuerySafe #-}
-##endif
-
--- | Queues: 'graphics', 'compute'.
---
---   Renderpass: @both@
---
---   > void vkCmdBeginQuery
---   >     ( VkCommandBuffer commandBuffer
---   >     , VkQueryPool queryPool
---   >     , uint32_t query
---   >     , VkQueryControlFlags flags
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBeginQuery vkCmdBeginQuery registry at www.khronos.org>
-type HS_vkCmdBeginQuery =
-     VkCommandBuffer -- ^ commandBuffer
-                     ->
-       VkQueryPool -- ^ queryPool
-                   -> Word32 -- ^ query
-                             -> VkQueryControlFlags -- ^ flags
-                                                    -> IO ()
-
-type PFN_vkCmdBeginQuery = FunPtr HS_vkCmdBeginQuery
-
-foreign import ccall "dynamic" unwrapVkCmdBeginQuery ::
-               PFN_vkCmdBeginQuery -> HS_vkCmdBeginQuery
-
-instance VulkanProc "vkCmdBeginQuery" where
-        type VkProcType "vkCmdBeginQuery" = HS_vkCmdBeginQuery
-        vkProcSymbol = _VkCmdBeginQuery
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCmdBeginQuery
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VkCmdEndQuery :: CString
-
-pattern VkCmdEndQuery <- (is_VkCmdEndQuery -> True)
-  where VkCmdEndQuery = _VkCmdEndQuery
-
-{-# INLINE _VkCmdEndQuery #-}
-
-_VkCmdEndQuery :: CString
-_VkCmdEndQuery = Ptr "vkCmdEndQuery\NUL"##
-
-{-# INLINE is_VkCmdEndQuery #-}
-
-is_VkCmdEndQuery :: CString -> Bool
-is_VkCmdEndQuery = (EQ ==) . cmpCStrings _VkCmdEndQuery
-
-type VkCmdEndQuery = "vkCmdEndQuery"
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Queues: 'graphics', 'compute'.
---
--- Renderpass: @both@
---
--- > void vkCmdEndQuery
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkQueryPool queryPool
--- >     , uint32_t query
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdEndQuery vkCmdEndQuery registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkCmdEndQuery" vkCmdEndQuery ::
-               VkCommandBuffer -- ^ commandBuffer
-                               -> VkQueryPool -- ^ queryPool
-                                              -> Word32 -- ^ query
-                                                        -> IO ()
-
-##else
--- |
--- Queues: 'graphics', 'compute'.
---
--- Renderpass: @both@
---
--- > void vkCmdEndQuery
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkQueryPool queryPool
--- >     , uint32_t query
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdEndQuery vkCmdEndQuery registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCmdEndQuerySafe@ and @vkCmdEndQuery@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdEndQuery <- vkGetInstanceProc @VkCmdEndQuery vkInstance
---
--- or less efficient:
---
--- > myCmdEndQuery <- vkGetProc @VkCmdEndQuery
---
-vkCmdEndQuery :: VkCommandBuffer -- ^ commandBuffer
-                                 -> VkQueryPool -- ^ queryPool
-                                                -> Word32 -- ^ query
-                                                          -> IO ()
-vkCmdEndQuery = unsafeDupablePerformIO (vkGetProc @VkCmdEndQuery)
-
-{-# NOINLINE vkCmdEndQuery #-}
-##endif
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Queues: 'graphics', 'compute'.
---
--- Renderpass: @both@
---
--- > void vkCmdEndQuery
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkQueryPool queryPool
--- >     , uint32_t query
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdEndQuery vkCmdEndQuery registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkCmdEndQuery" vkCmdEndQuerySafe ::
-               VkCommandBuffer -- ^ commandBuffer
-                               -> VkQueryPool -- ^ queryPool
-                                              -> Word32 -- ^ query
-                                                        -> IO ()
-
-##else
--- |
--- Queues: 'graphics', 'compute'.
---
--- Renderpass: @both@
---
--- > void vkCmdEndQuery
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkQueryPool queryPool
--- >     , uint32_t query
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdEndQuery vkCmdEndQuery registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCmdEndQuerySafe@ and @vkCmdEndQuery@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdEndQuery <- vkGetInstanceProc @VkCmdEndQuery vkInstance
---
--- or less efficient:
---
--- > myCmdEndQuery <- vkGetProc @VkCmdEndQuery
---
-vkCmdEndQuerySafe ::
-                  VkCommandBuffer -- ^ commandBuffer
-                                  -> VkQueryPool -- ^ queryPool
-                                                 -> Word32 -- ^ query
-                                                           -> IO ()
-vkCmdEndQuerySafe = vkCmdEndQuery
-
-{-# INLINE vkCmdEndQuerySafe #-}
-##endif
-
--- | Queues: 'graphics', 'compute'.
---
---   Renderpass: @both@
---
---   > void vkCmdEndQuery
---   >     ( VkCommandBuffer commandBuffer
---   >     , VkQueryPool queryPool
---   >     , uint32_t query
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdEndQuery vkCmdEndQuery registry at www.khronos.org>
-type HS_vkCmdEndQuery =
-     VkCommandBuffer -- ^ commandBuffer
-                     -> VkQueryPool -- ^ queryPool
-                                    -> Word32 -- ^ query
-                                              -> IO ()
-
-type PFN_vkCmdEndQuery = FunPtr HS_vkCmdEndQuery
-
-foreign import ccall "dynamic" unwrapVkCmdEndQuery ::
-               PFN_vkCmdEndQuery -> HS_vkCmdEndQuery
-
-instance VulkanProc "vkCmdEndQuery" where
-        type VkProcType "vkCmdEndQuery" = HS_vkCmdEndQuery
-        vkProcSymbol = _VkCmdEndQuery
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCmdEndQuery
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VkCmdResetQueryPool :: CString
-
-pattern VkCmdResetQueryPool <- (is_VkCmdResetQueryPool -> True)
-  where VkCmdResetQueryPool = _VkCmdResetQueryPool
-
-{-# INLINE _VkCmdResetQueryPool #-}
-
-_VkCmdResetQueryPool :: CString
-_VkCmdResetQueryPool = Ptr "vkCmdResetQueryPool\NUL"##
-
-{-# INLINE is_VkCmdResetQueryPool #-}
-
-is_VkCmdResetQueryPool :: CString -> Bool
-is_VkCmdResetQueryPool = (EQ ==) . cmpCStrings _VkCmdResetQueryPool
-
-type VkCmdResetQueryPool = "vkCmdResetQueryPool"
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Queues: 'graphics', 'compute'.
---
--- Renderpass: @outside@
---
--- > void vkCmdResetQueryPool
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkQueryPool queryPool
--- >     , uint32_t firstQuery
--- >     , uint32_t queryCount
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdResetQueryPool vkCmdResetQueryPool registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkCmdResetQueryPool"
-               vkCmdResetQueryPool ::
-               VkCommandBuffer -- ^ commandBuffer
-                               -> VkQueryPool -- ^ queryPool
-                                              -> Word32 -- ^ firstQuery
-                                                        -> Word32 -- ^ queryCount
-                                                                  -> IO ()
-
-##else
--- |
--- Queues: 'graphics', 'compute'.
---
--- Renderpass: @outside@
---
--- > void vkCmdResetQueryPool
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkQueryPool queryPool
--- >     , uint32_t firstQuery
--- >     , uint32_t queryCount
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdResetQueryPool vkCmdResetQueryPool registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCmdResetQueryPoolSafe@ and @vkCmdResetQueryPool@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdResetQueryPool <- vkGetInstanceProc @VkCmdResetQueryPool vkInstance
---
--- or less efficient:
---
--- > myCmdResetQueryPool <- vkGetProc @VkCmdResetQueryPool
---
-vkCmdResetQueryPool ::
-                    VkCommandBuffer -- ^ commandBuffer
-                                    -> VkQueryPool -- ^ queryPool
-                                                   -> Word32 -- ^ firstQuery
-                                                             -> Word32 -- ^ queryCount
-                                                                       -> IO ()
-vkCmdResetQueryPool
-  = unsafeDupablePerformIO (vkGetProc @VkCmdResetQueryPool)
-
-{-# NOINLINE vkCmdResetQueryPool #-}
-##endif
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Queues: 'graphics', 'compute'.
---
--- Renderpass: @outside@
---
--- > void vkCmdResetQueryPool
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkQueryPool queryPool
--- >     , uint32_t firstQuery
--- >     , uint32_t queryCount
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdResetQueryPool vkCmdResetQueryPool registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkCmdResetQueryPool"
-               vkCmdResetQueryPoolSafe ::
-               VkCommandBuffer -- ^ commandBuffer
-                               -> VkQueryPool -- ^ queryPool
-                                              -> Word32 -- ^ firstQuery
-                                                        -> Word32 -- ^ queryCount
-                                                                  -> IO ()
-
-##else
--- |
--- Queues: 'graphics', 'compute'.
---
--- Renderpass: @outside@
---
--- > void vkCmdResetQueryPool
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkQueryPool queryPool
--- >     , uint32_t firstQuery
--- >     , uint32_t queryCount
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdResetQueryPool vkCmdResetQueryPool registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCmdResetQueryPoolSafe@ and @vkCmdResetQueryPool@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdResetQueryPool <- vkGetInstanceProc @VkCmdResetQueryPool vkInstance
---
--- or less efficient:
---
--- > myCmdResetQueryPool <- vkGetProc @VkCmdResetQueryPool
---
-vkCmdResetQueryPoolSafe ::
-                        VkCommandBuffer -- ^ commandBuffer
-                                        -> VkQueryPool -- ^ queryPool
-                                                       -> Word32 -- ^ firstQuery
-                                                                 -> Word32 -- ^ queryCount
-                                                                           -> IO ()
-vkCmdResetQueryPoolSafe = vkCmdResetQueryPool
-
-{-# INLINE vkCmdResetQueryPoolSafe #-}
-##endif
-
--- | Queues: 'graphics', 'compute'.
---
---   Renderpass: @outside@
---
---   > void vkCmdResetQueryPool
---   >     ( VkCommandBuffer commandBuffer
---   >     , VkQueryPool queryPool
---   >     , uint32_t firstQuery
---   >     , uint32_t queryCount
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdResetQueryPool vkCmdResetQueryPool registry at www.khronos.org>
-type HS_vkCmdResetQueryPool =
-     VkCommandBuffer -- ^ commandBuffer
-                     -> VkQueryPool -- ^ queryPool
-                                    -> Word32 -- ^ firstQuery
-                                              -> Word32 -- ^ queryCount
-                                                        -> IO ()
-
-type PFN_vkCmdResetQueryPool = FunPtr HS_vkCmdResetQueryPool
-
-foreign import ccall "dynamic" unwrapVkCmdResetQueryPool ::
-               PFN_vkCmdResetQueryPool -> HS_vkCmdResetQueryPool
-
-instance VulkanProc "vkCmdResetQueryPool" where
-        type VkProcType "vkCmdResetQueryPool" = HS_vkCmdResetQueryPool
-        vkProcSymbol = _VkCmdResetQueryPool
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCmdResetQueryPool
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VkCmdWriteTimestamp :: CString
-
-pattern VkCmdWriteTimestamp <- (is_VkCmdWriteTimestamp -> True)
-  where VkCmdWriteTimestamp = _VkCmdWriteTimestamp
-
-{-# INLINE _VkCmdWriteTimestamp #-}
-
-_VkCmdWriteTimestamp :: CString
-_VkCmdWriteTimestamp = Ptr "vkCmdWriteTimestamp\NUL"##
-
-{-# INLINE is_VkCmdWriteTimestamp #-}
-
-is_VkCmdWriteTimestamp :: CString -> Bool
-is_VkCmdWriteTimestamp = (EQ ==) . cmpCStrings _VkCmdWriteTimestamp
-
-type VkCmdWriteTimestamp = "vkCmdWriteTimestamp"
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Queues: 'transfer', 'graphics', 'compute'.
---
--- Renderpass: @both@
---
--- Pipeline: @transfer@
---
--- > void vkCmdWriteTimestamp
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkPipelineStageFlagBits pipelineStage
--- >     , VkQueryPool queryPool
--- >     , uint32_t query
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdWriteTimestamp vkCmdWriteTimestamp registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkCmdWriteTimestamp"
-               vkCmdWriteTimestamp ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 VkPipelineStageFlagBits -- ^ pipelineStage
-                                         -> VkQueryPool -- ^ queryPool
-                                                        -> Word32 -- ^ query
-                                                                  -> IO ()
-
-##else
--- |
--- Queues: 'transfer', 'graphics', 'compute'.
---
--- Renderpass: @both@
---
--- Pipeline: @transfer@
---
--- > void vkCmdWriteTimestamp
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkPipelineStageFlagBits pipelineStage
--- >     , VkQueryPool queryPool
--- >     , uint32_t query
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdWriteTimestamp vkCmdWriteTimestamp registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCmdWriteTimestampSafe@ and @vkCmdWriteTimestamp@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdWriteTimestamp <- vkGetInstanceProc @VkCmdWriteTimestamp vkInstance
---
--- or less efficient:
---
--- > myCmdWriteTimestamp <- vkGetProc @VkCmdWriteTimestamp
---
-vkCmdWriteTimestamp ::
-                    VkCommandBuffer -- ^ commandBuffer
-                                    ->
-                      VkPipelineStageFlagBits -- ^ pipelineStage
-                                              -> VkQueryPool -- ^ queryPool
-                                                             -> Word32 -- ^ query
-                                                                       -> IO ()
-vkCmdWriteTimestamp
-  = unsafeDupablePerformIO (vkGetProc @VkCmdWriteTimestamp)
-
-{-# NOINLINE vkCmdWriteTimestamp #-}
-##endif
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Queues: 'transfer', 'graphics', 'compute'.
---
--- Renderpass: @both@
---
--- Pipeline: @transfer@
---
--- > void vkCmdWriteTimestamp
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkPipelineStageFlagBits pipelineStage
--- >     , VkQueryPool queryPool
--- >     , uint32_t query
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdWriteTimestamp vkCmdWriteTimestamp registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkCmdWriteTimestamp"
-               vkCmdWriteTimestampSafe ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 VkPipelineStageFlagBits -- ^ pipelineStage
-                                         -> VkQueryPool -- ^ queryPool
-                                                        -> Word32 -- ^ query
-                                                                  -> IO ()
-
-##else
--- |
--- Queues: 'transfer', 'graphics', 'compute'.
---
--- Renderpass: @both@
---
--- Pipeline: @transfer@
---
--- > void vkCmdWriteTimestamp
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkPipelineStageFlagBits pipelineStage
--- >     , VkQueryPool queryPool
--- >     , uint32_t query
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdWriteTimestamp vkCmdWriteTimestamp registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCmdWriteTimestampSafe@ and @vkCmdWriteTimestamp@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdWriteTimestamp <- vkGetInstanceProc @VkCmdWriteTimestamp vkInstance
---
--- or less efficient:
---
--- > myCmdWriteTimestamp <- vkGetProc @VkCmdWriteTimestamp
---
-vkCmdWriteTimestampSafe ::
-                        VkCommandBuffer -- ^ commandBuffer
-                                        ->
-                          VkPipelineStageFlagBits -- ^ pipelineStage
-                                                  -> VkQueryPool -- ^ queryPool
-                                                                 -> Word32 -- ^ query
-                                                                           -> IO ()
-vkCmdWriteTimestampSafe = vkCmdWriteTimestamp
-
-{-# INLINE vkCmdWriteTimestampSafe #-}
-##endif
-
--- | Queues: 'transfer', 'graphics', 'compute'.
---
---   Renderpass: @both@
---
---   Pipeline: @transfer@
---
---   > void vkCmdWriteTimestamp
---   >     ( VkCommandBuffer commandBuffer
---   >     , VkPipelineStageFlagBits pipelineStage
---   >     , VkQueryPool queryPool
---   >     , uint32_t query
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdWriteTimestamp vkCmdWriteTimestamp registry at www.khronos.org>
-type HS_vkCmdWriteTimestamp =
-     VkCommandBuffer -- ^ commandBuffer
-                     ->
-       VkPipelineStageFlagBits -- ^ pipelineStage
-                               -> VkQueryPool -- ^ queryPool
-                                              -> Word32 -- ^ query
-                                                        -> IO ()
-
-type PFN_vkCmdWriteTimestamp = FunPtr HS_vkCmdWriteTimestamp
-
-foreign import ccall "dynamic" unwrapVkCmdWriteTimestamp ::
-               PFN_vkCmdWriteTimestamp -> HS_vkCmdWriteTimestamp
-
-instance VulkanProc "vkCmdWriteTimestamp" where
-        type VkProcType "vkCmdWriteTimestamp" = HS_vkCmdWriteTimestamp
-        vkProcSymbol = _VkCmdWriteTimestamp
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCmdWriteTimestamp
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VkCmdCopyQueryPoolResults :: CString
-
-pattern VkCmdCopyQueryPoolResults <-
-        (is_VkCmdCopyQueryPoolResults -> True)
-  where VkCmdCopyQueryPoolResults = _VkCmdCopyQueryPoolResults
-
-{-# INLINE _VkCmdCopyQueryPoolResults #-}
-
-_VkCmdCopyQueryPoolResults :: CString
-_VkCmdCopyQueryPoolResults = Ptr "vkCmdCopyQueryPoolResults\NUL"##
-
-{-# INLINE is_VkCmdCopyQueryPoolResults #-}
-
-is_VkCmdCopyQueryPoolResults :: CString -> Bool
-is_VkCmdCopyQueryPoolResults
-  = (EQ ==) . cmpCStrings _VkCmdCopyQueryPoolResults
-
-type VkCmdCopyQueryPoolResults = "vkCmdCopyQueryPoolResults"
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Queues: 'graphics', 'compute'.
---
--- Renderpass: @outside@
---
--- Pipeline: @transfer@
---
--- > void vkCmdCopyQueryPoolResults
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkQueryPool queryPool
--- >     , uint32_t firstQuery
--- >     , uint32_t queryCount
--- >     , VkBuffer dstBuffer
--- >     , VkDeviceSize dstOffset
--- >     , VkDeviceSize stride
--- >     , VkQueryResultFlags flags
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdCopyQueryPoolResults vkCmdCopyQueryPoolResults registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkCmdCopyQueryPoolResults"
-               vkCmdCopyQueryPoolResults ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 VkQueryPool -- ^ queryPool
-                             ->
-                   Word32 -- ^ firstQuery
-                          ->
-                     Word32 -- ^ queryCount
-                            ->
-                       VkBuffer -- ^ dstBuffer
-                                ->
-                         VkDeviceSize -- ^ dstOffset
-                                      -> VkDeviceSize -- ^ stride
-                                                      -> VkQueryResultFlags -- ^ flags
-                                                                            -> IO ()
-
-##else
--- |
--- Queues: 'graphics', 'compute'.
---
--- Renderpass: @outside@
---
--- Pipeline: @transfer@
---
--- > void vkCmdCopyQueryPoolResults
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkQueryPool queryPool
--- >     , uint32_t firstQuery
--- >     , uint32_t queryCount
--- >     , VkBuffer dstBuffer
--- >     , VkDeviceSize dstOffset
--- >     , VkDeviceSize stride
--- >     , VkQueryResultFlags flags
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdCopyQueryPoolResults vkCmdCopyQueryPoolResults registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCmdCopyQueryPoolResultsSafe@ and @vkCmdCopyQueryPoolResults@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdCopyQueryPoolResults <- vkGetInstanceProc @VkCmdCopyQueryPoolResults vkInstance
---
--- or less efficient:
---
--- > myCmdCopyQueryPoolResults <- vkGetProc @VkCmdCopyQueryPoolResults
---
-vkCmdCopyQueryPoolResults ::
-                          VkCommandBuffer -- ^ commandBuffer
-                                          ->
-                            VkQueryPool -- ^ queryPool
-                                        ->
-                              Word32 -- ^ firstQuery
-                                     ->
-                                Word32 -- ^ queryCount
-                                       ->
-                                  VkBuffer -- ^ dstBuffer
-                                           ->
-                                    VkDeviceSize -- ^ dstOffset
-                                                 -> VkDeviceSize -- ^ stride
-                                                                 -> VkQueryResultFlags -- ^ flags
-                                                                                       -> IO ()
-vkCmdCopyQueryPoolResults
-  = unsafeDupablePerformIO (vkGetProc @VkCmdCopyQueryPoolResults)
-
-{-# NOINLINE vkCmdCopyQueryPoolResults #-}
-##endif
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Queues: 'graphics', 'compute'.
---
--- Renderpass: @outside@
---
--- Pipeline: @transfer@
---
--- > void vkCmdCopyQueryPoolResults
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkQueryPool queryPool
--- >     , uint32_t firstQuery
--- >     , uint32_t queryCount
--- >     , VkBuffer dstBuffer
--- >     , VkDeviceSize dstOffset
--- >     , VkDeviceSize stride
--- >     , VkQueryResultFlags flags
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdCopyQueryPoolResults vkCmdCopyQueryPoolResults registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkCmdCopyQueryPoolResults"
-               vkCmdCopyQueryPoolResultsSafe ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 VkQueryPool -- ^ queryPool
-                             ->
-                   Word32 -- ^ firstQuery
-                          ->
-                     Word32 -- ^ queryCount
-                            ->
-                       VkBuffer -- ^ dstBuffer
-                                ->
-                         VkDeviceSize -- ^ dstOffset
-                                      -> VkDeviceSize -- ^ stride
-                                                      -> VkQueryResultFlags -- ^ flags
-                                                                            -> IO ()
-
-##else
--- |
--- Queues: 'graphics', 'compute'.
---
--- Renderpass: @outside@
---
--- Pipeline: @transfer@
---
--- > void vkCmdCopyQueryPoolResults
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkQueryPool queryPool
--- >     , uint32_t firstQuery
--- >     , uint32_t queryCount
--- >     , VkBuffer dstBuffer
--- >     , VkDeviceSize dstOffset
--- >     , VkDeviceSize stride
--- >     , VkQueryResultFlags flags
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdCopyQueryPoolResults vkCmdCopyQueryPoolResults registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCmdCopyQueryPoolResultsSafe@ and @vkCmdCopyQueryPoolResults@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdCopyQueryPoolResults <- vkGetInstanceProc @VkCmdCopyQueryPoolResults vkInstance
---
--- or less efficient:
---
--- > myCmdCopyQueryPoolResults <- vkGetProc @VkCmdCopyQueryPoolResults
---
-vkCmdCopyQueryPoolResultsSafe ::
-                              VkCommandBuffer -- ^ commandBuffer
-                                              ->
-                                VkQueryPool -- ^ queryPool
-                                            ->
-                                  Word32 -- ^ firstQuery
-                                         ->
-                                    Word32 -- ^ queryCount
-                                           ->
-                                      VkBuffer -- ^ dstBuffer
-                                               ->
-                                        VkDeviceSize -- ^ dstOffset
-                                                     -> VkDeviceSize -- ^ stride
-                                                                     -> VkQueryResultFlags -- ^ flags
-                                                                                           -> IO ()
-vkCmdCopyQueryPoolResultsSafe = vkCmdCopyQueryPoolResults
-
-{-# INLINE vkCmdCopyQueryPoolResultsSafe #-}
-##endif
-
--- | Queues: 'graphics', 'compute'.
---
---   Renderpass: @outside@
---
---   Pipeline: @transfer@
---
---   > void vkCmdCopyQueryPoolResults
---   >     ( VkCommandBuffer commandBuffer
---   >     , VkQueryPool queryPool
---   >     , uint32_t firstQuery
---   >     , uint32_t queryCount
---   >     , VkBuffer dstBuffer
---   >     , VkDeviceSize dstOffset
---   >     , VkDeviceSize stride
---   >     , VkQueryResultFlags flags
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdCopyQueryPoolResults vkCmdCopyQueryPoolResults registry at www.khronos.org>
-type HS_vkCmdCopyQueryPoolResults =
-     VkCommandBuffer -- ^ commandBuffer
-                     ->
-       VkQueryPool -- ^ queryPool
-                   ->
-         Word32 -- ^ firstQuery
-                ->
-           Word32 -- ^ queryCount
-                  ->
-             VkBuffer -- ^ dstBuffer
-                      ->
-               VkDeviceSize -- ^ dstOffset
-                            -> VkDeviceSize -- ^ stride
-                                            -> VkQueryResultFlags -- ^ flags
-                                                                  -> IO ()
-
-type PFN_vkCmdCopyQueryPoolResults =
-     FunPtr HS_vkCmdCopyQueryPoolResults
-
-foreign import ccall "dynamic" unwrapVkCmdCopyQueryPoolResults ::
-               PFN_vkCmdCopyQueryPoolResults -> HS_vkCmdCopyQueryPoolResults
-
-instance VulkanProc "vkCmdCopyQueryPoolResults" where
-        type VkProcType "vkCmdCopyQueryPoolResults" =
-             HS_vkCmdCopyQueryPoolResults
-        vkProcSymbol = _VkCmdCopyQueryPoolResults
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCmdCopyQueryPoolResults
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VkCmdPushConstants :: CString
-
-pattern VkCmdPushConstants <- (is_VkCmdPushConstants -> True)
-  where VkCmdPushConstants = _VkCmdPushConstants
-
-{-# INLINE _VkCmdPushConstants #-}
-
-_VkCmdPushConstants :: CString
-_VkCmdPushConstants = Ptr "vkCmdPushConstants\NUL"##
-
-{-# INLINE is_VkCmdPushConstants #-}
-
-is_VkCmdPushConstants :: CString -> Bool
-is_VkCmdPushConstants = (EQ ==) . cmpCStrings _VkCmdPushConstants
-
-type VkCmdPushConstants = "vkCmdPushConstants"
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Queues: 'graphics', 'compute'.
---
--- Renderpass: @both@
---
--- > void vkCmdPushConstants
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkPipelineLayout layout
--- >     , VkShaderStageFlags stageFlags
--- >     , uint32_t offset
--- >     , uint32_t size
--- >     , const void* pValues
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdPushConstants vkCmdPushConstants registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkCmdPushConstants" vkCmdPushConstants
-               ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 VkPipelineLayout -- ^ layout
-                                  ->
-                   VkShaderStageFlags -- ^ stageFlags
-                                      -> Word32 -- ^ offset
-                                                -> Word32 -- ^ size
-                                                          -> Ptr Void -- ^ pValues
-                                                                      -> IO ()
-
-##else
--- |
--- Queues: 'graphics', 'compute'.
---
--- Renderpass: @both@
---
--- > void vkCmdPushConstants
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkPipelineLayout layout
--- >     , VkShaderStageFlags stageFlags
--- >     , uint32_t offset
--- >     , uint32_t size
--- >     , const void* pValues
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdPushConstants vkCmdPushConstants registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCmdPushConstantsSafe@ and @vkCmdPushConstants@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdPushConstants <- vkGetInstanceProc @VkCmdPushConstants vkInstance
---
--- or less efficient:
---
--- > myCmdPushConstants <- vkGetProc @VkCmdPushConstants
---
-vkCmdPushConstants ::
-                   VkCommandBuffer -- ^ commandBuffer
-                                   ->
-                     VkPipelineLayout -- ^ layout
-                                      ->
-                       VkShaderStageFlags -- ^ stageFlags
-                                          -> Word32 -- ^ offset
-                                                    -> Word32 -- ^ size
-                                                              -> Ptr Void -- ^ pValues
-                                                                          -> IO ()
-vkCmdPushConstants
-  = unsafeDupablePerformIO (vkGetProc @VkCmdPushConstants)
-
-{-# NOINLINE vkCmdPushConstants #-}
-##endif
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Queues: 'graphics', 'compute'.
---
--- Renderpass: @both@
---
--- > void vkCmdPushConstants
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkPipelineLayout layout
--- >     , VkShaderStageFlags stageFlags
--- >     , uint32_t offset
--- >     , uint32_t size
--- >     , const void* pValues
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdPushConstants vkCmdPushConstants registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkCmdPushConstants"
-               vkCmdPushConstantsSafe ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 VkPipelineLayout -- ^ layout
-                                  ->
-                   VkShaderStageFlags -- ^ stageFlags
-                                      -> Word32 -- ^ offset
-                                                -> Word32 -- ^ size
-                                                          -> Ptr Void -- ^ pValues
-                                                                      -> IO ()
-
-##else
--- |
--- Queues: 'graphics', 'compute'.
---
--- Renderpass: @both@
---
--- > void vkCmdPushConstants
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkPipelineLayout layout
--- >     , VkShaderStageFlags stageFlags
--- >     , uint32_t offset
--- >     , uint32_t size
--- >     , const void* pValues
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdPushConstants vkCmdPushConstants registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCmdPushConstantsSafe@ and @vkCmdPushConstants@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdPushConstants <- vkGetInstanceProc @VkCmdPushConstants vkInstance
---
--- or less efficient:
---
--- > myCmdPushConstants <- vkGetProc @VkCmdPushConstants
---
-vkCmdPushConstantsSafe ::
-                       VkCommandBuffer -- ^ commandBuffer
-                                       ->
-                         VkPipelineLayout -- ^ layout
-                                          ->
-                           VkShaderStageFlags -- ^ stageFlags
-                                              -> Word32 -- ^ offset
-                                                        -> Word32 -- ^ size
-                                                                  -> Ptr Void -- ^ pValues
-                                                                              -> IO ()
-vkCmdPushConstantsSafe = vkCmdPushConstants
-
-{-# INLINE vkCmdPushConstantsSafe #-}
-##endif
-
--- | Queues: 'graphics', 'compute'.
---
---   Renderpass: @both@
---
---   > void vkCmdPushConstants
---   >     ( VkCommandBuffer commandBuffer
---   >     , VkPipelineLayout layout
---   >     , VkShaderStageFlags stageFlags
---   >     , uint32_t offset
---   >     , uint32_t size
---   >     , const void* pValues
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdPushConstants vkCmdPushConstants registry at www.khronos.org>
-type HS_vkCmdPushConstants =
-     VkCommandBuffer -- ^ commandBuffer
-                     ->
-       VkPipelineLayout -- ^ layout
-                        ->
-         VkShaderStageFlags -- ^ stageFlags
-                            -> Word32 -- ^ offset
-                                      -> Word32 -- ^ size
-                                                -> Ptr Void -- ^ pValues
-                                                            -> IO ()
-
-type PFN_vkCmdPushConstants = FunPtr HS_vkCmdPushConstants
-
-foreign import ccall "dynamic" unwrapVkCmdPushConstants ::
-               PFN_vkCmdPushConstants -> HS_vkCmdPushConstants
-
-instance VulkanProc "vkCmdPushConstants" where
-        type VkProcType "vkCmdPushConstants" = HS_vkCmdPushConstants
-        vkProcSymbol = _VkCmdPushConstants
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCmdPushConstants
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VkCmdBeginRenderPass :: CString
-
-pattern VkCmdBeginRenderPass <- (is_VkCmdBeginRenderPass -> True)
-  where VkCmdBeginRenderPass = _VkCmdBeginRenderPass
-
-{-# INLINE _VkCmdBeginRenderPass #-}
-
-_VkCmdBeginRenderPass :: CString
-_VkCmdBeginRenderPass = Ptr "vkCmdBeginRenderPass\NUL"##
-
-{-# INLINE is_VkCmdBeginRenderPass #-}
-
-is_VkCmdBeginRenderPass :: CString -> Bool
-is_VkCmdBeginRenderPass
-  = (EQ ==) . cmpCStrings _VkCmdBeginRenderPass
-
-type VkCmdBeginRenderPass = "vkCmdBeginRenderPass"
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @outside@
---
--- Pipeline: @graphics@
---
--- > void vkCmdBeginRenderPass
--- >     ( VkCommandBuffer commandBuffer
--- >     , const VkRenderPassBeginInfo* pRenderPassBegin
--- >     , VkSubpassContents contents
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBeginRenderPass vkCmdBeginRenderPass registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkCmdBeginRenderPass"
-               vkCmdBeginRenderPass ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 Ptr VkRenderPassBeginInfo -- ^ pRenderPassBegin
-                                           -> VkSubpassContents -- ^ contents
-                                                                -> IO ()
-
-##else
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @outside@
---
--- Pipeline: @graphics@
---
--- > void vkCmdBeginRenderPass
--- >     ( VkCommandBuffer commandBuffer
--- >     , const VkRenderPassBeginInfo* pRenderPassBegin
--- >     , VkSubpassContents contents
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBeginRenderPass vkCmdBeginRenderPass registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCmdBeginRenderPassSafe@ and @vkCmdBeginRenderPass@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdBeginRenderPass <- vkGetInstanceProc @VkCmdBeginRenderPass vkInstance
---
--- or less efficient:
---
--- > myCmdBeginRenderPass <- vkGetProc @VkCmdBeginRenderPass
---
-vkCmdBeginRenderPass ::
-                     VkCommandBuffer -- ^ commandBuffer
-                                     ->
-                       Ptr VkRenderPassBeginInfo -- ^ pRenderPassBegin
-                                                 -> VkSubpassContents -- ^ contents
-                                                                      -> IO ()
-vkCmdBeginRenderPass
-  = unsafeDupablePerformIO (vkGetProc @VkCmdBeginRenderPass)
-
-{-# NOINLINE vkCmdBeginRenderPass #-}
-##endif
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @outside@
---
--- Pipeline: @graphics@
---
--- > void vkCmdBeginRenderPass
--- >     ( VkCommandBuffer commandBuffer
--- >     , const VkRenderPassBeginInfo* pRenderPassBegin
--- >     , VkSubpassContents contents
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBeginRenderPass vkCmdBeginRenderPass registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkCmdBeginRenderPass"
-               vkCmdBeginRenderPassSafe ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 Ptr VkRenderPassBeginInfo -- ^ pRenderPassBegin
-                                           -> VkSubpassContents -- ^ contents
-                                                                -> IO ()
-
-##else
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @outside@
---
--- Pipeline: @graphics@
---
--- > void vkCmdBeginRenderPass
--- >     ( VkCommandBuffer commandBuffer
--- >     , const VkRenderPassBeginInfo* pRenderPassBegin
--- >     , VkSubpassContents contents
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBeginRenderPass vkCmdBeginRenderPass registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCmdBeginRenderPassSafe@ and @vkCmdBeginRenderPass@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdBeginRenderPass <- vkGetInstanceProc @VkCmdBeginRenderPass vkInstance
---
--- or less efficient:
---
--- > myCmdBeginRenderPass <- vkGetProc @VkCmdBeginRenderPass
---
-vkCmdBeginRenderPassSafe ::
-                         VkCommandBuffer -- ^ commandBuffer
-                                         ->
-                           Ptr VkRenderPassBeginInfo -- ^ pRenderPassBegin
-                                                     -> VkSubpassContents -- ^ contents
-                                                                          -> IO ()
-vkCmdBeginRenderPassSafe = vkCmdBeginRenderPass
-
-{-# INLINE vkCmdBeginRenderPassSafe #-}
-##endif
-
--- | Queues: 'graphics'.
---
---   Renderpass: @outside@
---
---   Pipeline: @graphics@
---
---   > void vkCmdBeginRenderPass
---   >     ( VkCommandBuffer commandBuffer
---   >     , const VkRenderPassBeginInfo* pRenderPassBegin
---   >     , VkSubpassContents contents
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBeginRenderPass vkCmdBeginRenderPass registry at www.khronos.org>
-type HS_vkCmdBeginRenderPass =
-     VkCommandBuffer -- ^ commandBuffer
-                     ->
-       Ptr VkRenderPassBeginInfo -- ^ pRenderPassBegin
-                                 -> VkSubpassContents -- ^ contents
-                                                      -> IO ()
-
-type PFN_vkCmdBeginRenderPass = FunPtr HS_vkCmdBeginRenderPass
-
-foreign import ccall "dynamic" unwrapVkCmdBeginRenderPass ::
-               PFN_vkCmdBeginRenderPass -> HS_vkCmdBeginRenderPass
-
-instance VulkanProc "vkCmdBeginRenderPass" where
-        type VkProcType "vkCmdBeginRenderPass" = HS_vkCmdBeginRenderPass
-        vkProcSymbol = _VkCmdBeginRenderPass
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCmdBeginRenderPass
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VkCmdNextSubpass :: CString
-
-pattern VkCmdNextSubpass <- (is_VkCmdNextSubpass -> True)
-  where VkCmdNextSubpass = _VkCmdNextSubpass
-
-{-# INLINE _VkCmdNextSubpass #-}
-
-_VkCmdNextSubpass :: CString
-_VkCmdNextSubpass = Ptr "vkCmdNextSubpass\NUL"##
-
-{-# INLINE is_VkCmdNextSubpass #-}
-
-is_VkCmdNextSubpass :: CString -> Bool
-is_VkCmdNextSubpass = (EQ ==) . cmpCStrings _VkCmdNextSubpass
-
-type VkCmdNextSubpass = "vkCmdNextSubpass"
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @inside@
---
--- Pipeline: @graphics@
---
--- > void vkCmdNextSubpass
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkSubpassContents contents
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdNextSubpass vkCmdNextSubpass registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkCmdNextSubpass" vkCmdNextSubpass ::
-               VkCommandBuffer -- ^ commandBuffer
-                               -> VkSubpassContents -- ^ contents
-                                                    -> IO ()
-
-##else
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @inside@
---
--- Pipeline: @graphics@
---
--- > void vkCmdNextSubpass
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkSubpassContents contents
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdNextSubpass vkCmdNextSubpass registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCmdNextSubpassSafe@ and @vkCmdNextSubpass@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdNextSubpass <- vkGetInstanceProc @VkCmdNextSubpass vkInstance
---
--- or less efficient:
---
--- > myCmdNextSubpass <- vkGetProc @VkCmdNextSubpass
---
-vkCmdNextSubpass :: VkCommandBuffer -- ^ commandBuffer
-                                    -> VkSubpassContents -- ^ contents
-                                                         -> IO ()
-vkCmdNextSubpass
-  = unsafeDupablePerformIO (vkGetProc @VkCmdNextSubpass)
-
-{-# NOINLINE vkCmdNextSubpass #-}
-##endif
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @inside@
---
--- Pipeline: @graphics@
---
--- > void vkCmdNextSubpass
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkSubpassContents contents
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdNextSubpass vkCmdNextSubpass registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkCmdNextSubpass" vkCmdNextSubpassSafe
-               :: VkCommandBuffer -- ^ commandBuffer
-                                  -> VkSubpassContents -- ^ contents
-                                                       -> IO ()
-
-##else
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @inside@
---
--- Pipeline: @graphics@
---
--- > void vkCmdNextSubpass
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkSubpassContents contents
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdNextSubpass vkCmdNextSubpass registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCmdNextSubpassSafe@ and @vkCmdNextSubpass@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdNextSubpass <- vkGetInstanceProc @VkCmdNextSubpass vkInstance
---
--- or less efficient:
---
--- > myCmdNextSubpass <- vkGetProc @VkCmdNextSubpass
---
-vkCmdNextSubpassSafe ::
-                     VkCommandBuffer -- ^ commandBuffer
-                                     -> VkSubpassContents -- ^ contents
-                                                          -> IO ()
-vkCmdNextSubpassSafe = vkCmdNextSubpass
-
-{-# INLINE vkCmdNextSubpassSafe #-}
-##endif
-
--- | Queues: 'graphics'.
---
---   Renderpass: @inside@
---
---   Pipeline: @graphics@
---
---   > void vkCmdNextSubpass
---   >     ( VkCommandBuffer commandBuffer
---   >     , VkSubpassContents contents
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdNextSubpass vkCmdNextSubpass registry at www.khronos.org>
-type HS_vkCmdNextSubpass =
-     VkCommandBuffer -- ^ commandBuffer
-                     -> VkSubpassContents -- ^ contents
-                                          -> IO ()
-
-type PFN_vkCmdNextSubpass = FunPtr HS_vkCmdNextSubpass
-
-foreign import ccall "dynamic" unwrapVkCmdNextSubpass ::
-               PFN_vkCmdNextSubpass -> HS_vkCmdNextSubpass
-
-instance VulkanProc "vkCmdNextSubpass" where
-        type VkProcType "vkCmdNextSubpass" = HS_vkCmdNextSubpass
-        vkProcSymbol = _VkCmdNextSubpass
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCmdNextSubpass
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VkCmdEndRenderPass :: CString
-
-pattern VkCmdEndRenderPass <- (is_VkCmdEndRenderPass -> True)
-  where VkCmdEndRenderPass = _VkCmdEndRenderPass
-
-{-# INLINE _VkCmdEndRenderPass #-}
-
-_VkCmdEndRenderPass :: CString
-_VkCmdEndRenderPass = Ptr "vkCmdEndRenderPass\NUL"##
-
-{-# INLINE is_VkCmdEndRenderPass #-}
-
-is_VkCmdEndRenderPass :: CString -> Bool
-is_VkCmdEndRenderPass = (EQ ==) . cmpCStrings _VkCmdEndRenderPass
-
-type VkCmdEndRenderPass = "vkCmdEndRenderPass"
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @inside@
---
--- Pipeline: @graphics@
---
--- > void vkCmdEndRenderPass
--- >     ( VkCommandBuffer commandBuffer
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdEndRenderPass vkCmdEndRenderPass registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkCmdEndRenderPass" vkCmdEndRenderPass
-               :: VkCommandBuffer -- ^ commandBuffer
-                                  -> IO ()
-
-##else
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @inside@
---
--- Pipeline: @graphics@
---
--- > void vkCmdEndRenderPass
--- >     ( VkCommandBuffer commandBuffer
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdEndRenderPass vkCmdEndRenderPass registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCmdEndRenderPassSafe@ and @vkCmdEndRenderPass@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdEndRenderPass <- vkGetInstanceProc @VkCmdEndRenderPass vkInstance
---
--- or less efficient:
---
--- > myCmdEndRenderPass <- vkGetProc @VkCmdEndRenderPass
---
-vkCmdEndRenderPass :: VkCommandBuffer -- ^ commandBuffer
-                                      -> IO ()
-vkCmdEndRenderPass
-  = unsafeDupablePerformIO (vkGetProc @VkCmdEndRenderPass)
-
-{-# NOINLINE vkCmdEndRenderPass #-}
-##endif
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @inside@
---
--- Pipeline: @graphics@
---
--- > void vkCmdEndRenderPass
--- >     ( VkCommandBuffer commandBuffer
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdEndRenderPass vkCmdEndRenderPass registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkCmdEndRenderPass"
-               vkCmdEndRenderPassSafe :: VkCommandBuffer -- ^ commandBuffer
-                                                         -> IO ()
-
-##else
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @inside@
---
--- Pipeline: @graphics@
---
--- > void vkCmdEndRenderPass
--- >     ( VkCommandBuffer commandBuffer
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdEndRenderPass vkCmdEndRenderPass registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCmdEndRenderPassSafe@ and @vkCmdEndRenderPass@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdEndRenderPass <- vkGetInstanceProc @VkCmdEndRenderPass vkInstance
---
--- or less efficient:
---
--- > myCmdEndRenderPass <- vkGetProc @VkCmdEndRenderPass
---
-vkCmdEndRenderPassSafe :: VkCommandBuffer -- ^ commandBuffer
-                                          -> IO ()
-vkCmdEndRenderPassSafe = vkCmdEndRenderPass
-
-{-# INLINE vkCmdEndRenderPassSafe #-}
-##endif
-
--- | Queues: 'graphics'.
---
---   Renderpass: @inside@
---
---   Pipeline: @graphics@
---
---   > void vkCmdEndRenderPass
---   >     ( VkCommandBuffer commandBuffer
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdEndRenderPass vkCmdEndRenderPass registry at www.khronos.org>
-type HS_vkCmdEndRenderPass = VkCommandBuffer -- ^ commandBuffer
-                                             -> IO ()
-
-type PFN_vkCmdEndRenderPass = FunPtr HS_vkCmdEndRenderPass
-
-foreign import ccall "dynamic" unwrapVkCmdEndRenderPass ::
-               PFN_vkCmdEndRenderPass -> HS_vkCmdEndRenderPass
-
-instance VulkanProc "vkCmdEndRenderPass" where
-        type VkProcType "vkCmdEndRenderPass" = HS_vkCmdEndRenderPass
-        vkProcSymbol = _VkCmdEndRenderPass
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCmdEndRenderPass
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VkCmdExecuteCommands :: CString
-
-pattern VkCmdExecuteCommands <- (is_VkCmdExecuteCommands -> True)
-  where VkCmdExecuteCommands = _VkCmdExecuteCommands
-
-{-# INLINE _VkCmdExecuteCommands #-}
-
-_VkCmdExecuteCommands :: CString
-_VkCmdExecuteCommands = Ptr "vkCmdExecuteCommands\NUL"##
-
-{-# INLINE is_VkCmdExecuteCommands #-}
-
-is_VkCmdExecuteCommands :: CString -> Bool
-is_VkCmdExecuteCommands
-  = (EQ ==) . cmpCStrings _VkCmdExecuteCommands
-
-type VkCmdExecuteCommands = "vkCmdExecuteCommands"
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Queues: 'transfer', 'graphics', 'compute'.
---
--- Renderpass: @both@
---
--- > void vkCmdExecuteCommands
--- >     ( VkCommandBuffer commandBuffer
--- >     , uint32_t commandBufferCount
--- >     , const VkCommandBuffer* pCommandBuffers
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdExecuteCommands vkCmdExecuteCommands registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkCmdExecuteCommands"
-               vkCmdExecuteCommands ::
-               VkCommandBuffer -- ^ commandBuffer
-                               -> Word32 -- ^ commandBufferCount
-                                         -> Ptr VkCommandBuffer -- ^ pCommandBuffers
-                                                                -> IO ()
-
-##else
--- |
--- Queues: 'transfer', 'graphics', 'compute'.
---
--- Renderpass: @both@
---
--- > void vkCmdExecuteCommands
--- >     ( VkCommandBuffer commandBuffer
--- >     , uint32_t commandBufferCount
--- >     , const VkCommandBuffer* pCommandBuffers
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdExecuteCommands vkCmdExecuteCommands registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCmdExecuteCommandsSafe@ and @vkCmdExecuteCommands@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdExecuteCommands <- vkGetInstanceProc @VkCmdExecuteCommands vkInstance
---
--- or less efficient:
---
--- > myCmdExecuteCommands <- vkGetProc @VkCmdExecuteCommands
---
-vkCmdExecuteCommands ::
-                     VkCommandBuffer -- ^ commandBuffer
-                                     -> Word32 -- ^ commandBufferCount
-                                               -> Ptr VkCommandBuffer -- ^ pCommandBuffers
-                                                                      -> IO ()
-vkCmdExecuteCommands
-  = unsafeDupablePerformIO (vkGetProc @VkCmdExecuteCommands)
-
-{-# NOINLINE vkCmdExecuteCommands #-}
-##endif
-
-##ifdef NATIVE_FFI_VK_VERSION_1_0
--- |
--- Queues: 'transfer', 'graphics', 'compute'.
---
--- Renderpass: @both@
---
--- > void vkCmdExecuteCommands
--- >     ( VkCommandBuffer commandBuffer
--- >     , uint32_t commandBufferCount
--- >     , const VkCommandBuffer* pCommandBuffers
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdExecuteCommands vkCmdExecuteCommands registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkCmdExecuteCommands"
-               vkCmdExecuteCommandsSafe ::
-               VkCommandBuffer -- ^ commandBuffer
-                               -> Word32 -- ^ commandBufferCount
-                                         -> Ptr VkCommandBuffer -- ^ pCommandBuffers
-                                                                -> IO ()
-
-##else
--- |
--- Queues: 'transfer', 'graphics', 'compute'.
---
--- Renderpass: @both@
---
--- > void vkCmdExecuteCommands
--- >     ( VkCommandBuffer commandBuffer
--- >     , uint32_t commandBufferCount
--- >     , const VkCommandBuffer* pCommandBuffers
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdExecuteCommands vkCmdExecuteCommands registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCmdExecuteCommandsSafe@ and @vkCmdExecuteCommands@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdExecuteCommands <- vkGetInstanceProc @VkCmdExecuteCommands vkInstance
---
--- or less efficient:
---
--- > myCmdExecuteCommands <- vkGetProc @VkCmdExecuteCommands
---
-vkCmdExecuteCommandsSafe ::
-                         VkCommandBuffer -- ^ commandBuffer
-                                         -> Word32 -- ^ commandBufferCount
-                                                   -> Ptr VkCommandBuffer -- ^ pCommandBuffers
-                                                                          -> IO ()
-vkCmdExecuteCommandsSafe = vkCmdExecuteCommands
-
-{-# INLINE vkCmdExecuteCommandsSafe #-}
-##endif
-
--- | Queues: 'transfer', 'graphics', 'compute'.
---
---   Renderpass: @both@
---
---   > void vkCmdExecuteCommands
---   >     ( VkCommandBuffer commandBuffer
---   >     , uint32_t commandBufferCount
---   >     , const VkCommandBuffer* pCommandBuffers
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdExecuteCommands vkCmdExecuteCommands registry at www.khronos.org>
-type HS_vkCmdExecuteCommands =
-     VkCommandBuffer -- ^ commandBuffer
-                     -> Word32 -- ^ commandBufferCount
-                               -> Ptr VkCommandBuffer -- ^ pCommandBuffers
-                                                      -> IO ()
-
-type PFN_vkCmdExecuteCommands = FunPtr HS_vkCmdExecuteCommands
-
-foreign import ccall "dynamic" unwrapVkCmdExecuteCommands ::
-               PFN_vkCmdExecuteCommands -> HS_vkCmdExecuteCommands
-
-instance VulkanProc "vkCmdExecuteCommands" where
-        type VkProcType "vkCmdExecuteCommands" = HS_vkCmdExecuteCommands
-        vkProcSymbol = _VkCmdExecuteCommands
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCmdExecuteCommands
-
-        {-# INLINE unwrapVkProcPtr #-}
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INITIALIZATION_FAILED', 'VK_ERROR_LAYER_NOT_PRESENT', 'VK_ERROR_EXTENSION_NOT_PRESENT', 'VK_ERROR_INCOMPATIBLE_DRIVER'.
+--
+-- > VkResult vkCreateInstance
+-- >     ( const VkInstanceCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkInstance* pInstance
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateInstance vkCreateInstance registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateInstance <- vkGetInstanceProc @VkCreateInstance VK_NULL
+--
+-- or less efficient:
+--
+-- > myCreateInstance <- vkGetProc @VkCreateInstance
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCreateInstance" vkCreateInstance ::
+               Ptr VkInstanceCreateInfo -- ^ pCreateInfo
+                                        ->
+                 Ptr VkAllocationCallbacks -- ^ pAllocator
+                                           -> Ptr VkInstance -- ^ pInstance
+                                                             -> IO VkResult
+
+##else
+vkCreateInstance ::
+                 Ptr VkInstanceCreateInfo -- ^ pCreateInfo
+                                          ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkInstance -- ^ pInstance
+                                                               -> IO VkResult
+vkCreateInstance
+  = unsafeDupablePerformIO (vkGetProc @VkCreateInstance)
+
+{-# NOINLINE vkCreateInstance #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INITIALIZATION_FAILED', 'VK_ERROR_LAYER_NOT_PRESENT', 'VK_ERROR_EXTENSION_NOT_PRESENT', 'VK_ERROR_INCOMPATIBLE_DRIVER'.
+--
+-- > VkResult vkCreateInstance
+-- >     ( const VkInstanceCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkInstance* pInstance
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateInstance vkCreateInstance registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateInstance <- vkGetInstanceProc @VkCreateInstance VK_NULL
+--
+-- or less efficient:
+--
+-- > myCreateInstance <- vkGetProc @VkCreateInstance
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCreateInstance" vkCreateInstanceSafe
+               ::
+               Ptr VkInstanceCreateInfo -- ^ pCreateInfo
+                                        ->
+                 Ptr VkAllocationCallbacks -- ^ pAllocator
+                                           -> Ptr VkInstance -- ^ pInstance
+                                                             -> IO VkResult
+
+##else
+vkCreateInstanceSafe ::
+                     Ptr VkInstanceCreateInfo -- ^ pCreateInfo
+                                              ->
+                       Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                 -> Ptr VkInstance -- ^ pInstance
+                                                                   -> IO VkResult
+vkCreateInstanceSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCreateInstance)
+
+{-# NOINLINE vkCreateInstanceSafe #-}
+##endif
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INITIALIZATION_FAILED', 'VK_ERROR_LAYER_NOT_PRESENT', 'VK_ERROR_EXTENSION_NOT_PRESENT', 'VK_ERROR_INCOMPATIBLE_DRIVER'.
+--
+--   > VkResult vkCreateInstance
+--   >     ( const VkInstanceCreateInfo* pCreateInfo
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     , VkInstance* pInstance
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateInstance vkCreateInstance registry at www.khronos.org>
+type HS_vkCreateInstance =
+     Ptr VkInstanceCreateInfo -- ^ pCreateInfo
+                              ->
+       Ptr VkAllocationCallbacks -- ^ pAllocator
+                                 -> Ptr VkInstance -- ^ pInstance
+                                                   -> IO VkResult
+
+type PFN_vkCreateInstance = FunPtr HS_vkCreateInstance
+
+foreign import ccall unsafe "dynamic" unwrapVkCreateInstance ::
+               PFN_vkCreateInstance -> HS_vkCreateInstance
+
+foreign import ccall safe "dynamic" unwrapVkCreateInstanceSafe ::
+               PFN_vkCreateInstance -> HS_vkCreateInstance
+
+instance VulkanProc "vkCreateInstance" where
+        type VkProcType "vkCreateInstance" = HS_vkCreateInstance
+        vkProcSymbol = _VkCreateInstance
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkCreateInstance
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkCreateInstanceSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkDestroyInstance :: CString
+
+pattern VkDestroyInstance <- (is_VkDestroyInstance -> True)
+  where VkDestroyInstance = _VkDestroyInstance
+
+{-# INLINE _VkDestroyInstance #-}
+
+_VkDestroyInstance :: CString
+_VkDestroyInstance = Ptr "vkDestroyInstance\NUL"##
+
+{-# INLINE is_VkDestroyInstance #-}
+
+is_VkDestroyInstance :: CString -> Bool
+is_VkDestroyInstance = (EQ ==) . cmpCStrings _VkDestroyInstance
+
+type VkDestroyInstance = "vkDestroyInstance"
+
+-- |
+-- > void vkDestroyInstance
+-- >     ( VkInstance instance
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyInstance vkDestroyInstance registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroyInstance <- vkGetInstanceProc @VkDestroyInstance vkInstance
+--
+-- or less efficient:
+--
+-- > myDestroyInstance <- vkGetProc @VkDestroyInstance
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkDestroyInstance" vkDestroyInstance
+               :: VkInstance -- ^ instance
+                             -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                          -> IO ()
+
+##else
+vkDestroyInstance ::
+                  VkInstance -- ^ instance
+                             -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                          -> IO ()
+vkDestroyInstance
+  = unsafeDupablePerformIO (vkGetProc @VkDestroyInstance)
+
+{-# NOINLINE vkDestroyInstance #-}
+##endif
+
+-- |
+-- > void vkDestroyInstance
+-- >     ( VkInstance instance
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyInstance vkDestroyInstance registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroyInstance <- vkGetInstanceProc @VkDestroyInstance vkInstance
+--
+-- or less efficient:
+--
+-- > myDestroyInstance <- vkGetProc @VkDestroyInstance
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkDestroyInstance" vkDestroyInstanceSafe
+               :: VkInstance -- ^ instance
+                             -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                          -> IO ()
+
+##else
+vkDestroyInstanceSafe ::
+                      VkInstance -- ^ instance
+                                 -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                              -> IO ()
+vkDestroyInstanceSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkDestroyInstance)
+
+{-# NOINLINE vkDestroyInstanceSafe #-}
+##endif
+
+-- | > void vkDestroyInstance
+--   >     ( VkInstance instance
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyInstance vkDestroyInstance registry at www.khronos.org>
+type HS_vkDestroyInstance =
+     VkInstance -- ^ instance
+                -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> IO ()
+
+type PFN_vkDestroyInstance = FunPtr HS_vkDestroyInstance
+
+foreign import ccall unsafe "dynamic" unwrapVkDestroyInstance ::
+               PFN_vkDestroyInstance -> HS_vkDestroyInstance
+
+foreign import ccall safe "dynamic" unwrapVkDestroyInstanceSafe ::
+               PFN_vkDestroyInstance -> HS_vkDestroyInstance
+
+instance VulkanProc "vkDestroyInstance" where
+        type VkProcType "vkDestroyInstance" = HS_vkDestroyInstance
+        vkProcSymbol = _VkDestroyInstance
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkDestroyInstance
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkDestroyInstanceSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkEnumeratePhysicalDevices :: CString
+
+pattern VkEnumeratePhysicalDevices <-
+        (is_VkEnumeratePhysicalDevices -> True)
+  where VkEnumeratePhysicalDevices = _VkEnumeratePhysicalDevices
+
+{-# INLINE _VkEnumeratePhysicalDevices #-}
+
+_VkEnumeratePhysicalDevices :: CString
+_VkEnumeratePhysicalDevices = Ptr "vkEnumeratePhysicalDevices\NUL"##
+
+{-# INLINE is_VkEnumeratePhysicalDevices #-}
+
+is_VkEnumeratePhysicalDevices :: CString -> Bool
+is_VkEnumeratePhysicalDevices
+  = (EQ ==) . cmpCStrings _VkEnumeratePhysicalDevices
+
+type VkEnumeratePhysicalDevices = "vkEnumeratePhysicalDevices"
+
+-- |
+-- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INITIALIZATION_FAILED'.
+--
+-- > VkResult vkEnumeratePhysicalDevices
+-- >     ( VkInstance instance
+-- >     , uint32_t* pPhysicalDeviceCount
+-- >     , VkPhysicalDevice* pPhysicalDevices
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumeratePhysicalDevices vkEnumeratePhysicalDevices registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myEnumeratePhysicalDevices <- vkGetInstanceProc @VkEnumeratePhysicalDevices vkInstance
+--
+-- or less efficient:
+--
+-- > myEnumeratePhysicalDevices <- vkGetProc @VkEnumeratePhysicalDevices
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkEnumeratePhysicalDevices"
+               vkEnumeratePhysicalDevices ::
+               VkInstance -- ^ instance
+                          -> Ptr Word32 -- ^ pPhysicalDeviceCount
+                                        -> Ptr VkPhysicalDevice -- ^ pPhysicalDevices
+                                                                -> IO VkResult
+
+##else
+vkEnumeratePhysicalDevices ::
+                           VkInstance -- ^ instance
+                                      -> Ptr Word32 -- ^ pPhysicalDeviceCount
+                                                    -> Ptr VkPhysicalDevice -- ^ pPhysicalDevices
+                                                                            -> IO VkResult
+vkEnumeratePhysicalDevices
+  = unsafeDupablePerformIO (vkGetProc @VkEnumeratePhysicalDevices)
+
+{-# NOINLINE vkEnumeratePhysicalDevices #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INITIALIZATION_FAILED'.
+--
+-- > VkResult vkEnumeratePhysicalDevices
+-- >     ( VkInstance instance
+-- >     , uint32_t* pPhysicalDeviceCount
+-- >     , VkPhysicalDevice* pPhysicalDevices
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumeratePhysicalDevices vkEnumeratePhysicalDevices registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myEnumeratePhysicalDevices <- vkGetInstanceProc @VkEnumeratePhysicalDevices vkInstance
+--
+-- or less efficient:
+--
+-- > myEnumeratePhysicalDevices <- vkGetProc @VkEnumeratePhysicalDevices
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkEnumeratePhysicalDevices"
+               vkEnumeratePhysicalDevicesSafe ::
+               VkInstance -- ^ instance
+                          -> Ptr Word32 -- ^ pPhysicalDeviceCount
+                                        -> Ptr VkPhysicalDevice -- ^ pPhysicalDevices
+                                                                -> IO VkResult
+
+##else
+vkEnumeratePhysicalDevicesSafe ::
+                               VkInstance -- ^ instance
+                                          -> Ptr Word32 -- ^ pPhysicalDeviceCount
+                                                        -> Ptr VkPhysicalDevice -- ^ pPhysicalDevices
+                                                                                -> IO VkResult
+vkEnumeratePhysicalDevicesSafe
+  = unsafeDupablePerformIO
+      (vkGetProcSafe @VkEnumeratePhysicalDevices)
+
+{-# NOINLINE vkEnumeratePhysicalDevicesSafe #-}
+##endif
+
+-- | Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INITIALIZATION_FAILED'.
+--
+--   > VkResult vkEnumeratePhysicalDevices
+--   >     ( VkInstance instance
+--   >     , uint32_t* pPhysicalDeviceCount
+--   >     , VkPhysicalDevice* pPhysicalDevices
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumeratePhysicalDevices vkEnumeratePhysicalDevices registry at www.khronos.org>
+type HS_vkEnumeratePhysicalDevices =
+     VkInstance -- ^ instance
+                -> Ptr Word32 -- ^ pPhysicalDeviceCount
+                              -> Ptr VkPhysicalDevice -- ^ pPhysicalDevices
+                                                      -> IO VkResult
+
+type PFN_vkEnumeratePhysicalDevices =
+     FunPtr HS_vkEnumeratePhysicalDevices
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkEnumeratePhysicalDevices ::
+               PFN_vkEnumeratePhysicalDevices -> HS_vkEnumeratePhysicalDevices
+
+foreign import ccall safe "dynamic"
+               unwrapVkEnumeratePhysicalDevicesSafe ::
+               PFN_vkEnumeratePhysicalDevices -> HS_vkEnumeratePhysicalDevices
+
+instance VulkanProc "vkEnumeratePhysicalDevices" where
+        type VkProcType "vkEnumeratePhysicalDevices" =
+             HS_vkEnumeratePhysicalDevices
+        vkProcSymbol = _VkEnumeratePhysicalDevices
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkEnumeratePhysicalDevices
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkEnumeratePhysicalDevicesSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkGetPhysicalDeviceFeatures :: CString
+
+pattern VkGetPhysicalDeviceFeatures <-
+        (is_VkGetPhysicalDeviceFeatures -> True)
+  where VkGetPhysicalDeviceFeatures = _VkGetPhysicalDeviceFeatures
+
+{-# INLINE _VkGetPhysicalDeviceFeatures #-}
+
+_VkGetPhysicalDeviceFeatures :: CString
+_VkGetPhysicalDeviceFeatures
+  = Ptr "vkGetPhysicalDeviceFeatures\NUL"##
+
+{-# INLINE is_VkGetPhysicalDeviceFeatures #-}
+
+is_VkGetPhysicalDeviceFeatures :: CString -> Bool
+is_VkGetPhysicalDeviceFeatures
+  = (EQ ==) . cmpCStrings _VkGetPhysicalDeviceFeatures
+
+type VkGetPhysicalDeviceFeatures = "vkGetPhysicalDeviceFeatures"
+
+-- |
+-- > void vkGetPhysicalDeviceFeatures
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , VkPhysicalDeviceFeatures* pFeatures
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceFeatures vkGetPhysicalDeviceFeatures registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceFeatures <- vkGetInstanceProc @VkGetPhysicalDeviceFeatures vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceFeatures <- vkGetProc @VkGetPhysicalDeviceFeatures
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkGetPhysicalDeviceFeatures"
+               vkGetPhysicalDeviceFeatures ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                -> Ptr VkPhysicalDeviceFeatures -- ^ pFeatures
+                                                                -> IO ()
+
+##else
+vkGetPhysicalDeviceFeatures ::
+                            VkPhysicalDevice -- ^ physicalDevice
+                                             -> Ptr VkPhysicalDeviceFeatures -- ^ pFeatures
+                                                                             -> IO ()
+vkGetPhysicalDeviceFeatures
+  = unsafeDupablePerformIO (vkGetProc @VkGetPhysicalDeviceFeatures)
+
+{-# NOINLINE vkGetPhysicalDeviceFeatures #-}
+##endif
+
+-- |
+-- > void vkGetPhysicalDeviceFeatures
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , VkPhysicalDeviceFeatures* pFeatures
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceFeatures vkGetPhysicalDeviceFeatures registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceFeatures <- vkGetInstanceProc @VkGetPhysicalDeviceFeatures vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceFeatures <- vkGetProc @VkGetPhysicalDeviceFeatures
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkGetPhysicalDeviceFeatures"
+               vkGetPhysicalDeviceFeaturesSafe ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                -> Ptr VkPhysicalDeviceFeatures -- ^ pFeatures
+                                                                -> IO ()
+
+##else
+vkGetPhysicalDeviceFeaturesSafe ::
+                                VkPhysicalDevice -- ^ physicalDevice
+                                                 -> Ptr VkPhysicalDeviceFeatures -- ^ pFeatures
+                                                                                 -> IO ()
+vkGetPhysicalDeviceFeaturesSafe
+  = unsafeDupablePerformIO
+      (vkGetProcSafe @VkGetPhysicalDeviceFeatures)
+
+{-# NOINLINE vkGetPhysicalDeviceFeaturesSafe #-}
+##endif
+
+-- | > void vkGetPhysicalDeviceFeatures
+--   >     ( VkPhysicalDevice physicalDevice
+--   >     , VkPhysicalDeviceFeatures* pFeatures
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceFeatures vkGetPhysicalDeviceFeatures registry at www.khronos.org>
+type HS_vkGetPhysicalDeviceFeatures =
+     VkPhysicalDevice -- ^ physicalDevice
+                      -> Ptr VkPhysicalDeviceFeatures -- ^ pFeatures
+                                                      -> IO ()
+
+type PFN_vkGetPhysicalDeviceFeatures =
+     FunPtr HS_vkGetPhysicalDeviceFeatures
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkGetPhysicalDeviceFeatures ::
+               PFN_vkGetPhysicalDeviceFeatures -> HS_vkGetPhysicalDeviceFeatures
+
+foreign import ccall safe "dynamic"
+               unwrapVkGetPhysicalDeviceFeaturesSafe ::
+               PFN_vkGetPhysicalDeviceFeatures -> HS_vkGetPhysicalDeviceFeatures
+
+instance VulkanProc "vkGetPhysicalDeviceFeatures" where
+        type VkProcType "vkGetPhysicalDeviceFeatures" =
+             HS_vkGetPhysicalDeviceFeatures
+        vkProcSymbol = _VkGetPhysicalDeviceFeatures
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkGetPhysicalDeviceFeatures
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkGetPhysicalDeviceFeaturesSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkGetPhysicalDeviceFormatProperties :: CString
+
+pattern VkGetPhysicalDeviceFormatProperties <-
+        (is_VkGetPhysicalDeviceFormatProperties -> True)
+  where VkGetPhysicalDeviceFormatProperties
+          = _VkGetPhysicalDeviceFormatProperties
+
+{-# INLINE _VkGetPhysicalDeviceFormatProperties #-}
+
+_VkGetPhysicalDeviceFormatProperties :: CString
+_VkGetPhysicalDeviceFormatProperties
+  = Ptr "vkGetPhysicalDeviceFormatProperties\NUL"##
+
+{-# INLINE is_VkGetPhysicalDeviceFormatProperties #-}
+
+is_VkGetPhysicalDeviceFormatProperties :: CString -> Bool
+is_VkGetPhysicalDeviceFormatProperties
+  = (EQ ==) . cmpCStrings _VkGetPhysicalDeviceFormatProperties
+
+type VkGetPhysicalDeviceFormatProperties =
+     "vkGetPhysicalDeviceFormatProperties"
+
+-- |
+-- > void vkGetPhysicalDeviceFormatProperties
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , VkFormat format
+-- >     , VkFormatProperties* pFormatProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceFormatProperties vkGetPhysicalDeviceFormatProperties registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceFormatProperties <- vkGetInstanceProc @VkGetPhysicalDeviceFormatProperties vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceFormatProperties <- vkGetProc @VkGetPhysicalDeviceFormatProperties
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkGetPhysicalDeviceFormatProperties"
+               vkGetPhysicalDeviceFormatProperties ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                -> VkFormat -- ^ format
+                                            -> Ptr VkFormatProperties -- ^ pFormatProperties
+                                                                      -> IO ()
+
+##else
+vkGetPhysicalDeviceFormatProperties ::
+                                    VkPhysicalDevice -- ^ physicalDevice
+                                                     -> VkFormat -- ^ format
+                                                                 -> Ptr VkFormatProperties -- ^ pFormatProperties
+                                                                                           -> IO ()
+vkGetPhysicalDeviceFormatProperties
+  = unsafeDupablePerformIO
+      (vkGetProc @VkGetPhysicalDeviceFormatProperties)
+
+{-# NOINLINE vkGetPhysicalDeviceFormatProperties #-}
+##endif
+
+-- |
+-- > void vkGetPhysicalDeviceFormatProperties
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , VkFormat format
+-- >     , VkFormatProperties* pFormatProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceFormatProperties vkGetPhysicalDeviceFormatProperties registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceFormatProperties <- vkGetInstanceProc @VkGetPhysicalDeviceFormatProperties vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceFormatProperties <- vkGetProc @VkGetPhysicalDeviceFormatProperties
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkGetPhysicalDeviceFormatProperties"
+               vkGetPhysicalDeviceFormatPropertiesSafe ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                -> VkFormat -- ^ format
+                                            -> Ptr VkFormatProperties -- ^ pFormatProperties
+                                                                      -> IO ()
+
+##else
+vkGetPhysicalDeviceFormatPropertiesSafe ::
+                                        VkPhysicalDevice -- ^ physicalDevice
+                                                         ->
+                                          VkFormat -- ^ format
+                                                   -> Ptr VkFormatProperties -- ^ pFormatProperties
+                                                                             -> IO ()
+vkGetPhysicalDeviceFormatPropertiesSafe
+  = unsafeDupablePerformIO
+      (vkGetProcSafe @VkGetPhysicalDeviceFormatProperties)
+
+{-# NOINLINE vkGetPhysicalDeviceFormatPropertiesSafe #-}
+##endif
+
+-- | > void vkGetPhysicalDeviceFormatProperties
+--   >     ( VkPhysicalDevice physicalDevice
+--   >     , VkFormat format
+--   >     , VkFormatProperties* pFormatProperties
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceFormatProperties vkGetPhysicalDeviceFormatProperties registry at www.khronos.org>
+type HS_vkGetPhysicalDeviceFormatProperties =
+     VkPhysicalDevice -- ^ physicalDevice
+                      -> VkFormat -- ^ format
+                                  -> Ptr VkFormatProperties -- ^ pFormatProperties
+                                                            -> IO ()
+
+type PFN_vkGetPhysicalDeviceFormatProperties =
+     FunPtr HS_vkGetPhysicalDeviceFormatProperties
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkGetPhysicalDeviceFormatProperties ::
+               PFN_vkGetPhysicalDeviceFormatProperties ->
+                 HS_vkGetPhysicalDeviceFormatProperties
+
+foreign import ccall safe "dynamic"
+               unwrapVkGetPhysicalDeviceFormatPropertiesSafe ::
+               PFN_vkGetPhysicalDeviceFormatProperties ->
+                 HS_vkGetPhysicalDeviceFormatProperties
+
+instance VulkanProc "vkGetPhysicalDeviceFormatProperties" where
+        type VkProcType "vkGetPhysicalDeviceFormatProperties" =
+             HS_vkGetPhysicalDeviceFormatProperties
+        vkProcSymbol = _VkGetPhysicalDeviceFormatProperties
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkGetPhysicalDeviceFormatProperties
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkGetPhysicalDeviceFormatPropertiesSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkGetPhysicalDeviceImageFormatProperties :: CString
+
+pattern VkGetPhysicalDeviceImageFormatProperties <-
+        (is_VkGetPhysicalDeviceImageFormatProperties -> True)
+  where VkGetPhysicalDeviceImageFormatProperties
+          = _VkGetPhysicalDeviceImageFormatProperties
+
+{-# INLINE _VkGetPhysicalDeviceImageFormatProperties #-}
+
+_VkGetPhysicalDeviceImageFormatProperties :: CString
+_VkGetPhysicalDeviceImageFormatProperties
+  = Ptr "vkGetPhysicalDeviceImageFormatProperties\NUL"##
+
+{-# INLINE is_VkGetPhysicalDeviceImageFormatProperties #-}
+
+is_VkGetPhysicalDeviceImageFormatProperties :: CString -> Bool
+is_VkGetPhysicalDeviceImageFormatProperties
+  = (EQ ==) . cmpCStrings _VkGetPhysicalDeviceImageFormatProperties
+
+type VkGetPhysicalDeviceImageFormatProperties =
+     "vkGetPhysicalDeviceImageFormatProperties"
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_FORMAT_NOT_SUPPORTED'.
+--
+-- > VkResult vkGetPhysicalDeviceImageFormatProperties
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , VkFormat format
+-- >     , VkImageType type
+-- >     , VkImageTiling tiling
+-- >     , VkImageUsageFlags usage
+-- >     , VkImageCreateFlags flags
+-- >     , VkImageFormatProperties* pImageFormatProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceImageFormatProperties vkGetPhysicalDeviceImageFormatProperties registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceImageFormatProperties <- vkGetInstanceProc @VkGetPhysicalDeviceImageFormatProperties vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceImageFormatProperties <- vkGetProc @VkGetPhysicalDeviceImageFormatProperties
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe
+               "vkGetPhysicalDeviceImageFormatProperties"
+               vkGetPhysicalDeviceImageFormatProperties ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                ->
+                 VkFormat -- ^ format
+                          ->
+                   VkImageType -- ^ type
+                               ->
+                     VkImageTiling -- ^ tiling
+                                   ->
+                       VkImageUsageFlags -- ^ usage
+                                         ->
+                         VkImageCreateFlags -- ^ flags
+                                            -> Ptr VkImageFormatProperties -- ^ pImageFormatProperties
+                                                                           -> IO VkResult
+
+##else
+vkGetPhysicalDeviceImageFormatProperties ::
+                                         VkPhysicalDevice -- ^ physicalDevice
+                                                          ->
+                                           VkFormat -- ^ format
+                                                    ->
+                                             VkImageType -- ^ type
+                                                         ->
+                                               VkImageTiling -- ^ tiling
+                                                             ->
+                                                 VkImageUsageFlags -- ^ usage
+                                                                   ->
+                                                   VkImageCreateFlags -- ^ flags
+                                                                      ->
+                                                     Ptr VkImageFormatProperties -- ^ pImageFormatProperties
+                                                                                 -> IO VkResult
+vkGetPhysicalDeviceImageFormatProperties
+  = unsafeDupablePerformIO
+      (vkGetProc @VkGetPhysicalDeviceImageFormatProperties)
+
+{-# NOINLINE vkGetPhysicalDeviceImageFormatProperties #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_FORMAT_NOT_SUPPORTED'.
+--
+-- > VkResult vkGetPhysicalDeviceImageFormatProperties
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , VkFormat format
+-- >     , VkImageType type
+-- >     , VkImageTiling tiling
+-- >     , VkImageUsageFlags usage
+-- >     , VkImageCreateFlags flags
+-- >     , VkImageFormatProperties* pImageFormatProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceImageFormatProperties vkGetPhysicalDeviceImageFormatProperties registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceImageFormatProperties <- vkGetInstanceProc @VkGetPhysicalDeviceImageFormatProperties vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceImageFormatProperties <- vkGetProc @VkGetPhysicalDeviceImageFormatProperties
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe
+               "vkGetPhysicalDeviceImageFormatProperties"
+               vkGetPhysicalDeviceImageFormatPropertiesSafe ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                ->
+                 VkFormat -- ^ format
+                          ->
+                   VkImageType -- ^ type
+                               ->
+                     VkImageTiling -- ^ tiling
+                                   ->
+                       VkImageUsageFlags -- ^ usage
+                                         ->
+                         VkImageCreateFlags -- ^ flags
+                                            -> Ptr VkImageFormatProperties -- ^ pImageFormatProperties
+                                                                           -> IO VkResult
+
+##else
+vkGetPhysicalDeviceImageFormatPropertiesSafe ::
+                                             VkPhysicalDevice -- ^ physicalDevice
+                                                              ->
+                                               VkFormat -- ^ format
+                                                        ->
+                                                 VkImageType -- ^ type
+                                                             ->
+                                                   VkImageTiling -- ^ tiling
+                                                                 ->
+                                                     VkImageUsageFlags -- ^ usage
+                                                                       ->
+                                                       VkImageCreateFlags -- ^ flags
+                                                                          ->
+                                                         Ptr VkImageFormatProperties -- ^ pImageFormatProperties
+                                                                                     -> IO VkResult
+vkGetPhysicalDeviceImageFormatPropertiesSafe
+  = unsafeDupablePerformIO
+      (vkGetProcSafe @VkGetPhysicalDeviceImageFormatProperties)
+
+{-# NOINLINE vkGetPhysicalDeviceImageFormatPropertiesSafe #-}
+##endif
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_FORMAT_NOT_SUPPORTED'.
+--
+--   > VkResult vkGetPhysicalDeviceImageFormatProperties
+--   >     ( VkPhysicalDevice physicalDevice
+--   >     , VkFormat format
+--   >     , VkImageType type
+--   >     , VkImageTiling tiling
+--   >     , VkImageUsageFlags usage
+--   >     , VkImageCreateFlags flags
+--   >     , VkImageFormatProperties* pImageFormatProperties
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceImageFormatProperties vkGetPhysicalDeviceImageFormatProperties registry at www.khronos.org>
+type HS_vkGetPhysicalDeviceImageFormatProperties =
+     VkPhysicalDevice -- ^ physicalDevice
+                      ->
+       VkFormat -- ^ format
+                ->
+         VkImageType -- ^ type
+                     ->
+           VkImageTiling -- ^ tiling
+                         ->
+             VkImageUsageFlags -- ^ usage
+                               ->
+               VkImageCreateFlags -- ^ flags
+                                  -> Ptr VkImageFormatProperties -- ^ pImageFormatProperties
+                                                                 -> IO VkResult
+
+type PFN_vkGetPhysicalDeviceImageFormatProperties =
+     FunPtr HS_vkGetPhysicalDeviceImageFormatProperties
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkGetPhysicalDeviceImageFormatProperties ::
+               PFN_vkGetPhysicalDeviceImageFormatProperties ->
+                 HS_vkGetPhysicalDeviceImageFormatProperties
+
+foreign import ccall safe "dynamic"
+               unwrapVkGetPhysicalDeviceImageFormatPropertiesSafe ::
+               PFN_vkGetPhysicalDeviceImageFormatProperties ->
+                 HS_vkGetPhysicalDeviceImageFormatProperties
+
+instance VulkanProc "vkGetPhysicalDeviceImageFormatProperties"
+         where
+        type VkProcType "vkGetPhysicalDeviceImageFormatProperties" =
+             HS_vkGetPhysicalDeviceImageFormatProperties
+        vkProcSymbol = _VkGetPhysicalDeviceImageFormatProperties
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkGetPhysicalDeviceImageFormatProperties
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe
+          = unwrapVkGetPhysicalDeviceImageFormatPropertiesSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkGetPhysicalDeviceProperties :: CString
+
+pattern VkGetPhysicalDeviceProperties <-
+        (is_VkGetPhysicalDeviceProperties -> True)
+  where VkGetPhysicalDeviceProperties
+          = _VkGetPhysicalDeviceProperties
+
+{-# INLINE _VkGetPhysicalDeviceProperties #-}
+
+_VkGetPhysicalDeviceProperties :: CString
+_VkGetPhysicalDeviceProperties
+  = Ptr "vkGetPhysicalDeviceProperties\NUL"##
+
+{-# INLINE is_VkGetPhysicalDeviceProperties #-}
+
+is_VkGetPhysicalDeviceProperties :: CString -> Bool
+is_VkGetPhysicalDeviceProperties
+  = (EQ ==) . cmpCStrings _VkGetPhysicalDeviceProperties
+
+type VkGetPhysicalDeviceProperties =
+     "vkGetPhysicalDeviceProperties"
+
+-- |
+-- > void vkGetPhysicalDeviceProperties
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , VkPhysicalDeviceProperties* pProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceProperties vkGetPhysicalDeviceProperties registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceProperties <- vkGetInstanceProc @VkGetPhysicalDeviceProperties vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceProperties <- vkGetProc @VkGetPhysicalDeviceProperties
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkGetPhysicalDeviceProperties"
+               vkGetPhysicalDeviceProperties ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                -> Ptr VkPhysicalDeviceProperties -- ^ pProperties
+                                                                  -> IO ()
+
+##else
+vkGetPhysicalDeviceProperties ::
+                              VkPhysicalDevice -- ^ physicalDevice
+                                               -> Ptr VkPhysicalDeviceProperties -- ^ pProperties
+                                                                                 -> IO ()
+vkGetPhysicalDeviceProperties
+  = unsafeDupablePerformIO (vkGetProc @VkGetPhysicalDeviceProperties)
+
+{-# NOINLINE vkGetPhysicalDeviceProperties #-}
+##endif
+
+-- |
+-- > void vkGetPhysicalDeviceProperties
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , VkPhysicalDeviceProperties* pProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceProperties vkGetPhysicalDeviceProperties registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceProperties <- vkGetInstanceProc @VkGetPhysicalDeviceProperties vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceProperties <- vkGetProc @VkGetPhysicalDeviceProperties
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkGetPhysicalDeviceProperties"
+               vkGetPhysicalDevicePropertiesSafe ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                -> Ptr VkPhysicalDeviceProperties -- ^ pProperties
+                                                                  -> IO ()
+
+##else
+vkGetPhysicalDevicePropertiesSafe ::
+                                  VkPhysicalDevice -- ^ physicalDevice
+                                                   -> Ptr VkPhysicalDeviceProperties -- ^ pProperties
+                                                                                     -> IO ()
+vkGetPhysicalDevicePropertiesSafe
+  = unsafeDupablePerformIO
+      (vkGetProcSafe @VkGetPhysicalDeviceProperties)
+
+{-# NOINLINE vkGetPhysicalDevicePropertiesSafe #-}
+##endif
+
+-- | > void vkGetPhysicalDeviceProperties
+--   >     ( VkPhysicalDevice physicalDevice
+--   >     , VkPhysicalDeviceProperties* pProperties
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceProperties vkGetPhysicalDeviceProperties registry at www.khronos.org>
+type HS_vkGetPhysicalDeviceProperties =
+     VkPhysicalDevice -- ^ physicalDevice
+                      -> Ptr VkPhysicalDeviceProperties -- ^ pProperties
+                                                        -> IO ()
+
+type PFN_vkGetPhysicalDeviceProperties =
+     FunPtr HS_vkGetPhysicalDeviceProperties
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkGetPhysicalDeviceProperties ::
+               PFN_vkGetPhysicalDeviceProperties ->
+                 HS_vkGetPhysicalDeviceProperties
+
+foreign import ccall safe "dynamic"
+               unwrapVkGetPhysicalDevicePropertiesSafe ::
+               PFN_vkGetPhysicalDeviceProperties ->
+                 HS_vkGetPhysicalDeviceProperties
+
+instance VulkanProc "vkGetPhysicalDeviceProperties" where
+        type VkProcType "vkGetPhysicalDeviceProperties" =
+             HS_vkGetPhysicalDeviceProperties
+        vkProcSymbol = _VkGetPhysicalDeviceProperties
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkGetPhysicalDeviceProperties
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkGetPhysicalDevicePropertiesSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkGetPhysicalDeviceQueueFamilyProperties :: CString
+
+pattern VkGetPhysicalDeviceQueueFamilyProperties <-
+        (is_VkGetPhysicalDeviceQueueFamilyProperties -> True)
+  where VkGetPhysicalDeviceQueueFamilyProperties
+          = _VkGetPhysicalDeviceQueueFamilyProperties
+
+{-# INLINE _VkGetPhysicalDeviceQueueFamilyProperties #-}
+
+_VkGetPhysicalDeviceQueueFamilyProperties :: CString
+_VkGetPhysicalDeviceQueueFamilyProperties
+  = Ptr "vkGetPhysicalDeviceQueueFamilyProperties\NUL"##
+
+{-# INLINE is_VkGetPhysicalDeviceQueueFamilyProperties #-}
+
+is_VkGetPhysicalDeviceQueueFamilyProperties :: CString -> Bool
+is_VkGetPhysicalDeviceQueueFamilyProperties
+  = (EQ ==) . cmpCStrings _VkGetPhysicalDeviceQueueFamilyProperties
+
+type VkGetPhysicalDeviceQueueFamilyProperties =
+     "vkGetPhysicalDeviceQueueFamilyProperties"
+
+-- |
+-- > void vkGetPhysicalDeviceQueueFamilyProperties
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , uint32_t* pQueueFamilyPropertyCount
+-- >     , VkQueueFamilyProperties* pQueueFamilyProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceQueueFamilyProperties vkGetPhysicalDeviceQueueFamilyProperties registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceQueueFamilyProperties <- vkGetInstanceProc @VkGetPhysicalDeviceQueueFamilyProperties vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceQueueFamilyProperties <- vkGetProc @VkGetPhysicalDeviceQueueFamilyProperties
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe
+               "vkGetPhysicalDeviceQueueFamilyProperties"
+               vkGetPhysicalDeviceQueueFamilyProperties ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                ->
+                 Ptr Word32 -- ^ pQueueFamilyPropertyCount
+                            -> Ptr VkQueueFamilyProperties -- ^ pQueueFamilyProperties
+                                                           -> IO ()
+
+##else
+vkGetPhysicalDeviceQueueFamilyProperties ::
+                                         VkPhysicalDevice -- ^ physicalDevice
+                                                          ->
+                                           Ptr Word32 -- ^ pQueueFamilyPropertyCount
+                                                      -> Ptr VkQueueFamilyProperties -- ^ pQueueFamilyProperties
+                                                                                     -> IO ()
+vkGetPhysicalDeviceQueueFamilyProperties
+  = unsafeDupablePerformIO
+      (vkGetProc @VkGetPhysicalDeviceQueueFamilyProperties)
+
+{-# NOINLINE vkGetPhysicalDeviceQueueFamilyProperties #-}
+##endif
+
+-- |
+-- > void vkGetPhysicalDeviceQueueFamilyProperties
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , uint32_t* pQueueFamilyPropertyCount
+-- >     , VkQueueFamilyProperties* pQueueFamilyProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceQueueFamilyProperties vkGetPhysicalDeviceQueueFamilyProperties registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceQueueFamilyProperties <- vkGetInstanceProc @VkGetPhysicalDeviceQueueFamilyProperties vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceQueueFamilyProperties <- vkGetProc @VkGetPhysicalDeviceQueueFamilyProperties
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe
+               "vkGetPhysicalDeviceQueueFamilyProperties"
+               vkGetPhysicalDeviceQueueFamilyPropertiesSafe ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                ->
+                 Ptr Word32 -- ^ pQueueFamilyPropertyCount
+                            -> Ptr VkQueueFamilyProperties -- ^ pQueueFamilyProperties
+                                                           -> IO ()
+
+##else
+vkGetPhysicalDeviceQueueFamilyPropertiesSafe ::
+                                             VkPhysicalDevice -- ^ physicalDevice
+                                                              ->
+                                               Ptr Word32 -- ^ pQueueFamilyPropertyCount
+                                                          -> Ptr VkQueueFamilyProperties -- ^ pQueueFamilyProperties
+                                                                                         -> IO ()
+vkGetPhysicalDeviceQueueFamilyPropertiesSafe
+  = unsafeDupablePerformIO
+      (vkGetProcSafe @VkGetPhysicalDeviceQueueFamilyProperties)
+
+{-# NOINLINE vkGetPhysicalDeviceQueueFamilyPropertiesSafe #-}
+##endif
+
+-- | > void vkGetPhysicalDeviceQueueFamilyProperties
+--   >     ( VkPhysicalDevice physicalDevice
+--   >     , uint32_t* pQueueFamilyPropertyCount
+--   >     , VkQueueFamilyProperties* pQueueFamilyProperties
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceQueueFamilyProperties vkGetPhysicalDeviceQueueFamilyProperties registry at www.khronos.org>
+type HS_vkGetPhysicalDeviceQueueFamilyProperties =
+     VkPhysicalDevice -- ^ physicalDevice
+                      ->
+       Ptr Word32 -- ^ pQueueFamilyPropertyCount
+                  -> Ptr VkQueueFamilyProperties -- ^ pQueueFamilyProperties
+                                                 -> IO ()
+
+type PFN_vkGetPhysicalDeviceQueueFamilyProperties =
+     FunPtr HS_vkGetPhysicalDeviceQueueFamilyProperties
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkGetPhysicalDeviceQueueFamilyProperties ::
+               PFN_vkGetPhysicalDeviceQueueFamilyProperties ->
+                 HS_vkGetPhysicalDeviceQueueFamilyProperties
+
+foreign import ccall safe "dynamic"
+               unwrapVkGetPhysicalDeviceQueueFamilyPropertiesSafe ::
+               PFN_vkGetPhysicalDeviceQueueFamilyProperties ->
+                 HS_vkGetPhysicalDeviceQueueFamilyProperties
+
+instance VulkanProc "vkGetPhysicalDeviceQueueFamilyProperties"
+         where
+        type VkProcType "vkGetPhysicalDeviceQueueFamilyProperties" =
+             HS_vkGetPhysicalDeviceQueueFamilyProperties
+        vkProcSymbol = _VkGetPhysicalDeviceQueueFamilyProperties
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkGetPhysicalDeviceQueueFamilyProperties
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe
+          = unwrapVkGetPhysicalDeviceQueueFamilyPropertiesSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkGetPhysicalDeviceMemoryProperties :: CString
+
+pattern VkGetPhysicalDeviceMemoryProperties <-
+        (is_VkGetPhysicalDeviceMemoryProperties -> True)
+  where VkGetPhysicalDeviceMemoryProperties
+          = _VkGetPhysicalDeviceMemoryProperties
+
+{-# INLINE _VkGetPhysicalDeviceMemoryProperties #-}
+
+_VkGetPhysicalDeviceMemoryProperties :: CString
+_VkGetPhysicalDeviceMemoryProperties
+  = Ptr "vkGetPhysicalDeviceMemoryProperties\NUL"##
+
+{-# INLINE is_VkGetPhysicalDeviceMemoryProperties #-}
+
+is_VkGetPhysicalDeviceMemoryProperties :: CString -> Bool
+is_VkGetPhysicalDeviceMemoryProperties
+  = (EQ ==) . cmpCStrings _VkGetPhysicalDeviceMemoryProperties
+
+type VkGetPhysicalDeviceMemoryProperties =
+     "vkGetPhysicalDeviceMemoryProperties"
+
+-- |
+-- > void vkGetPhysicalDeviceMemoryProperties
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , VkPhysicalDeviceMemoryProperties* pMemoryProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceMemoryProperties vkGetPhysicalDeviceMemoryProperties registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceMemoryProperties <- vkGetInstanceProc @VkGetPhysicalDeviceMemoryProperties vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceMemoryProperties <- vkGetProc @VkGetPhysicalDeviceMemoryProperties
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkGetPhysicalDeviceMemoryProperties"
+               vkGetPhysicalDeviceMemoryProperties ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                -> Ptr VkPhysicalDeviceMemoryProperties -- ^ pMemoryProperties
+                                                                        -> IO ()
+
+##else
+vkGetPhysicalDeviceMemoryProperties ::
+                                    VkPhysicalDevice -- ^ physicalDevice
+                                                     ->
+                                      Ptr VkPhysicalDeviceMemoryProperties -- ^ pMemoryProperties
+                                                                           -> IO ()
+vkGetPhysicalDeviceMemoryProperties
+  = unsafeDupablePerformIO
+      (vkGetProc @VkGetPhysicalDeviceMemoryProperties)
+
+{-# NOINLINE vkGetPhysicalDeviceMemoryProperties #-}
+##endif
+
+-- |
+-- > void vkGetPhysicalDeviceMemoryProperties
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , VkPhysicalDeviceMemoryProperties* pMemoryProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceMemoryProperties vkGetPhysicalDeviceMemoryProperties registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceMemoryProperties <- vkGetInstanceProc @VkGetPhysicalDeviceMemoryProperties vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceMemoryProperties <- vkGetProc @VkGetPhysicalDeviceMemoryProperties
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkGetPhysicalDeviceMemoryProperties"
+               vkGetPhysicalDeviceMemoryPropertiesSafe ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                -> Ptr VkPhysicalDeviceMemoryProperties -- ^ pMemoryProperties
+                                                                        -> IO ()
+
+##else
+vkGetPhysicalDeviceMemoryPropertiesSafe ::
+                                        VkPhysicalDevice -- ^ physicalDevice
+                                                         ->
+                                          Ptr VkPhysicalDeviceMemoryProperties -- ^ pMemoryProperties
+                                                                               -> IO ()
+vkGetPhysicalDeviceMemoryPropertiesSafe
+  = unsafeDupablePerformIO
+      (vkGetProcSafe @VkGetPhysicalDeviceMemoryProperties)
+
+{-# NOINLINE vkGetPhysicalDeviceMemoryPropertiesSafe #-}
+##endif
+
+-- | > void vkGetPhysicalDeviceMemoryProperties
+--   >     ( VkPhysicalDevice physicalDevice
+--   >     , VkPhysicalDeviceMemoryProperties* pMemoryProperties
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceMemoryProperties vkGetPhysicalDeviceMemoryProperties registry at www.khronos.org>
+type HS_vkGetPhysicalDeviceMemoryProperties =
+     VkPhysicalDevice -- ^ physicalDevice
+                      -> Ptr VkPhysicalDeviceMemoryProperties -- ^ pMemoryProperties
+                                                              -> IO ()
+
+type PFN_vkGetPhysicalDeviceMemoryProperties =
+     FunPtr HS_vkGetPhysicalDeviceMemoryProperties
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkGetPhysicalDeviceMemoryProperties ::
+               PFN_vkGetPhysicalDeviceMemoryProperties ->
+                 HS_vkGetPhysicalDeviceMemoryProperties
+
+foreign import ccall safe "dynamic"
+               unwrapVkGetPhysicalDeviceMemoryPropertiesSafe ::
+               PFN_vkGetPhysicalDeviceMemoryProperties ->
+                 HS_vkGetPhysicalDeviceMemoryProperties
+
+instance VulkanProc "vkGetPhysicalDeviceMemoryProperties" where
+        type VkProcType "vkGetPhysicalDeviceMemoryProperties" =
+             HS_vkGetPhysicalDeviceMemoryProperties
+        vkProcSymbol = _VkGetPhysicalDeviceMemoryProperties
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkGetPhysicalDeviceMemoryProperties
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkGetPhysicalDeviceMemoryPropertiesSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkGetInstanceProcAddr :: CString
+
+pattern VkGetInstanceProcAddr <- (is_VkGetInstanceProcAddr -> True)
+  where VkGetInstanceProcAddr = _VkGetInstanceProcAddr
+
+{-# INLINE _VkGetInstanceProcAddr #-}
+
+_VkGetInstanceProcAddr :: CString
+_VkGetInstanceProcAddr = Ptr "vkGetInstanceProcAddr\NUL"##
+
+{-# INLINE is_VkGetInstanceProcAddr #-}
+
+is_VkGetInstanceProcAddr :: CString -> Bool
+is_VkGetInstanceProcAddr
+  = (EQ ==) . cmpCStrings _VkGetInstanceProcAddr
+
+type VkGetInstanceProcAddr = "vkGetInstanceProcAddr"
+
+-- |
+-- > PFN_vkVoidFunction vkGetInstanceProcAddr
+-- >     ( VkInstance instance
+-- >     , const char* pName
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetInstanceProcAddr vkGetInstanceProcAddr registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetInstanceProcAddr <- vkGetInstanceProc @VkGetInstanceProcAddr vkInstance
+--
+-- or less efficient:
+--
+-- > myGetInstanceProcAddr <- vkGetProc @VkGetInstanceProcAddr
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkGetInstanceProcAddr"
+               vkGetInstanceProcAddr ::
+               VkInstance -- ^ instance
+                          -> CString -- ^ pName
+                                     -> IO PFN_vkVoidFunction
+
+##else
+vkGetInstanceProcAddr ::
+                      VkInstance -- ^ instance
+                                 -> CString -- ^ pName
+                                            -> IO PFN_vkVoidFunction
+vkGetInstanceProcAddr
+  = unsafeDupablePerformIO (vkGetProc @VkGetInstanceProcAddr)
+
+{-# NOINLINE vkGetInstanceProcAddr #-}
+##endif
+
+-- |
+-- > PFN_vkVoidFunction vkGetInstanceProcAddr
+-- >     ( VkInstance instance
+-- >     , const char* pName
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetInstanceProcAddr vkGetInstanceProcAddr registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetInstanceProcAddr <- vkGetInstanceProc @VkGetInstanceProcAddr vkInstance
+--
+-- or less efficient:
+--
+-- > myGetInstanceProcAddr <- vkGetProc @VkGetInstanceProcAddr
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkGetInstanceProcAddr"
+               vkGetInstanceProcAddrSafe ::
+               VkInstance -- ^ instance
+                          -> CString -- ^ pName
+                                     -> IO PFN_vkVoidFunction
+
+##else
+vkGetInstanceProcAddrSafe ::
+                          VkInstance -- ^ instance
+                                     -> CString -- ^ pName
+                                                -> IO PFN_vkVoidFunction
+vkGetInstanceProcAddrSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkGetInstanceProcAddr)
+
+{-# NOINLINE vkGetInstanceProcAddrSafe #-}
+##endif
+
+-- | > PFN_vkVoidFunction vkGetInstanceProcAddr
+--   >     ( VkInstance instance
+--   >     , const char* pName
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetInstanceProcAddr vkGetInstanceProcAddr registry at www.khronos.org>
+type HS_vkGetInstanceProcAddr =
+     VkInstance -- ^ instance
+                -> CString -- ^ pName
+                           -> IO PFN_vkVoidFunction
+
+type PFN_vkGetInstanceProcAddr = FunPtr HS_vkGetInstanceProcAddr
+
+foreign import ccall unsafe "dynamic" unwrapVkGetInstanceProcAddr
+               :: PFN_vkGetInstanceProcAddr -> HS_vkGetInstanceProcAddr
+
+foreign import ccall safe "dynamic" unwrapVkGetInstanceProcAddrSafe
+               :: PFN_vkGetInstanceProcAddr -> HS_vkGetInstanceProcAddr
+
+instance VulkanProc "vkGetInstanceProcAddr" where
+        type VkProcType "vkGetInstanceProcAddr" = HS_vkGetInstanceProcAddr
+        vkProcSymbol = _VkGetInstanceProcAddr
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkGetInstanceProcAddr
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkGetInstanceProcAddrSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkGetDeviceProcAddr :: CString
+
+pattern VkGetDeviceProcAddr <- (is_VkGetDeviceProcAddr -> True)
+  where VkGetDeviceProcAddr = _VkGetDeviceProcAddr
+
+{-# INLINE _VkGetDeviceProcAddr #-}
+
+_VkGetDeviceProcAddr :: CString
+_VkGetDeviceProcAddr = Ptr "vkGetDeviceProcAddr\NUL"##
+
+{-# INLINE is_VkGetDeviceProcAddr #-}
+
+is_VkGetDeviceProcAddr :: CString -> Bool
+is_VkGetDeviceProcAddr = (EQ ==) . cmpCStrings _VkGetDeviceProcAddr
+
+type VkGetDeviceProcAddr = "vkGetDeviceProcAddr"
+
+-- |
+-- > PFN_vkVoidFunction vkGetDeviceProcAddr
+-- >     ( VkDevice device
+-- >     , const char* pName
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDeviceProcAddr vkGetDeviceProcAddr registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetDeviceProcAddr <- vkGetDeviceProc @VkGetDeviceProcAddr vkDevice
+--
+-- or less efficient:
+--
+-- > myGetDeviceProcAddr <- vkGetProc @VkGetDeviceProcAddr
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkGetDeviceProcAddr"
+               vkGetDeviceProcAddr :: VkDevice -- ^ device
+                                               -> CString -- ^ pName
+                                                          -> IO PFN_vkVoidFunction
+
+##else
+vkGetDeviceProcAddr :: VkDevice -- ^ device
+                                -> CString -- ^ pName
+                                           -> IO PFN_vkVoidFunction
+vkGetDeviceProcAddr
+  = unsafeDupablePerformIO (vkGetProc @VkGetDeviceProcAddr)
+
+{-# NOINLINE vkGetDeviceProcAddr #-}
+##endif
+
+-- |
+-- > PFN_vkVoidFunction vkGetDeviceProcAddr
+-- >     ( VkDevice device
+-- >     , const char* pName
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDeviceProcAddr vkGetDeviceProcAddr registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetDeviceProcAddr <- vkGetDeviceProc @VkGetDeviceProcAddr vkDevice
+--
+-- or less efficient:
+--
+-- > myGetDeviceProcAddr <- vkGetProc @VkGetDeviceProcAddr
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkGetDeviceProcAddr"
+               vkGetDeviceProcAddrSafe ::
+               VkDevice -- ^ device
+                        -> CString -- ^ pName
+                                   -> IO PFN_vkVoidFunction
+
+##else
+vkGetDeviceProcAddrSafe ::
+                        VkDevice -- ^ device
+                                 -> CString -- ^ pName
+                                            -> IO PFN_vkVoidFunction
+vkGetDeviceProcAddrSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkGetDeviceProcAddr)
+
+{-# NOINLINE vkGetDeviceProcAddrSafe #-}
+##endif
+
+-- | > PFN_vkVoidFunction vkGetDeviceProcAddr
+--   >     ( VkDevice device
+--   >     , const char* pName
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDeviceProcAddr vkGetDeviceProcAddr registry at www.khronos.org>
+type HS_vkGetDeviceProcAddr =
+     VkDevice -- ^ device
+              -> CString -- ^ pName
+                         -> IO PFN_vkVoidFunction
+
+type PFN_vkGetDeviceProcAddr = FunPtr HS_vkGetDeviceProcAddr
+
+foreign import ccall unsafe "dynamic" unwrapVkGetDeviceProcAddr ::
+               PFN_vkGetDeviceProcAddr -> HS_vkGetDeviceProcAddr
+
+foreign import ccall safe "dynamic" unwrapVkGetDeviceProcAddrSafe
+               :: PFN_vkGetDeviceProcAddr -> HS_vkGetDeviceProcAddr
+
+instance VulkanProc "vkGetDeviceProcAddr" where
+        type VkProcType "vkGetDeviceProcAddr" = HS_vkGetDeviceProcAddr
+        vkProcSymbol = _VkGetDeviceProcAddr
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkGetDeviceProcAddr
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkGetDeviceProcAddrSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCreateDevice :: CString
+
+pattern VkCreateDevice <- (is_VkCreateDevice -> True)
+  where VkCreateDevice = _VkCreateDevice
+
+{-# INLINE _VkCreateDevice #-}
+
+_VkCreateDevice :: CString
+_VkCreateDevice = Ptr "vkCreateDevice\NUL"##
+
+{-# INLINE is_VkCreateDevice #-}
+
+is_VkCreateDevice :: CString -> Bool
+is_VkCreateDevice = (EQ ==) . cmpCStrings _VkCreateDevice
+
+type VkCreateDevice = "vkCreateDevice"
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INITIALIZATION_FAILED', 'VK_ERROR_EXTENSION_NOT_PRESENT', 'VK_ERROR_FEATURE_NOT_PRESENT', 'VK_ERROR_TOO_MANY_OBJECTS', 'VK_ERROR_DEVICE_LOST'.
+--
+-- > VkResult vkCreateDevice
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , const VkDeviceCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkDevice* pDevice
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateDevice vkCreateDevice registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateDevice <- vkGetInstanceProc @VkCreateDevice vkInstance
+--
+-- or less efficient:
+--
+-- > myCreateDevice <- vkGetProc @VkCreateDevice
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCreateDevice" vkCreateDevice ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                ->
+                 Ptr VkDeviceCreateInfo -- ^ pCreateInfo
+                                        ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkDevice -- ^ pDevice
+                                                             -> IO VkResult
+
+##else
+vkCreateDevice ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                ->
+                 Ptr VkDeviceCreateInfo -- ^ pCreateInfo
+                                        ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkDevice -- ^ pDevice
+                                                             -> IO VkResult
+vkCreateDevice = unsafeDupablePerformIO (vkGetProc @VkCreateDevice)
+
+{-# NOINLINE vkCreateDevice #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INITIALIZATION_FAILED', 'VK_ERROR_EXTENSION_NOT_PRESENT', 'VK_ERROR_FEATURE_NOT_PRESENT', 'VK_ERROR_TOO_MANY_OBJECTS', 'VK_ERROR_DEVICE_LOST'.
+--
+-- > VkResult vkCreateDevice
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , const VkDeviceCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkDevice* pDevice
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateDevice vkCreateDevice registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateDevice <- vkGetInstanceProc @VkCreateDevice vkInstance
+--
+-- or less efficient:
+--
+-- > myCreateDevice <- vkGetProc @VkCreateDevice
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCreateDevice" vkCreateDeviceSafe ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                ->
+                 Ptr VkDeviceCreateInfo -- ^ pCreateInfo
+                                        ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkDevice -- ^ pDevice
+                                                             -> IO VkResult
+
+##else
+vkCreateDeviceSafe ::
+                   VkPhysicalDevice -- ^ physicalDevice
+                                    ->
+                     Ptr VkDeviceCreateInfo -- ^ pCreateInfo
+                                            ->
+                       Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                 -> Ptr VkDevice -- ^ pDevice
+                                                                 -> IO VkResult
+vkCreateDeviceSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCreateDevice)
+
+{-# NOINLINE vkCreateDeviceSafe #-}
+##endif
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INITIALIZATION_FAILED', 'VK_ERROR_EXTENSION_NOT_PRESENT', 'VK_ERROR_FEATURE_NOT_PRESENT', 'VK_ERROR_TOO_MANY_OBJECTS', 'VK_ERROR_DEVICE_LOST'.
+--
+--   > VkResult vkCreateDevice
+--   >     ( VkPhysicalDevice physicalDevice
+--   >     , const VkDeviceCreateInfo* pCreateInfo
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     , VkDevice* pDevice
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateDevice vkCreateDevice registry at www.khronos.org>
+type HS_vkCreateDevice =
+     VkPhysicalDevice -- ^ physicalDevice
+                      ->
+       Ptr VkDeviceCreateInfo -- ^ pCreateInfo
+                              ->
+         Ptr VkAllocationCallbacks -- ^ pAllocator
+                                   -> Ptr VkDevice -- ^ pDevice
+                                                   -> IO VkResult
+
+type PFN_vkCreateDevice = FunPtr HS_vkCreateDevice
+
+foreign import ccall unsafe "dynamic" unwrapVkCreateDevice ::
+               PFN_vkCreateDevice -> HS_vkCreateDevice
+
+foreign import ccall safe "dynamic" unwrapVkCreateDeviceSafe ::
+               PFN_vkCreateDevice -> HS_vkCreateDevice
+
+instance VulkanProc "vkCreateDevice" where
+        type VkProcType "vkCreateDevice" = HS_vkCreateDevice
+        vkProcSymbol = _VkCreateDevice
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkCreateDevice
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkCreateDeviceSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkDestroyDevice :: CString
+
+pattern VkDestroyDevice <- (is_VkDestroyDevice -> True)
+  where VkDestroyDevice = _VkDestroyDevice
+
+{-# INLINE _VkDestroyDevice #-}
+
+_VkDestroyDevice :: CString
+_VkDestroyDevice = Ptr "vkDestroyDevice\NUL"##
+
+{-# INLINE is_VkDestroyDevice #-}
+
+is_VkDestroyDevice :: CString -> Bool
+is_VkDestroyDevice = (EQ ==) . cmpCStrings _VkDestroyDevice
+
+type VkDestroyDevice = "vkDestroyDevice"
+
+-- |
+-- > void vkDestroyDevice
+-- >     ( VkDevice device
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyDevice vkDestroyDevice registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroyDevice <- vkGetDeviceProc @VkDestroyDevice vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroyDevice <- vkGetProc @VkDestroyDevice
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkDestroyDevice" vkDestroyDevice ::
+               VkDevice -- ^ device
+                        -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                     -> IO ()
+
+##else
+vkDestroyDevice :: VkDevice -- ^ device
+                            -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                         -> IO ()
+vkDestroyDevice
+  = unsafeDupablePerformIO (vkGetProc @VkDestroyDevice)
+
+{-# NOINLINE vkDestroyDevice #-}
+##endif
+
+-- |
+-- > void vkDestroyDevice
+-- >     ( VkDevice device
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyDevice vkDestroyDevice registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroyDevice <- vkGetDeviceProc @VkDestroyDevice vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroyDevice <- vkGetProc @VkDestroyDevice
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkDestroyDevice" vkDestroyDeviceSafe ::
+               VkDevice -- ^ device
+                        -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                     -> IO ()
+
+##else
+vkDestroyDeviceSafe ::
+                    VkDevice -- ^ device
+                             -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                          -> IO ()
+vkDestroyDeviceSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkDestroyDevice)
+
+{-# NOINLINE vkDestroyDeviceSafe #-}
+##endif
+
+-- | > void vkDestroyDevice
+--   >     ( VkDevice device
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyDevice vkDestroyDevice registry at www.khronos.org>
+type HS_vkDestroyDevice =
+     VkDevice -- ^ device
+              -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                           -> IO ()
+
+type PFN_vkDestroyDevice = FunPtr HS_vkDestroyDevice
+
+foreign import ccall unsafe "dynamic" unwrapVkDestroyDevice ::
+               PFN_vkDestroyDevice -> HS_vkDestroyDevice
+
+foreign import ccall safe "dynamic" unwrapVkDestroyDeviceSafe ::
+               PFN_vkDestroyDevice -> HS_vkDestroyDevice
+
+instance VulkanProc "vkDestroyDevice" where
+        type VkProcType "vkDestroyDevice" = HS_vkDestroyDevice
+        vkProcSymbol = _VkDestroyDevice
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkDestroyDevice
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkDestroyDeviceSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkEnumerateInstanceExtensionProperties :: CString
+
+pattern VkEnumerateInstanceExtensionProperties <-
+        (is_VkEnumerateInstanceExtensionProperties -> True)
+  where VkEnumerateInstanceExtensionProperties
+          = _VkEnumerateInstanceExtensionProperties
+
+{-# INLINE _VkEnumerateInstanceExtensionProperties #-}
+
+_VkEnumerateInstanceExtensionProperties :: CString
+_VkEnumerateInstanceExtensionProperties
+  = Ptr "vkEnumerateInstanceExtensionProperties\NUL"##
+
+{-# INLINE is_VkEnumerateInstanceExtensionProperties #-}
+
+is_VkEnumerateInstanceExtensionProperties :: CString -> Bool
+is_VkEnumerateInstanceExtensionProperties
+  = (EQ ==) . cmpCStrings _VkEnumerateInstanceExtensionProperties
+
+type VkEnumerateInstanceExtensionProperties =
+     "vkEnumerateInstanceExtensionProperties"
+
+-- |
+-- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_LAYER_NOT_PRESENT'.
+--
+-- > VkResult vkEnumerateInstanceExtensionProperties
+-- >     ( const char* pLayerName
+-- >     , uint32_t* pPropertyCount
+-- >     , VkExtensionProperties* pProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumerateInstanceExtensionProperties vkEnumerateInstanceExtensionProperties registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myEnumerateInstanceExtensionProperties <- vkGetInstanceProc @VkEnumerateInstanceExtensionProperties VK_NULL
+--
+-- or less efficient:
+--
+-- > myEnumerateInstanceExtensionProperties <- vkGetProc @VkEnumerateInstanceExtensionProperties
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe
+               "vkEnumerateInstanceExtensionProperties"
+               vkEnumerateInstanceExtensionProperties ::
+               CString -- ^ pLayerName
+                       -> Ptr Word32 -- ^ pPropertyCount
+                                     -> Ptr VkExtensionProperties -- ^ pProperties
+                                                                  -> IO VkResult
+
+##else
+vkEnumerateInstanceExtensionProperties ::
+                                       CString -- ^ pLayerName
+                                               ->
+                                         Ptr Word32 -- ^ pPropertyCount
+                                                    -> Ptr VkExtensionProperties -- ^ pProperties
+                                                                                 -> IO VkResult
+vkEnumerateInstanceExtensionProperties
+  = unsafeDupablePerformIO
+      (vkGetProc @VkEnumerateInstanceExtensionProperties)
+
+{-# NOINLINE vkEnumerateInstanceExtensionProperties #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_LAYER_NOT_PRESENT'.
+--
+-- > VkResult vkEnumerateInstanceExtensionProperties
+-- >     ( const char* pLayerName
+-- >     , uint32_t* pPropertyCount
+-- >     , VkExtensionProperties* pProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumerateInstanceExtensionProperties vkEnumerateInstanceExtensionProperties registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myEnumerateInstanceExtensionProperties <- vkGetInstanceProc @VkEnumerateInstanceExtensionProperties VK_NULL
+--
+-- or less efficient:
+--
+-- > myEnumerateInstanceExtensionProperties <- vkGetProc @VkEnumerateInstanceExtensionProperties
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkEnumerateInstanceExtensionProperties"
+               vkEnumerateInstanceExtensionPropertiesSafe ::
+               CString -- ^ pLayerName
+                       -> Ptr Word32 -- ^ pPropertyCount
+                                     -> Ptr VkExtensionProperties -- ^ pProperties
+                                                                  -> IO VkResult
+
+##else
+vkEnumerateInstanceExtensionPropertiesSafe ::
+                                           CString -- ^ pLayerName
+                                                   ->
+                                             Ptr Word32 -- ^ pPropertyCount
+                                                        -> Ptr VkExtensionProperties -- ^ pProperties
+                                                                                     -> IO VkResult
+vkEnumerateInstanceExtensionPropertiesSafe
+  = unsafeDupablePerformIO
+      (vkGetProcSafe @VkEnumerateInstanceExtensionProperties)
+
+{-# NOINLINE vkEnumerateInstanceExtensionPropertiesSafe #-}
+##endif
+
+-- | Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_LAYER_NOT_PRESENT'.
+--
+--   > VkResult vkEnumerateInstanceExtensionProperties
+--   >     ( const char* pLayerName
+--   >     , uint32_t* pPropertyCount
+--   >     , VkExtensionProperties* pProperties
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumerateInstanceExtensionProperties vkEnumerateInstanceExtensionProperties registry at www.khronos.org>
+type HS_vkEnumerateInstanceExtensionProperties =
+     CString -- ^ pLayerName
+             -> Ptr Word32 -- ^ pPropertyCount
+                           -> Ptr VkExtensionProperties -- ^ pProperties
+                                                        -> IO VkResult
+
+type PFN_vkEnumerateInstanceExtensionProperties =
+     FunPtr HS_vkEnumerateInstanceExtensionProperties
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkEnumerateInstanceExtensionProperties ::
+               PFN_vkEnumerateInstanceExtensionProperties ->
+                 HS_vkEnumerateInstanceExtensionProperties
+
+foreign import ccall safe "dynamic"
+               unwrapVkEnumerateInstanceExtensionPropertiesSafe ::
+               PFN_vkEnumerateInstanceExtensionProperties ->
+                 HS_vkEnumerateInstanceExtensionProperties
+
+instance VulkanProc "vkEnumerateInstanceExtensionProperties" where
+        type VkProcType "vkEnumerateInstanceExtensionProperties" =
+             HS_vkEnumerateInstanceExtensionProperties
+        vkProcSymbol = _VkEnumerateInstanceExtensionProperties
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkEnumerateInstanceExtensionProperties
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe
+          = unwrapVkEnumerateInstanceExtensionPropertiesSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkEnumerateDeviceExtensionProperties :: CString
+
+pattern VkEnumerateDeviceExtensionProperties <-
+        (is_VkEnumerateDeviceExtensionProperties -> True)
+  where VkEnumerateDeviceExtensionProperties
+          = _VkEnumerateDeviceExtensionProperties
+
+{-# INLINE _VkEnumerateDeviceExtensionProperties #-}
+
+_VkEnumerateDeviceExtensionProperties :: CString
+_VkEnumerateDeviceExtensionProperties
+  = Ptr "vkEnumerateDeviceExtensionProperties\NUL"##
+
+{-# INLINE is_VkEnumerateDeviceExtensionProperties #-}
+
+is_VkEnumerateDeviceExtensionProperties :: CString -> Bool
+is_VkEnumerateDeviceExtensionProperties
+  = (EQ ==) . cmpCStrings _VkEnumerateDeviceExtensionProperties
+
+type VkEnumerateDeviceExtensionProperties =
+     "vkEnumerateDeviceExtensionProperties"
+
+-- |
+-- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_LAYER_NOT_PRESENT'.
+--
+-- > VkResult vkEnumerateDeviceExtensionProperties
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , const char* pLayerName
+-- >     , uint32_t* pPropertyCount
+-- >     , VkExtensionProperties* pProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumerateDeviceExtensionProperties vkEnumerateDeviceExtensionProperties registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myEnumerateDeviceExtensionProperties <- vkGetInstanceProc @VkEnumerateDeviceExtensionProperties vkInstance
+--
+-- or less efficient:
+--
+-- > myEnumerateDeviceExtensionProperties <- vkGetProc @VkEnumerateDeviceExtensionProperties
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkEnumerateDeviceExtensionProperties"
+               vkEnumerateDeviceExtensionProperties ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                ->
+                 CString -- ^ pLayerName
+                         -> Ptr Word32 -- ^ pPropertyCount
+                                       -> Ptr VkExtensionProperties -- ^ pProperties
+                                                                    -> IO VkResult
+
+##else
+vkEnumerateDeviceExtensionProperties ::
+                                     VkPhysicalDevice -- ^ physicalDevice
+                                                      ->
+                                       CString -- ^ pLayerName
+                                               ->
+                                         Ptr Word32 -- ^ pPropertyCount
+                                                    -> Ptr VkExtensionProperties -- ^ pProperties
+                                                                                 -> IO VkResult
+vkEnumerateDeviceExtensionProperties
+  = unsafeDupablePerformIO
+      (vkGetProc @VkEnumerateDeviceExtensionProperties)
+
+{-# NOINLINE vkEnumerateDeviceExtensionProperties #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_LAYER_NOT_PRESENT'.
+--
+-- > VkResult vkEnumerateDeviceExtensionProperties
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , const char* pLayerName
+-- >     , uint32_t* pPropertyCount
+-- >     , VkExtensionProperties* pProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumerateDeviceExtensionProperties vkEnumerateDeviceExtensionProperties registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myEnumerateDeviceExtensionProperties <- vkGetInstanceProc @VkEnumerateDeviceExtensionProperties vkInstance
+--
+-- or less efficient:
+--
+-- > myEnumerateDeviceExtensionProperties <- vkGetProc @VkEnumerateDeviceExtensionProperties
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkEnumerateDeviceExtensionProperties"
+               vkEnumerateDeviceExtensionPropertiesSafe ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                ->
+                 CString -- ^ pLayerName
+                         -> Ptr Word32 -- ^ pPropertyCount
+                                       -> Ptr VkExtensionProperties -- ^ pProperties
+                                                                    -> IO VkResult
+
+##else
+vkEnumerateDeviceExtensionPropertiesSafe ::
+                                         VkPhysicalDevice -- ^ physicalDevice
+                                                          ->
+                                           CString -- ^ pLayerName
+                                                   ->
+                                             Ptr Word32 -- ^ pPropertyCount
+                                                        -> Ptr VkExtensionProperties -- ^ pProperties
+                                                                                     -> IO VkResult
+vkEnumerateDeviceExtensionPropertiesSafe
+  = unsafeDupablePerformIO
+      (vkGetProcSafe @VkEnumerateDeviceExtensionProperties)
+
+{-# NOINLINE vkEnumerateDeviceExtensionPropertiesSafe #-}
+##endif
+
+-- | Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_LAYER_NOT_PRESENT'.
+--
+--   > VkResult vkEnumerateDeviceExtensionProperties
+--   >     ( VkPhysicalDevice physicalDevice
+--   >     , const char* pLayerName
+--   >     , uint32_t* pPropertyCount
+--   >     , VkExtensionProperties* pProperties
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumerateDeviceExtensionProperties vkEnumerateDeviceExtensionProperties registry at www.khronos.org>
+type HS_vkEnumerateDeviceExtensionProperties =
+     VkPhysicalDevice -- ^ physicalDevice
+                      ->
+       CString -- ^ pLayerName
+               -> Ptr Word32 -- ^ pPropertyCount
+                             -> Ptr VkExtensionProperties -- ^ pProperties
+                                                          -> IO VkResult
+
+type PFN_vkEnumerateDeviceExtensionProperties =
+     FunPtr HS_vkEnumerateDeviceExtensionProperties
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkEnumerateDeviceExtensionProperties ::
+               PFN_vkEnumerateDeviceExtensionProperties ->
+                 HS_vkEnumerateDeviceExtensionProperties
+
+foreign import ccall safe "dynamic"
+               unwrapVkEnumerateDeviceExtensionPropertiesSafe ::
+               PFN_vkEnumerateDeviceExtensionProperties ->
+                 HS_vkEnumerateDeviceExtensionProperties
+
+instance VulkanProc "vkEnumerateDeviceExtensionProperties" where
+        type VkProcType "vkEnumerateDeviceExtensionProperties" =
+             HS_vkEnumerateDeviceExtensionProperties
+        vkProcSymbol = _VkEnumerateDeviceExtensionProperties
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkEnumerateDeviceExtensionProperties
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe
+          = unwrapVkEnumerateDeviceExtensionPropertiesSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkEnumerateInstanceLayerProperties :: CString
+
+pattern VkEnumerateInstanceLayerProperties <-
+        (is_VkEnumerateInstanceLayerProperties -> True)
+  where VkEnumerateInstanceLayerProperties
+          = _VkEnumerateInstanceLayerProperties
+
+{-# INLINE _VkEnumerateInstanceLayerProperties #-}
+
+_VkEnumerateInstanceLayerProperties :: CString
+_VkEnumerateInstanceLayerProperties
+  = Ptr "vkEnumerateInstanceLayerProperties\NUL"##
+
+{-# INLINE is_VkEnumerateInstanceLayerProperties #-}
+
+is_VkEnumerateInstanceLayerProperties :: CString -> Bool
+is_VkEnumerateInstanceLayerProperties
+  = (EQ ==) . cmpCStrings _VkEnumerateInstanceLayerProperties
+
+type VkEnumerateInstanceLayerProperties =
+     "vkEnumerateInstanceLayerProperties"
+
+-- |
+-- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkEnumerateInstanceLayerProperties
+-- >     ( uint32_t* pPropertyCount
+-- >     , VkLayerProperties* pProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumerateInstanceLayerProperties vkEnumerateInstanceLayerProperties registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myEnumerateInstanceLayerProperties <- vkGetInstanceProc @VkEnumerateInstanceLayerProperties VK_NULL
+--
+-- or less efficient:
+--
+-- > myEnumerateInstanceLayerProperties <- vkGetProc @VkEnumerateInstanceLayerProperties
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkEnumerateInstanceLayerProperties"
+               vkEnumerateInstanceLayerProperties ::
+               Ptr Word32 -- ^ pPropertyCount
+                          -> Ptr VkLayerProperties -- ^ pProperties
+                                                   -> IO VkResult
+
+##else
+vkEnumerateInstanceLayerProperties ::
+                                   Ptr Word32 -- ^ pPropertyCount
+                                              -> Ptr VkLayerProperties -- ^ pProperties
+                                                                       -> IO VkResult
+vkEnumerateInstanceLayerProperties
+  = unsafeDupablePerformIO
+      (vkGetProc @VkEnumerateInstanceLayerProperties)
+
+{-# NOINLINE vkEnumerateInstanceLayerProperties #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkEnumerateInstanceLayerProperties
+-- >     ( uint32_t* pPropertyCount
+-- >     , VkLayerProperties* pProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumerateInstanceLayerProperties vkEnumerateInstanceLayerProperties registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myEnumerateInstanceLayerProperties <- vkGetInstanceProc @VkEnumerateInstanceLayerProperties VK_NULL
+--
+-- or less efficient:
+--
+-- > myEnumerateInstanceLayerProperties <- vkGetProc @VkEnumerateInstanceLayerProperties
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkEnumerateInstanceLayerProperties"
+               vkEnumerateInstanceLayerPropertiesSafe ::
+               Ptr Word32 -- ^ pPropertyCount
+                          -> Ptr VkLayerProperties -- ^ pProperties
+                                                   -> IO VkResult
+
+##else
+vkEnumerateInstanceLayerPropertiesSafe ::
+                                       Ptr Word32 -- ^ pPropertyCount
+                                                  -> Ptr VkLayerProperties -- ^ pProperties
+                                                                           -> IO VkResult
+vkEnumerateInstanceLayerPropertiesSafe
+  = unsafeDupablePerformIO
+      (vkGetProcSafe @VkEnumerateInstanceLayerProperties)
+
+{-# NOINLINE vkEnumerateInstanceLayerPropertiesSafe #-}
+##endif
+
+-- | Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+--   > VkResult vkEnumerateInstanceLayerProperties
+--   >     ( uint32_t* pPropertyCount
+--   >     , VkLayerProperties* pProperties
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumerateInstanceLayerProperties vkEnumerateInstanceLayerProperties registry at www.khronos.org>
+type HS_vkEnumerateInstanceLayerProperties =
+     Ptr Word32 -- ^ pPropertyCount
+                -> Ptr VkLayerProperties -- ^ pProperties
+                                         -> IO VkResult
+
+type PFN_vkEnumerateInstanceLayerProperties =
+     FunPtr HS_vkEnumerateInstanceLayerProperties
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkEnumerateInstanceLayerProperties ::
+               PFN_vkEnumerateInstanceLayerProperties ->
+                 HS_vkEnumerateInstanceLayerProperties
+
+foreign import ccall safe "dynamic"
+               unwrapVkEnumerateInstanceLayerPropertiesSafe ::
+               PFN_vkEnumerateInstanceLayerProperties ->
+                 HS_vkEnumerateInstanceLayerProperties
+
+instance VulkanProc "vkEnumerateInstanceLayerProperties" where
+        type VkProcType "vkEnumerateInstanceLayerProperties" =
+             HS_vkEnumerateInstanceLayerProperties
+        vkProcSymbol = _VkEnumerateInstanceLayerProperties
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkEnumerateInstanceLayerProperties
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkEnumerateInstanceLayerPropertiesSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkEnumerateDeviceLayerProperties :: CString
+
+pattern VkEnumerateDeviceLayerProperties <-
+        (is_VkEnumerateDeviceLayerProperties -> True)
+  where VkEnumerateDeviceLayerProperties
+          = _VkEnumerateDeviceLayerProperties
+
+{-# INLINE _VkEnumerateDeviceLayerProperties #-}
+
+_VkEnumerateDeviceLayerProperties :: CString
+_VkEnumerateDeviceLayerProperties
+  = Ptr "vkEnumerateDeviceLayerProperties\NUL"##
+
+{-# INLINE is_VkEnumerateDeviceLayerProperties #-}
+
+is_VkEnumerateDeviceLayerProperties :: CString -> Bool
+is_VkEnumerateDeviceLayerProperties
+  = (EQ ==) . cmpCStrings _VkEnumerateDeviceLayerProperties
+
+type VkEnumerateDeviceLayerProperties =
+     "vkEnumerateDeviceLayerProperties"
+
+-- |
+-- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkEnumerateDeviceLayerProperties
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , uint32_t* pPropertyCount
+-- >     , VkLayerProperties* pProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumerateDeviceLayerProperties vkEnumerateDeviceLayerProperties registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myEnumerateDeviceLayerProperties <- vkGetInstanceProc @VkEnumerateDeviceLayerProperties vkInstance
+--
+-- or less efficient:
+--
+-- > myEnumerateDeviceLayerProperties <- vkGetProc @VkEnumerateDeviceLayerProperties
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkEnumerateDeviceLayerProperties"
+               vkEnumerateDeviceLayerProperties ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                ->
+                 Ptr Word32 -- ^ pPropertyCount
+                            -> Ptr VkLayerProperties -- ^ pProperties
+                                                     -> IO VkResult
+
+##else
+vkEnumerateDeviceLayerProperties ::
+                                 VkPhysicalDevice -- ^ physicalDevice
+                                                  ->
+                                   Ptr Word32 -- ^ pPropertyCount
+                                              -> Ptr VkLayerProperties -- ^ pProperties
+                                                                       -> IO VkResult
+vkEnumerateDeviceLayerProperties
+  = unsafeDupablePerformIO
+      (vkGetProc @VkEnumerateDeviceLayerProperties)
+
+{-# NOINLINE vkEnumerateDeviceLayerProperties #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkEnumerateDeviceLayerProperties
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , uint32_t* pPropertyCount
+-- >     , VkLayerProperties* pProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumerateDeviceLayerProperties vkEnumerateDeviceLayerProperties registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myEnumerateDeviceLayerProperties <- vkGetInstanceProc @VkEnumerateDeviceLayerProperties vkInstance
+--
+-- or less efficient:
+--
+-- > myEnumerateDeviceLayerProperties <- vkGetProc @VkEnumerateDeviceLayerProperties
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkEnumerateDeviceLayerProperties"
+               vkEnumerateDeviceLayerPropertiesSafe ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                ->
+                 Ptr Word32 -- ^ pPropertyCount
+                            -> Ptr VkLayerProperties -- ^ pProperties
+                                                     -> IO VkResult
+
+##else
+vkEnumerateDeviceLayerPropertiesSafe ::
+                                     VkPhysicalDevice -- ^ physicalDevice
+                                                      ->
+                                       Ptr Word32 -- ^ pPropertyCount
+                                                  -> Ptr VkLayerProperties -- ^ pProperties
+                                                                           -> IO VkResult
+vkEnumerateDeviceLayerPropertiesSafe
+  = unsafeDupablePerformIO
+      (vkGetProcSafe @VkEnumerateDeviceLayerProperties)
+
+{-# NOINLINE vkEnumerateDeviceLayerPropertiesSafe #-}
+##endif
+
+-- | Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+--   > VkResult vkEnumerateDeviceLayerProperties
+--   >     ( VkPhysicalDevice physicalDevice
+--   >     , uint32_t* pPropertyCount
+--   >     , VkLayerProperties* pProperties
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumerateDeviceLayerProperties vkEnumerateDeviceLayerProperties registry at www.khronos.org>
+type HS_vkEnumerateDeviceLayerProperties =
+     VkPhysicalDevice -- ^ physicalDevice
+                      ->
+       Ptr Word32 -- ^ pPropertyCount
+                  -> Ptr VkLayerProperties -- ^ pProperties
+                                           -> IO VkResult
+
+type PFN_vkEnumerateDeviceLayerProperties =
+     FunPtr HS_vkEnumerateDeviceLayerProperties
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkEnumerateDeviceLayerProperties ::
+               PFN_vkEnumerateDeviceLayerProperties ->
+                 HS_vkEnumerateDeviceLayerProperties
+
+foreign import ccall safe "dynamic"
+               unwrapVkEnumerateDeviceLayerPropertiesSafe ::
+               PFN_vkEnumerateDeviceLayerProperties ->
+                 HS_vkEnumerateDeviceLayerProperties
+
+instance VulkanProc "vkEnumerateDeviceLayerProperties" where
+        type VkProcType "vkEnumerateDeviceLayerProperties" =
+             HS_vkEnumerateDeviceLayerProperties
+        vkProcSymbol = _VkEnumerateDeviceLayerProperties
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkEnumerateDeviceLayerProperties
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkEnumerateDeviceLayerPropertiesSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkGetDeviceQueue :: CString
+
+pattern VkGetDeviceQueue <- (is_VkGetDeviceQueue -> True)
+  where VkGetDeviceQueue = _VkGetDeviceQueue
+
+{-# INLINE _VkGetDeviceQueue #-}
+
+_VkGetDeviceQueue :: CString
+_VkGetDeviceQueue = Ptr "vkGetDeviceQueue\NUL"##
+
+{-# INLINE is_VkGetDeviceQueue #-}
+
+is_VkGetDeviceQueue :: CString -> Bool
+is_VkGetDeviceQueue = (EQ ==) . cmpCStrings _VkGetDeviceQueue
+
+type VkGetDeviceQueue = "vkGetDeviceQueue"
+
+-- |
+-- > void vkGetDeviceQueue
+-- >     ( VkDevice device
+-- >     , uint32_t queueFamilyIndex
+-- >     , uint32_t queueIndex
+-- >     , VkQueue* pQueue
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDeviceQueue vkGetDeviceQueue registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetDeviceQueue <- vkGetDeviceProc @VkGetDeviceQueue vkDevice
+--
+-- or less efficient:
+--
+-- > myGetDeviceQueue <- vkGetProc @VkGetDeviceQueue
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkGetDeviceQueue" vkGetDeviceQueue ::
+               VkDevice -- ^ device
+                        -> Word32 -- ^ queueFamilyIndex
+                                  -> Word32 -- ^ queueIndex
+                                            -> Ptr VkQueue -- ^ pQueue
+                                                           -> IO ()
+
+##else
+vkGetDeviceQueue ::
+                 VkDevice -- ^ device
+                          -> Word32 -- ^ queueFamilyIndex
+                                    -> Word32 -- ^ queueIndex
+                                              -> Ptr VkQueue -- ^ pQueue
+                                                             -> IO ()
+vkGetDeviceQueue
+  = unsafeDupablePerformIO (vkGetProc @VkGetDeviceQueue)
+
+{-# NOINLINE vkGetDeviceQueue #-}
+##endif
+
+-- |
+-- > void vkGetDeviceQueue
+-- >     ( VkDevice device
+-- >     , uint32_t queueFamilyIndex
+-- >     , uint32_t queueIndex
+-- >     , VkQueue* pQueue
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDeviceQueue vkGetDeviceQueue registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetDeviceQueue <- vkGetDeviceProc @VkGetDeviceQueue vkDevice
+--
+-- or less efficient:
+--
+-- > myGetDeviceQueue <- vkGetProc @VkGetDeviceQueue
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkGetDeviceQueue" vkGetDeviceQueueSafe
+               :: VkDevice -- ^ device
+                           -> Word32 -- ^ queueFamilyIndex
+                                     -> Word32 -- ^ queueIndex
+                                               -> Ptr VkQueue -- ^ pQueue
+                                                              -> IO ()
+
+##else
+vkGetDeviceQueueSafe ::
+                     VkDevice -- ^ device
+                              -> Word32 -- ^ queueFamilyIndex
+                                        -> Word32 -- ^ queueIndex
+                                                  -> Ptr VkQueue -- ^ pQueue
+                                                                 -> IO ()
+vkGetDeviceQueueSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkGetDeviceQueue)
+
+{-# NOINLINE vkGetDeviceQueueSafe #-}
+##endif
+
+-- | > void vkGetDeviceQueue
+--   >     ( VkDevice device
+--   >     , uint32_t queueFamilyIndex
+--   >     , uint32_t queueIndex
+--   >     , VkQueue* pQueue
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDeviceQueue vkGetDeviceQueue registry at www.khronos.org>
+type HS_vkGetDeviceQueue =
+     VkDevice -- ^ device
+              -> Word32 -- ^ queueFamilyIndex
+                        -> Word32 -- ^ queueIndex
+                                  -> Ptr VkQueue -- ^ pQueue
+                                                 -> IO ()
+
+type PFN_vkGetDeviceQueue = FunPtr HS_vkGetDeviceQueue
+
+foreign import ccall unsafe "dynamic" unwrapVkGetDeviceQueue ::
+               PFN_vkGetDeviceQueue -> HS_vkGetDeviceQueue
+
+foreign import ccall safe "dynamic" unwrapVkGetDeviceQueueSafe ::
+               PFN_vkGetDeviceQueue -> HS_vkGetDeviceQueue
+
+instance VulkanProc "vkGetDeviceQueue" where
+        type VkProcType "vkGetDeviceQueue" = HS_vkGetDeviceQueue
+        vkProcSymbol = _VkGetDeviceQueue
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkGetDeviceQueue
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkGetDeviceQueueSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkQueueSubmit :: CString
+
+pattern VkQueueSubmit <- (is_VkQueueSubmit -> True)
+  where VkQueueSubmit = _VkQueueSubmit
+
+{-# INLINE _VkQueueSubmit #-}
+
+_VkQueueSubmit :: CString
+_VkQueueSubmit = Ptr "vkQueueSubmit\NUL"##
+
+{-# INLINE is_VkQueueSubmit #-}
+
+is_VkQueueSubmit :: CString -> Bool
+is_VkQueueSubmit = (EQ ==) . cmpCStrings _VkQueueSubmit
+
+type VkQueueSubmit = "vkQueueSubmit"
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
+--
+-- > VkResult vkQueueSubmit
+-- >     ( VkQueue queue
+-- >     , uint32_t submitCount
+-- >     , const VkSubmitInfo* pSubmits
+-- >     , VkFence fence
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkQueueSubmit vkQueueSubmit registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myQueueSubmit <- vkGetInstanceProc @VkQueueSubmit vkInstance
+--
+-- or less efficient:
+--
+-- > myQueueSubmit <- vkGetProc @VkQueueSubmit
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkQueueSubmit" vkQueueSubmit ::
+               VkQueue -- ^ queue
+                       -> Word32 -- ^ submitCount
+                                 -> Ptr VkSubmitInfo -- ^ pSubmits
+                                                     -> VkFence -- ^ fence
+                                                                -> IO VkResult
+
+##else
+vkQueueSubmit ::
+              VkQueue -- ^ queue
+                      -> Word32 -- ^ submitCount
+                                -> Ptr VkSubmitInfo -- ^ pSubmits
+                                                    -> VkFence -- ^ fence
+                                                               -> IO VkResult
+vkQueueSubmit = unsafeDupablePerformIO (vkGetProc @VkQueueSubmit)
+
+{-# NOINLINE vkQueueSubmit #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
+--
+-- > VkResult vkQueueSubmit
+-- >     ( VkQueue queue
+-- >     , uint32_t submitCount
+-- >     , const VkSubmitInfo* pSubmits
+-- >     , VkFence fence
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkQueueSubmit vkQueueSubmit registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myQueueSubmit <- vkGetInstanceProc @VkQueueSubmit vkInstance
+--
+-- or less efficient:
+--
+-- > myQueueSubmit <- vkGetProc @VkQueueSubmit
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkQueueSubmit" vkQueueSubmitSafe ::
+               VkQueue -- ^ queue
+                       -> Word32 -- ^ submitCount
+                                 -> Ptr VkSubmitInfo -- ^ pSubmits
+                                                     -> VkFence -- ^ fence
+                                                                -> IO VkResult
+
+##else
+vkQueueSubmitSafe ::
+                  VkQueue -- ^ queue
+                          -> Word32 -- ^ submitCount
+                                    -> Ptr VkSubmitInfo -- ^ pSubmits
+                                                        -> VkFence -- ^ fence
+                                                                   -> IO VkResult
+vkQueueSubmitSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkQueueSubmit)
+
+{-# NOINLINE vkQueueSubmitSafe #-}
+##endif
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
+--
+--   > VkResult vkQueueSubmit
+--   >     ( VkQueue queue
+--   >     , uint32_t submitCount
+--   >     , const VkSubmitInfo* pSubmits
+--   >     , VkFence fence
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkQueueSubmit vkQueueSubmit registry at www.khronos.org>
+type HS_vkQueueSubmit =
+     VkQueue -- ^ queue
+             -> Word32 -- ^ submitCount
+                       -> Ptr VkSubmitInfo -- ^ pSubmits
+                                           -> VkFence -- ^ fence
+                                                      -> IO VkResult
+
+type PFN_vkQueueSubmit = FunPtr HS_vkQueueSubmit
+
+foreign import ccall unsafe "dynamic" unwrapVkQueueSubmit ::
+               PFN_vkQueueSubmit -> HS_vkQueueSubmit
+
+foreign import ccall safe "dynamic" unwrapVkQueueSubmitSafe ::
+               PFN_vkQueueSubmit -> HS_vkQueueSubmit
+
+instance VulkanProc "vkQueueSubmit" where
+        type VkProcType "vkQueueSubmit" = HS_vkQueueSubmit
+        vkProcSymbol = _VkQueueSubmit
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkQueueSubmit
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkQueueSubmitSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkQueueWaitIdle :: CString
+
+pattern VkQueueWaitIdle <- (is_VkQueueWaitIdle -> True)
+  where VkQueueWaitIdle = _VkQueueWaitIdle
+
+{-# INLINE _VkQueueWaitIdle #-}
+
+_VkQueueWaitIdle :: CString
+_VkQueueWaitIdle = Ptr "vkQueueWaitIdle\NUL"##
+
+{-# INLINE is_VkQueueWaitIdle #-}
+
+is_VkQueueWaitIdle :: CString -> Bool
+is_VkQueueWaitIdle = (EQ ==) . cmpCStrings _VkQueueWaitIdle
+
+type VkQueueWaitIdle = "vkQueueWaitIdle"
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
+--
+-- > VkResult vkQueueWaitIdle
+-- >     ( VkQueue queue
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkQueueWaitIdle vkQueueWaitIdle registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myQueueWaitIdle <- vkGetInstanceProc @VkQueueWaitIdle vkInstance
+--
+-- or less efficient:
+--
+-- > myQueueWaitIdle <- vkGetProc @VkQueueWaitIdle
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkQueueWaitIdle" vkQueueWaitIdle ::
+               VkQueue -- ^ queue
+                       -> IO VkResult
+
+##else
+vkQueueWaitIdle :: VkQueue -- ^ queue
+                           -> IO VkResult
+vkQueueWaitIdle
+  = unsafeDupablePerformIO (vkGetProc @VkQueueWaitIdle)
+
+{-# NOINLINE vkQueueWaitIdle #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
+--
+-- > VkResult vkQueueWaitIdle
+-- >     ( VkQueue queue
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkQueueWaitIdle vkQueueWaitIdle registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myQueueWaitIdle <- vkGetInstanceProc @VkQueueWaitIdle vkInstance
+--
+-- or less efficient:
+--
+-- > myQueueWaitIdle <- vkGetProc @VkQueueWaitIdle
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkQueueWaitIdle" vkQueueWaitIdleSafe ::
+               VkQueue -- ^ queue
+                       -> IO VkResult
+
+##else
+vkQueueWaitIdleSafe :: VkQueue -- ^ queue
+                               -> IO VkResult
+vkQueueWaitIdleSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkQueueWaitIdle)
+
+{-# NOINLINE vkQueueWaitIdleSafe #-}
+##endif
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
+--
+--   > VkResult vkQueueWaitIdle
+--   >     ( VkQueue queue
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkQueueWaitIdle vkQueueWaitIdle registry at www.khronos.org>
+type HS_vkQueueWaitIdle = VkQueue -- ^ queue
+                                  -> IO VkResult
+
+type PFN_vkQueueWaitIdle = FunPtr HS_vkQueueWaitIdle
+
+foreign import ccall unsafe "dynamic" unwrapVkQueueWaitIdle ::
+               PFN_vkQueueWaitIdle -> HS_vkQueueWaitIdle
+
+foreign import ccall safe "dynamic" unwrapVkQueueWaitIdleSafe ::
+               PFN_vkQueueWaitIdle -> HS_vkQueueWaitIdle
+
+instance VulkanProc "vkQueueWaitIdle" where
+        type VkProcType "vkQueueWaitIdle" = HS_vkQueueWaitIdle
+        vkProcSymbol = _VkQueueWaitIdle
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkQueueWaitIdle
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkQueueWaitIdleSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkDeviceWaitIdle :: CString
+
+pattern VkDeviceWaitIdle <- (is_VkDeviceWaitIdle -> True)
+  where VkDeviceWaitIdle = _VkDeviceWaitIdle
+
+{-# INLINE _VkDeviceWaitIdle #-}
+
+_VkDeviceWaitIdle :: CString
+_VkDeviceWaitIdle = Ptr "vkDeviceWaitIdle\NUL"##
+
+{-# INLINE is_VkDeviceWaitIdle #-}
+
+is_VkDeviceWaitIdle :: CString -> Bool
+is_VkDeviceWaitIdle = (EQ ==) . cmpCStrings _VkDeviceWaitIdle
+
+type VkDeviceWaitIdle = "vkDeviceWaitIdle"
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
+--
+-- > VkResult vkDeviceWaitIdle
+-- >     ( VkDevice device
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDeviceWaitIdle vkDeviceWaitIdle registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDeviceWaitIdle <- vkGetDeviceProc @VkDeviceWaitIdle vkDevice
+--
+-- or less efficient:
+--
+-- > myDeviceWaitIdle <- vkGetProc @VkDeviceWaitIdle
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkDeviceWaitIdle" vkDeviceWaitIdle ::
+               VkDevice -- ^ device
+                        -> IO VkResult
+
+##else
+vkDeviceWaitIdle :: VkDevice -- ^ device
+                             -> IO VkResult
+vkDeviceWaitIdle
+  = unsafeDupablePerformIO (vkGetProc @VkDeviceWaitIdle)
+
+{-# NOINLINE vkDeviceWaitIdle #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
+--
+-- > VkResult vkDeviceWaitIdle
+-- >     ( VkDevice device
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDeviceWaitIdle vkDeviceWaitIdle registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDeviceWaitIdle <- vkGetDeviceProc @VkDeviceWaitIdle vkDevice
+--
+-- or less efficient:
+--
+-- > myDeviceWaitIdle <- vkGetProc @VkDeviceWaitIdle
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkDeviceWaitIdle" vkDeviceWaitIdleSafe
+               :: VkDevice -- ^ device
+                           -> IO VkResult
+
+##else
+vkDeviceWaitIdleSafe :: VkDevice -- ^ device
+                                 -> IO VkResult
+vkDeviceWaitIdleSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkDeviceWaitIdle)
+
+{-# NOINLINE vkDeviceWaitIdleSafe #-}
+##endif
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
+--
+--   > VkResult vkDeviceWaitIdle
+--   >     ( VkDevice device
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDeviceWaitIdle vkDeviceWaitIdle registry at www.khronos.org>
+type HS_vkDeviceWaitIdle = VkDevice -- ^ device
+                                    -> IO VkResult
+
+type PFN_vkDeviceWaitIdle = FunPtr HS_vkDeviceWaitIdle
+
+foreign import ccall unsafe "dynamic" unwrapVkDeviceWaitIdle ::
+               PFN_vkDeviceWaitIdle -> HS_vkDeviceWaitIdle
+
+foreign import ccall safe "dynamic" unwrapVkDeviceWaitIdleSafe ::
+               PFN_vkDeviceWaitIdle -> HS_vkDeviceWaitIdle
+
+instance VulkanProc "vkDeviceWaitIdle" where
+        type VkProcType "vkDeviceWaitIdle" = HS_vkDeviceWaitIdle
+        vkProcSymbol = _VkDeviceWaitIdle
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkDeviceWaitIdle
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkDeviceWaitIdleSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkAllocateMemory :: CString
+
+pattern VkAllocateMemory <- (is_VkAllocateMemory -> True)
+  where VkAllocateMemory = _VkAllocateMemory
+
+{-# INLINE _VkAllocateMemory #-}
+
+_VkAllocateMemory :: CString
+_VkAllocateMemory = Ptr "vkAllocateMemory\NUL"##
+
+{-# INLINE is_VkAllocateMemory #-}
+
+is_VkAllocateMemory :: CString -> Bool
+is_VkAllocateMemory = (EQ ==) . cmpCStrings _VkAllocateMemory
+
+type VkAllocateMemory = "vkAllocateMemory"
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_TOO_MANY_OBJECTS', 'VK_ERROR_INVALID_EXTERNAL_HANDLE'.
+--
+-- > VkResult vkAllocateMemory
+-- >     ( VkDevice device
+-- >     , const VkMemoryAllocateInfo* pAllocateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkDeviceMemory* pMemory
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkAllocateMemory vkAllocateMemory registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myAllocateMemory <- vkGetDeviceProc @VkAllocateMemory vkDevice
+--
+-- or less efficient:
+--
+-- > myAllocateMemory <- vkGetProc @VkAllocateMemory
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkAllocateMemory" vkAllocateMemory ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkMemoryAllocateInfo -- ^ pAllocateInfo
+                                          ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkDeviceMemory -- ^ pMemory
+                                                                   -> IO VkResult
+
+##else
+vkAllocateMemory ::
+                 VkDevice -- ^ device
+                          ->
+                   Ptr VkMemoryAllocateInfo -- ^ pAllocateInfo
+                                            ->
+                     Ptr VkAllocationCallbacks -- ^ pAllocator
+                                               -> Ptr VkDeviceMemory -- ^ pMemory
+                                                                     -> IO VkResult
+vkAllocateMemory
+  = unsafeDupablePerformIO (vkGetProc @VkAllocateMemory)
+
+{-# NOINLINE vkAllocateMemory #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_TOO_MANY_OBJECTS', 'VK_ERROR_INVALID_EXTERNAL_HANDLE'.
+--
+-- > VkResult vkAllocateMemory
+-- >     ( VkDevice device
+-- >     , const VkMemoryAllocateInfo* pAllocateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkDeviceMemory* pMemory
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkAllocateMemory vkAllocateMemory registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myAllocateMemory <- vkGetDeviceProc @VkAllocateMemory vkDevice
+--
+-- or less efficient:
+--
+-- > myAllocateMemory <- vkGetProc @VkAllocateMemory
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkAllocateMemory" vkAllocateMemorySafe
+               ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkMemoryAllocateInfo -- ^ pAllocateInfo
+                                          ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkDeviceMemory -- ^ pMemory
+                                                                   -> IO VkResult
+
+##else
+vkAllocateMemorySafe ::
+                     VkDevice -- ^ device
+                              ->
+                       Ptr VkMemoryAllocateInfo -- ^ pAllocateInfo
+                                                ->
+                         Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                   -> Ptr VkDeviceMemory -- ^ pMemory
+                                                                         -> IO VkResult
+vkAllocateMemorySafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkAllocateMemory)
+
+{-# NOINLINE vkAllocateMemorySafe #-}
+##endif
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_TOO_MANY_OBJECTS', 'VK_ERROR_INVALID_EXTERNAL_HANDLE'.
+--
+--   > VkResult vkAllocateMemory
+--   >     ( VkDevice device
+--   >     , const VkMemoryAllocateInfo* pAllocateInfo
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     , VkDeviceMemory* pMemory
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkAllocateMemory vkAllocateMemory registry at www.khronos.org>
+type HS_vkAllocateMemory =
+     VkDevice -- ^ device
+              ->
+       Ptr VkMemoryAllocateInfo -- ^ pAllocateInfo
+                                ->
+         Ptr VkAllocationCallbacks -- ^ pAllocator
+                                   -> Ptr VkDeviceMemory -- ^ pMemory
+                                                         -> IO VkResult
+
+type PFN_vkAllocateMemory = FunPtr HS_vkAllocateMemory
+
+foreign import ccall unsafe "dynamic" unwrapVkAllocateMemory ::
+               PFN_vkAllocateMemory -> HS_vkAllocateMemory
+
+foreign import ccall safe "dynamic" unwrapVkAllocateMemorySafe ::
+               PFN_vkAllocateMemory -> HS_vkAllocateMemory
+
+instance VulkanProc "vkAllocateMemory" where
+        type VkProcType "vkAllocateMemory" = HS_vkAllocateMemory
+        vkProcSymbol = _VkAllocateMemory
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkAllocateMemory
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkAllocateMemorySafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkFreeMemory :: CString
+
+pattern VkFreeMemory <- (is_VkFreeMemory -> True)
+  where VkFreeMemory = _VkFreeMemory
+
+{-# INLINE _VkFreeMemory #-}
+
+_VkFreeMemory :: CString
+_VkFreeMemory = Ptr "vkFreeMemory\NUL"##
+
+{-# INLINE is_VkFreeMemory #-}
+
+is_VkFreeMemory :: CString -> Bool
+is_VkFreeMemory = (EQ ==) . cmpCStrings _VkFreeMemory
+
+type VkFreeMemory = "vkFreeMemory"
+
+-- |
+-- > void vkFreeMemory
+-- >     ( VkDevice device
+-- >     , VkDeviceMemory memory
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkFreeMemory vkFreeMemory registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myFreeMemory <- vkGetDeviceProc @VkFreeMemory vkDevice
+--
+-- or less efficient:
+--
+-- > myFreeMemory <- vkGetProc @VkFreeMemory
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkFreeMemory" vkFreeMemory ::
+               VkDevice -- ^ device
+                        -> VkDeviceMemory -- ^ memory
+                                          -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                       -> IO ()
+
+##else
+vkFreeMemory ::
+             VkDevice -- ^ device
+                      -> VkDeviceMemory -- ^ memory
+                                        -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                     -> IO ()
+vkFreeMemory = unsafeDupablePerformIO (vkGetProc @VkFreeMemory)
+
+{-# NOINLINE vkFreeMemory #-}
+##endif
+
+-- |
+-- > void vkFreeMemory
+-- >     ( VkDevice device
+-- >     , VkDeviceMemory memory
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkFreeMemory vkFreeMemory registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myFreeMemory <- vkGetDeviceProc @VkFreeMemory vkDevice
+--
+-- or less efficient:
+--
+-- > myFreeMemory <- vkGetProc @VkFreeMemory
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkFreeMemory" vkFreeMemorySafe ::
+               VkDevice -- ^ device
+                        -> VkDeviceMemory -- ^ memory
+                                          -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                       -> IO ()
+
+##else
+vkFreeMemorySafe ::
+                 VkDevice -- ^ device
+                          -> VkDeviceMemory -- ^ memory
+                                            -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                         -> IO ()
+vkFreeMemorySafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkFreeMemory)
+
+{-# NOINLINE vkFreeMemorySafe #-}
+##endif
+
+-- | > void vkFreeMemory
+--   >     ( VkDevice device
+--   >     , VkDeviceMemory memory
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkFreeMemory vkFreeMemory registry at www.khronos.org>
+type HS_vkFreeMemory =
+     VkDevice -- ^ device
+              -> VkDeviceMemory -- ^ memory
+                                -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                             -> IO ()
+
+type PFN_vkFreeMemory = FunPtr HS_vkFreeMemory
+
+foreign import ccall unsafe "dynamic" unwrapVkFreeMemory ::
+               PFN_vkFreeMemory -> HS_vkFreeMemory
+
+foreign import ccall safe "dynamic" unwrapVkFreeMemorySafe ::
+               PFN_vkFreeMemory -> HS_vkFreeMemory
+
+instance VulkanProc "vkFreeMemory" where
+        type VkProcType "vkFreeMemory" = HS_vkFreeMemory
+        vkProcSymbol = _VkFreeMemory
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkFreeMemory
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkFreeMemorySafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkMapMemory :: CString
+
+pattern VkMapMemory <- (is_VkMapMemory -> True)
+  where VkMapMemory = _VkMapMemory
+
+{-# INLINE _VkMapMemory #-}
+
+_VkMapMemory :: CString
+_VkMapMemory = Ptr "vkMapMemory\NUL"##
+
+{-# INLINE is_VkMapMemory #-}
+
+is_VkMapMemory :: CString -> Bool
+is_VkMapMemory = (EQ ==) . cmpCStrings _VkMapMemory
+
+type VkMapMemory = "vkMapMemory"
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_MEMORY_MAP_FAILED'.
+--
+-- > VkResult vkMapMemory
+-- >     ( VkDevice device
+-- >     , VkDeviceMemory memory
+-- >     , VkDeviceSize offset
+-- >     , VkDeviceSize size
+-- >     , VkMemoryMapFlags flags
+-- >     , void** ppData
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkMapMemory vkMapMemory registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myMapMemory <- vkGetDeviceProc @VkMapMemory vkDevice
+--
+-- or less efficient:
+--
+-- > myMapMemory <- vkGetProc @VkMapMemory
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkMapMemory" vkMapMemory ::
+               VkDevice -- ^ device
+                        ->
+                 VkDeviceMemory -- ^ memory
+                                ->
+                   VkDeviceSize -- ^ offset
+                                ->
+                     VkDeviceSize -- ^ size
+                                  -> VkMemoryMapFlags -- ^ flags
+                                                      -> Ptr (Ptr Void) -- ^ ppData
+                                                                        -> IO VkResult
+
+##else
+vkMapMemory ::
+            VkDevice -- ^ device
+                     ->
+              VkDeviceMemory -- ^ memory
+                             ->
+                VkDeviceSize -- ^ offset
+                             ->
+                  VkDeviceSize -- ^ size
+                               -> VkMemoryMapFlags -- ^ flags
+                                                   -> Ptr (Ptr Void) -- ^ ppData
+                                                                     -> IO VkResult
+vkMapMemory = unsafeDupablePerformIO (vkGetProc @VkMapMemory)
+
+{-# NOINLINE vkMapMemory #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_MEMORY_MAP_FAILED'.
+--
+-- > VkResult vkMapMemory
+-- >     ( VkDevice device
+-- >     , VkDeviceMemory memory
+-- >     , VkDeviceSize offset
+-- >     , VkDeviceSize size
+-- >     , VkMemoryMapFlags flags
+-- >     , void** ppData
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkMapMemory vkMapMemory registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myMapMemory <- vkGetDeviceProc @VkMapMemory vkDevice
+--
+-- or less efficient:
+--
+-- > myMapMemory <- vkGetProc @VkMapMemory
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkMapMemory" vkMapMemorySafe ::
+               VkDevice -- ^ device
+                        ->
+                 VkDeviceMemory -- ^ memory
+                                ->
+                   VkDeviceSize -- ^ offset
+                                ->
+                     VkDeviceSize -- ^ size
+                                  -> VkMemoryMapFlags -- ^ flags
+                                                      -> Ptr (Ptr Void) -- ^ ppData
+                                                                        -> IO VkResult
+
+##else
+vkMapMemorySafe ::
+                VkDevice -- ^ device
+                         ->
+                  VkDeviceMemory -- ^ memory
+                                 ->
+                    VkDeviceSize -- ^ offset
+                                 ->
+                      VkDeviceSize -- ^ size
+                                   -> VkMemoryMapFlags -- ^ flags
+                                                       -> Ptr (Ptr Void) -- ^ ppData
+                                                                         -> IO VkResult
+vkMapMemorySafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkMapMemory)
+
+{-# NOINLINE vkMapMemorySafe #-}
+##endif
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_MEMORY_MAP_FAILED'.
+--
+--   > VkResult vkMapMemory
+--   >     ( VkDevice device
+--   >     , VkDeviceMemory memory
+--   >     , VkDeviceSize offset
+--   >     , VkDeviceSize size
+--   >     , VkMemoryMapFlags flags
+--   >     , void** ppData
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkMapMemory vkMapMemory registry at www.khronos.org>
+type HS_vkMapMemory =
+     VkDevice -- ^ device
+              ->
+       VkDeviceMemory -- ^ memory
+                      ->
+         VkDeviceSize -- ^ offset
+                      ->
+           VkDeviceSize -- ^ size
+                        -> VkMemoryMapFlags -- ^ flags
+                                            -> Ptr (Ptr Void) -- ^ ppData
+                                                              -> IO VkResult
+
+type PFN_vkMapMemory = FunPtr HS_vkMapMemory
+
+foreign import ccall unsafe "dynamic" unwrapVkMapMemory ::
+               PFN_vkMapMemory -> HS_vkMapMemory
+
+foreign import ccall safe "dynamic" unwrapVkMapMemorySafe ::
+               PFN_vkMapMemory -> HS_vkMapMemory
+
+instance VulkanProc "vkMapMemory" where
+        type VkProcType "vkMapMemory" = HS_vkMapMemory
+        vkProcSymbol = _VkMapMemory
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkMapMemory
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkMapMemorySafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkUnmapMemory :: CString
+
+pattern VkUnmapMemory <- (is_VkUnmapMemory -> True)
+  where VkUnmapMemory = _VkUnmapMemory
+
+{-# INLINE _VkUnmapMemory #-}
+
+_VkUnmapMemory :: CString
+_VkUnmapMemory = Ptr "vkUnmapMemory\NUL"##
+
+{-# INLINE is_VkUnmapMemory #-}
+
+is_VkUnmapMemory :: CString -> Bool
+is_VkUnmapMemory = (EQ ==) . cmpCStrings _VkUnmapMemory
+
+type VkUnmapMemory = "vkUnmapMemory"
+
+-- |
+-- > void vkUnmapMemory
+-- >     ( VkDevice device
+-- >     , VkDeviceMemory memory
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkUnmapMemory vkUnmapMemory registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myUnmapMemory <- vkGetDeviceProc @VkUnmapMemory vkDevice
+--
+-- or less efficient:
+--
+-- > myUnmapMemory <- vkGetProc @VkUnmapMemory
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkUnmapMemory" vkUnmapMemory ::
+               VkDevice -- ^ device
+                        -> VkDeviceMemory -- ^ memory
+                                          -> IO ()
+
+##else
+vkUnmapMemory :: VkDevice -- ^ device
+                          -> VkDeviceMemory -- ^ memory
+                                            -> IO ()
+vkUnmapMemory = unsafeDupablePerformIO (vkGetProc @VkUnmapMemory)
+
+{-# NOINLINE vkUnmapMemory #-}
+##endif
+
+-- |
+-- > void vkUnmapMemory
+-- >     ( VkDevice device
+-- >     , VkDeviceMemory memory
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkUnmapMemory vkUnmapMemory registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myUnmapMemory <- vkGetDeviceProc @VkUnmapMemory vkDevice
+--
+-- or less efficient:
+--
+-- > myUnmapMemory <- vkGetProc @VkUnmapMemory
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkUnmapMemory" vkUnmapMemorySafe ::
+               VkDevice -- ^ device
+                        -> VkDeviceMemory -- ^ memory
+                                          -> IO ()
+
+##else
+vkUnmapMemorySafe :: VkDevice -- ^ device
+                              -> VkDeviceMemory -- ^ memory
+                                                -> IO ()
+vkUnmapMemorySafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkUnmapMemory)
+
+{-# NOINLINE vkUnmapMemorySafe #-}
+##endif
+
+-- | > void vkUnmapMemory
+--   >     ( VkDevice device
+--   >     , VkDeviceMemory memory
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkUnmapMemory vkUnmapMemory registry at www.khronos.org>
+type HS_vkUnmapMemory = VkDevice -- ^ device
+                                 -> VkDeviceMemory -- ^ memory
+                                                   -> IO ()
+
+type PFN_vkUnmapMemory = FunPtr HS_vkUnmapMemory
+
+foreign import ccall unsafe "dynamic" unwrapVkUnmapMemory ::
+               PFN_vkUnmapMemory -> HS_vkUnmapMemory
+
+foreign import ccall safe "dynamic" unwrapVkUnmapMemorySafe ::
+               PFN_vkUnmapMemory -> HS_vkUnmapMemory
+
+instance VulkanProc "vkUnmapMemory" where
+        type VkProcType "vkUnmapMemory" = HS_vkUnmapMemory
+        vkProcSymbol = _VkUnmapMemory
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkUnmapMemory
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkUnmapMemorySafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkFlushMappedMemoryRanges :: CString
+
+pattern VkFlushMappedMemoryRanges <-
+        (is_VkFlushMappedMemoryRanges -> True)
+  where VkFlushMappedMemoryRanges = _VkFlushMappedMemoryRanges
+
+{-# INLINE _VkFlushMappedMemoryRanges #-}
+
+_VkFlushMappedMemoryRanges :: CString
+_VkFlushMappedMemoryRanges = Ptr "vkFlushMappedMemoryRanges\NUL"##
+
+{-# INLINE is_VkFlushMappedMemoryRanges #-}
+
+is_VkFlushMappedMemoryRanges :: CString -> Bool
+is_VkFlushMappedMemoryRanges
+  = (EQ ==) . cmpCStrings _VkFlushMappedMemoryRanges
+
+type VkFlushMappedMemoryRanges = "vkFlushMappedMemoryRanges"
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkFlushMappedMemoryRanges
+-- >     ( VkDevice device
+-- >     , uint32_t memoryRangeCount
+-- >     , const VkMappedMemoryRange* pMemoryRanges
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkFlushMappedMemoryRanges vkFlushMappedMemoryRanges registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myFlushMappedMemoryRanges <- vkGetDeviceProc @VkFlushMappedMemoryRanges vkDevice
+--
+-- or less efficient:
+--
+-- > myFlushMappedMemoryRanges <- vkGetProc @VkFlushMappedMemoryRanges
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkFlushMappedMemoryRanges"
+               vkFlushMappedMemoryRanges ::
+               VkDevice -- ^ device
+                        -> Word32 -- ^ memoryRangeCount
+                                  -> Ptr VkMappedMemoryRange -- ^ pMemoryRanges
+                                                             -> IO VkResult
+
+##else
+vkFlushMappedMemoryRanges ::
+                          VkDevice -- ^ device
+                                   -> Word32 -- ^ memoryRangeCount
+                                             -> Ptr VkMappedMemoryRange -- ^ pMemoryRanges
+                                                                        -> IO VkResult
+vkFlushMappedMemoryRanges
+  = unsafeDupablePerformIO (vkGetProc @VkFlushMappedMemoryRanges)
+
+{-# NOINLINE vkFlushMappedMemoryRanges #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkFlushMappedMemoryRanges
+-- >     ( VkDevice device
+-- >     , uint32_t memoryRangeCount
+-- >     , const VkMappedMemoryRange* pMemoryRanges
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkFlushMappedMemoryRanges vkFlushMappedMemoryRanges registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myFlushMappedMemoryRanges <- vkGetDeviceProc @VkFlushMappedMemoryRanges vkDevice
+--
+-- or less efficient:
+--
+-- > myFlushMappedMemoryRanges <- vkGetProc @VkFlushMappedMemoryRanges
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkFlushMappedMemoryRanges"
+               vkFlushMappedMemoryRangesSafe ::
+               VkDevice -- ^ device
+                        -> Word32 -- ^ memoryRangeCount
+                                  -> Ptr VkMappedMemoryRange -- ^ pMemoryRanges
+                                                             -> IO VkResult
+
+##else
+vkFlushMappedMemoryRangesSafe ::
+                              VkDevice -- ^ device
+                                       -> Word32 -- ^ memoryRangeCount
+                                                 -> Ptr VkMappedMemoryRange -- ^ pMemoryRanges
+                                                                            -> IO VkResult
+vkFlushMappedMemoryRangesSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkFlushMappedMemoryRanges)
+
+{-# NOINLINE vkFlushMappedMemoryRangesSafe #-}
+##endif
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+--   > VkResult vkFlushMappedMemoryRanges
+--   >     ( VkDevice device
+--   >     , uint32_t memoryRangeCount
+--   >     , const VkMappedMemoryRange* pMemoryRanges
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkFlushMappedMemoryRanges vkFlushMappedMemoryRanges registry at www.khronos.org>
+type HS_vkFlushMappedMemoryRanges =
+     VkDevice -- ^ device
+              -> Word32 -- ^ memoryRangeCount
+                        -> Ptr VkMappedMemoryRange -- ^ pMemoryRanges
+                                                   -> IO VkResult
+
+type PFN_vkFlushMappedMemoryRanges =
+     FunPtr HS_vkFlushMappedMemoryRanges
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkFlushMappedMemoryRanges ::
+               PFN_vkFlushMappedMemoryRanges -> HS_vkFlushMappedMemoryRanges
+
+foreign import ccall safe "dynamic"
+               unwrapVkFlushMappedMemoryRangesSafe ::
+               PFN_vkFlushMappedMemoryRanges -> HS_vkFlushMappedMemoryRanges
+
+instance VulkanProc "vkFlushMappedMemoryRanges" where
+        type VkProcType "vkFlushMappedMemoryRanges" =
+             HS_vkFlushMappedMemoryRanges
+        vkProcSymbol = _VkFlushMappedMemoryRanges
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkFlushMappedMemoryRanges
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkFlushMappedMemoryRangesSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkInvalidateMappedMemoryRanges :: CString
+
+pattern VkInvalidateMappedMemoryRanges <-
+        (is_VkInvalidateMappedMemoryRanges -> True)
+  where VkInvalidateMappedMemoryRanges
+          = _VkInvalidateMappedMemoryRanges
+
+{-# INLINE _VkInvalidateMappedMemoryRanges #-}
+
+_VkInvalidateMappedMemoryRanges :: CString
+_VkInvalidateMappedMemoryRanges
+  = Ptr "vkInvalidateMappedMemoryRanges\NUL"##
+
+{-# INLINE is_VkInvalidateMappedMemoryRanges #-}
+
+is_VkInvalidateMappedMemoryRanges :: CString -> Bool
+is_VkInvalidateMappedMemoryRanges
+  = (EQ ==) . cmpCStrings _VkInvalidateMappedMemoryRanges
+
+type VkInvalidateMappedMemoryRanges =
+     "vkInvalidateMappedMemoryRanges"
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkInvalidateMappedMemoryRanges
+-- >     ( VkDevice device
+-- >     , uint32_t memoryRangeCount
+-- >     , const VkMappedMemoryRange* pMemoryRanges
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkInvalidateMappedMemoryRanges vkInvalidateMappedMemoryRanges registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myInvalidateMappedMemoryRanges <- vkGetDeviceProc @VkInvalidateMappedMemoryRanges vkDevice
+--
+-- or less efficient:
+--
+-- > myInvalidateMappedMemoryRanges <- vkGetProc @VkInvalidateMappedMemoryRanges
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkInvalidateMappedMemoryRanges"
+               vkInvalidateMappedMemoryRanges ::
+               VkDevice -- ^ device
+                        -> Word32 -- ^ memoryRangeCount
+                                  -> Ptr VkMappedMemoryRange -- ^ pMemoryRanges
+                                                             -> IO VkResult
+
+##else
+vkInvalidateMappedMemoryRanges ::
+                               VkDevice -- ^ device
+                                        -> Word32 -- ^ memoryRangeCount
+                                                  -> Ptr VkMappedMemoryRange -- ^ pMemoryRanges
+                                                                             -> IO VkResult
+vkInvalidateMappedMemoryRanges
+  = unsafeDupablePerformIO
+      (vkGetProc @VkInvalidateMappedMemoryRanges)
+
+{-# NOINLINE vkInvalidateMappedMemoryRanges #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkInvalidateMappedMemoryRanges
+-- >     ( VkDevice device
+-- >     , uint32_t memoryRangeCount
+-- >     , const VkMappedMemoryRange* pMemoryRanges
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkInvalidateMappedMemoryRanges vkInvalidateMappedMemoryRanges registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myInvalidateMappedMemoryRanges <- vkGetDeviceProc @VkInvalidateMappedMemoryRanges vkDevice
+--
+-- or less efficient:
+--
+-- > myInvalidateMappedMemoryRanges <- vkGetProc @VkInvalidateMappedMemoryRanges
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkInvalidateMappedMemoryRanges"
+               vkInvalidateMappedMemoryRangesSafe ::
+               VkDevice -- ^ device
+                        -> Word32 -- ^ memoryRangeCount
+                                  -> Ptr VkMappedMemoryRange -- ^ pMemoryRanges
+                                                             -> IO VkResult
+
+##else
+vkInvalidateMappedMemoryRangesSafe ::
+                                   VkDevice -- ^ device
+                                            -> Word32 -- ^ memoryRangeCount
+                                                      -> Ptr VkMappedMemoryRange -- ^ pMemoryRanges
+                                                                                 -> IO VkResult
+vkInvalidateMappedMemoryRangesSafe
+  = unsafeDupablePerformIO
+      (vkGetProcSafe @VkInvalidateMappedMemoryRanges)
+
+{-# NOINLINE vkInvalidateMappedMemoryRangesSafe #-}
+##endif
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+--   > VkResult vkInvalidateMappedMemoryRanges
+--   >     ( VkDevice device
+--   >     , uint32_t memoryRangeCount
+--   >     , const VkMappedMemoryRange* pMemoryRanges
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkInvalidateMappedMemoryRanges vkInvalidateMappedMemoryRanges registry at www.khronos.org>
+type HS_vkInvalidateMappedMemoryRanges =
+     VkDevice -- ^ device
+              -> Word32 -- ^ memoryRangeCount
+                        -> Ptr VkMappedMemoryRange -- ^ pMemoryRanges
+                                                   -> IO VkResult
+
+type PFN_vkInvalidateMappedMemoryRanges =
+     FunPtr HS_vkInvalidateMappedMemoryRanges
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkInvalidateMappedMemoryRanges ::
+               PFN_vkInvalidateMappedMemoryRanges ->
+                 HS_vkInvalidateMappedMemoryRanges
+
+foreign import ccall safe "dynamic"
+               unwrapVkInvalidateMappedMemoryRangesSafe ::
+               PFN_vkInvalidateMappedMemoryRanges ->
+                 HS_vkInvalidateMappedMemoryRanges
+
+instance VulkanProc "vkInvalidateMappedMemoryRanges" where
+        type VkProcType "vkInvalidateMappedMemoryRanges" =
+             HS_vkInvalidateMappedMemoryRanges
+        vkProcSymbol = _VkInvalidateMappedMemoryRanges
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkInvalidateMappedMemoryRanges
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkInvalidateMappedMemoryRangesSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkGetDeviceMemoryCommitment :: CString
+
+pattern VkGetDeviceMemoryCommitment <-
+        (is_VkGetDeviceMemoryCommitment -> True)
+  where VkGetDeviceMemoryCommitment = _VkGetDeviceMemoryCommitment
+
+{-# INLINE _VkGetDeviceMemoryCommitment #-}
+
+_VkGetDeviceMemoryCommitment :: CString
+_VkGetDeviceMemoryCommitment
+  = Ptr "vkGetDeviceMemoryCommitment\NUL"##
+
+{-# INLINE is_VkGetDeviceMemoryCommitment #-}
+
+is_VkGetDeviceMemoryCommitment :: CString -> Bool
+is_VkGetDeviceMemoryCommitment
+  = (EQ ==) . cmpCStrings _VkGetDeviceMemoryCommitment
+
+type VkGetDeviceMemoryCommitment = "vkGetDeviceMemoryCommitment"
+
+-- |
+-- > void vkGetDeviceMemoryCommitment
+-- >     ( VkDevice device
+-- >     , VkDeviceMemory memory
+-- >     , VkDeviceSize* pCommittedMemoryInBytes
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDeviceMemoryCommitment vkGetDeviceMemoryCommitment registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetDeviceMemoryCommitment <- vkGetDeviceProc @VkGetDeviceMemoryCommitment vkDevice
+--
+-- or less efficient:
+--
+-- > myGetDeviceMemoryCommitment <- vkGetProc @VkGetDeviceMemoryCommitment
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkGetDeviceMemoryCommitment"
+               vkGetDeviceMemoryCommitment ::
+               VkDevice -- ^ device
+                        -> VkDeviceMemory -- ^ memory
+                                          -> Ptr VkDeviceSize -- ^ pCommittedMemoryInBytes
+                                                              -> IO ()
+
+##else
+vkGetDeviceMemoryCommitment ::
+                            VkDevice -- ^ device
+                                     -> VkDeviceMemory -- ^ memory
+                                                       -> Ptr VkDeviceSize -- ^ pCommittedMemoryInBytes
+                                                                           -> IO ()
+vkGetDeviceMemoryCommitment
+  = unsafeDupablePerformIO (vkGetProc @VkGetDeviceMemoryCommitment)
+
+{-# NOINLINE vkGetDeviceMemoryCommitment #-}
+##endif
+
+-- |
+-- > void vkGetDeviceMemoryCommitment
+-- >     ( VkDevice device
+-- >     , VkDeviceMemory memory
+-- >     , VkDeviceSize* pCommittedMemoryInBytes
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDeviceMemoryCommitment vkGetDeviceMemoryCommitment registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetDeviceMemoryCommitment <- vkGetDeviceProc @VkGetDeviceMemoryCommitment vkDevice
+--
+-- or less efficient:
+--
+-- > myGetDeviceMemoryCommitment <- vkGetProc @VkGetDeviceMemoryCommitment
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkGetDeviceMemoryCommitment"
+               vkGetDeviceMemoryCommitmentSafe ::
+               VkDevice -- ^ device
+                        -> VkDeviceMemory -- ^ memory
+                                          -> Ptr VkDeviceSize -- ^ pCommittedMemoryInBytes
+                                                              -> IO ()
+
+##else
+vkGetDeviceMemoryCommitmentSafe ::
+                                VkDevice -- ^ device
+                                         -> VkDeviceMemory -- ^ memory
+                                                           -> Ptr VkDeviceSize -- ^ pCommittedMemoryInBytes
+                                                                               -> IO ()
+vkGetDeviceMemoryCommitmentSafe
+  = unsafeDupablePerformIO
+      (vkGetProcSafe @VkGetDeviceMemoryCommitment)
+
+{-# NOINLINE vkGetDeviceMemoryCommitmentSafe #-}
+##endif
+
+-- | > void vkGetDeviceMemoryCommitment
+--   >     ( VkDevice device
+--   >     , VkDeviceMemory memory
+--   >     , VkDeviceSize* pCommittedMemoryInBytes
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDeviceMemoryCommitment vkGetDeviceMemoryCommitment registry at www.khronos.org>
+type HS_vkGetDeviceMemoryCommitment =
+     VkDevice -- ^ device
+              -> VkDeviceMemory -- ^ memory
+                                -> Ptr VkDeviceSize -- ^ pCommittedMemoryInBytes
+                                                    -> IO ()
+
+type PFN_vkGetDeviceMemoryCommitment =
+     FunPtr HS_vkGetDeviceMemoryCommitment
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkGetDeviceMemoryCommitment ::
+               PFN_vkGetDeviceMemoryCommitment -> HS_vkGetDeviceMemoryCommitment
+
+foreign import ccall safe "dynamic"
+               unwrapVkGetDeviceMemoryCommitmentSafe ::
+               PFN_vkGetDeviceMemoryCommitment -> HS_vkGetDeviceMemoryCommitment
+
+instance VulkanProc "vkGetDeviceMemoryCommitment" where
+        type VkProcType "vkGetDeviceMemoryCommitment" =
+             HS_vkGetDeviceMemoryCommitment
+        vkProcSymbol = _VkGetDeviceMemoryCommitment
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkGetDeviceMemoryCommitment
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkGetDeviceMemoryCommitmentSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkBindBufferMemory :: CString
+
+pattern VkBindBufferMemory <- (is_VkBindBufferMemory -> True)
+  where VkBindBufferMemory = _VkBindBufferMemory
+
+{-# INLINE _VkBindBufferMemory #-}
+
+_VkBindBufferMemory :: CString
+_VkBindBufferMemory = Ptr "vkBindBufferMemory\NUL"##
+
+{-# INLINE is_VkBindBufferMemory #-}
+
+is_VkBindBufferMemory :: CString -> Bool
+is_VkBindBufferMemory = (EQ ==) . cmpCStrings _VkBindBufferMemory
+
+type VkBindBufferMemory = "vkBindBufferMemory"
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkBindBufferMemory
+-- >     ( VkDevice device
+-- >     , VkBuffer buffer
+-- >     , VkDeviceMemory memory
+-- >     , VkDeviceSize memoryOffset
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkBindBufferMemory vkBindBufferMemory registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myBindBufferMemory <- vkGetDeviceProc @VkBindBufferMemory vkDevice
+--
+-- or less efficient:
+--
+-- > myBindBufferMemory <- vkGetProc @VkBindBufferMemory
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkBindBufferMemory" vkBindBufferMemory
+               ::
+               VkDevice -- ^ device
+                        ->
+                 VkBuffer -- ^ buffer
+                          -> VkDeviceMemory -- ^ memory
+                                            -> VkDeviceSize -- ^ memoryOffset
+                                                            -> IO VkResult
+
+##else
+vkBindBufferMemory ::
+                   VkDevice -- ^ device
+                            ->
+                     VkBuffer -- ^ buffer
+                              -> VkDeviceMemory -- ^ memory
+                                                -> VkDeviceSize -- ^ memoryOffset
+                                                                -> IO VkResult
+vkBindBufferMemory
+  = unsafeDupablePerformIO (vkGetProc @VkBindBufferMemory)
+
+{-# NOINLINE vkBindBufferMemory #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkBindBufferMemory
+-- >     ( VkDevice device
+-- >     , VkBuffer buffer
+-- >     , VkDeviceMemory memory
+-- >     , VkDeviceSize memoryOffset
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkBindBufferMemory vkBindBufferMemory registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myBindBufferMemory <- vkGetDeviceProc @VkBindBufferMemory vkDevice
+--
+-- or less efficient:
+--
+-- > myBindBufferMemory <- vkGetProc @VkBindBufferMemory
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkBindBufferMemory"
+               vkBindBufferMemorySafe ::
+               VkDevice -- ^ device
+                        ->
+                 VkBuffer -- ^ buffer
+                          -> VkDeviceMemory -- ^ memory
+                                            -> VkDeviceSize -- ^ memoryOffset
+                                                            -> IO VkResult
+
+##else
+vkBindBufferMemorySafe ::
+                       VkDevice -- ^ device
+                                ->
+                         VkBuffer -- ^ buffer
+                                  -> VkDeviceMemory -- ^ memory
+                                                    -> VkDeviceSize -- ^ memoryOffset
+                                                                    -> IO VkResult
+vkBindBufferMemorySafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkBindBufferMemory)
+
+{-# NOINLINE vkBindBufferMemorySafe #-}
+##endif
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+--   > VkResult vkBindBufferMemory
+--   >     ( VkDevice device
+--   >     , VkBuffer buffer
+--   >     , VkDeviceMemory memory
+--   >     , VkDeviceSize memoryOffset
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkBindBufferMemory vkBindBufferMemory registry at www.khronos.org>
+type HS_vkBindBufferMemory =
+     VkDevice -- ^ device
+              ->
+       VkBuffer -- ^ buffer
+                -> VkDeviceMemory -- ^ memory
+                                  -> VkDeviceSize -- ^ memoryOffset
+                                                  -> IO VkResult
+
+type PFN_vkBindBufferMemory = FunPtr HS_vkBindBufferMemory
+
+foreign import ccall unsafe "dynamic" unwrapVkBindBufferMemory ::
+               PFN_vkBindBufferMemory -> HS_vkBindBufferMemory
+
+foreign import ccall safe "dynamic" unwrapVkBindBufferMemorySafe ::
+               PFN_vkBindBufferMemory -> HS_vkBindBufferMemory
+
+instance VulkanProc "vkBindBufferMemory" where
+        type VkProcType "vkBindBufferMemory" = HS_vkBindBufferMemory
+        vkProcSymbol = _VkBindBufferMemory
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkBindBufferMemory
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkBindBufferMemorySafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkBindImageMemory :: CString
+
+pattern VkBindImageMemory <- (is_VkBindImageMemory -> True)
+  where VkBindImageMemory = _VkBindImageMemory
+
+{-# INLINE _VkBindImageMemory #-}
+
+_VkBindImageMemory :: CString
+_VkBindImageMemory = Ptr "vkBindImageMemory\NUL"##
+
+{-# INLINE is_VkBindImageMemory #-}
+
+is_VkBindImageMemory :: CString -> Bool
+is_VkBindImageMemory = (EQ ==) . cmpCStrings _VkBindImageMemory
+
+type VkBindImageMemory = "vkBindImageMemory"
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkBindImageMemory
+-- >     ( VkDevice device
+-- >     , VkImage image
+-- >     , VkDeviceMemory memory
+-- >     , VkDeviceSize memoryOffset
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkBindImageMemory vkBindImageMemory registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myBindImageMemory <- vkGetDeviceProc @VkBindImageMemory vkDevice
+--
+-- or less efficient:
+--
+-- > myBindImageMemory <- vkGetProc @VkBindImageMemory
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkBindImageMemory" vkBindImageMemory
+               ::
+               VkDevice -- ^ device
+                        ->
+                 VkImage -- ^ image
+                         -> VkDeviceMemory -- ^ memory
+                                           -> VkDeviceSize -- ^ memoryOffset
+                                                           -> IO VkResult
+
+##else
+vkBindImageMemory ::
+                  VkDevice -- ^ device
+                           ->
+                    VkImage -- ^ image
+                            -> VkDeviceMemory -- ^ memory
+                                              -> VkDeviceSize -- ^ memoryOffset
+                                                              -> IO VkResult
+vkBindImageMemory
+  = unsafeDupablePerformIO (vkGetProc @VkBindImageMemory)
+
+{-# NOINLINE vkBindImageMemory #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkBindImageMemory
+-- >     ( VkDevice device
+-- >     , VkImage image
+-- >     , VkDeviceMemory memory
+-- >     , VkDeviceSize memoryOffset
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkBindImageMemory vkBindImageMemory registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myBindImageMemory <- vkGetDeviceProc @VkBindImageMemory vkDevice
+--
+-- or less efficient:
+--
+-- > myBindImageMemory <- vkGetProc @VkBindImageMemory
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkBindImageMemory" vkBindImageMemorySafe
+               ::
+               VkDevice -- ^ device
+                        ->
+                 VkImage -- ^ image
+                         -> VkDeviceMemory -- ^ memory
+                                           -> VkDeviceSize -- ^ memoryOffset
+                                                           -> IO VkResult
+
+##else
+vkBindImageMemorySafe ::
+                      VkDevice -- ^ device
+                               ->
+                        VkImage -- ^ image
+                                -> VkDeviceMemory -- ^ memory
+                                                  -> VkDeviceSize -- ^ memoryOffset
+                                                                  -> IO VkResult
+vkBindImageMemorySafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkBindImageMemory)
+
+{-# NOINLINE vkBindImageMemorySafe #-}
+##endif
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+--   > VkResult vkBindImageMemory
+--   >     ( VkDevice device
+--   >     , VkImage image
+--   >     , VkDeviceMemory memory
+--   >     , VkDeviceSize memoryOffset
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkBindImageMemory vkBindImageMemory registry at www.khronos.org>
+type HS_vkBindImageMemory =
+     VkDevice -- ^ device
+              ->
+       VkImage -- ^ image
+               -> VkDeviceMemory -- ^ memory
+                                 -> VkDeviceSize -- ^ memoryOffset
+                                                 -> IO VkResult
+
+type PFN_vkBindImageMemory = FunPtr HS_vkBindImageMemory
+
+foreign import ccall unsafe "dynamic" unwrapVkBindImageMemory ::
+               PFN_vkBindImageMemory -> HS_vkBindImageMemory
+
+foreign import ccall safe "dynamic" unwrapVkBindImageMemorySafe ::
+               PFN_vkBindImageMemory -> HS_vkBindImageMemory
+
+instance VulkanProc "vkBindImageMemory" where
+        type VkProcType "vkBindImageMemory" = HS_vkBindImageMemory
+        vkProcSymbol = _VkBindImageMemory
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkBindImageMemory
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkBindImageMemorySafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkGetBufferMemoryRequirements :: CString
+
+pattern VkGetBufferMemoryRequirements <-
+        (is_VkGetBufferMemoryRequirements -> True)
+  where VkGetBufferMemoryRequirements
+          = _VkGetBufferMemoryRequirements
+
+{-# INLINE _VkGetBufferMemoryRequirements #-}
+
+_VkGetBufferMemoryRequirements :: CString
+_VkGetBufferMemoryRequirements
+  = Ptr "vkGetBufferMemoryRequirements\NUL"##
+
+{-# INLINE is_VkGetBufferMemoryRequirements #-}
+
+is_VkGetBufferMemoryRequirements :: CString -> Bool
+is_VkGetBufferMemoryRequirements
+  = (EQ ==) . cmpCStrings _VkGetBufferMemoryRequirements
+
+type VkGetBufferMemoryRequirements =
+     "vkGetBufferMemoryRequirements"
+
+-- |
+-- > void vkGetBufferMemoryRequirements
+-- >     ( VkDevice device
+-- >     , VkBuffer buffer
+-- >     , VkMemoryRequirements* pMemoryRequirements
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetBufferMemoryRequirements vkGetBufferMemoryRequirements registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetBufferMemoryRequirements <- vkGetDeviceProc @VkGetBufferMemoryRequirements vkDevice
+--
+-- or less efficient:
+--
+-- > myGetBufferMemoryRequirements <- vkGetProc @VkGetBufferMemoryRequirements
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkGetBufferMemoryRequirements"
+               vkGetBufferMemoryRequirements ::
+               VkDevice -- ^ device
+                        -> VkBuffer -- ^ buffer
+                                    -> Ptr VkMemoryRequirements -- ^ pMemoryRequirements
+                                                                -> IO ()
+
+##else
+vkGetBufferMemoryRequirements ::
+                              VkDevice -- ^ device
+                                       -> VkBuffer -- ^ buffer
+                                                   -> Ptr VkMemoryRequirements -- ^ pMemoryRequirements
+                                                                               -> IO ()
+vkGetBufferMemoryRequirements
+  = unsafeDupablePerformIO (vkGetProc @VkGetBufferMemoryRequirements)
+
+{-# NOINLINE vkGetBufferMemoryRequirements #-}
+##endif
+
+-- |
+-- > void vkGetBufferMemoryRequirements
+-- >     ( VkDevice device
+-- >     , VkBuffer buffer
+-- >     , VkMemoryRequirements* pMemoryRequirements
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetBufferMemoryRequirements vkGetBufferMemoryRequirements registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetBufferMemoryRequirements <- vkGetDeviceProc @VkGetBufferMemoryRequirements vkDevice
+--
+-- or less efficient:
+--
+-- > myGetBufferMemoryRequirements <- vkGetProc @VkGetBufferMemoryRequirements
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkGetBufferMemoryRequirements"
+               vkGetBufferMemoryRequirementsSafe ::
+               VkDevice -- ^ device
+                        -> VkBuffer -- ^ buffer
+                                    -> Ptr VkMemoryRequirements -- ^ pMemoryRequirements
+                                                                -> IO ()
+
+##else
+vkGetBufferMemoryRequirementsSafe ::
+                                  VkDevice -- ^ device
+                                           -> VkBuffer -- ^ buffer
+                                                       -> Ptr VkMemoryRequirements -- ^ pMemoryRequirements
+                                                                                   -> IO ()
+vkGetBufferMemoryRequirementsSafe
+  = unsafeDupablePerformIO
+      (vkGetProcSafe @VkGetBufferMemoryRequirements)
+
+{-# NOINLINE vkGetBufferMemoryRequirementsSafe #-}
+##endif
+
+-- | > void vkGetBufferMemoryRequirements
+--   >     ( VkDevice device
+--   >     , VkBuffer buffer
+--   >     , VkMemoryRequirements* pMemoryRequirements
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetBufferMemoryRequirements vkGetBufferMemoryRequirements registry at www.khronos.org>
+type HS_vkGetBufferMemoryRequirements =
+     VkDevice -- ^ device
+              -> VkBuffer -- ^ buffer
+                          -> Ptr VkMemoryRequirements -- ^ pMemoryRequirements
+                                                      -> IO ()
+
+type PFN_vkGetBufferMemoryRequirements =
+     FunPtr HS_vkGetBufferMemoryRequirements
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkGetBufferMemoryRequirements ::
+               PFN_vkGetBufferMemoryRequirements ->
+                 HS_vkGetBufferMemoryRequirements
+
+foreign import ccall safe "dynamic"
+               unwrapVkGetBufferMemoryRequirementsSafe ::
+               PFN_vkGetBufferMemoryRequirements ->
+                 HS_vkGetBufferMemoryRequirements
+
+instance VulkanProc "vkGetBufferMemoryRequirements" where
+        type VkProcType "vkGetBufferMemoryRequirements" =
+             HS_vkGetBufferMemoryRequirements
+        vkProcSymbol = _VkGetBufferMemoryRequirements
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkGetBufferMemoryRequirements
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkGetBufferMemoryRequirementsSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkGetImageMemoryRequirements :: CString
+
+pattern VkGetImageMemoryRequirements <-
+        (is_VkGetImageMemoryRequirements -> True)
+  where VkGetImageMemoryRequirements = _VkGetImageMemoryRequirements
+
+{-# INLINE _VkGetImageMemoryRequirements #-}
+
+_VkGetImageMemoryRequirements :: CString
+_VkGetImageMemoryRequirements
+  = Ptr "vkGetImageMemoryRequirements\NUL"##
+
+{-# INLINE is_VkGetImageMemoryRequirements #-}
+
+is_VkGetImageMemoryRequirements :: CString -> Bool
+is_VkGetImageMemoryRequirements
+  = (EQ ==) . cmpCStrings _VkGetImageMemoryRequirements
+
+type VkGetImageMemoryRequirements = "vkGetImageMemoryRequirements"
+
+-- |
+-- > void vkGetImageMemoryRequirements
+-- >     ( VkDevice device
+-- >     , VkImage image
+-- >     , VkMemoryRequirements* pMemoryRequirements
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetImageMemoryRequirements vkGetImageMemoryRequirements registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetImageMemoryRequirements <- vkGetDeviceProc @VkGetImageMemoryRequirements vkDevice
+--
+-- or less efficient:
+--
+-- > myGetImageMemoryRequirements <- vkGetProc @VkGetImageMemoryRequirements
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkGetImageMemoryRequirements"
+               vkGetImageMemoryRequirements ::
+               VkDevice -- ^ device
+                        -> VkImage -- ^ image
+                                   -> Ptr VkMemoryRequirements -- ^ pMemoryRequirements
+                                                               -> IO ()
+
+##else
+vkGetImageMemoryRequirements ::
+                             VkDevice -- ^ device
+                                      -> VkImage -- ^ image
+                                                 -> Ptr VkMemoryRequirements -- ^ pMemoryRequirements
+                                                                             -> IO ()
+vkGetImageMemoryRequirements
+  = unsafeDupablePerformIO (vkGetProc @VkGetImageMemoryRequirements)
+
+{-# NOINLINE vkGetImageMemoryRequirements #-}
+##endif
+
+-- |
+-- > void vkGetImageMemoryRequirements
+-- >     ( VkDevice device
+-- >     , VkImage image
+-- >     , VkMemoryRequirements* pMemoryRequirements
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetImageMemoryRequirements vkGetImageMemoryRequirements registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetImageMemoryRequirements <- vkGetDeviceProc @VkGetImageMemoryRequirements vkDevice
+--
+-- or less efficient:
+--
+-- > myGetImageMemoryRequirements <- vkGetProc @VkGetImageMemoryRequirements
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkGetImageMemoryRequirements"
+               vkGetImageMemoryRequirementsSafe ::
+               VkDevice -- ^ device
+                        -> VkImage -- ^ image
+                                   -> Ptr VkMemoryRequirements -- ^ pMemoryRequirements
+                                                               -> IO ()
+
+##else
+vkGetImageMemoryRequirementsSafe ::
+                                 VkDevice -- ^ device
+                                          -> VkImage -- ^ image
+                                                     -> Ptr VkMemoryRequirements -- ^ pMemoryRequirements
+                                                                                 -> IO ()
+vkGetImageMemoryRequirementsSafe
+  = unsafeDupablePerformIO
+      (vkGetProcSafe @VkGetImageMemoryRequirements)
+
+{-# NOINLINE vkGetImageMemoryRequirementsSafe #-}
+##endif
+
+-- | > void vkGetImageMemoryRequirements
+--   >     ( VkDevice device
+--   >     , VkImage image
+--   >     , VkMemoryRequirements* pMemoryRequirements
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetImageMemoryRequirements vkGetImageMemoryRequirements registry at www.khronos.org>
+type HS_vkGetImageMemoryRequirements =
+     VkDevice -- ^ device
+              -> VkImage -- ^ image
+                         -> Ptr VkMemoryRequirements -- ^ pMemoryRequirements
+                                                     -> IO ()
+
+type PFN_vkGetImageMemoryRequirements =
+     FunPtr HS_vkGetImageMemoryRequirements
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkGetImageMemoryRequirements ::
+               PFN_vkGetImageMemoryRequirements -> HS_vkGetImageMemoryRequirements
+
+foreign import ccall safe "dynamic"
+               unwrapVkGetImageMemoryRequirementsSafe ::
+               PFN_vkGetImageMemoryRequirements -> HS_vkGetImageMemoryRequirements
+
+instance VulkanProc "vkGetImageMemoryRequirements" where
+        type VkProcType "vkGetImageMemoryRequirements" =
+             HS_vkGetImageMemoryRequirements
+        vkProcSymbol = _VkGetImageMemoryRequirements
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkGetImageMemoryRequirements
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkGetImageMemoryRequirementsSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkGetImageSparseMemoryRequirements :: CString
+
+pattern VkGetImageSparseMemoryRequirements <-
+        (is_VkGetImageSparseMemoryRequirements -> True)
+  where VkGetImageSparseMemoryRequirements
+          = _VkGetImageSparseMemoryRequirements
+
+{-# INLINE _VkGetImageSparseMemoryRequirements #-}
+
+_VkGetImageSparseMemoryRequirements :: CString
+_VkGetImageSparseMemoryRequirements
+  = Ptr "vkGetImageSparseMemoryRequirements\NUL"##
+
+{-# INLINE is_VkGetImageSparseMemoryRequirements #-}
+
+is_VkGetImageSparseMemoryRequirements :: CString -> Bool
+is_VkGetImageSparseMemoryRequirements
+  = (EQ ==) . cmpCStrings _VkGetImageSparseMemoryRequirements
+
+type VkGetImageSparseMemoryRequirements =
+     "vkGetImageSparseMemoryRequirements"
+
+-- |
+-- > void vkGetImageSparseMemoryRequirements
+-- >     ( VkDevice device
+-- >     , VkImage image
+-- >     , uint32_t* pSparseMemoryRequirementCount
+-- >     , VkSparseImageMemoryRequirements* pSparseMemoryRequirements
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetImageSparseMemoryRequirements vkGetImageSparseMemoryRequirements registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetImageSparseMemoryRequirements <- vkGetDeviceProc @VkGetImageSparseMemoryRequirements vkDevice
+--
+-- or less efficient:
+--
+-- > myGetImageSparseMemoryRequirements <- vkGetProc @VkGetImageSparseMemoryRequirements
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkGetImageSparseMemoryRequirements"
+               vkGetImageSparseMemoryRequirements ::
+               VkDevice -- ^ device
+                        ->
+                 VkImage -- ^ image
+                         ->
+                   Ptr Word32 -- ^ pSparseMemoryRequirementCount
+                              -> Ptr VkSparseImageMemoryRequirements -- ^ pSparseMemoryRequirements
+                                                                     -> IO ()
+
+##else
+vkGetImageSparseMemoryRequirements ::
+                                   VkDevice -- ^ device
+                                            ->
+                                     VkImage -- ^ image
+                                             ->
+                                       Ptr Word32 -- ^ pSparseMemoryRequirementCount
+                                                  -> Ptr VkSparseImageMemoryRequirements -- ^ pSparseMemoryRequirements
+                                                                                         -> IO ()
+vkGetImageSparseMemoryRequirements
+  = unsafeDupablePerformIO
+      (vkGetProc @VkGetImageSparseMemoryRequirements)
+
+{-# NOINLINE vkGetImageSparseMemoryRequirements #-}
+##endif
+
+-- |
+-- > void vkGetImageSparseMemoryRequirements
+-- >     ( VkDevice device
+-- >     , VkImage image
+-- >     , uint32_t* pSparseMemoryRequirementCount
+-- >     , VkSparseImageMemoryRequirements* pSparseMemoryRequirements
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetImageSparseMemoryRequirements vkGetImageSparseMemoryRequirements registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetImageSparseMemoryRequirements <- vkGetDeviceProc @VkGetImageSparseMemoryRequirements vkDevice
+--
+-- or less efficient:
+--
+-- > myGetImageSparseMemoryRequirements <- vkGetProc @VkGetImageSparseMemoryRequirements
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkGetImageSparseMemoryRequirements"
+               vkGetImageSparseMemoryRequirementsSafe ::
+               VkDevice -- ^ device
+                        ->
+                 VkImage -- ^ image
+                         ->
+                   Ptr Word32 -- ^ pSparseMemoryRequirementCount
+                              -> Ptr VkSparseImageMemoryRequirements -- ^ pSparseMemoryRequirements
+                                                                     -> IO ()
+
+##else
+vkGetImageSparseMemoryRequirementsSafe ::
+                                       VkDevice -- ^ device
+                                                ->
+                                         VkImage -- ^ image
+                                                 ->
+                                           Ptr Word32 -- ^ pSparseMemoryRequirementCount
+                                                      ->
+                                             Ptr VkSparseImageMemoryRequirements -- ^ pSparseMemoryRequirements
+                                                                                 -> IO ()
+vkGetImageSparseMemoryRequirementsSafe
+  = unsafeDupablePerformIO
+      (vkGetProcSafe @VkGetImageSparseMemoryRequirements)
+
+{-# NOINLINE vkGetImageSparseMemoryRequirementsSafe #-}
+##endif
+
+-- | > void vkGetImageSparseMemoryRequirements
+--   >     ( VkDevice device
+--   >     , VkImage image
+--   >     , uint32_t* pSparseMemoryRequirementCount
+--   >     , VkSparseImageMemoryRequirements* pSparseMemoryRequirements
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetImageSparseMemoryRequirements vkGetImageSparseMemoryRequirements registry at www.khronos.org>
+type HS_vkGetImageSparseMemoryRequirements =
+     VkDevice -- ^ device
+              ->
+       VkImage -- ^ image
+               ->
+         Ptr Word32 -- ^ pSparseMemoryRequirementCount
+                    -> Ptr VkSparseImageMemoryRequirements -- ^ pSparseMemoryRequirements
+                                                           -> IO ()
+
+type PFN_vkGetImageSparseMemoryRequirements =
+     FunPtr HS_vkGetImageSparseMemoryRequirements
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkGetImageSparseMemoryRequirements ::
+               PFN_vkGetImageSparseMemoryRequirements ->
+                 HS_vkGetImageSparseMemoryRequirements
+
+foreign import ccall safe "dynamic"
+               unwrapVkGetImageSparseMemoryRequirementsSafe ::
+               PFN_vkGetImageSparseMemoryRequirements ->
+                 HS_vkGetImageSparseMemoryRequirements
+
+instance VulkanProc "vkGetImageSparseMemoryRequirements" where
+        type VkProcType "vkGetImageSparseMemoryRequirements" =
+             HS_vkGetImageSparseMemoryRequirements
+        vkProcSymbol = _VkGetImageSparseMemoryRequirements
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkGetImageSparseMemoryRequirements
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkGetImageSparseMemoryRequirementsSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkGetPhysicalDeviceSparseImageFormatProperties :: CString
+
+pattern VkGetPhysicalDeviceSparseImageFormatProperties <-
+        (is_VkGetPhysicalDeviceSparseImageFormatProperties -> True)
+  where VkGetPhysicalDeviceSparseImageFormatProperties
+          = _VkGetPhysicalDeviceSparseImageFormatProperties
+
+{-# INLINE _VkGetPhysicalDeviceSparseImageFormatProperties #-}
+
+_VkGetPhysicalDeviceSparseImageFormatProperties :: CString
+_VkGetPhysicalDeviceSparseImageFormatProperties
+  = Ptr "vkGetPhysicalDeviceSparseImageFormatProperties\NUL"##
+
+{-# INLINE is_VkGetPhysicalDeviceSparseImageFormatProperties #-}
+
+is_VkGetPhysicalDeviceSparseImageFormatProperties ::
+                                                  CString -> Bool
+is_VkGetPhysicalDeviceSparseImageFormatProperties
+  = (EQ ==) .
+      cmpCStrings _VkGetPhysicalDeviceSparseImageFormatProperties
+
+type VkGetPhysicalDeviceSparseImageFormatProperties =
+     "vkGetPhysicalDeviceSparseImageFormatProperties"
+
+-- |
+-- > void vkGetPhysicalDeviceSparseImageFormatProperties
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , VkFormat format
+-- >     , VkImageType type
+-- >     , VkSampleCountFlagBits samples
+-- >     , VkImageUsageFlags usage
+-- >     , VkImageTiling tiling
+-- >     , uint32_t* pPropertyCount
+-- >     , VkSparseImageFormatProperties* pProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceSparseImageFormatProperties vkGetPhysicalDeviceSparseImageFormatProperties registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceSparseImageFormatProperties <- vkGetInstanceProc @VkGetPhysicalDeviceSparseImageFormatProperties vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceSparseImageFormatProperties <- vkGetProc @VkGetPhysicalDeviceSparseImageFormatProperties
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe
+               "vkGetPhysicalDeviceSparseImageFormatProperties"
+               vkGetPhysicalDeviceSparseImageFormatProperties ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                ->
+                 VkFormat -- ^ format
+                          ->
+                   VkImageType -- ^ type
+                               ->
+                     VkSampleCountFlagBits -- ^ samples
+                                           ->
+                       VkImageUsageFlags -- ^ usage
+                                         ->
+                         VkImageTiling -- ^ tiling
+                                       ->
+                           Ptr Word32 -- ^ pPropertyCount
+                                      -> Ptr VkSparseImageFormatProperties -- ^ pProperties
+                                                                           -> IO ()
+
+##else
+vkGetPhysicalDeviceSparseImageFormatProperties ::
+                                               VkPhysicalDevice -- ^ physicalDevice
+                                                                ->
+                                                 VkFormat -- ^ format
+                                                          ->
+                                                   VkImageType -- ^ type
+                                                               ->
+                                                     VkSampleCountFlagBits -- ^ samples
+                                                                           ->
+                                                       VkImageUsageFlags -- ^ usage
+                                                                         ->
+                                                         VkImageTiling -- ^ tiling
+                                                                       ->
+                                                           Ptr Word32 -- ^ pPropertyCount
+                                                                      ->
+                                                             Ptr VkSparseImageFormatProperties -- ^ pProperties
+                                                                                               ->
+                                                               IO ()
+vkGetPhysicalDeviceSparseImageFormatProperties
+  = unsafeDupablePerformIO
+      (vkGetProc @VkGetPhysicalDeviceSparseImageFormatProperties)
+
+{-# NOINLINE vkGetPhysicalDeviceSparseImageFormatProperties #-}
+##endif
+
+-- |
+-- > void vkGetPhysicalDeviceSparseImageFormatProperties
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , VkFormat format
+-- >     , VkImageType type
+-- >     , VkSampleCountFlagBits samples
+-- >     , VkImageUsageFlags usage
+-- >     , VkImageTiling tiling
+-- >     , uint32_t* pPropertyCount
+-- >     , VkSparseImageFormatProperties* pProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceSparseImageFormatProperties vkGetPhysicalDeviceSparseImageFormatProperties registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceSparseImageFormatProperties <- vkGetInstanceProc @VkGetPhysicalDeviceSparseImageFormatProperties vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceSparseImageFormatProperties <- vkGetProc @VkGetPhysicalDeviceSparseImageFormatProperties
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe
+               "vkGetPhysicalDeviceSparseImageFormatProperties"
+               vkGetPhysicalDeviceSparseImageFormatPropertiesSafe ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                ->
+                 VkFormat -- ^ format
+                          ->
+                   VkImageType -- ^ type
+                               ->
+                     VkSampleCountFlagBits -- ^ samples
+                                           ->
+                       VkImageUsageFlags -- ^ usage
+                                         ->
+                         VkImageTiling -- ^ tiling
+                                       ->
+                           Ptr Word32 -- ^ pPropertyCount
+                                      -> Ptr VkSparseImageFormatProperties -- ^ pProperties
+                                                                           -> IO ()
+
+##else
+vkGetPhysicalDeviceSparseImageFormatPropertiesSafe ::
+                                                   VkPhysicalDevice -- ^ physicalDevice
+                                                                    ->
+                                                     VkFormat -- ^ format
+                                                              ->
+                                                       VkImageType -- ^ type
+                                                                   ->
+                                                         VkSampleCountFlagBits -- ^ samples
+                                                                               ->
+                                                           VkImageUsageFlags -- ^ usage
+                                                                             ->
+                                                             VkImageTiling -- ^ tiling
+                                                                           ->
+                                                               Ptr Word32 -- ^ pPropertyCount
+                                                                          ->
+                                                                 Ptr VkSparseImageFormatProperties -- ^ pProperties
+                                                                   -> IO ()
+vkGetPhysicalDeviceSparseImageFormatPropertiesSafe
+  = unsafeDupablePerformIO
+      (vkGetProcSafe @VkGetPhysicalDeviceSparseImageFormatProperties)
+
+{-# NOINLINE vkGetPhysicalDeviceSparseImageFormatPropertiesSafe #-}
+##endif
+
+-- | > void vkGetPhysicalDeviceSparseImageFormatProperties
+--   >     ( VkPhysicalDevice physicalDevice
+--   >     , VkFormat format
+--   >     , VkImageType type
+--   >     , VkSampleCountFlagBits samples
+--   >     , VkImageUsageFlags usage
+--   >     , VkImageTiling tiling
+--   >     , uint32_t* pPropertyCount
+--   >     , VkSparseImageFormatProperties* pProperties
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceSparseImageFormatProperties vkGetPhysicalDeviceSparseImageFormatProperties registry at www.khronos.org>
+type HS_vkGetPhysicalDeviceSparseImageFormatProperties =
+     VkPhysicalDevice -- ^ physicalDevice
+                      ->
+       VkFormat -- ^ format
+                ->
+         VkImageType -- ^ type
+                     ->
+           VkSampleCountFlagBits -- ^ samples
+                                 ->
+             VkImageUsageFlags -- ^ usage
+                               ->
+               VkImageTiling -- ^ tiling
+                             ->
+                 Ptr Word32 -- ^ pPropertyCount
+                            -> Ptr VkSparseImageFormatProperties -- ^ pProperties
+                                                                 -> IO ()
+
+type PFN_vkGetPhysicalDeviceSparseImageFormatProperties =
+     FunPtr HS_vkGetPhysicalDeviceSparseImageFormatProperties
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkGetPhysicalDeviceSparseImageFormatProperties ::
+               PFN_vkGetPhysicalDeviceSparseImageFormatProperties ->
+                 HS_vkGetPhysicalDeviceSparseImageFormatProperties
+
+foreign import ccall safe "dynamic"
+               unwrapVkGetPhysicalDeviceSparseImageFormatPropertiesSafe ::
+               PFN_vkGetPhysicalDeviceSparseImageFormatProperties ->
+                 HS_vkGetPhysicalDeviceSparseImageFormatProperties
+
+instance VulkanProc
+           "vkGetPhysicalDeviceSparseImageFormatProperties"
+         where
+        type VkProcType "vkGetPhysicalDeviceSparseImageFormatProperties" =
+             HS_vkGetPhysicalDeviceSparseImageFormatProperties
+        vkProcSymbol = _VkGetPhysicalDeviceSparseImageFormatProperties
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr
+          = unwrapVkGetPhysicalDeviceSparseImageFormatProperties
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe
+          = unwrapVkGetPhysicalDeviceSparseImageFormatPropertiesSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkQueueBindSparse :: CString
+
+pattern VkQueueBindSparse <- (is_VkQueueBindSparse -> True)
+  where VkQueueBindSparse = _VkQueueBindSparse
+
+{-# INLINE _VkQueueBindSparse #-}
+
+_VkQueueBindSparse :: CString
+_VkQueueBindSparse = Ptr "vkQueueBindSparse\NUL"##
+
+{-# INLINE is_VkQueueBindSparse #-}
+
+is_VkQueueBindSparse :: CString -> Bool
+is_VkQueueBindSparse = (EQ ==) . cmpCStrings _VkQueueBindSparse
+
+type VkQueueBindSparse = "vkQueueBindSparse"
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
+--
+-- Queues: 'sparse_binding'.
+--
+-- > VkResult vkQueueBindSparse
+-- >     ( VkQueue queue
+-- >     , uint32_t bindInfoCount
+-- >     , const VkBindSparseInfo* pBindInfo
+-- >     , VkFence fence
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkQueueBindSparse vkQueueBindSparse registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myQueueBindSparse <- vkGetInstanceProc @VkQueueBindSparse vkInstance
+--
+-- or less efficient:
+--
+-- > myQueueBindSparse <- vkGetProc @VkQueueBindSparse
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkQueueBindSparse" vkQueueBindSparse
+               ::
+               VkQueue -- ^ queue
+                       -> Word32 -- ^ bindInfoCount
+                                 -> Ptr VkBindSparseInfo -- ^ pBindInfo
+                                                         -> VkFence -- ^ fence
+                                                                    -> IO VkResult
+
+##else
+vkQueueBindSparse ::
+                  VkQueue -- ^ queue
+                          -> Word32 -- ^ bindInfoCount
+                                    -> Ptr VkBindSparseInfo -- ^ pBindInfo
+                                                            -> VkFence -- ^ fence
+                                                                       -> IO VkResult
+vkQueueBindSparse
+  = unsafeDupablePerformIO (vkGetProc @VkQueueBindSparse)
+
+{-# NOINLINE vkQueueBindSparse #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
+--
+-- Queues: 'sparse_binding'.
+--
+-- > VkResult vkQueueBindSparse
+-- >     ( VkQueue queue
+-- >     , uint32_t bindInfoCount
+-- >     , const VkBindSparseInfo* pBindInfo
+-- >     , VkFence fence
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkQueueBindSparse vkQueueBindSparse registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myQueueBindSparse <- vkGetInstanceProc @VkQueueBindSparse vkInstance
+--
+-- or less efficient:
+--
+-- > myQueueBindSparse <- vkGetProc @VkQueueBindSparse
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkQueueBindSparse" vkQueueBindSparseSafe
+               ::
+               VkQueue -- ^ queue
+                       -> Word32 -- ^ bindInfoCount
+                                 -> Ptr VkBindSparseInfo -- ^ pBindInfo
+                                                         -> VkFence -- ^ fence
+                                                                    -> IO VkResult
+
+##else
+vkQueueBindSparseSafe ::
+                      VkQueue -- ^ queue
+                              -> Word32 -- ^ bindInfoCount
+                                        -> Ptr VkBindSparseInfo -- ^ pBindInfo
+                                                                -> VkFence -- ^ fence
+                                                                           -> IO VkResult
+vkQueueBindSparseSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkQueueBindSparse)
+
+{-# NOINLINE vkQueueBindSparseSafe #-}
+##endif
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
+--
+--   Queues: 'sparse_binding'.
+--
+--   > VkResult vkQueueBindSparse
+--   >     ( VkQueue queue
+--   >     , uint32_t bindInfoCount
+--   >     , const VkBindSparseInfo* pBindInfo
+--   >     , VkFence fence
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkQueueBindSparse vkQueueBindSparse registry at www.khronos.org>
+type HS_vkQueueBindSparse =
+     VkQueue -- ^ queue
+             -> Word32 -- ^ bindInfoCount
+                       -> Ptr VkBindSparseInfo -- ^ pBindInfo
+                                               -> VkFence -- ^ fence
+                                                          -> IO VkResult
+
+type PFN_vkQueueBindSparse = FunPtr HS_vkQueueBindSparse
+
+foreign import ccall unsafe "dynamic" unwrapVkQueueBindSparse ::
+               PFN_vkQueueBindSparse -> HS_vkQueueBindSparse
+
+foreign import ccall safe "dynamic" unwrapVkQueueBindSparseSafe ::
+               PFN_vkQueueBindSparse -> HS_vkQueueBindSparse
+
+instance VulkanProc "vkQueueBindSparse" where
+        type VkProcType "vkQueueBindSparse" = HS_vkQueueBindSparse
+        vkProcSymbol = _VkQueueBindSparse
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkQueueBindSparse
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkQueueBindSparseSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCreateFence :: CString
+
+pattern VkCreateFence <- (is_VkCreateFence -> True)
+  where VkCreateFence = _VkCreateFence
+
+{-# INLINE _VkCreateFence #-}
+
+_VkCreateFence :: CString
+_VkCreateFence = Ptr "vkCreateFence\NUL"##
+
+{-# INLINE is_VkCreateFence #-}
+
+is_VkCreateFence :: CString -> Bool
+is_VkCreateFence = (EQ ==) . cmpCStrings _VkCreateFence
+
+type VkCreateFence = "vkCreateFence"
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkCreateFence
+-- >     ( VkDevice device
+-- >     , const VkFenceCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkFence* pFence
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateFence vkCreateFence registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateFence <- vkGetDeviceProc @VkCreateFence vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateFence <- vkGetProc @VkCreateFence
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCreateFence" vkCreateFence ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkFenceCreateInfo -- ^ pCreateInfo
+                                       ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkFence -- ^ pFence
+                                                            -> IO VkResult
+
+##else
+vkCreateFence ::
+              VkDevice -- ^ device
+                       ->
+                Ptr VkFenceCreateInfo -- ^ pCreateInfo
+                                      ->
+                  Ptr VkAllocationCallbacks -- ^ pAllocator
+                                            -> Ptr VkFence -- ^ pFence
+                                                           -> IO VkResult
+vkCreateFence = unsafeDupablePerformIO (vkGetProc @VkCreateFence)
+
+{-# NOINLINE vkCreateFence #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkCreateFence
+-- >     ( VkDevice device
+-- >     , const VkFenceCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkFence* pFence
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateFence vkCreateFence registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateFence <- vkGetDeviceProc @VkCreateFence vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateFence <- vkGetProc @VkCreateFence
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCreateFence" vkCreateFenceSafe ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkFenceCreateInfo -- ^ pCreateInfo
+                                       ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkFence -- ^ pFence
+                                                            -> IO VkResult
+
+##else
+vkCreateFenceSafe ::
+                  VkDevice -- ^ device
+                           ->
+                    Ptr VkFenceCreateInfo -- ^ pCreateInfo
+                                          ->
+                      Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                -> Ptr VkFence -- ^ pFence
+                                                               -> IO VkResult
+vkCreateFenceSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCreateFence)
+
+{-# NOINLINE vkCreateFenceSafe #-}
+##endif
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+--   > VkResult vkCreateFence
+--   >     ( VkDevice device
+--   >     , const VkFenceCreateInfo* pCreateInfo
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     , VkFence* pFence
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateFence vkCreateFence registry at www.khronos.org>
+type HS_vkCreateFence =
+     VkDevice -- ^ device
+              ->
+       Ptr VkFenceCreateInfo -- ^ pCreateInfo
+                             ->
+         Ptr VkAllocationCallbacks -- ^ pAllocator
+                                   -> Ptr VkFence -- ^ pFence
+                                                  -> IO VkResult
+
+type PFN_vkCreateFence = FunPtr HS_vkCreateFence
+
+foreign import ccall unsafe "dynamic" unwrapVkCreateFence ::
+               PFN_vkCreateFence -> HS_vkCreateFence
+
+foreign import ccall safe "dynamic" unwrapVkCreateFenceSafe ::
+               PFN_vkCreateFence -> HS_vkCreateFence
+
+instance VulkanProc "vkCreateFence" where
+        type VkProcType "vkCreateFence" = HS_vkCreateFence
+        vkProcSymbol = _VkCreateFence
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkCreateFence
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkCreateFenceSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkDestroyFence :: CString
+
+pattern VkDestroyFence <- (is_VkDestroyFence -> True)
+  where VkDestroyFence = _VkDestroyFence
+
+{-# INLINE _VkDestroyFence #-}
+
+_VkDestroyFence :: CString
+_VkDestroyFence = Ptr "vkDestroyFence\NUL"##
+
+{-# INLINE is_VkDestroyFence #-}
+
+is_VkDestroyFence :: CString -> Bool
+is_VkDestroyFence = (EQ ==) . cmpCStrings _VkDestroyFence
+
+type VkDestroyFence = "vkDestroyFence"
+
+-- |
+-- > void vkDestroyFence
+-- >     ( VkDevice device
+-- >     , VkFence fence
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyFence vkDestroyFence registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroyFence <- vkGetDeviceProc @VkDestroyFence vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroyFence <- vkGetProc @VkDestroyFence
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkDestroyFence" vkDestroyFence ::
+               VkDevice -- ^ device
+                        -> VkFence -- ^ fence
+                                   -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                -> IO ()
+
+##else
+vkDestroyFence ::
+               VkDevice -- ^ device
+                        -> VkFence -- ^ fence
+                                   -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                -> IO ()
+vkDestroyFence = unsafeDupablePerformIO (vkGetProc @VkDestroyFence)
+
+{-# NOINLINE vkDestroyFence #-}
+##endif
+
+-- |
+-- > void vkDestroyFence
+-- >     ( VkDevice device
+-- >     , VkFence fence
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyFence vkDestroyFence registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroyFence <- vkGetDeviceProc @VkDestroyFence vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroyFence <- vkGetProc @VkDestroyFence
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkDestroyFence" vkDestroyFenceSafe ::
+               VkDevice -- ^ device
+                        -> VkFence -- ^ fence
+                                   -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                -> IO ()
+
+##else
+vkDestroyFenceSafe ::
+                   VkDevice -- ^ device
+                            -> VkFence -- ^ fence
+                                       -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                    -> IO ()
+vkDestroyFenceSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkDestroyFence)
+
+{-# NOINLINE vkDestroyFenceSafe #-}
+##endif
+
+-- | > void vkDestroyFence
+--   >     ( VkDevice device
+--   >     , VkFence fence
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyFence vkDestroyFence registry at www.khronos.org>
+type HS_vkDestroyFence =
+     VkDevice -- ^ device
+              -> VkFence -- ^ fence
+                         -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                      -> IO ()
+
+type PFN_vkDestroyFence = FunPtr HS_vkDestroyFence
+
+foreign import ccall unsafe "dynamic" unwrapVkDestroyFence ::
+               PFN_vkDestroyFence -> HS_vkDestroyFence
+
+foreign import ccall safe "dynamic" unwrapVkDestroyFenceSafe ::
+               PFN_vkDestroyFence -> HS_vkDestroyFence
+
+instance VulkanProc "vkDestroyFence" where
+        type VkProcType "vkDestroyFence" = HS_vkDestroyFence
+        vkProcSymbol = _VkDestroyFence
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkDestroyFence
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkDestroyFenceSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkResetFences :: CString
+
+pattern VkResetFences <- (is_VkResetFences -> True)
+  where VkResetFences = _VkResetFences
+
+{-# INLINE _VkResetFences #-}
+
+_VkResetFences :: CString
+_VkResetFences = Ptr "vkResetFences\NUL"##
+
+{-# INLINE is_VkResetFences #-}
+
+is_VkResetFences :: CString -> Bool
+is_VkResetFences = (EQ ==) . cmpCStrings _VkResetFences
+
+type VkResetFences = "vkResetFences"
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkResetFences
+-- >     ( VkDevice device
+-- >     , uint32_t fenceCount
+-- >     , const VkFence* pFences
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkResetFences vkResetFences registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myResetFences <- vkGetDeviceProc @VkResetFences vkDevice
+--
+-- or less efficient:
+--
+-- > myResetFences <- vkGetProc @VkResetFences
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkResetFences" vkResetFences ::
+               VkDevice -- ^ device
+                        -> Word32 -- ^ fenceCount
+                                  -> Ptr VkFence -- ^ pFences
+                                                 -> IO VkResult
+
+##else
+vkResetFences :: VkDevice -- ^ device
+                          -> Word32 -- ^ fenceCount
+                                    -> Ptr VkFence -- ^ pFences
+                                                   -> IO VkResult
+vkResetFences = unsafeDupablePerformIO (vkGetProc @VkResetFences)
+
+{-# NOINLINE vkResetFences #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkResetFences
+-- >     ( VkDevice device
+-- >     , uint32_t fenceCount
+-- >     , const VkFence* pFences
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkResetFences vkResetFences registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myResetFences <- vkGetDeviceProc @VkResetFences vkDevice
+--
+-- or less efficient:
+--
+-- > myResetFences <- vkGetProc @VkResetFences
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkResetFences" vkResetFencesSafe ::
+               VkDevice -- ^ device
+                        -> Word32 -- ^ fenceCount
+                                  -> Ptr VkFence -- ^ pFences
+                                                 -> IO VkResult
+
+##else
+vkResetFencesSafe ::
+                  VkDevice -- ^ device
+                           -> Word32 -- ^ fenceCount
+                                     -> Ptr VkFence -- ^ pFences
+                                                    -> IO VkResult
+vkResetFencesSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkResetFences)
+
+{-# NOINLINE vkResetFencesSafe #-}
+##endif
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+--   > VkResult vkResetFences
+--   >     ( VkDevice device
+--   >     , uint32_t fenceCount
+--   >     , const VkFence* pFences
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkResetFences vkResetFences registry at www.khronos.org>
+type HS_vkResetFences =
+     VkDevice -- ^ device
+              -> Word32 -- ^ fenceCount
+                        -> Ptr VkFence -- ^ pFences
+                                       -> IO VkResult
+
+type PFN_vkResetFences = FunPtr HS_vkResetFences
+
+foreign import ccall unsafe "dynamic" unwrapVkResetFences ::
+               PFN_vkResetFences -> HS_vkResetFences
+
+foreign import ccall safe "dynamic" unwrapVkResetFencesSafe ::
+               PFN_vkResetFences -> HS_vkResetFences
+
+instance VulkanProc "vkResetFences" where
+        type VkProcType "vkResetFences" = HS_vkResetFences
+        vkProcSymbol = _VkResetFences
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkResetFences
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkResetFencesSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkGetFenceStatus :: CString
+
+pattern VkGetFenceStatus <- (is_VkGetFenceStatus -> True)
+  where VkGetFenceStatus = _VkGetFenceStatus
+
+{-# INLINE _VkGetFenceStatus #-}
+
+_VkGetFenceStatus :: CString
+_VkGetFenceStatus = Ptr "vkGetFenceStatus\NUL"##
+
+{-# INLINE is_VkGetFenceStatus #-}
+
+is_VkGetFenceStatus :: CString -> Bool
+is_VkGetFenceStatus = (EQ ==) . cmpCStrings _VkGetFenceStatus
+
+type VkGetFenceStatus = "vkGetFenceStatus"
+
+-- |
+-- Success codes: 'VK_SUCCESS', 'VK_NOT_READY'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
+--
+-- > VkResult vkGetFenceStatus
+-- >     ( VkDevice device
+-- >     , VkFence fence
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetFenceStatus vkGetFenceStatus registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetFenceStatus <- vkGetDeviceProc @VkGetFenceStatus vkDevice
+--
+-- or less efficient:
+--
+-- > myGetFenceStatus <- vkGetProc @VkGetFenceStatus
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkGetFenceStatus" vkGetFenceStatus ::
+               VkDevice -- ^ device
+                        -> VkFence -- ^ fence
+                                   -> IO VkResult
+
+##else
+vkGetFenceStatus :: VkDevice -- ^ device
+                             -> VkFence -- ^ fence
+                                        -> IO VkResult
+vkGetFenceStatus
+  = unsafeDupablePerformIO (vkGetProc @VkGetFenceStatus)
+
+{-# NOINLINE vkGetFenceStatus #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS', 'VK_NOT_READY'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
+--
+-- > VkResult vkGetFenceStatus
+-- >     ( VkDevice device
+-- >     , VkFence fence
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetFenceStatus vkGetFenceStatus registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetFenceStatus <- vkGetDeviceProc @VkGetFenceStatus vkDevice
+--
+-- or less efficient:
+--
+-- > myGetFenceStatus <- vkGetProc @VkGetFenceStatus
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkGetFenceStatus" vkGetFenceStatusSafe
+               :: VkDevice -- ^ device
+                           -> VkFence -- ^ fence
+                                      -> IO VkResult
+
+##else
+vkGetFenceStatusSafe :: VkDevice -- ^ device
+                                 -> VkFence -- ^ fence
+                                            -> IO VkResult
+vkGetFenceStatusSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkGetFenceStatus)
+
+{-# NOINLINE vkGetFenceStatusSafe #-}
+##endif
+
+-- | Success codes: 'VK_SUCCESS', 'VK_NOT_READY'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
+--
+--   > VkResult vkGetFenceStatus
+--   >     ( VkDevice device
+--   >     , VkFence fence
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetFenceStatus vkGetFenceStatus registry at www.khronos.org>
+type HS_vkGetFenceStatus = VkDevice -- ^ device
+                                    -> VkFence -- ^ fence
+                                               -> IO VkResult
+
+type PFN_vkGetFenceStatus = FunPtr HS_vkGetFenceStatus
+
+foreign import ccall unsafe "dynamic" unwrapVkGetFenceStatus ::
+               PFN_vkGetFenceStatus -> HS_vkGetFenceStatus
+
+foreign import ccall safe "dynamic" unwrapVkGetFenceStatusSafe ::
+               PFN_vkGetFenceStatus -> HS_vkGetFenceStatus
+
+instance VulkanProc "vkGetFenceStatus" where
+        type VkProcType "vkGetFenceStatus" = HS_vkGetFenceStatus
+        vkProcSymbol = _VkGetFenceStatus
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkGetFenceStatus
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkGetFenceStatusSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkWaitForFences :: CString
+
+pattern VkWaitForFences <- (is_VkWaitForFences -> True)
+  where VkWaitForFences = _VkWaitForFences
+
+{-# INLINE _VkWaitForFences #-}
+
+_VkWaitForFences :: CString
+_VkWaitForFences = Ptr "vkWaitForFences\NUL"##
+
+{-# INLINE is_VkWaitForFences #-}
+
+is_VkWaitForFences :: CString -> Bool
+is_VkWaitForFences = (EQ ==) . cmpCStrings _VkWaitForFences
+
+type VkWaitForFences = "vkWaitForFences"
+
+-- |
+-- Success codes: 'VK_SUCCESS', 'VK_TIMEOUT'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
+--
+-- > VkResult vkWaitForFences
+-- >     ( VkDevice device
+-- >     , uint32_t fenceCount
+-- >     , const VkFence* pFences
+-- >     , VkBool32 waitAll
+-- >     , uint64_t timeout
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkWaitForFences vkWaitForFences registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myWaitForFences <- vkGetDeviceProc @VkWaitForFences vkDevice
+--
+-- or less efficient:
+--
+-- > myWaitForFences <- vkGetProc @VkWaitForFences
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkWaitForFences" vkWaitForFences ::
+               VkDevice -- ^ device
+                        ->
+                 Word32 -- ^ fenceCount
+                        -> Ptr VkFence -- ^ pFences
+                                       -> VkBool32 -- ^ waitAll
+                                                   -> Word64 -- ^ timeout
+                                                             -> IO VkResult
+
+##else
+vkWaitForFences ::
+                VkDevice -- ^ device
+                         ->
+                  Word32 -- ^ fenceCount
+                         -> Ptr VkFence -- ^ pFences
+                                        -> VkBool32 -- ^ waitAll
+                                                    -> Word64 -- ^ timeout
+                                                              -> IO VkResult
+vkWaitForFences
+  = unsafeDupablePerformIO (vkGetProc @VkWaitForFences)
+
+{-# NOINLINE vkWaitForFences #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS', 'VK_TIMEOUT'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
+--
+-- > VkResult vkWaitForFences
+-- >     ( VkDevice device
+-- >     , uint32_t fenceCount
+-- >     , const VkFence* pFences
+-- >     , VkBool32 waitAll
+-- >     , uint64_t timeout
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkWaitForFences vkWaitForFences registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myWaitForFences <- vkGetDeviceProc @VkWaitForFences vkDevice
+--
+-- or less efficient:
+--
+-- > myWaitForFences <- vkGetProc @VkWaitForFences
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkWaitForFences" vkWaitForFencesSafe ::
+               VkDevice -- ^ device
+                        ->
+                 Word32 -- ^ fenceCount
+                        -> Ptr VkFence -- ^ pFences
+                                       -> VkBool32 -- ^ waitAll
+                                                   -> Word64 -- ^ timeout
+                                                             -> IO VkResult
+
+##else
+vkWaitForFencesSafe ::
+                    VkDevice -- ^ device
+                             ->
+                      Word32 -- ^ fenceCount
+                             -> Ptr VkFence -- ^ pFences
+                                            -> VkBool32 -- ^ waitAll
+                                                        -> Word64 -- ^ timeout
+                                                                  -> IO VkResult
+vkWaitForFencesSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkWaitForFences)
+
+{-# NOINLINE vkWaitForFencesSafe #-}
+##endif
+
+-- | Success codes: 'VK_SUCCESS', 'VK_TIMEOUT'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
+--
+--   > VkResult vkWaitForFences
+--   >     ( VkDevice device
+--   >     , uint32_t fenceCount
+--   >     , const VkFence* pFences
+--   >     , VkBool32 waitAll
+--   >     , uint64_t timeout
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkWaitForFences vkWaitForFences registry at www.khronos.org>
+type HS_vkWaitForFences =
+     VkDevice -- ^ device
+              ->
+       Word32 -- ^ fenceCount
+              -> Ptr VkFence -- ^ pFences
+                             -> VkBool32 -- ^ waitAll
+                                         -> Word64 -- ^ timeout
+                                                   -> IO VkResult
+
+type PFN_vkWaitForFences = FunPtr HS_vkWaitForFences
+
+foreign import ccall unsafe "dynamic" unwrapVkWaitForFences ::
+               PFN_vkWaitForFences -> HS_vkWaitForFences
+
+foreign import ccall safe "dynamic" unwrapVkWaitForFencesSafe ::
+               PFN_vkWaitForFences -> HS_vkWaitForFences
+
+instance VulkanProc "vkWaitForFences" where
+        type VkProcType "vkWaitForFences" = HS_vkWaitForFences
+        vkProcSymbol = _VkWaitForFences
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkWaitForFences
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkWaitForFencesSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCreateSemaphore :: CString
+
+pattern VkCreateSemaphore <- (is_VkCreateSemaphore -> True)
+  where VkCreateSemaphore = _VkCreateSemaphore
+
+{-# INLINE _VkCreateSemaphore #-}
+
+_VkCreateSemaphore :: CString
+_VkCreateSemaphore = Ptr "vkCreateSemaphore\NUL"##
+
+{-# INLINE is_VkCreateSemaphore #-}
+
+is_VkCreateSemaphore :: CString -> Bool
+is_VkCreateSemaphore = (EQ ==) . cmpCStrings _VkCreateSemaphore
+
+type VkCreateSemaphore = "vkCreateSemaphore"
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkCreateSemaphore
+-- >     ( VkDevice device
+-- >     , const VkSemaphoreCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkSemaphore* pSemaphore
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateSemaphore vkCreateSemaphore registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateSemaphore <- vkGetDeviceProc @VkCreateSemaphore vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateSemaphore <- vkGetProc @VkCreateSemaphore
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCreateSemaphore" vkCreateSemaphore
+               ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkSemaphoreCreateInfo -- ^ pCreateInfo
+                                           ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkSemaphore -- ^ pSemaphore
+                                                                -> IO VkResult
+
+##else
+vkCreateSemaphore ::
+                  VkDevice -- ^ device
+                           ->
+                    Ptr VkSemaphoreCreateInfo -- ^ pCreateInfo
+                                              ->
+                      Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                -> Ptr VkSemaphore -- ^ pSemaphore
+                                                                   -> IO VkResult
+vkCreateSemaphore
+  = unsafeDupablePerformIO (vkGetProc @VkCreateSemaphore)
+
+{-# NOINLINE vkCreateSemaphore #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkCreateSemaphore
+-- >     ( VkDevice device
+-- >     , const VkSemaphoreCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkSemaphore* pSemaphore
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateSemaphore vkCreateSemaphore registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateSemaphore <- vkGetDeviceProc @VkCreateSemaphore vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateSemaphore <- vkGetProc @VkCreateSemaphore
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCreateSemaphore" vkCreateSemaphoreSafe
+               ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkSemaphoreCreateInfo -- ^ pCreateInfo
+                                           ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkSemaphore -- ^ pSemaphore
+                                                                -> IO VkResult
+
+##else
+vkCreateSemaphoreSafe ::
+                      VkDevice -- ^ device
+                               ->
+                        Ptr VkSemaphoreCreateInfo -- ^ pCreateInfo
+                                                  ->
+                          Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                    -> Ptr VkSemaphore -- ^ pSemaphore
+                                                                       -> IO VkResult
+vkCreateSemaphoreSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCreateSemaphore)
+
+{-# NOINLINE vkCreateSemaphoreSafe #-}
+##endif
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+--   > VkResult vkCreateSemaphore
+--   >     ( VkDevice device
+--   >     , const VkSemaphoreCreateInfo* pCreateInfo
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     , VkSemaphore* pSemaphore
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateSemaphore vkCreateSemaphore registry at www.khronos.org>
+type HS_vkCreateSemaphore =
+     VkDevice -- ^ device
+              ->
+       Ptr VkSemaphoreCreateInfo -- ^ pCreateInfo
+                                 ->
+         Ptr VkAllocationCallbacks -- ^ pAllocator
+                                   -> Ptr VkSemaphore -- ^ pSemaphore
+                                                      -> IO VkResult
+
+type PFN_vkCreateSemaphore = FunPtr HS_vkCreateSemaphore
+
+foreign import ccall unsafe "dynamic" unwrapVkCreateSemaphore ::
+               PFN_vkCreateSemaphore -> HS_vkCreateSemaphore
+
+foreign import ccall safe "dynamic" unwrapVkCreateSemaphoreSafe ::
+               PFN_vkCreateSemaphore -> HS_vkCreateSemaphore
+
+instance VulkanProc "vkCreateSemaphore" where
+        type VkProcType "vkCreateSemaphore" = HS_vkCreateSemaphore
+        vkProcSymbol = _VkCreateSemaphore
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkCreateSemaphore
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkCreateSemaphoreSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkDestroySemaphore :: CString
+
+pattern VkDestroySemaphore <- (is_VkDestroySemaphore -> True)
+  where VkDestroySemaphore = _VkDestroySemaphore
+
+{-# INLINE _VkDestroySemaphore #-}
+
+_VkDestroySemaphore :: CString
+_VkDestroySemaphore = Ptr "vkDestroySemaphore\NUL"##
+
+{-# INLINE is_VkDestroySemaphore #-}
+
+is_VkDestroySemaphore :: CString -> Bool
+is_VkDestroySemaphore = (EQ ==) . cmpCStrings _VkDestroySemaphore
+
+type VkDestroySemaphore = "vkDestroySemaphore"
+
+-- |
+-- > void vkDestroySemaphore
+-- >     ( VkDevice device
+-- >     , VkSemaphore semaphore
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroySemaphore vkDestroySemaphore registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroySemaphore <- vkGetDeviceProc @VkDestroySemaphore vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroySemaphore <- vkGetProc @VkDestroySemaphore
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkDestroySemaphore" vkDestroySemaphore
+               :: VkDevice -- ^ device
+                           -> VkSemaphore -- ^ semaphore
+                                          -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                       -> IO ()
+
+##else
+vkDestroySemaphore ::
+                   VkDevice -- ^ device
+                            -> VkSemaphore -- ^ semaphore
+                                           -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                        -> IO ()
+vkDestroySemaphore
+  = unsafeDupablePerformIO (vkGetProc @VkDestroySemaphore)
+
+{-# NOINLINE vkDestroySemaphore #-}
+##endif
+
+-- |
+-- > void vkDestroySemaphore
+-- >     ( VkDevice device
+-- >     , VkSemaphore semaphore
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroySemaphore vkDestroySemaphore registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroySemaphore <- vkGetDeviceProc @VkDestroySemaphore vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroySemaphore <- vkGetProc @VkDestroySemaphore
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkDestroySemaphore"
+               vkDestroySemaphoreSafe ::
+               VkDevice -- ^ device
+                        -> VkSemaphore -- ^ semaphore
+                                       -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                    -> IO ()
+
+##else
+vkDestroySemaphoreSafe ::
+                       VkDevice -- ^ device
+                                -> VkSemaphore -- ^ semaphore
+                                               -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                            -> IO ()
+vkDestroySemaphoreSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkDestroySemaphore)
+
+{-# NOINLINE vkDestroySemaphoreSafe #-}
+##endif
+
+-- | > void vkDestroySemaphore
+--   >     ( VkDevice device
+--   >     , VkSemaphore semaphore
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroySemaphore vkDestroySemaphore registry at www.khronos.org>
+type HS_vkDestroySemaphore =
+     VkDevice -- ^ device
+              -> VkSemaphore -- ^ semaphore
+                             -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                          -> IO ()
+
+type PFN_vkDestroySemaphore = FunPtr HS_vkDestroySemaphore
+
+foreign import ccall unsafe "dynamic" unwrapVkDestroySemaphore ::
+               PFN_vkDestroySemaphore -> HS_vkDestroySemaphore
+
+foreign import ccall safe "dynamic" unwrapVkDestroySemaphoreSafe ::
+               PFN_vkDestroySemaphore -> HS_vkDestroySemaphore
+
+instance VulkanProc "vkDestroySemaphore" where
+        type VkProcType "vkDestroySemaphore" = HS_vkDestroySemaphore
+        vkProcSymbol = _VkDestroySemaphore
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkDestroySemaphore
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkDestroySemaphoreSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCreateEvent :: CString
+
+pattern VkCreateEvent <- (is_VkCreateEvent -> True)
+  where VkCreateEvent = _VkCreateEvent
+
+{-# INLINE _VkCreateEvent #-}
+
+_VkCreateEvent :: CString
+_VkCreateEvent = Ptr "vkCreateEvent\NUL"##
+
+{-# INLINE is_VkCreateEvent #-}
+
+is_VkCreateEvent :: CString -> Bool
+is_VkCreateEvent = (EQ ==) . cmpCStrings _VkCreateEvent
+
+type VkCreateEvent = "vkCreateEvent"
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkCreateEvent
+-- >     ( VkDevice device
+-- >     , const VkEventCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkEvent* pEvent
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateEvent vkCreateEvent registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateEvent <- vkGetDeviceProc @VkCreateEvent vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateEvent <- vkGetProc @VkCreateEvent
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCreateEvent" vkCreateEvent ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkEventCreateInfo -- ^ pCreateInfo
+                                       ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkEvent -- ^ pEvent
+                                                            -> IO VkResult
+
+##else
+vkCreateEvent ::
+              VkDevice -- ^ device
+                       ->
+                Ptr VkEventCreateInfo -- ^ pCreateInfo
+                                      ->
+                  Ptr VkAllocationCallbacks -- ^ pAllocator
+                                            -> Ptr VkEvent -- ^ pEvent
+                                                           -> IO VkResult
+vkCreateEvent = unsafeDupablePerformIO (vkGetProc @VkCreateEvent)
+
+{-# NOINLINE vkCreateEvent #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkCreateEvent
+-- >     ( VkDevice device
+-- >     , const VkEventCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkEvent* pEvent
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateEvent vkCreateEvent registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateEvent <- vkGetDeviceProc @VkCreateEvent vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateEvent <- vkGetProc @VkCreateEvent
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCreateEvent" vkCreateEventSafe ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkEventCreateInfo -- ^ pCreateInfo
+                                       ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkEvent -- ^ pEvent
+                                                            -> IO VkResult
+
+##else
+vkCreateEventSafe ::
+                  VkDevice -- ^ device
+                           ->
+                    Ptr VkEventCreateInfo -- ^ pCreateInfo
+                                          ->
+                      Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                -> Ptr VkEvent -- ^ pEvent
+                                                               -> IO VkResult
+vkCreateEventSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCreateEvent)
+
+{-# NOINLINE vkCreateEventSafe #-}
+##endif
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+--   > VkResult vkCreateEvent
+--   >     ( VkDevice device
+--   >     , const VkEventCreateInfo* pCreateInfo
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     , VkEvent* pEvent
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateEvent vkCreateEvent registry at www.khronos.org>
+type HS_vkCreateEvent =
+     VkDevice -- ^ device
+              ->
+       Ptr VkEventCreateInfo -- ^ pCreateInfo
+                             ->
+         Ptr VkAllocationCallbacks -- ^ pAllocator
+                                   -> Ptr VkEvent -- ^ pEvent
+                                                  -> IO VkResult
+
+type PFN_vkCreateEvent = FunPtr HS_vkCreateEvent
+
+foreign import ccall unsafe "dynamic" unwrapVkCreateEvent ::
+               PFN_vkCreateEvent -> HS_vkCreateEvent
+
+foreign import ccall safe "dynamic" unwrapVkCreateEventSafe ::
+               PFN_vkCreateEvent -> HS_vkCreateEvent
+
+instance VulkanProc "vkCreateEvent" where
+        type VkProcType "vkCreateEvent" = HS_vkCreateEvent
+        vkProcSymbol = _VkCreateEvent
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkCreateEvent
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkCreateEventSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkDestroyEvent :: CString
+
+pattern VkDestroyEvent <- (is_VkDestroyEvent -> True)
+  where VkDestroyEvent = _VkDestroyEvent
+
+{-# INLINE _VkDestroyEvent #-}
+
+_VkDestroyEvent :: CString
+_VkDestroyEvent = Ptr "vkDestroyEvent\NUL"##
+
+{-# INLINE is_VkDestroyEvent #-}
+
+is_VkDestroyEvent :: CString -> Bool
+is_VkDestroyEvent = (EQ ==) . cmpCStrings _VkDestroyEvent
+
+type VkDestroyEvent = "vkDestroyEvent"
+
+-- |
+-- > void vkDestroyEvent
+-- >     ( VkDevice device
+-- >     , VkEvent event
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyEvent vkDestroyEvent registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroyEvent <- vkGetDeviceProc @VkDestroyEvent vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroyEvent <- vkGetProc @VkDestroyEvent
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkDestroyEvent" vkDestroyEvent ::
+               VkDevice -- ^ device
+                        -> VkEvent -- ^ event
+                                   -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                -> IO ()
+
+##else
+vkDestroyEvent ::
+               VkDevice -- ^ device
+                        -> VkEvent -- ^ event
+                                   -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                -> IO ()
+vkDestroyEvent = unsafeDupablePerformIO (vkGetProc @VkDestroyEvent)
+
+{-# NOINLINE vkDestroyEvent #-}
+##endif
+
+-- |
+-- > void vkDestroyEvent
+-- >     ( VkDevice device
+-- >     , VkEvent event
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyEvent vkDestroyEvent registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroyEvent <- vkGetDeviceProc @VkDestroyEvent vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroyEvent <- vkGetProc @VkDestroyEvent
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkDestroyEvent" vkDestroyEventSafe ::
+               VkDevice -- ^ device
+                        -> VkEvent -- ^ event
+                                   -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                -> IO ()
+
+##else
+vkDestroyEventSafe ::
+                   VkDevice -- ^ device
+                            -> VkEvent -- ^ event
+                                       -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                    -> IO ()
+vkDestroyEventSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkDestroyEvent)
+
+{-# NOINLINE vkDestroyEventSafe #-}
+##endif
+
+-- | > void vkDestroyEvent
+--   >     ( VkDevice device
+--   >     , VkEvent event
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyEvent vkDestroyEvent registry at www.khronos.org>
+type HS_vkDestroyEvent =
+     VkDevice -- ^ device
+              -> VkEvent -- ^ event
+                         -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                      -> IO ()
+
+type PFN_vkDestroyEvent = FunPtr HS_vkDestroyEvent
+
+foreign import ccall unsafe "dynamic" unwrapVkDestroyEvent ::
+               PFN_vkDestroyEvent -> HS_vkDestroyEvent
+
+foreign import ccall safe "dynamic" unwrapVkDestroyEventSafe ::
+               PFN_vkDestroyEvent -> HS_vkDestroyEvent
+
+instance VulkanProc "vkDestroyEvent" where
+        type VkProcType "vkDestroyEvent" = HS_vkDestroyEvent
+        vkProcSymbol = _VkDestroyEvent
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkDestroyEvent
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkDestroyEventSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkGetEventStatus :: CString
+
+pattern VkGetEventStatus <- (is_VkGetEventStatus -> True)
+  where VkGetEventStatus = _VkGetEventStatus
+
+{-# INLINE _VkGetEventStatus #-}
+
+_VkGetEventStatus :: CString
+_VkGetEventStatus = Ptr "vkGetEventStatus\NUL"##
+
+{-# INLINE is_VkGetEventStatus #-}
+
+is_VkGetEventStatus :: CString -> Bool
+is_VkGetEventStatus = (EQ ==) . cmpCStrings _VkGetEventStatus
+
+type VkGetEventStatus = "vkGetEventStatus"
+
+-- |
+-- Success codes: 'VK_EVENT_SET', 'VK_EVENT_RESET'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
+--
+-- > VkResult vkGetEventStatus
+-- >     ( VkDevice device
+-- >     , VkEvent event
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetEventStatus vkGetEventStatus registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetEventStatus <- vkGetDeviceProc @VkGetEventStatus vkDevice
+--
+-- or less efficient:
+--
+-- > myGetEventStatus <- vkGetProc @VkGetEventStatus
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkGetEventStatus" vkGetEventStatus ::
+               VkDevice -- ^ device
+                        -> VkEvent -- ^ event
+                                   -> IO VkResult
+
+##else
+vkGetEventStatus :: VkDevice -- ^ device
+                             -> VkEvent -- ^ event
+                                        -> IO VkResult
+vkGetEventStatus
+  = unsafeDupablePerformIO (vkGetProc @VkGetEventStatus)
+
+{-# NOINLINE vkGetEventStatus #-}
+##endif
+
+-- |
+-- Success codes: 'VK_EVENT_SET', 'VK_EVENT_RESET'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
+--
+-- > VkResult vkGetEventStatus
+-- >     ( VkDevice device
+-- >     , VkEvent event
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetEventStatus vkGetEventStatus registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetEventStatus <- vkGetDeviceProc @VkGetEventStatus vkDevice
+--
+-- or less efficient:
+--
+-- > myGetEventStatus <- vkGetProc @VkGetEventStatus
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkGetEventStatus" vkGetEventStatusSafe
+               :: VkDevice -- ^ device
+                           -> VkEvent -- ^ event
+                                      -> IO VkResult
+
+##else
+vkGetEventStatusSafe :: VkDevice -- ^ device
+                                 -> VkEvent -- ^ event
+                                            -> IO VkResult
+vkGetEventStatusSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkGetEventStatus)
+
+{-# NOINLINE vkGetEventStatusSafe #-}
+##endif
+
+-- | Success codes: 'VK_EVENT_SET', 'VK_EVENT_RESET'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
+--
+--   > VkResult vkGetEventStatus
+--   >     ( VkDevice device
+--   >     , VkEvent event
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetEventStatus vkGetEventStatus registry at www.khronos.org>
+type HS_vkGetEventStatus = VkDevice -- ^ device
+                                    -> VkEvent -- ^ event
+                                               -> IO VkResult
+
+type PFN_vkGetEventStatus = FunPtr HS_vkGetEventStatus
+
+foreign import ccall unsafe "dynamic" unwrapVkGetEventStatus ::
+               PFN_vkGetEventStatus -> HS_vkGetEventStatus
+
+foreign import ccall safe "dynamic" unwrapVkGetEventStatusSafe ::
+               PFN_vkGetEventStatus -> HS_vkGetEventStatus
+
+instance VulkanProc "vkGetEventStatus" where
+        type VkProcType "vkGetEventStatus" = HS_vkGetEventStatus
+        vkProcSymbol = _VkGetEventStatus
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkGetEventStatus
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkGetEventStatusSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkSetEvent :: CString
+
+pattern VkSetEvent <- (is_VkSetEvent -> True)
+  where VkSetEvent = _VkSetEvent
+
+{-# INLINE _VkSetEvent #-}
+
+_VkSetEvent :: CString
+_VkSetEvent = Ptr "vkSetEvent\NUL"##
+
+{-# INLINE is_VkSetEvent #-}
+
+is_VkSetEvent :: CString -> Bool
+is_VkSetEvent = (EQ ==) . cmpCStrings _VkSetEvent
+
+type VkSetEvent = "vkSetEvent"
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkSetEvent
+-- >     ( VkDevice device
+-- >     , VkEvent event
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkSetEvent vkSetEvent registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > mySetEvent <- vkGetDeviceProc @VkSetEvent vkDevice
+--
+-- or less efficient:
+--
+-- > mySetEvent <- vkGetProc @VkSetEvent
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkSetEvent" vkSetEvent ::
+               VkDevice -- ^ device
+                        -> VkEvent -- ^ event
+                                   -> IO VkResult
+
+##else
+vkSetEvent :: VkDevice -- ^ device
+                       -> VkEvent -- ^ event
+                                  -> IO VkResult
+vkSetEvent = unsafeDupablePerformIO (vkGetProc @VkSetEvent)
+
+{-# NOINLINE vkSetEvent #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkSetEvent
+-- >     ( VkDevice device
+-- >     , VkEvent event
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkSetEvent vkSetEvent registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > mySetEvent <- vkGetDeviceProc @VkSetEvent vkDevice
+--
+-- or less efficient:
+--
+-- > mySetEvent <- vkGetProc @VkSetEvent
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkSetEvent" vkSetEventSafe ::
+               VkDevice -- ^ device
+                        -> VkEvent -- ^ event
+                                   -> IO VkResult
+
+##else
+vkSetEventSafe :: VkDevice -- ^ device
+                           -> VkEvent -- ^ event
+                                      -> IO VkResult
+vkSetEventSafe = unsafeDupablePerformIO (vkGetProcSafe @VkSetEvent)
+
+{-# NOINLINE vkSetEventSafe #-}
+##endif
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+--   > VkResult vkSetEvent
+--   >     ( VkDevice device
+--   >     , VkEvent event
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkSetEvent vkSetEvent registry at www.khronos.org>
+type HS_vkSetEvent = VkDevice -- ^ device
+                              -> VkEvent -- ^ event
+                                         -> IO VkResult
+
+type PFN_vkSetEvent = FunPtr HS_vkSetEvent
+
+foreign import ccall unsafe "dynamic" unwrapVkSetEvent ::
+               PFN_vkSetEvent -> HS_vkSetEvent
+
+foreign import ccall safe "dynamic" unwrapVkSetEventSafe ::
+               PFN_vkSetEvent -> HS_vkSetEvent
+
+instance VulkanProc "vkSetEvent" where
+        type VkProcType "vkSetEvent" = HS_vkSetEvent
+        vkProcSymbol = _VkSetEvent
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkSetEvent
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkSetEventSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkResetEvent :: CString
+
+pattern VkResetEvent <- (is_VkResetEvent -> True)
+  where VkResetEvent = _VkResetEvent
+
+{-# INLINE _VkResetEvent #-}
+
+_VkResetEvent :: CString
+_VkResetEvent = Ptr "vkResetEvent\NUL"##
+
+{-# INLINE is_VkResetEvent #-}
+
+is_VkResetEvent :: CString -> Bool
+is_VkResetEvent = (EQ ==) . cmpCStrings _VkResetEvent
+
+type VkResetEvent = "vkResetEvent"
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkResetEvent
+-- >     ( VkDevice device
+-- >     , VkEvent event
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkResetEvent vkResetEvent registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myResetEvent <- vkGetDeviceProc @VkResetEvent vkDevice
+--
+-- or less efficient:
+--
+-- > myResetEvent <- vkGetProc @VkResetEvent
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkResetEvent" vkResetEvent ::
+               VkDevice -- ^ device
+                        -> VkEvent -- ^ event
+                                   -> IO VkResult
+
+##else
+vkResetEvent :: VkDevice -- ^ device
+                         -> VkEvent -- ^ event
+                                    -> IO VkResult
+vkResetEvent = unsafeDupablePerformIO (vkGetProc @VkResetEvent)
+
+{-# NOINLINE vkResetEvent #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkResetEvent
+-- >     ( VkDevice device
+-- >     , VkEvent event
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkResetEvent vkResetEvent registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myResetEvent <- vkGetDeviceProc @VkResetEvent vkDevice
+--
+-- or less efficient:
+--
+-- > myResetEvent <- vkGetProc @VkResetEvent
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkResetEvent" vkResetEventSafe ::
+               VkDevice -- ^ device
+                        -> VkEvent -- ^ event
+                                   -> IO VkResult
+
+##else
+vkResetEventSafe :: VkDevice -- ^ device
+                             -> VkEvent -- ^ event
+                                        -> IO VkResult
+vkResetEventSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkResetEvent)
+
+{-# NOINLINE vkResetEventSafe #-}
+##endif
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+--   > VkResult vkResetEvent
+--   >     ( VkDevice device
+--   >     , VkEvent event
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkResetEvent vkResetEvent registry at www.khronos.org>
+type HS_vkResetEvent = VkDevice -- ^ device
+                                -> VkEvent -- ^ event
+                                           -> IO VkResult
+
+type PFN_vkResetEvent = FunPtr HS_vkResetEvent
+
+foreign import ccall unsafe "dynamic" unwrapVkResetEvent ::
+               PFN_vkResetEvent -> HS_vkResetEvent
+
+foreign import ccall safe "dynamic" unwrapVkResetEventSafe ::
+               PFN_vkResetEvent -> HS_vkResetEvent
+
+instance VulkanProc "vkResetEvent" where
+        type VkProcType "vkResetEvent" = HS_vkResetEvent
+        vkProcSymbol = _VkResetEvent
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkResetEvent
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkResetEventSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCreateQueryPool :: CString
+
+pattern VkCreateQueryPool <- (is_VkCreateQueryPool -> True)
+  where VkCreateQueryPool = _VkCreateQueryPool
+
+{-# INLINE _VkCreateQueryPool #-}
+
+_VkCreateQueryPool :: CString
+_VkCreateQueryPool = Ptr "vkCreateQueryPool\NUL"##
+
+{-# INLINE is_VkCreateQueryPool #-}
+
+is_VkCreateQueryPool :: CString -> Bool
+is_VkCreateQueryPool = (EQ ==) . cmpCStrings _VkCreateQueryPool
+
+type VkCreateQueryPool = "vkCreateQueryPool"
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkCreateQueryPool
+-- >     ( VkDevice device
+-- >     , const VkQueryPoolCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkQueryPool* pQueryPool
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateQueryPool vkCreateQueryPool registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateQueryPool <- vkGetDeviceProc @VkCreateQueryPool vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateQueryPool <- vkGetProc @VkCreateQueryPool
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCreateQueryPool" vkCreateQueryPool
+               ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkQueryPoolCreateInfo -- ^ pCreateInfo
+                                           ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkQueryPool -- ^ pQueryPool
+                                                                -> IO VkResult
+
+##else
+vkCreateQueryPool ::
+                  VkDevice -- ^ device
+                           ->
+                    Ptr VkQueryPoolCreateInfo -- ^ pCreateInfo
+                                              ->
+                      Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                -> Ptr VkQueryPool -- ^ pQueryPool
+                                                                   -> IO VkResult
+vkCreateQueryPool
+  = unsafeDupablePerformIO (vkGetProc @VkCreateQueryPool)
+
+{-# NOINLINE vkCreateQueryPool #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkCreateQueryPool
+-- >     ( VkDevice device
+-- >     , const VkQueryPoolCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkQueryPool* pQueryPool
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateQueryPool vkCreateQueryPool registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateQueryPool <- vkGetDeviceProc @VkCreateQueryPool vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateQueryPool <- vkGetProc @VkCreateQueryPool
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCreateQueryPool" vkCreateQueryPoolSafe
+               ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkQueryPoolCreateInfo -- ^ pCreateInfo
+                                           ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkQueryPool -- ^ pQueryPool
+                                                                -> IO VkResult
+
+##else
+vkCreateQueryPoolSafe ::
+                      VkDevice -- ^ device
+                               ->
+                        Ptr VkQueryPoolCreateInfo -- ^ pCreateInfo
+                                                  ->
+                          Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                    -> Ptr VkQueryPool -- ^ pQueryPool
+                                                                       -> IO VkResult
+vkCreateQueryPoolSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCreateQueryPool)
+
+{-# NOINLINE vkCreateQueryPoolSafe #-}
+##endif
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+--   > VkResult vkCreateQueryPool
+--   >     ( VkDevice device
+--   >     , const VkQueryPoolCreateInfo* pCreateInfo
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     , VkQueryPool* pQueryPool
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateQueryPool vkCreateQueryPool registry at www.khronos.org>
+type HS_vkCreateQueryPool =
+     VkDevice -- ^ device
+              ->
+       Ptr VkQueryPoolCreateInfo -- ^ pCreateInfo
+                                 ->
+         Ptr VkAllocationCallbacks -- ^ pAllocator
+                                   -> Ptr VkQueryPool -- ^ pQueryPool
+                                                      -> IO VkResult
+
+type PFN_vkCreateQueryPool = FunPtr HS_vkCreateQueryPool
+
+foreign import ccall unsafe "dynamic" unwrapVkCreateQueryPool ::
+               PFN_vkCreateQueryPool -> HS_vkCreateQueryPool
+
+foreign import ccall safe "dynamic" unwrapVkCreateQueryPoolSafe ::
+               PFN_vkCreateQueryPool -> HS_vkCreateQueryPool
+
+instance VulkanProc "vkCreateQueryPool" where
+        type VkProcType "vkCreateQueryPool" = HS_vkCreateQueryPool
+        vkProcSymbol = _VkCreateQueryPool
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkCreateQueryPool
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkCreateQueryPoolSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkDestroyQueryPool :: CString
+
+pattern VkDestroyQueryPool <- (is_VkDestroyQueryPool -> True)
+  where VkDestroyQueryPool = _VkDestroyQueryPool
+
+{-# INLINE _VkDestroyQueryPool #-}
+
+_VkDestroyQueryPool :: CString
+_VkDestroyQueryPool = Ptr "vkDestroyQueryPool\NUL"##
+
+{-# INLINE is_VkDestroyQueryPool #-}
+
+is_VkDestroyQueryPool :: CString -> Bool
+is_VkDestroyQueryPool = (EQ ==) . cmpCStrings _VkDestroyQueryPool
+
+type VkDestroyQueryPool = "vkDestroyQueryPool"
+
+-- |
+-- > void vkDestroyQueryPool
+-- >     ( VkDevice device
+-- >     , VkQueryPool queryPool
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyQueryPool vkDestroyQueryPool registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroyQueryPool <- vkGetDeviceProc @VkDestroyQueryPool vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroyQueryPool <- vkGetProc @VkDestroyQueryPool
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkDestroyQueryPool" vkDestroyQueryPool
+               :: VkDevice -- ^ device
+                           -> VkQueryPool -- ^ queryPool
+                                          -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                       -> IO ()
+
+##else
+vkDestroyQueryPool ::
+                   VkDevice -- ^ device
+                            -> VkQueryPool -- ^ queryPool
+                                           -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                        -> IO ()
+vkDestroyQueryPool
+  = unsafeDupablePerformIO (vkGetProc @VkDestroyQueryPool)
+
+{-# NOINLINE vkDestroyQueryPool #-}
+##endif
+
+-- |
+-- > void vkDestroyQueryPool
+-- >     ( VkDevice device
+-- >     , VkQueryPool queryPool
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyQueryPool vkDestroyQueryPool registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroyQueryPool <- vkGetDeviceProc @VkDestroyQueryPool vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroyQueryPool <- vkGetProc @VkDestroyQueryPool
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkDestroyQueryPool"
+               vkDestroyQueryPoolSafe ::
+               VkDevice -- ^ device
+                        -> VkQueryPool -- ^ queryPool
+                                       -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                    -> IO ()
+
+##else
+vkDestroyQueryPoolSafe ::
+                       VkDevice -- ^ device
+                                -> VkQueryPool -- ^ queryPool
+                                               -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                            -> IO ()
+vkDestroyQueryPoolSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkDestroyQueryPool)
+
+{-# NOINLINE vkDestroyQueryPoolSafe #-}
+##endif
+
+-- | > void vkDestroyQueryPool
+--   >     ( VkDevice device
+--   >     , VkQueryPool queryPool
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyQueryPool vkDestroyQueryPool registry at www.khronos.org>
+type HS_vkDestroyQueryPool =
+     VkDevice -- ^ device
+              -> VkQueryPool -- ^ queryPool
+                             -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                          -> IO ()
+
+type PFN_vkDestroyQueryPool = FunPtr HS_vkDestroyQueryPool
+
+foreign import ccall unsafe "dynamic" unwrapVkDestroyQueryPool ::
+               PFN_vkDestroyQueryPool -> HS_vkDestroyQueryPool
+
+foreign import ccall safe "dynamic" unwrapVkDestroyQueryPoolSafe ::
+               PFN_vkDestroyQueryPool -> HS_vkDestroyQueryPool
+
+instance VulkanProc "vkDestroyQueryPool" where
+        type VkProcType "vkDestroyQueryPool" = HS_vkDestroyQueryPool
+        vkProcSymbol = _VkDestroyQueryPool
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkDestroyQueryPool
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkDestroyQueryPoolSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkGetQueryPoolResults :: CString
+
+pattern VkGetQueryPoolResults <- (is_VkGetQueryPoolResults -> True)
+  where VkGetQueryPoolResults = _VkGetQueryPoolResults
+
+{-# INLINE _VkGetQueryPoolResults #-}
+
+_VkGetQueryPoolResults :: CString
+_VkGetQueryPoolResults = Ptr "vkGetQueryPoolResults\NUL"##
+
+{-# INLINE is_VkGetQueryPoolResults #-}
+
+is_VkGetQueryPoolResults :: CString -> Bool
+is_VkGetQueryPoolResults
+  = (EQ ==) . cmpCStrings _VkGetQueryPoolResults
+
+type VkGetQueryPoolResults = "vkGetQueryPoolResults"
+
+-- |
+-- Success codes: 'VK_SUCCESS', 'VK_NOT_READY'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
+--
+-- > VkResult vkGetQueryPoolResults
+-- >     ( VkDevice device
+-- >     , VkQueryPool queryPool
+-- >     , uint32_t firstQuery
+-- >     , uint32_t queryCount
+-- >     , size_t dataSize
+-- >     , void* pData
+-- >     , VkDeviceSize stride
+-- >     , VkQueryResultFlags flags
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetQueryPoolResults vkGetQueryPoolResults registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetQueryPoolResults <- vkGetDeviceProc @VkGetQueryPoolResults vkDevice
+--
+-- or less efficient:
+--
+-- > myGetQueryPoolResults <- vkGetProc @VkGetQueryPoolResults
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkGetQueryPoolResults"
+               vkGetQueryPoolResults ::
+               VkDevice -- ^ device
+                        ->
+                 VkQueryPool -- ^ queryPool
+                             ->
+                   Word32 -- ^ firstQuery
+                          ->
+                     Word32 -- ^ queryCount
+                            ->
+                       CSize -- ^ dataSize
+                             ->
+                         Ptr Void -- ^ pData
+                                  -> VkDeviceSize -- ^ stride
+                                                  -> VkQueryResultFlags -- ^ flags
+                                                                        -> IO VkResult
+
+##else
+vkGetQueryPoolResults ::
+                      VkDevice -- ^ device
+                               ->
+                        VkQueryPool -- ^ queryPool
+                                    ->
+                          Word32 -- ^ firstQuery
+                                 ->
+                            Word32 -- ^ queryCount
+                                   ->
+                              CSize -- ^ dataSize
+                                    ->
+                                Ptr Void -- ^ pData
+                                         -> VkDeviceSize -- ^ stride
+                                                         -> VkQueryResultFlags -- ^ flags
+                                                                               -> IO VkResult
+vkGetQueryPoolResults
+  = unsafeDupablePerformIO (vkGetProc @VkGetQueryPoolResults)
+
+{-# NOINLINE vkGetQueryPoolResults #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS', 'VK_NOT_READY'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
+--
+-- > VkResult vkGetQueryPoolResults
+-- >     ( VkDevice device
+-- >     , VkQueryPool queryPool
+-- >     , uint32_t firstQuery
+-- >     , uint32_t queryCount
+-- >     , size_t dataSize
+-- >     , void* pData
+-- >     , VkDeviceSize stride
+-- >     , VkQueryResultFlags flags
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetQueryPoolResults vkGetQueryPoolResults registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetQueryPoolResults <- vkGetDeviceProc @VkGetQueryPoolResults vkDevice
+--
+-- or less efficient:
+--
+-- > myGetQueryPoolResults <- vkGetProc @VkGetQueryPoolResults
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkGetQueryPoolResults"
+               vkGetQueryPoolResultsSafe ::
+               VkDevice -- ^ device
+                        ->
+                 VkQueryPool -- ^ queryPool
+                             ->
+                   Word32 -- ^ firstQuery
+                          ->
+                     Word32 -- ^ queryCount
+                            ->
+                       CSize -- ^ dataSize
+                             ->
+                         Ptr Void -- ^ pData
+                                  -> VkDeviceSize -- ^ stride
+                                                  -> VkQueryResultFlags -- ^ flags
+                                                                        -> IO VkResult
+
+##else
+vkGetQueryPoolResultsSafe ::
+                          VkDevice -- ^ device
+                                   ->
+                            VkQueryPool -- ^ queryPool
+                                        ->
+                              Word32 -- ^ firstQuery
+                                     ->
+                                Word32 -- ^ queryCount
+                                       ->
+                                  CSize -- ^ dataSize
+                                        ->
+                                    Ptr Void -- ^ pData
+                                             -> VkDeviceSize -- ^ stride
+                                                             -> VkQueryResultFlags -- ^ flags
+                                                                                   -> IO VkResult
+vkGetQueryPoolResultsSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkGetQueryPoolResults)
+
+{-# NOINLINE vkGetQueryPoolResultsSafe #-}
+##endif
+
+-- | Success codes: 'VK_SUCCESS', 'VK_NOT_READY'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
+--
+--   > VkResult vkGetQueryPoolResults
+--   >     ( VkDevice device
+--   >     , VkQueryPool queryPool
+--   >     , uint32_t firstQuery
+--   >     , uint32_t queryCount
+--   >     , size_t dataSize
+--   >     , void* pData
+--   >     , VkDeviceSize stride
+--   >     , VkQueryResultFlags flags
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetQueryPoolResults vkGetQueryPoolResults registry at www.khronos.org>
+type HS_vkGetQueryPoolResults =
+     VkDevice -- ^ device
+              ->
+       VkQueryPool -- ^ queryPool
+                   ->
+         Word32 -- ^ firstQuery
+                ->
+           Word32 -- ^ queryCount
+                  ->
+             CSize -- ^ dataSize
+                   ->
+               Ptr Void -- ^ pData
+                        -> VkDeviceSize -- ^ stride
+                                        -> VkQueryResultFlags -- ^ flags
+                                                              -> IO VkResult
+
+type PFN_vkGetQueryPoolResults = FunPtr HS_vkGetQueryPoolResults
+
+foreign import ccall unsafe "dynamic" unwrapVkGetQueryPoolResults
+               :: PFN_vkGetQueryPoolResults -> HS_vkGetQueryPoolResults
+
+foreign import ccall safe "dynamic" unwrapVkGetQueryPoolResultsSafe
+               :: PFN_vkGetQueryPoolResults -> HS_vkGetQueryPoolResults
+
+instance VulkanProc "vkGetQueryPoolResults" where
+        type VkProcType "vkGetQueryPoolResults" = HS_vkGetQueryPoolResults
+        vkProcSymbol = _VkGetQueryPoolResults
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkGetQueryPoolResults
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkGetQueryPoolResultsSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCreateBuffer :: CString
+
+pattern VkCreateBuffer <- (is_VkCreateBuffer -> True)
+  where VkCreateBuffer = _VkCreateBuffer
+
+{-# INLINE _VkCreateBuffer #-}
+
+_VkCreateBuffer :: CString
+_VkCreateBuffer = Ptr "vkCreateBuffer\NUL"##
+
+{-# INLINE is_VkCreateBuffer #-}
+
+is_VkCreateBuffer :: CString -> Bool
+is_VkCreateBuffer = (EQ ==) . cmpCStrings _VkCreateBuffer
+
+type VkCreateBuffer = "vkCreateBuffer"
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkCreateBuffer
+-- >     ( VkDevice device
+-- >     , const VkBufferCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkBuffer* pBuffer
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateBuffer vkCreateBuffer registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateBuffer <- vkGetDeviceProc @VkCreateBuffer vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateBuffer <- vkGetProc @VkCreateBuffer
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCreateBuffer" vkCreateBuffer ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkBufferCreateInfo -- ^ pCreateInfo
+                                        ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkBuffer -- ^ pBuffer
+                                                             -> IO VkResult
+
+##else
+vkCreateBuffer ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkBufferCreateInfo -- ^ pCreateInfo
+                                        ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkBuffer -- ^ pBuffer
+                                                             -> IO VkResult
+vkCreateBuffer = unsafeDupablePerformIO (vkGetProc @VkCreateBuffer)
+
+{-# NOINLINE vkCreateBuffer #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkCreateBuffer
+-- >     ( VkDevice device
+-- >     , const VkBufferCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkBuffer* pBuffer
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateBuffer vkCreateBuffer registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateBuffer <- vkGetDeviceProc @VkCreateBuffer vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateBuffer <- vkGetProc @VkCreateBuffer
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCreateBuffer" vkCreateBufferSafe ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkBufferCreateInfo -- ^ pCreateInfo
+                                        ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkBuffer -- ^ pBuffer
+                                                             -> IO VkResult
+
+##else
+vkCreateBufferSafe ::
+                   VkDevice -- ^ device
+                            ->
+                     Ptr VkBufferCreateInfo -- ^ pCreateInfo
+                                            ->
+                       Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                 -> Ptr VkBuffer -- ^ pBuffer
+                                                                 -> IO VkResult
+vkCreateBufferSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCreateBuffer)
+
+{-# NOINLINE vkCreateBufferSafe #-}
+##endif
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+--   > VkResult vkCreateBuffer
+--   >     ( VkDevice device
+--   >     , const VkBufferCreateInfo* pCreateInfo
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     , VkBuffer* pBuffer
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateBuffer vkCreateBuffer registry at www.khronos.org>
+type HS_vkCreateBuffer =
+     VkDevice -- ^ device
+              ->
+       Ptr VkBufferCreateInfo -- ^ pCreateInfo
+                              ->
+         Ptr VkAllocationCallbacks -- ^ pAllocator
+                                   -> Ptr VkBuffer -- ^ pBuffer
+                                                   -> IO VkResult
+
+type PFN_vkCreateBuffer = FunPtr HS_vkCreateBuffer
+
+foreign import ccall unsafe "dynamic" unwrapVkCreateBuffer ::
+               PFN_vkCreateBuffer -> HS_vkCreateBuffer
+
+foreign import ccall safe "dynamic" unwrapVkCreateBufferSafe ::
+               PFN_vkCreateBuffer -> HS_vkCreateBuffer
+
+instance VulkanProc "vkCreateBuffer" where
+        type VkProcType "vkCreateBuffer" = HS_vkCreateBuffer
+        vkProcSymbol = _VkCreateBuffer
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkCreateBuffer
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkCreateBufferSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkDestroyBuffer :: CString
+
+pattern VkDestroyBuffer <- (is_VkDestroyBuffer -> True)
+  where VkDestroyBuffer = _VkDestroyBuffer
+
+{-# INLINE _VkDestroyBuffer #-}
+
+_VkDestroyBuffer :: CString
+_VkDestroyBuffer = Ptr "vkDestroyBuffer\NUL"##
+
+{-# INLINE is_VkDestroyBuffer #-}
+
+is_VkDestroyBuffer :: CString -> Bool
+is_VkDestroyBuffer = (EQ ==) . cmpCStrings _VkDestroyBuffer
+
+type VkDestroyBuffer = "vkDestroyBuffer"
+
+-- |
+-- > void vkDestroyBuffer
+-- >     ( VkDevice device
+-- >     , VkBuffer buffer
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyBuffer vkDestroyBuffer registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroyBuffer <- vkGetDeviceProc @VkDestroyBuffer vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroyBuffer <- vkGetProc @VkDestroyBuffer
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkDestroyBuffer" vkDestroyBuffer ::
+               VkDevice -- ^ device
+                        -> VkBuffer -- ^ buffer
+                                    -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                 -> IO ()
+
+##else
+vkDestroyBuffer ::
+                VkDevice -- ^ device
+                         -> VkBuffer -- ^ buffer
+                                     -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                  -> IO ()
+vkDestroyBuffer
+  = unsafeDupablePerformIO (vkGetProc @VkDestroyBuffer)
+
+{-# NOINLINE vkDestroyBuffer #-}
+##endif
+
+-- |
+-- > void vkDestroyBuffer
+-- >     ( VkDevice device
+-- >     , VkBuffer buffer
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyBuffer vkDestroyBuffer registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroyBuffer <- vkGetDeviceProc @VkDestroyBuffer vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroyBuffer <- vkGetProc @VkDestroyBuffer
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkDestroyBuffer" vkDestroyBufferSafe ::
+               VkDevice -- ^ device
+                        -> VkBuffer -- ^ buffer
+                                    -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                 -> IO ()
+
+##else
+vkDestroyBufferSafe ::
+                    VkDevice -- ^ device
+                             -> VkBuffer -- ^ buffer
+                                         -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                      -> IO ()
+vkDestroyBufferSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkDestroyBuffer)
+
+{-# NOINLINE vkDestroyBufferSafe #-}
+##endif
+
+-- | > void vkDestroyBuffer
+--   >     ( VkDevice device
+--   >     , VkBuffer buffer
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyBuffer vkDestroyBuffer registry at www.khronos.org>
+type HS_vkDestroyBuffer =
+     VkDevice -- ^ device
+              -> VkBuffer -- ^ buffer
+                          -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                       -> IO ()
+
+type PFN_vkDestroyBuffer = FunPtr HS_vkDestroyBuffer
+
+foreign import ccall unsafe "dynamic" unwrapVkDestroyBuffer ::
+               PFN_vkDestroyBuffer -> HS_vkDestroyBuffer
+
+foreign import ccall safe "dynamic" unwrapVkDestroyBufferSafe ::
+               PFN_vkDestroyBuffer -> HS_vkDestroyBuffer
+
+instance VulkanProc "vkDestroyBuffer" where
+        type VkProcType "vkDestroyBuffer" = HS_vkDestroyBuffer
+        vkProcSymbol = _VkDestroyBuffer
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkDestroyBuffer
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkDestroyBufferSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCreateBufferView :: CString
+
+pattern VkCreateBufferView <- (is_VkCreateBufferView -> True)
+  where VkCreateBufferView = _VkCreateBufferView
+
+{-# INLINE _VkCreateBufferView #-}
+
+_VkCreateBufferView :: CString
+_VkCreateBufferView = Ptr "vkCreateBufferView\NUL"##
+
+{-# INLINE is_VkCreateBufferView #-}
+
+is_VkCreateBufferView :: CString -> Bool
+is_VkCreateBufferView = (EQ ==) . cmpCStrings _VkCreateBufferView
+
+type VkCreateBufferView = "vkCreateBufferView"
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkCreateBufferView
+-- >     ( VkDevice device
+-- >     , const VkBufferViewCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkBufferView* pView
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateBufferView vkCreateBufferView registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateBufferView <- vkGetDeviceProc @VkCreateBufferView vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateBufferView <- vkGetProc @VkCreateBufferView
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCreateBufferView" vkCreateBufferView
+               ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkBufferViewCreateInfo -- ^ pCreateInfo
+                                            ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkBufferView -- ^ pView
+                                                                 -> IO VkResult
+
+##else
+vkCreateBufferView ::
+                   VkDevice -- ^ device
+                            ->
+                     Ptr VkBufferViewCreateInfo -- ^ pCreateInfo
+                                                ->
+                       Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                 -> Ptr VkBufferView -- ^ pView
+                                                                     -> IO VkResult
+vkCreateBufferView
+  = unsafeDupablePerformIO (vkGetProc @VkCreateBufferView)
+
+{-# NOINLINE vkCreateBufferView #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkCreateBufferView
+-- >     ( VkDevice device
+-- >     , const VkBufferViewCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkBufferView* pView
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateBufferView vkCreateBufferView registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateBufferView <- vkGetDeviceProc @VkCreateBufferView vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateBufferView <- vkGetProc @VkCreateBufferView
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCreateBufferView"
+               vkCreateBufferViewSafe ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkBufferViewCreateInfo -- ^ pCreateInfo
+                                            ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkBufferView -- ^ pView
+                                                                 -> IO VkResult
+
+##else
+vkCreateBufferViewSafe ::
+                       VkDevice -- ^ device
+                                ->
+                         Ptr VkBufferViewCreateInfo -- ^ pCreateInfo
+                                                    ->
+                           Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                     -> Ptr VkBufferView -- ^ pView
+                                                                         -> IO VkResult
+vkCreateBufferViewSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCreateBufferView)
+
+{-# NOINLINE vkCreateBufferViewSafe #-}
+##endif
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+--   > VkResult vkCreateBufferView
+--   >     ( VkDevice device
+--   >     , const VkBufferViewCreateInfo* pCreateInfo
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     , VkBufferView* pView
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateBufferView vkCreateBufferView registry at www.khronos.org>
+type HS_vkCreateBufferView =
+     VkDevice -- ^ device
+              ->
+       Ptr VkBufferViewCreateInfo -- ^ pCreateInfo
+                                  ->
+         Ptr VkAllocationCallbacks -- ^ pAllocator
+                                   -> Ptr VkBufferView -- ^ pView
+                                                       -> IO VkResult
+
+type PFN_vkCreateBufferView = FunPtr HS_vkCreateBufferView
+
+foreign import ccall unsafe "dynamic" unwrapVkCreateBufferView ::
+               PFN_vkCreateBufferView -> HS_vkCreateBufferView
+
+foreign import ccall safe "dynamic" unwrapVkCreateBufferViewSafe ::
+               PFN_vkCreateBufferView -> HS_vkCreateBufferView
+
+instance VulkanProc "vkCreateBufferView" where
+        type VkProcType "vkCreateBufferView" = HS_vkCreateBufferView
+        vkProcSymbol = _VkCreateBufferView
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkCreateBufferView
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkCreateBufferViewSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkDestroyBufferView :: CString
+
+pattern VkDestroyBufferView <- (is_VkDestroyBufferView -> True)
+  where VkDestroyBufferView = _VkDestroyBufferView
+
+{-# INLINE _VkDestroyBufferView #-}
+
+_VkDestroyBufferView :: CString
+_VkDestroyBufferView = Ptr "vkDestroyBufferView\NUL"##
+
+{-# INLINE is_VkDestroyBufferView #-}
+
+is_VkDestroyBufferView :: CString -> Bool
+is_VkDestroyBufferView = (EQ ==) . cmpCStrings _VkDestroyBufferView
+
+type VkDestroyBufferView = "vkDestroyBufferView"
+
+-- |
+-- > void vkDestroyBufferView
+-- >     ( VkDevice device
+-- >     , VkBufferView bufferView
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyBufferView vkDestroyBufferView registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroyBufferView <- vkGetDeviceProc @VkDestroyBufferView vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroyBufferView <- vkGetProc @VkDestroyBufferView
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkDestroyBufferView"
+               vkDestroyBufferView ::
+               VkDevice -- ^ device
+                        -> VkBufferView -- ^ bufferView
+                                        -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                     -> IO ()
+
+##else
+vkDestroyBufferView ::
+                    VkDevice -- ^ device
+                             -> VkBufferView -- ^ bufferView
+                                             -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                          -> IO ()
+vkDestroyBufferView
+  = unsafeDupablePerformIO (vkGetProc @VkDestroyBufferView)
+
+{-# NOINLINE vkDestroyBufferView #-}
+##endif
+
+-- |
+-- > void vkDestroyBufferView
+-- >     ( VkDevice device
+-- >     , VkBufferView bufferView
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyBufferView vkDestroyBufferView registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroyBufferView <- vkGetDeviceProc @VkDestroyBufferView vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroyBufferView <- vkGetProc @VkDestroyBufferView
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkDestroyBufferView"
+               vkDestroyBufferViewSafe ::
+               VkDevice -- ^ device
+                        -> VkBufferView -- ^ bufferView
+                                        -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                     -> IO ()
+
+##else
+vkDestroyBufferViewSafe ::
+                        VkDevice -- ^ device
+                                 -> VkBufferView -- ^ bufferView
+                                                 -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                              -> IO ()
+vkDestroyBufferViewSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkDestroyBufferView)
+
+{-# NOINLINE vkDestroyBufferViewSafe #-}
+##endif
+
+-- | > void vkDestroyBufferView
+--   >     ( VkDevice device
+--   >     , VkBufferView bufferView
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyBufferView vkDestroyBufferView registry at www.khronos.org>
+type HS_vkDestroyBufferView =
+     VkDevice -- ^ device
+              -> VkBufferView -- ^ bufferView
+                              -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                           -> IO ()
+
+type PFN_vkDestroyBufferView = FunPtr HS_vkDestroyBufferView
+
+foreign import ccall unsafe "dynamic" unwrapVkDestroyBufferView ::
+               PFN_vkDestroyBufferView -> HS_vkDestroyBufferView
+
+foreign import ccall safe "dynamic" unwrapVkDestroyBufferViewSafe
+               :: PFN_vkDestroyBufferView -> HS_vkDestroyBufferView
+
+instance VulkanProc "vkDestroyBufferView" where
+        type VkProcType "vkDestroyBufferView" = HS_vkDestroyBufferView
+        vkProcSymbol = _VkDestroyBufferView
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkDestroyBufferView
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkDestroyBufferViewSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCreateImage :: CString
+
+pattern VkCreateImage <- (is_VkCreateImage -> True)
+  where VkCreateImage = _VkCreateImage
+
+{-# INLINE _VkCreateImage #-}
+
+_VkCreateImage :: CString
+_VkCreateImage = Ptr "vkCreateImage\NUL"##
+
+{-# INLINE is_VkCreateImage #-}
+
+is_VkCreateImage :: CString -> Bool
+is_VkCreateImage = (EQ ==) . cmpCStrings _VkCreateImage
+
+type VkCreateImage = "vkCreateImage"
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkCreateImage
+-- >     ( VkDevice device
+-- >     , const VkImageCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkImage* pImage
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateImage vkCreateImage registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateImage <- vkGetDeviceProc @VkCreateImage vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateImage <- vkGetProc @VkCreateImage
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCreateImage" vkCreateImage ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkImageCreateInfo -- ^ pCreateInfo
+                                       ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkImage -- ^ pImage
+                                                            -> IO VkResult
+
+##else
+vkCreateImage ::
+              VkDevice -- ^ device
+                       ->
+                Ptr VkImageCreateInfo -- ^ pCreateInfo
+                                      ->
+                  Ptr VkAllocationCallbacks -- ^ pAllocator
+                                            -> Ptr VkImage -- ^ pImage
+                                                           -> IO VkResult
+vkCreateImage = unsafeDupablePerformIO (vkGetProc @VkCreateImage)
+
+{-# NOINLINE vkCreateImage #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkCreateImage
+-- >     ( VkDevice device
+-- >     , const VkImageCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkImage* pImage
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateImage vkCreateImage registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateImage <- vkGetDeviceProc @VkCreateImage vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateImage <- vkGetProc @VkCreateImage
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCreateImage" vkCreateImageSafe ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkImageCreateInfo -- ^ pCreateInfo
+                                       ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkImage -- ^ pImage
+                                                            -> IO VkResult
+
+##else
+vkCreateImageSafe ::
+                  VkDevice -- ^ device
+                           ->
+                    Ptr VkImageCreateInfo -- ^ pCreateInfo
+                                          ->
+                      Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                -> Ptr VkImage -- ^ pImage
+                                                               -> IO VkResult
+vkCreateImageSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCreateImage)
+
+{-# NOINLINE vkCreateImageSafe #-}
+##endif
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+--   > VkResult vkCreateImage
+--   >     ( VkDevice device
+--   >     , const VkImageCreateInfo* pCreateInfo
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     , VkImage* pImage
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateImage vkCreateImage registry at www.khronos.org>
+type HS_vkCreateImage =
+     VkDevice -- ^ device
+              ->
+       Ptr VkImageCreateInfo -- ^ pCreateInfo
+                             ->
+         Ptr VkAllocationCallbacks -- ^ pAllocator
+                                   -> Ptr VkImage -- ^ pImage
+                                                  -> IO VkResult
+
+type PFN_vkCreateImage = FunPtr HS_vkCreateImage
+
+foreign import ccall unsafe "dynamic" unwrapVkCreateImage ::
+               PFN_vkCreateImage -> HS_vkCreateImage
+
+foreign import ccall safe "dynamic" unwrapVkCreateImageSafe ::
+               PFN_vkCreateImage -> HS_vkCreateImage
+
+instance VulkanProc "vkCreateImage" where
+        type VkProcType "vkCreateImage" = HS_vkCreateImage
+        vkProcSymbol = _VkCreateImage
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkCreateImage
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkCreateImageSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkDestroyImage :: CString
+
+pattern VkDestroyImage <- (is_VkDestroyImage -> True)
+  where VkDestroyImage = _VkDestroyImage
+
+{-# INLINE _VkDestroyImage #-}
+
+_VkDestroyImage :: CString
+_VkDestroyImage = Ptr "vkDestroyImage\NUL"##
+
+{-# INLINE is_VkDestroyImage #-}
+
+is_VkDestroyImage :: CString -> Bool
+is_VkDestroyImage = (EQ ==) . cmpCStrings _VkDestroyImage
+
+type VkDestroyImage = "vkDestroyImage"
+
+-- |
+-- > void vkDestroyImage
+-- >     ( VkDevice device
+-- >     , VkImage image
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyImage vkDestroyImage registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroyImage <- vkGetDeviceProc @VkDestroyImage vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroyImage <- vkGetProc @VkDestroyImage
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkDestroyImage" vkDestroyImage ::
+               VkDevice -- ^ device
+                        -> VkImage -- ^ image
+                                   -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                -> IO ()
+
+##else
+vkDestroyImage ::
+               VkDevice -- ^ device
+                        -> VkImage -- ^ image
+                                   -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                -> IO ()
+vkDestroyImage = unsafeDupablePerformIO (vkGetProc @VkDestroyImage)
+
+{-# NOINLINE vkDestroyImage #-}
+##endif
+
+-- |
+-- > void vkDestroyImage
+-- >     ( VkDevice device
+-- >     , VkImage image
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyImage vkDestroyImage registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroyImage <- vkGetDeviceProc @VkDestroyImage vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroyImage <- vkGetProc @VkDestroyImage
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkDestroyImage" vkDestroyImageSafe ::
+               VkDevice -- ^ device
+                        -> VkImage -- ^ image
+                                   -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                -> IO ()
+
+##else
+vkDestroyImageSafe ::
+                   VkDevice -- ^ device
+                            -> VkImage -- ^ image
+                                       -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                    -> IO ()
+vkDestroyImageSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkDestroyImage)
+
+{-# NOINLINE vkDestroyImageSafe #-}
+##endif
+
+-- | > void vkDestroyImage
+--   >     ( VkDevice device
+--   >     , VkImage image
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyImage vkDestroyImage registry at www.khronos.org>
+type HS_vkDestroyImage =
+     VkDevice -- ^ device
+              -> VkImage -- ^ image
+                         -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                      -> IO ()
+
+type PFN_vkDestroyImage = FunPtr HS_vkDestroyImage
+
+foreign import ccall unsafe "dynamic" unwrapVkDestroyImage ::
+               PFN_vkDestroyImage -> HS_vkDestroyImage
+
+foreign import ccall safe "dynamic" unwrapVkDestroyImageSafe ::
+               PFN_vkDestroyImage -> HS_vkDestroyImage
+
+instance VulkanProc "vkDestroyImage" where
+        type VkProcType "vkDestroyImage" = HS_vkDestroyImage
+        vkProcSymbol = _VkDestroyImage
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkDestroyImage
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkDestroyImageSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkGetImageSubresourceLayout :: CString
+
+pattern VkGetImageSubresourceLayout <-
+        (is_VkGetImageSubresourceLayout -> True)
+  where VkGetImageSubresourceLayout = _VkGetImageSubresourceLayout
+
+{-# INLINE _VkGetImageSubresourceLayout #-}
+
+_VkGetImageSubresourceLayout :: CString
+_VkGetImageSubresourceLayout
+  = Ptr "vkGetImageSubresourceLayout\NUL"##
+
+{-# INLINE is_VkGetImageSubresourceLayout #-}
+
+is_VkGetImageSubresourceLayout :: CString -> Bool
+is_VkGetImageSubresourceLayout
+  = (EQ ==) . cmpCStrings _VkGetImageSubresourceLayout
+
+type VkGetImageSubresourceLayout = "vkGetImageSubresourceLayout"
+
+-- |
+-- > void vkGetImageSubresourceLayout
+-- >     ( VkDevice device
+-- >     , VkImage image
+-- >     , const VkImageSubresource* pSubresource
+-- >     , VkSubresourceLayout* pLayout
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetImageSubresourceLayout vkGetImageSubresourceLayout registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetImageSubresourceLayout <- vkGetDeviceProc @VkGetImageSubresourceLayout vkDevice
+--
+-- or less efficient:
+--
+-- > myGetImageSubresourceLayout <- vkGetProc @VkGetImageSubresourceLayout
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkGetImageSubresourceLayout"
+               vkGetImageSubresourceLayout ::
+               VkDevice -- ^ device
+                        ->
+                 VkImage -- ^ image
+                         ->
+                   Ptr VkImageSubresource -- ^ pSubresource
+                                          -> Ptr VkSubresourceLayout -- ^ pLayout
+                                                                     -> IO ()
+
+##else
+vkGetImageSubresourceLayout ::
+                            VkDevice -- ^ device
+                                     ->
+                              VkImage -- ^ image
+                                      ->
+                                Ptr VkImageSubresource -- ^ pSubresource
+                                                       -> Ptr VkSubresourceLayout -- ^ pLayout
+                                                                                  -> IO ()
+vkGetImageSubresourceLayout
+  = unsafeDupablePerformIO (vkGetProc @VkGetImageSubresourceLayout)
+
+{-# NOINLINE vkGetImageSubresourceLayout #-}
+##endif
+
+-- |
+-- > void vkGetImageSubresourceLayout
+-- >     ( VkDevice device
+-- >     , VkImage image
+-- >     , const VkImageSubresource* pSubresource
+-- >     , VkSubresourceLayout* pLayout
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetImageSubresourceLayout vkGetImageSubresourceLayout registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetImageSubresourceLayout <- vkGetDeviceProc @VkGetImageSubresourceLayout vkDevice
+--
+-- or less efficient:
+--
+-- > myGetImageSubresourceLayout <- vkGetProc @VkGetImageSubresourceLayout
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkGetImageSubresourceLayout"
+               vkGetImageSubresourceLayoutSafe ::
+               VkDevice -- ^ device
+                        ->
+                 VkImage -- ^ image
+                         ->
+                   Ptr VkImageSubresource -- ^ pSubresource
+                                          -> Ptr VkSubresourceLayout -- ^ pLayout
+                                                                     -> IO ()
+
+##else
+vkGetImageSubresourceLayoutSafe ::
+                                VkDevice -- ^ device
+                                         ->
+                                  VkImage -- ^ image
+                                          ->
+                                    Ptr VkImageSubresource -- ^ pSubresource
+                                                           -> Ptr VkSubresourceLayout -- ^ pLayout
+                                                                                      -> IO ()
+vkGetImageSubresourceLayoutSafe
+  = unsafeDupablePerformIO
+      (vkGetProcSafe @VkGetImageSubresourceLayout)
+
+{-# NOINLINE vkGetImageSubresourceLayoutSafe #-}
+##endif
+
+-- | > void vkGetImageSubresourceLayout
+--   >     ( VkDevice device
+--   >     , VkImage image
+--   >     , const VkImageSubresource* pSubresource
+--   >     , VkSubresourceLayout* pLayout
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetImageSubresourceLayout vkGetImageSubresourceLayout registry at www.khronos.org>
+type HS_vkGetImageSubresourceLayout =
+     VkDevice -- ^ device
+              ->
+       VkImage -- ^ image
+               ->
+         Ptr VkImageSubresource -- ^ pSubresource
+                                -> Ptr VkSubresourceLayout -- ^ pLayout
+                                                           -> IO ()
+
+type PFN_vkGetImageSubresourceLayout =
+     FunPtr HS_vkGetImageSubresourceLayout
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkGetImageSubresourceLayout ::
+               PFN_vkGetImageSubresourceLayout -> HS_vkGetImageSubresourceLayout
+
+foreign import ccall safe "dynamic"
+               unwrapVkGetImageSubresourceLayoutSafe ::
+               PFN_vkGetImageSubresourceLayout -> HS_vkGetImageSubresourceLayout
+
+instance VulkanProc "vkGetImageSubresourceLayout" where
+        type VkProcType "vkGetImageSubresourceLayout" =
+             HS_vkGetImageSubresourceLayout
+        vkProcSymbol = _VkGetImageSubresourceLayout
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkGetImageSubresourceLayout
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkGetImageSubresourceLayoutSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCreateImageView :: CString
+
+pattern VkCreateImageView <- (is_VkCreateImageView -> True)
+  where VkCreateImageView = _VkCreateImageView
+
+{-# INLINE _VkCreateImageView #-}
+
+_VkCreateImageView :: CString
+_VkCreateImageView = Ptr "vkCreateImageView\NUL"##
+
+{-# INLINE is_VkCreateImageView #-}
+
+is_VkCreateImageView :: CString -> Bool
+is_VkCreateImageView = (EQ ==) . cmpCStrings _VkCreateImageView
+
+type VkCreateImageView = "vkCreateImageView"
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkCreateImageView
+-- >     ( VkDevice device
+-- >     , const VkImageViewCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkImageView* pView
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateImageView vkCreateImageView registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateImageView <- vkGetDeviceProc @VkCreateImageView vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateImageView <- vkGetProc @VkCreateImageView
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCreateImageView" vkCreateImageView
+               ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkImageViewCreateInfo -- ^ pCreateInfo
+                                           ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkImageView -- ^ pView
+                                                                -> IO VkResult
+
+##else
+vkCreateImageView ::
+                  VkDevice -- ^ device
+                           ->
+                    Ptr VkImageViewCreateInfo -- ^ pCreateInfo
+                                              ->
+                      Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                -> Ptr VkImageView -- ^ pView
+                                                                   -> IO VkResult
+vkCreateImageView
+  = unsafeDupablePerformIO (vkGetProc @VkCreateImageView)
+
+{-# NOINLINE vkCreateImageView #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkCreateImageView
+-- >     ( VkDevice device
+-- >     , const VkImageViewCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkImageView* pView
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateImageView vkCreateImageView registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateImageView <- vkGetDeviceProc @VkCreateImageView vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateImageView <- vkGetProc @VkCreateImageView
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCreateImageView" vkCreateImageViewSafe
+               ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkImageViewCreateInfo -- ^ pCreateInfo
+                                           ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkImageView -- ^ pView
+                                                                -> IO VkResult
+
+##else
+vkCreateImageViewSafe ::
+                      VkDevice -- ^ device
+                               ->
+                        Ptr VkImageViewCreateInfo -- ^ pCreateInfo
+                                                  ->
+                          Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                    -> Ptr VkImageView -- ^ pView
+                                                                       -> IO VkResult
+vkCreateImageViewSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCreateImageView)
+
+{-# NOINLINE vkCreateImageViewSafe #-}
+##endif
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+--   > VkResult vkCreateImageView
+--   >     ( VkDevice device
+--   >     , const VkImageViewCreateInfo* pCreateInfo
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     , VkImageView* pView
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateImageView vkCreateImageView registry at www.khronos.org>
+type HS_vkCreateImageView =
+     VkDevice -- ^ device
+              ->
+       Ptr VkImageViewCreateInfo -- ^ pCreateInfo
+                                 ->
+         Ptr VkAllocationCallbacks -- ^ pAllocator
+                                   -> Ptr VkImageView -- ^ pView
+                                                      -> IO VkResult
+
+type PFN_vkCreateImageView = FunPtr HS_vkCreateImageView
+
+foreign import ccall unsafe "dynamic" unwrapVkCreateImageView ::
+               PFN_vkCreateImageView -> HS_vkCreateImageView
+
+foreign import ccall safe "dynamic" unwrapVkCreateImageViewSafe ::
+               PFN_vkCreateImageView -> HS_vkCreateImageView
+
+instance VulkanProc "vkCreateImageView" where
+        type VkProcType "vkCreateImageView" = HS_vkCreateImageView
+        vkProcSymbol = _VkCreateImageView
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkCreateImageView
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkCreateImageViewSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkDestroyImageView :: CString
+
+pattern VkDestroyImageView <- (is_VkDestroyImageView -> True)
+  where VkDestroyImageView = _VkDestroyImageView
+
+{-# INLINE _VkDestroyImageView #-}
+
+_VkDestroyImageView :: CString
+_VkDestroyImageView = Ptr "vkDestroyImageView\NUL"##
+
+{-# INLINE is_VkDestroyImageView #-}
+
+is_VkDestroyImageView :: CString -> Bool
+is_VkDestroyImageView = (EQ ==) . cmpCStrings _VkDestroyImageView
+
+type VkDestroyImageView = "vkDestroyImageView"
+
+-- |
+-- > void vkDestroyImageView
+-- >     ( VkDevice device
+-- >     , VkImageView imageView
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyImageView vkDestroyImageView registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroyImageView <- vkGetDeviceProc @VkDestroyImageView vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroyImageView <- vkGetProc @VkDestroyImageView
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkDestroyImageView" vkDestroyImageView
+               :: VkDevice -- ^ device
+                           -> VkImageView -- ^ imageView
+                                          -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                       -> IO ()
+
+##else
+vkDestroyImageView ::
+                   VkDevice -- ^ device
+                            -> VkImageView -- ^ imageView
+                                           -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                        -> IO ()
+vkDestroyImageView
+  = unsafeDupablePerformIO (vkGetProc @VkDestroyImageView)
+
+{-# NOINLINE vkDestroyImageView #-}
+##endif
+
+-- |
+-- > void vkDestroyImageView
+-- >     ( VkDevice device
+-- >     , VkImageView imageView
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyImageView vkDestroyImageView registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroyImageView <- vkGetDeviceProc @VkDestroyImageView vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroyImageView <- vkGetProc @VkDestroyImageView
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkDestroyImageView"
+               vkDestroyImageViewSafe ::
+               VkDevice -- ^ device
+                        -> VkImageView -- ^ imageView
+                                       -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                    -> IO ()
+
+##else
+vkDestroyImageViewSafe ::
+                       VkDevice -- ^ device
+                                -> VkImageView -- ^ imageView
+                                               -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                            -> IO ()
+vkDestroyImageViewSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkDestroyImageView)
+
+{-# NOINLINE vkDestroyImageViewSafe #-}
+##endif
+
+-- | > void vkDestroyImageView
+--   >     ( VkDevice device
+--   >     , VkImageView imageView
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyImageView vkDestroyImageView registry at www.khronos.org>
+type HS_vkDestroyImageView =
+     VkDevice -- ^ device
+              -> VkImageView -- ^ imageView
+                             -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                          -> IO ()
+
+type PFN_vkDestroyImageView = FunPtr HS_vkDestroyImageView
+
+foreign import ccall unsafe "dynamic" unwrapVkDestroyImageView ::
+               PFN_vkDestroyImageView -> HS_vkDestroyImageView
+
+foreign import ccall safe "dynamic" unwrapVkDestroyImageViewSafe ::
+               PFN_vkDestroyImageView -> HS_vkDestroyImageView
+
+instance VulkanProc "vkDestroyImageView" where
+        type VkProcType "vkDestroyImageView" = HS_vkDestroyImageView
+        vkProcSymbol = _VkDestroyImageView
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkDestroyImageView
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkDestroyImageViewSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCreateShaderModule :: CString
+
+pattern VkCreateShaderModule <- (is_VkCreateShaderModule -> True)
+  where VkCreateShaderModule = _VkCreateShaderModule
+
+{-# INLINE _VkCreateShaderModule #-}
+
+_VkCreateShaderModule :: CString
+_VkCreateShaderModule = Ptr "vkCreateShaderModule\NUL"##
+
+{-# INLINE is_VkCreateShaderModule #-}
+
+is_VkCreateShaderModule :: CString -> Bool
+is_VkCreateShaderModule
+  = (EQ ==) . cmpCStrings _VkCreateShaderModule
+
+type VkCreateShaderModule = "vkCreateShaderModule"
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INVALID_SHADER_NV'.
+--
+-- > VkResult vkCreateShaderModule
+-- >     ( VkDevice device
+-- >     , const VkShaderModuleCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkShaderModule* pShaderModule
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateShaderModule vkCreateShaderModule registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateShaderModule <- vkGetDeviceProc @VkCreateShaderModule vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateShaderModule <- vkGetProc @VkCreateShaderModule
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCreateShaderModule"
+               vkCreateShaderModule ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkShaderModuleCreateInfo -- ^ pCreateInfo
+                                              ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkShaderModule -- ^ pShaderModule
+                                                                   -> IO VkResult
+
+##else
+vkCreateShaderModule ::
+                     VkDevice -- ^ device
+                              ->
+                       Ptr VkShaderModuleCreateInfo -- ^ pCreateInfo
+                                                    ->
+                         Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                   -> Ptr VkShaderModule -- ^ pShaderModule
+                                                                         -> IO VkResult
+vkCreateShaderModule
+  = unsafeDupablePerformIO (vkGetProc @VkCreateShaderModule)
+
+{-# NOINLINE vkCreateShaderModule #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INVALID_SHADER_NV'.
+--
+-- > VkResult vkCreateShaderModule
+-- >     ( VkDevice device
+-- >     , const VkShaderModuleCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkShaderModule* pShaderModule
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateShaderModule vkCreateShaderModule registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateShaderModule <- vkGetDeviceProc @VkCreateShaderModule vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateShaderModule <- vkGetProc @VkCreateShaderModule
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCreateShaderModule"
+               vkCreateShaderModuleSafe ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkShaderModuleCreateInfo -- ^ pCreateInfo
+                                              ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkShaderModule -- ^ pShaderModule
+                                                                   -> IO VkResult
+
+##else
+vkCreateShaderModuleSafe ::
+                         VkDevice -- ^ device
+                                  ->
+                           Ptr VkShaderModuleCreateInfo -- ^ pCreateInfo
+                                                        ->
+                             Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                       -> Ptr VkShaderModule -- ^ pShaderModule
+                                                                             -> IO VkResult
+vkCreateShaderModuleSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCreateShaderModule)
+
+{-# NOINLINE vkCreateShaderModuleSafe #-}
+##endif
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INVALID_SHADER_NV'.
+--
+--   > VkResult vkCreateShaderModule
+--   >     ( VkDevice device
+--   >     , const VkShaderModuleCreateInfo* pCreateInfo
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     , VkShaderModule* pShaderModule
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateShaderModule vkCreateShaderModule registry at www.khronos.org>
+type HS_vkCreateShaderModule =
+     VkDevice -- ^ device
+              ->
+       Ptr VkShaderModuleCreateInfo -- ^ pCreateInfo
+                                    ->
+         Ptr VkAllocationCallbacks -- ^ pAllocator
+                                   -> Ptr VkShaderModule -- ^ pShaderModule
+                                                         -> IO VkResult
+
+type PFN_vkCreateShaderModule = FunPtr HS_vkCreateShaderModule
+
+foreign import ccall unsafe "dynamic" unwrapVkCreateShaderModule ::
+               PFN_vkCreateShaderModule -> HS_vkCreateShaderModule
+
+foreign import ccall safe "dynamic" unwrapVkCreateShaderModuleSafe
+               :: PFN_vkCreateShaderModule -> HS_vkCreateShaderModule
+
+instance VulkanProc "vkCreateShaderModule" where
+        type VkProcType "vkCreateShaderModule" = HS_vkCreateShaderModule
+        vkProcSymbol = _VkCreateShaderModule
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkCreateShaderModule
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkCreateShaderModuleSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkDestroyShaderModule :: CString
+
+pattern VkDestroyShaderModule <- (is_VkDestroyShaderModule -> True)
+  where VkDestroyShaderModule = _VkDestroyShaderModule
+
+{-# INLINE _VkDestroyShaderModule #-}
+
+_VkDestroyShaderModule :: CString
+_VkDestroyShaderModule = Ptr "vkDestroyShaderModule\NUL"##
+
+{-# INLINE is_VkDestroyShaderModule #-}
+
+is_VkDestroyShaderModule :: CString -> Bool
+is_VkDestroyShaderModule
+  = (EQ ==) . cmpCStrings _VkDestroyShaderModule
+
+type VkDestroyShaderModule = "vkDestroyShaderModule"
+
+-- |
+-- > void vkDestroyShaderModule
+-- >     ( VkDevice device
+-- >     , VkShaderModule shaderModule
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyShaderModule vkDestroyShaderModule registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroyShaderModule <- vkGetDeviceProc @VkDestroyShaderModule vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroyShaderModule <- vkGetProc @VkDestroyShaderModule
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkDestroyShaderModule"
+               vkDestroyShaderModule ::
+               VkDevice -- ^ device
+                        -> VkShaderModule -- ^ shaderModule
+                                          -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                       -> IO ()
+
+##else
+vkDestroyShaderModule ::
+                      VkDevice -- ^ device
+                               -> VkShaderModule -- ^ shaderModule
+                                                 -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                              -> IO ()
+vkDestroyShaderModule
+  = unsafeDupablePerformIO (vkGetProc @VkDestroyShaderModule)
+
+{-# NOINLINE vkDestroyShaderModule #-}
+##endif
+
+-- |
+-- > void vkDestroyShaderModule
+-- >     ( VkDevice device
+-- >     , VkShaderModule shaderModule
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyShaderModule vkDestroyShaderModule registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroyShaderModule <- vkGetDeviceProc @VkDestroyShaderModule vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroyShaderModule <- vkGetProc @VkDestroyShaderModule
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkDestroyShaderModule"
+               vkDestroyShaderModuleSafe ::
+               VkDevice -- ^ device
+                        -> VkShaderModule -- ^ shaderModule
+                                          -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                       -> IO ()
+
+##else
+vkDestroyShaderModuleSafe ::
+                          VkDevice -- ^ device
+                                   -> VkShaderModule -- ^ shaderModule
+                                                     -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                                  -> IO ()
+vkDestroyShaderModuleSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkDestroyShaderModule)
+
+{-# NOINLINE vkDestroyShaderModuleSafe #-}
+##endif
+
+-- | > void vkDestroyShaderModule
+--   >     ( VkDevice device
+--   >     , VkShaderModule shaderModule
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyShaderModule vkDestroyShaderModule registry at www.khronos.org>
+type HS_vkDestroyShaderModule =
+     VkDevice -- ^ device
+              -> VkShaderModule -- ^ shaderModule
+                                -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                             -> IO ()
+
+type PFN_vkDestroyShaderModule = FunPtr HS_vkDestroyShaderModule
+
+foreign import ccall unsafe "dynamic" unwrapVkDestroyShaderModule
+               :: PFN_vkDestroyShaderModule -> HS_vkDestroyShaderModule
+
+foreign import ccall safe "dynamic" unwrapVkDestroyShaderModuleSafe
+               :: PFN_vkDestroyShaderModule -> HS_vkDestroyShaderModule
+
+instance VulkanProc "vkDestroyShaderModule" where
+        type VkProcType "vkDestroyShaderModule" = HS_vkDestroyShaderModule
+        vkProcSymbol = _VkDestroyShaderModule
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkDestroyShaderModule
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkDestroyShaderModuleSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCreatePipelineCache :: CString
+
+pattern VkCreatePipelineCache <- (is_VkCreatePipelineCache -> True)
+  where VkCreatePipelineCache = _VkCreatePipelineCache
+
+{-# INLINE _VkCreatePipelineCache #-}
+
+_VkCreatePipelineCache :: CString
+_VkCreatePipelineCache = Ptr "vkCreatePipelineCache\NUL"##
+
+{-# INLINE is_VkCreatePipelineCache #-}
+
+is_VkCreatePipelineCache :: CString -> Bool
+is_VkCreatePipelineCache
+  = (EQ ==) . cmpCStrings _VkCreatePipelineCache
+
+type VkCreatePipelineCache = "vkCreatePipelineCache"
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkCreatePipelineCache
+-- >     ( VkDevice device
+-- >     , const VkPipelineCacheCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkPipelineCache* pPipelineCache
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreatePipelineCache vkCreatePipelineCache registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreatePipelineCache <- vkGetDeviceProc @VkCreatePipelineCache vkDevice
+--
+-- or less efficient:
+--
+-- > myCreatePipelineCache <- vkGetProc @VkCreatePipelineCache
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCreatePipelineCache"
+               vkCreatePipelineCache ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkPipelineCacheCreateInfo -- ^ pCreateInfo
+                                               ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkPipelineCache -- ^ pPipelineCache
+                                                                    -> IO VkResult
+
+##else
+vkCreatePipelineCache ::
+                      VkDevice -- ^ device
+                               ->
+                        Ptr VkPipelineCacheCreateInfo -- ^ pCreateInfo
+                                                      ->
+                          Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                    -> Ptr VkPipelineCache -- ^ pPipelineCache
+                                                                           -> IO VkResult
+vkCreatePipelineCache
+  = unsafeDupablePerformIO (vkGetProc @VkCreatePipelineCache)
+
+{-# NOINLINE vkCreatePipelineCache #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkCreatePipelineCache
+-- >     ( VkDevice device
+-- >     , const VkPipelineCacheCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkPipelineCache* pPipelineCache
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreatePipelineCache vkCreatePipelineCache registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreatePipelineCache <- vkGetDeviceProc @VkCreatePipelineCache vkDevice
+--
+-- or less efficient:
+--
+-- > myCreatePipelineCache <- vkGetProc @VkCreatePipelineCache
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCreatePipelineCache"
+               vkCreatePipelineCacheSafe ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkPipelineCacheCreateInfo -- ^ pCreateInfo
+                                               ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkPipelineCache -- ^ pPipelineCache
+                                                                    -> IO VkResult
+
+##else
+vkCreatePipelineCacheSafe ::
+                          VkDevice -- ^ device
+                                   ->
+                            Ptr VkPipelineCacheCreateInfo -- ^ pCreateInfo
+                                                          ->
+                              Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                        -> Ptr VkPipelineCache -- ^ pPipelineCache
+                                                                               -> IO VkResult
+vkCreatePipelineCacheSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCreatePipelineCache)
+
+{-# NOINLINE vkCreatePipelineCacheSafe #-}
+##endif
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+--   > VkResult vkCreatePipelineCache
+--   >     ( VkDevice device
+--   >     , const VkPipelineCacheCreateInfo* pCreateInfo
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     , VkPipelineCache* pPipelineCache
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreatePipelineCache vkCreatePipelineCache registry at www.khronos.org>
+type HS_vkCreatePipelineCache =
+     VkDevice -- ^ device
+              ->
+       Ptr VkPipelineCacheCreateInfo -- ^ pCreateInfo
+                                     ->
+         Ptr VkAllocationCallbacks -- ^ pAllocator
+                                   -> Ptr VkPipelineCache -- ^ pPipelineCache
+                                                          -> IO VkResult
+
+type PFN_vkCreatePipelineCache = FunPtr HS_vkCreatePipelineCache
+
+foreign import ccall unsafe "dynamic" unwrapVkCreatePipelineCache
+               :: PFN_vkCreatePipelineCache -> HS_vkCreatePipelineCache
+
+foreign import ccall safe "dynamic" unwrapVkCreatePipelineCacheSafe
+               :: PFN_vkCreatePipelineCache -> HS_vkCreatePipelineCache
+
+instance VulkanProc "vkCreatePipelineCache" where
+        type VkProcType "vkCreatePipelineCache" = HS_vkCreatePipelineCache
+        vkProcSymbol = _VkCreatePipelineCache
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkCreatePipelineCache
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkCreatePipelineCacheSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkDestroyPipelineCache :: CString
+
+pattern VkDestroyPipelineCache <-
+        (is_VkDestroyPipelineCache -> True)
+  where VkDestroyPipelineCache = _VkDestroyPipelineCache
+
+{-# INLINE _VkDestroyPipelineCache #-}
+
+_VkDestroyPipelineCache :: CString
+_VkDestroyPipelineCache = Ptr "vkDestroyPipelineCache\NUL"##
+
+{-# INLINE is_VkDestroyPipelineCache #-}
+
+is_VkDestroyPipelineCache :: CString -> Bool
+is_VkDestroyPipelineCache
+  = (EQ ==) . cmpCStrings _VkDestroyPipelineCache
+
+type VkDestroyPipelineCache = "vkDestroyPipelineCache"
+
+-- |
+-- > void vkDestroyPipelineCache
+-- >     ( VkDevice device
+-- >     , VkPipelineCache pipelineCache
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyPipelineCache vkDestroyPipelineCache registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroyPipelineCache <- vkGetDeviceProc @VkDestroyPipelineCache vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroyPipelineCache <- vkGetProc @VkDestroyPipelineCache
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkDestroyPipelineCache"
+               vkDestroyPipelineCache ::
+               VkDevice -- ^ device
+                        -> VkPipelineCache -- ^ pipelineCache
+                                           -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                        -> IO ()
+
+##else
+vkDestroyPipelineCache ::
+                       VkDevice -- ^ device
+                                -> VkPipelineCache -- ^ pipelineCache
+                                                   -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                                -> IO ()
+vkDestroyPipelineCache
+  = unsafeDupablePerformIO (vkGetProc @VkDestroyPipelineCache)
+
+{-# NOINLINE vkDestroyPipelineCache #-}
+##endif
+
+-- |
+-- > void vkDestroyPipelineCache
+-- >     ( VkDevice device
+-- >     , VkPipelineCache pipelineCache
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyPipelineCache vkDestroyPipelineCache registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroyPipelineCache <- vkGetDeviceProc @VkDestroyPipelineCache vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroyPipelineCache <- vkGetProc @VkDestroyPipelineCache
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkDestroyPipelineCache"
+               vkDestroyPipelineCacheSafe ::
+               VkDevice -- ^ device
+                        -> VkPipelineCache -- ^ pipelineCache
+                                           -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                        -> IO ()
+
+##else
+vkDestroyPipelineCacheSafe ::
+                           VkDevice -- ^ device
+                                    -> VkPipelineCache -- ^ pipelineCache
+                                                       -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                                    -> IO ()
+vkDestroyPipelineCacheSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkDestroyPipelineCache)
+
+{-# NOINLINE vkDestroyPipelineCacheSafe #-}
+##endif
+
+-- | > void vkDestroyPipelineCache
+--   >     ( VkDevice device
+--   >     , VkPipelineCache pipelineCache
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyPipelineCache vkDestroyPipelineCache registry at www.khronos.org>
+type HS_vkDestroyPipelineCache =
+     VkDevice -- ^ device
+              -> VkPipelineCache -- ^ pipelineCache
+                                 -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                              -> IO ()
+
+type PFN_vkDestroyPipelineCache = FunPtr HS_vkDestroyPipelineCache
+
+foreign import ccall unsafe "dynamic" unwrapVkDestroyPipelineCache
+               :: PFN_vkDestroyPipelineCache -> HS_vkDestroyPipelineCache
+
+foreign import ccall safe "dynamic"
+               unwrapVkDestroyPipelineCacheSafe ::
+               PFN_vkDestroyPipelineCache -> HS_vkDestroyPipelineCache
+
+instance VulkanProc "vkDestroyPipelineCache" where
+        type VkProcType "vkDestroyPipelineCache" =
+             HS_vkDestroyPipelineCache
+        vkProcSymbol = _VkDestroyPipelineCache
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkDestroyPipelineCache
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkDestroyPipelineCacheSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkGetPipelineCacheData :: CString
+
+pattern VkGetPipelineCacheData <-
+        (is_VkGetPipelineCacheData -> True)
+  where VkGetPipelineCacheData = _VkGetPipelineCacheData
+
+{-# INLINE _VkGetPipelineCacheData #-}
+
+_VkGetPipelineCacheData :: CString
+_VkGetPipelineCacheData = Ptr "vkGetPipelineCacheData\NUL"##
+
+{-# INLINE is_VkGetPipelineCacheData #-}
+
+is_VkGetPipelineCacheData :: CString -> Bool
+is_VkGetPipelineCacheData
+  = (EQ ==) . cmpCStrings _VkGetPipelineCacheData
+
+type VkGetPipelineCacheData = "vkGetPipelineCacheData"
+
+-- |
+-- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkGetPipelineCacheData
+-- >     ( VkDevice device
+-- >     , VkPipelineCache pipelineCache
+-- >     , size_t* pDataSize
+-- >     , void* pData
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPipelineCacheData vkGetPipelineCacheData registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPipelineCacheData <- vkGetDeviceProc @VkGetPipelineCacheData vkDevice
+--
+-- or less efficient:
+--
+-- > myGetPipelineCacheData <- vkGetProc @VkGetPipelineCacheData
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkGetPipelineCacheData"
+               vkGetPipelineCacheData ::
+               VkDevice -- ^ device
+                        -> VkPipelineCache -- ^ pipelineCache
+                                           -> Ptr CSize -- ^ pDataSize
+                                                        -> Ptr Void -- ^ pData
+                                                                    -> IO VkResult
+
+##else
+vkGetPipelineCacheData ::
+                       VkDevice -- ^ device
+                                -> VkPipelineCache -- ^ pipelineCache
+                                                   -> Ptr CSize -- ^ pDataSize
+                                                                -> Ptr Void -- ^ pData
+                                                                            -> IO VkResult
+vkGetPipelineCacheData
+  = unsafeDupablePerformIO (vkGetProc @VkGetPipelineCacheData)
+
+{-# NOINLINE vkGetPipelineCacheData #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkGetPipelineCacheData
+-- >     ( VkDevice device
+-- >     , VkPipelineCache pipelineCache
+-- >     , size_t* pDataSize
+-- >     , void* pData
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPipelineCacheData vkGetPipelineCacheData registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPipelineCacheData <- vkGetDeviceProc @VkGetPipelineCacheData vkDevice
+--
+-- or less efficient:
+--
+-- > myGetPipelineCacheData <- vkGetProc @VkGetPipelineCacheData
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkGetPipelineCacheData"
+               vkGetPipelineCacheDataSafe ::
+               VkDevice -- ^ device
+                        -> VkPipelineCache -- ^ pipelineCache
+                                           -> Ptr CSize -- ^ pDataSize
+                                                        -> Ptr Void -- ^ pData
+                                                                    -> IO VkResult
+
+##else
+vkGetPipelineCacheDataSafe ::
+                           VkDevice -- ^ device
+                                    -> VkPipelineCache -- ^ pipelineCache
+                                                       -> Ptr CSize -- ^ pDataSize
+                                                                    -> Ptr Void -- ^ pData
+                                                                                -> IO VkResult
+vkGetPipelineCacheDataSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkGetPipelineCacheData)
+
+{-# NOINLINE vkGetPipelineCacheDataSafe #-}
+##endif
+
+-- | Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+--   > VkResult vkGetPipelineCacheData
+--   >     ( VkDevice device
+--   >     , VkPipelineCache pipelineCache
+--   >     , size_t* pDataSize
+--   >     , void* pData
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPipelineCacheData vkGetPipelineCacheData registry at www.khronos.org>
+type HS_vkGetPipelineCacheData =
+     VkDevice -- ^ device
+              -> VkPipelineCache -- ^ pipelineCache
+                                 -> Ptr CSize -- ^ pDataSize
+                                              -> Ptr Void -- ^ pData
+                                                          -> IO VkResult
+
+type PFN_vkGetPipelineCacheData = FunPtr HS_vkGetPipelineCacheData
+
+foreign import ccall unsafe "dynamic" unwrapVkGetPipelineCacheData
+               :: PFN_vkGetPipelineCacheData -> HS_vkGetPipelineCacheData
+
+foreign import ccall safe "dynamic"
+               unwrapVkGetPipelineCacheDataSafe ::
+               PFN_vkGetPipelineCacheData -> HS_vkGetPipelineCacheData
+
+instance VulkanProc "vkGetPipelineCacheData" where
+        type VkProcType "vkGetPipelineCacheData" =
+             HS_vkGetPipelineCacheData
+        vkProcSymbol = _VkGetPipelineCacheData
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkGetPipelineCacheData
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkGetPipelineCacheDataSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkMergePipelineCaches :: CString
+
+pattern VkMergePipelineCaches <- (is_VkMergePipelineCaches -> True)
+  where VkMergePipelineCaches = _VkMergePipelineCaches
+
+{-# INLINE _VkMergePipelineCaches #-}
+
+_VkMergePipelineCaches :: CString
+_VkMergePipelineCaches = Ptr "vkMergePipelineCaches\NUL"##
+
+{-# INLINE is_VkMergePipelineCaches #-}
+
+is_VkMergePipelineCaches :: CString -> Bool
+is_VkMergePipelineCaches
+  = (EQ ==) . cmpCStrings _VkMergePipelineCaches
+
+type VkMergePipelineCaches = "vkMergePipelineCaches"
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkMergePipelineCaches
+-- >     ( VkDevice device
+-- >     , VkPipelineCache dstCache
+-- >     , uint32_t srcCacheCount
+-- >     , const VkPipelineCache* pSrcCaches
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkMergePipelineCaches vkMergePipelineCaches registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myMergePipelineCaches <- vkGetDeviceProc @VkMergePipelineCaches vkDevice
+--
+-- or less efficient:
+--
+-- > myMergePipelineCaches <- vkGetProc @VkMergePipelineCaches
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkMergePipelineCaches"
+               vkMergePipelineCaches ::
+               VkDevice -- ^ device
+                        ->
+                 VkPipelineCache -- ^ dstCache
+                                 -> Word32 -- ^ srcCacheCount
+                                           -> Ptr VkPipelineCache -- ^ pSrcCaches
+                                                                  -> IO VkResult
+
+##else
+vkMergePipelineCaches ::
+                      VkDevice -- ^ device
+                               ->
+                        VkPipelineCache -- ^ dstCache
+                                        -> Word32 -- ^ srcCacheCount
+                                                  -> Ptr VkPipelineCache -- ^ pSrcCaches
+                                                                         -> IO VkResult
+vkMergePipelineCaches
+  = unsafeDupablePerformIO (vkGetProc @VkMergePipelineCaches)
+
+{-# NOINLINE vkMergePipelineCaches #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkMergePipelineCaches
+-- >     ( VkDevice device
+-- >     , VkPipelineCache dstCache
+-- >     , uint32_t srcCacheCount
+-- >     , const VkPipelineCache* pSrcCaches
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkMergePipelineCaches vkMergePipelineCaches registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myMergePipelineCaches <- vkGetDeviceProc @VkMergePipelineCaches vkDevice
+--
+-- or less efficient:
+--
+-- > myMergePipelineCaches <- vkGetProc @VkMergePipelineCaches
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkMergePipelineCaches"
+               vkMergePipelineCachesSafe ::
+               VkDevice -- ^ device
+                        ->
+                 VkPipelineCache -- ^ dstCache
+                                 -> Word32 -- ^ srcCacheCount
+                                           -> Ptr VkPipelineCache -- ^ pSrcCaches
+                                                                  -> IO VkResult
+
+##else
+vkMergePipelineCachesSafe ::
+                          VkDevice -- ^ device
+                                   ->
+                            VkPipelineCache -- ^ dstCache
+                                            -> Word32 -- ^ srcCacheCount
+                                                      -> Ptr VkPipelineCache -- ^ pSrcCaches
+                                                                             -> IO VkResult
+vkMergePipelineCachesSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkMergePipelineCaches)
+
+{-# NOINLINE vkMergePipelineCachesSafe #-}
+##endif
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+--   > VkResult vkMergePipelineCaches
+--   >     ( VkDevice device
+--   >     , VkPipelineCache dstCache
+--   >     , uint32_t srcCacheCount
+--   >     , const VkPipelineCache* pSrcCaches
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkMergePipelineCaches vkMergePipelineCaches registry at www.khronos.org>
+type HS_vkMergePipelineCaches =
+     VkDevice -- ^ device
+              ->
+       VkPipelineCache -- ^ dstCache
+                       -> Word32 -- ^ srcCacheCount
+                                 -> Ptr VkPipelineCache -- ^ pSrcCaches
+                                                        -> IO VkResult
+
+type PFN_vkMergePipelineCaches = FunPtr HS_vkMergePipelineCaches
+
+foreign import ccall unsafe "dynamic" unwrapVkMergePipelineCaches
+               :: PFN_vkMergePipelineCaches -> HS_vkMergePipelineCaches
+
+foreign import ccall safe "dynamic" unwrapVkMergePipelineCachesSafe
+               :: PFN_vkMergePipelineCaches -> HS_vkMergePipelineCaches
+
+instance VulkanProc "vkMergePipelineCaches" where
+        type VkProcType "vkMergePipelineCaches" = HS_vkMergePipelineCaches
+        vkProcSymbol = _VkMergePipelineCaches
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkMergePipelineCaches
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkMergePipelineCachesSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCreateGraphicsPipelines :: CString
+
+pattern VkCreateGraphicsPipelines <-
+        (is_VkCreateGraphicsPipelines -> True)
+  where VkCreateGraphicsPipelines = _VkCreateGraphicsPipelines
+
+{-# INLINE _VkCreateGraphicsPipelines #-}
+
+_VkCreateGraphicsPipelines :: CString
+_VkCreateGraphicsPipelines = Ptr "vkCreateGraphicsPipelines\NUL"##
+
+{-# INLINE is_VkCreateGraphicsPipelines #-}
+
+is_VkCreateGraphicsPipelines :: CString -> Bool
+is_VkCreateGraphicsPipelines
+  = (EQ ==) . cmpCStrings _VkCreateGraphicsPipelines
+
+type VkCreateGraphicsPipelines = "vkCreateGraphicsPipelines"
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INVALID_SHADER_NV'.
+--
+-- > VkResult vkCreateGraphicsPipelines
+-- >     ( VkDevice device
+-- >     , VkPipelineCache pipelineCache
+-- >     , uint32_t createInfoCount
+-- >     , const VkGraphicsPipelineCreateInfo* pCreateInfos
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkPipeline* pPipelines
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateGraphicsPipelines vkCreateGraphicsPipelines registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateGraphicsPipelines <- vkGetDeviceProc @VkCreateGraphicsPipelines vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateGraphicsPipelines <- vkGetProc @VkCreateGraphicsPipelines
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCreateGraphicsPipelines"
+               vkCreateGraphicsPipelines ::
+               VkDevice -- ^ device
+                        ->
+                 VkPipelineCache -- ^ pipelineCache
+                                 ->
+                   Word32 -- ^ createInfoCount
+                          ->
+                     Ptr VkGraphicsPipelineCreateInfo -- ^ pCreateInfos
+                                                      ->
+                       Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                 -> Ptr VkPipeline -- ^ pPipelines
+                                                                   -> IO VkResult
+
+##else
+vkCreateGraphicsPipelines ::
+                          VkDevice -- ^ device
+                                   ->
+                            VkPipelineCache -- ^ pipelineCache
+                                            ->
+                              Word32 -- ^ createInfoCount
+                                     ->
+                                Ptr VkGraphicsPipelineCreateInfo -- ^ pCreateInfos
+                                                                 ->
+                                  Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                            -> Ptr VkPipeline -- ^ pPipelines
+                                                                              -> IO VkResult
+vkCreateGraphicsPipelines
+  = unsafeDupablePerformIO (vkGetProc @VkCreateGraphicsPipelines)
+
+{-# NOINLINE vkCreateGraphicsPipelines #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INVALID_SHADER_NV'.
+--
+-- > VkResult vkCreateGraphicsPipelines
+-- >     ( VkDevice device
+-- >     , VkPipelineCache pipelineCache
+-- >     , uint32_t createInfoCount
+-- >     , const VkGraphicsPipelineCreateInfo* pCreateInfos
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkPipeline* pPipelines
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateGraphicsPipelines vkCreateGraphicsPipelines registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateGraphicsPipelines <- vkGetDeviceProc @VkCreateGraphicsPipelines vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateGraphicsPipelines <- vkGetProc @VkCreateGraphicsPipelines
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCreateGraphicsPipelines"
+               vkCreateGraphicsPipelinesSafe ::
+               VkDevice -- ^ device
+                        ->
+                 VkPipelineCache -- ^ pipelineCache
+                                 ->
+                   Word32 -- ^ createInfoCount
+                          ->
+                     Ptr VkGraphicsPipelineCreateInfo -- ^ pCreateInfos
+                                                      ->
+                       Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                 -> Ptr VkPipeline -- ^ pPipelines
+                                                                   -> IO VkResult
+
+##else
+vkCreateGraphicsPipelinesSafe ::
+                              VkDevice -- ^ device
+                                       ->
+                                VkPipelineCache -- ^ pipelineCache
+                                                ->
+                                  Word32 -- ^ createInfoCount
+                                         ->
+                                    Ptr VkGraphicsPipelineCreateInfo -- ^ pCreateInfos
+                                                                     ->
+                                      Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                -> Ptr VkPipeline -- ^ pPipelines
+                                                                                  -> IO VkResult
+vkCreateGraphicsPipelinesSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCreateGraphicsPipelines)
+
+{-# NOINLINE vkCreateGraphicsPipelinesSafe #-}
+##endif
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INVALID_SHADER_NV'.
+--
+--   > VkResult vkCreateGraphicsPipelines
+--   >     ( VkDevice device
+--   >     , VkPipelineCache pipelineCache
+--   >     , uint32_t createInfoCount
+--   >     , const VkGraphicsPipelineCreateInfo* pCreateInfos
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     , VkPipeline* pPipelines
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateGraphicsPipelines vkCreateGraphicsPipelines registry at www.khronos.org>
+type HS_vkCreateGraphicsPipelines =
+     VkDevice -- ^ device
+              ->
+       VkPipelineCache -- ^ pipelineCache
+                       ->
+         Word32 -- ^ createInfoCount
+                ->
+           Ptr VkGraphicsPipelineCreateInfo -- ^ pCreateInfos
+                                            ->
+             Ptr VkAllocationCallbacks -- ^ pAllocator
+                                       -> Ptr VkPipeline -- ^ pPipelines
+                                                         -> IO VkResult
+
+type PFN_vkCreateGraphicsPipelines =
+     FunPtr HS_vkCreateGraphicsPipelines
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkCreateGraphicsPipelines ::
+               PFN_vkCreateGraphicsPipelines -> HS_vkCreateGraphicsPipelines
+
+foreign import ccall safe "dynamic"
+               unwrapVkCreateGraphicsPipelinesSafe ::
+               PFN_vkCreateGraphicsPipelines -> HS_vkCreateGraphicsPipelines
+
+instance VulkanProc "vkCreateGraphicsPipelines" where
+        type VkProcType "vkCreateGraphicsPipelines" =
+             HS_vkCreateGraphicsPipelines
+        vkProcSymbol = _VkCreateGraphicsPipelines
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkCreateGraphicsPipelines
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkCreateGraphicsPipelinesSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCreateComputePipelines :: CString
+
+pattern VkCreateComputePipelines <-
+        (is_VkCreateComputePipelines -> True)
+  where VkCreateComputePipelines = _VkCreateComputePipelines
+
+{-# INLINE _VkCreateComputePipelines #-}
+
+_VkCreateComputePipelines :: CString
+_VkCreateComputePipelines = Ptr "vkCreateComputePipelines\NUL"##
+
+{-# INLINE is_VkCreateComputePipelines #-}
+
+is_VkCreateComputePipelines :: CString -> Bool
+is_VkCreateComputePipelines
+  = (EQ ==) . cmpCStrings _VkCreateComputePipelines
+
+type VkCreateComputePipelines = "vkCreateComputePipelines"
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INVALID_SHADER_NV'.
+--
+-- > VkResult vkCreateComputePipelines
+-- >     ( VkDevice device
+-- >     , VkPipelineCache pipelineCache
+-- >     , uint32_t createInfoCount
+-- >     , const VkComputePipelineCreateInfo* pCreateInfos
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkPipeline* pPipelines
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateComputePipelines vkCreateComputePipelines registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateComputePipelines <- vkGetDeviceProc @VkCreateComputePipelines vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateComputePipelines <- vkGetProc @VkCreateComputePipelines
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCreateComputePipelines"
+               vkCreateComputePipelines ::
+               VkDevice -- ^ device
+                        ->
+                 VkPipelineCache -- ^ pipelineCache
+                                 ->
+                   Word32 -- ^ createInfoCount
+                          ->
+                     Ptr VkComputePipelineCreateInfo -- ^ pCreateInfos
+                                                     ->
+                       Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                 -> Ptr VkPipeline -- ^ pPipelines
+                                                                   -> IO VkResult
+
+##else
+vkCreateComputePipelines ::
+                         VkDevice -- ^ device
+                                  ->
+                           VkPipelineCache -- ^ pipelineCache
+                                           ->
+                             Word32 -- ^ createInfoCount
+                                    ->
+                               Ptr VkComputePipelineCreateInfo -- ^ pCreateInfos
+                                                               ->
+                                 Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                           -> Ptr VkPipeline -- ^ pPipelines
+                                                                             -> IO VkResult
+vkCreateComputePipelines
+  = unsafeDupablePerformIO (vkGetProc @VkCreateComputePipelines)
+
+{-# NOINLINE vkCreateComputePipelines #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INVALID_SHADER_NV'.
+--
+-- > VkResult vkCreateComputePipelines
+-- >     ( VkDevice device
+-- >     , VkPipelineCache pipelineCache
+-- >     , uint32_t createInfoCount
+-- >     , const VkComputePipelineCreateInfo* pCreateInfos
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkPipeline* pPipelines
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateComputePipelines vkCreateComputePipelines registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateComputePipelines <- vkGetDeviceProc @VkCreateComputePipelines vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateComputePipelines <- vkGetProc @VkCreateComputePipelines
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCreateComputePipelines"
+               vkCreateComputePipelinesSafe ::
+               VkDevice -- ^ device
+                        ->
+                 VkPipelineCache -- ^ pipelineCache
+                                 ->
+                   Word32 -- ^ createInfoCount
+                          ->
+                     Ptr VkComputePipelineCreateInfo -- ^ pCreateInfos
+                                                     ->
+                       Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                 -> Ptr VkPipeline -- ^ pPipelines
+                                                                   -> IO VkResult
+
+##else
+vkCreateComputePipelinesSafe ::
+                             VkDevice -- ^ device
+                                      ->
+                               VkPipelineCache -- ^ pipelineCache
+                                               ->
+                                 Word32 -- ^ createInfoCount
+                                        ->
+                                   Ptr VkComputePipelineCreateInfo -- ^ pCreateInfos
+                                                                   ->
+                                     Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                               -> Ptr VkPipeline -- ^ pPipelines
+                                                                                 -> IO VkResult
+vkCreateComputePipelinesSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCreateComputePipelines)
+
+{-# NOINLINE vkCreateComputePipelinesSafe #-}
+##endif
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INVALID_SHADER_NV'.
+--
+--   > VkResult vkCreateComputePipelines
+--   >     ( VkDevice device
+--   >     , VkPipelineCache pipelineCache
+--   >     , uint32_t createInfoCount
+--   >     , const VkComputePipelineCreateInfo* pCreateInfos
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     , VkPipeline* pPipelines
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateComputePipelines vkCreateComputePipelines registry at www.khronos.org>
+type HS_vkCreateComputePipelines =
+     VkDevice -- ^ device
+              ->
+       VkPipelineCache -- ^ pipelineCache
+                       ->
+         Word32 -- ^ createInfoCount
+                ->
+           Ptr VkComputePipelineCreateInfo -- ^ pCreateInfos
+                                           ->
+             Ptr VkAllocationCallbacks -- ^ pAllocator
+                                       -> Ptr VkPipeline -- ^ pPipelines
+                                                         -> IO VkResult
+
+type PFN_vkCreateComputePipelines =
+     FunPtr HS_vkCreateComputePipelines
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkCreateComputePipelines ::
+               PFN_vkCreateComputePipelines -> HS_vkCreateComputePipelines
+
+foreign import ccall safe "dynamic"
+               unwrapVkCreateComputePipelinesSafe ::
+               PFN_vkCreateComputePipelines -> HS_vkCreateComputePipelines
+
+instance VulkanProc "vkCreateComputePipelines" where
+        type VkProcType "vkCreateComputePipelines" =
+             HS_vkCreateComputePipelines
+        vkProcSymbol = _VkCreateComputePipelines
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkCreateComputePipelines
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkCreateComputePipelinesSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkDestroyPipeline :: CString
+
+pattern VkDestroyPipeline <- (is_VkDestroyPipeline -> True)
+  where VkDestroyPipeline = _VkDestroyPipeline
+
+{-# INLINE _VkDestroyPipeline #-}
+
+_VkDestroyPipeline :: CString
+_VkDestroyPipeline = Ptr "vkDestroyPipeline\NUL"##
+
+{-# INLINE is_VkDestroyPipeline #-}
+
+is_VkDestroyPipeline :: CString -> Bool
+is_VkDestroyPipeline = (EQ ==) . cmpCStrings _VkDestroyPipeline
+
+type VkDestroyPipeline = "vkDestroyPipeline"
+
+-- |
+-- > void vkDestroyPipeline
+-- >     ( VkDevice device
+-- >     , VkPipeline pipeline
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyPipeline vkDestroyPipeline registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroyPipeline <- vkGetDeviceProc @VkDestroyPipeline vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroyPipeline <- vkGetProc @VkDestroyPipeline
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkDestroyPipeline" vkDestroyPipeline
+               :: VkDevice -- ^ device
+                           -> VkPipeline -- ^ pipeline
+                                         -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                      -> IO ()
+
+##else
+vkDestroyPipeline ::
+                  VkDevice -- ^ device
+                           -> VkPipeline -- ^ pipeline
+                                         -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                      -> IO ()
+vkDestroyPipeline
+  = unsafeDupablePerformIO (vkGetProc @VkDestroyPipeline)
+
+{-# NOINLINE vkDestroyPipeline #-}
+##endif
+
+-- |
+-- > void vkDestroyPipeline
+-- >     ( VkDevice device
+-- >     , VkPipeline pipeline
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyPipeline vkDestroyPipeline registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroyPipeline <- vkGetDeviceProc @VkDestroyPipeline vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroyPipeline <- vkGetProc @VkDestroyPipeline
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkDestroyPipeline" vkDestroyPipelineSafe
+               :: VkDevice -- ^ device
+                           -> VkPipeline -- ^ pipeline
+                                         -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                      -> IO ()
+
+##else
+vkDestroyPipelineSafe ::
+                      VkDevice -- ^ device
+                               -> VkPipeline -- ^ pipeline
+                                             -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                          -> IO ()
+vkDestroyPipelineSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkDestroyPipeline)
+
+{-# NOINLINE vkDestroyPipelineSafe #-}
+##endif
+
+-- | > void vkDestroyPipeline
+--   >     ( VkDevice device
+--   >     , VkPipeline pipeline
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyPipeline vkDestroyPipeline registry at www.khronos.org>
+type HS_vkDestroyPipeline =
+     VkDevice -- ^ device
+              -> VkPipeline -- ^ pipeline
+                            -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                         -> IO ()
+
+type PFN_vkDestroyPipeline = FunPtr HS_vkDestroyPipeline
+
+foreign import ccall unsafe "dynamic" unwrapVkDestroyPipeline ::
+               PFN_vkDestroyPipeline -> HS_vkDestroyPipeline
+
+foreign import ccall safe "dynamic" unwrapVkDestroyPipelineSafe ::
+               PFN_vkDestroyPipeline -> HS_vkDestroyPipeline
+
+instance VulkanProc "vkDestroyPipeline" where
+        type VkProcType "vkDestroyPipeline" = HS_vkDestroyPipeline
+        vkProcSymbol = _VkDestroyPipeline
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkDestroyPipeline
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkDestroyPipelineSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCreatePipelineLayout :: CString
+
+pattern VkCreatePipelineLayout <-
+        (is_VkCreatePipelineLayout -> True)
+  where VkCreatePipelineLayout = _VkCreatePipelineLayout
+
+{-# INLINE _VkCreatePipelineLayout #-}
+
+_VkCreatePipelineLayout :: CString
+_VkCreatePipelineLayout = Ptr "vkCreatePipelineLayout\NUL"##
+
+{-# INLINE is_VkCreatePipelineLayout #-}
+
+is_VkCreatePipelineLayout :: CString -> Bool
+is_VkCreatePipelineLayout
+  = (EQ ==) . cmpCStrings _VkCreatePipelineLayout
+
+type VkCreatePipelineLayout = "vkCreatePipelineLayout"
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkCreatePipelineLayout
+-- >     ( VkDevice device
+-- >     , const VkPipelineLayoutCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkPipelineLayout* pPipelineLayout
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreatePipelineLayout vkCreatePipelineLayout registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreatePipelineLayout <- vkGetDeviceProc @VkCreatePipelineLayout vkDevice
+--
+-- or less efficient:
+--
+-- > myCreatePipelineLayout <- vkGetProc @VkCreatePipelineLayout
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCreatePipelineLayout"
+               vkCreatePipelineLayout ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkPipelineLayoutCreateInfo -- ^ pCreateInfo
+                                                ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkPipelineLayout -- ^ pPipelineLayout
+                                                                     -> IO VkResult
+
+##else
+vkCreatePipelineLayout ::
+                       VkDevice -- ^ device
+                                ->
+                         Ptr VkPipelineLayoutCreateInfo -- ^ pCreateInfo
+                                                        ->
+                           Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                     -> Ptr VkPipelineLayout -- ^ pPipelineLayout
+                                                                             -> IO VkResult
+vkCreatePipelineLayout
+  = unsafeDupablePerformIO (vkGetProc @VkCreatePipelineLayout)
+
+{-# NOINLINE vkCreatePipelineLayout #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkCreatePipelineLayout
+-- >     ( VkDevice device
+-- >     , const VkPipelineLayoutCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkPipelineLayout* pPipelineLayout
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreatePipelineLayout vkCreatePipelineLayout registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreatePipelineLayout <- vkGetDeviceProc @VkCreatePipelineLayout vkDevice
+--
+-- or less efficient:
+--
+-- > myCreatePipelineLayout <- vkGetProc @VkCreatePipelineLayout
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCreatePipelineLayout"
+               vkCreatePipelineLayoutSafe ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkPipelineLayoutCreateInfo -- ^ pCreateInfo
+                                                ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkPipelineLayout -- ^ pPipelineLayout
+                                                                     -> IO VkResult
+
+##else
+vkCreatePipelineLayoutSafe ::
+                           VkDevice -- ^ device
+                                    ->
+                             Ptr VkPipelineLayoutCreateInfo -- ^ pCreateInfo
+                                                            ->
+                               Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                         -> Ptr VkPipelineLayout -- ^ pPipelineLayout
+                                                                                 -> IO VkResult
+vkCreatePipelineLayoutSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCreatePipelineLayout)
+
+{-# NOINLINE vkCreatePipelineLayoutSafe #-}
+##endif
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+--   > VkResult vkCreatePipelineLayout
+--   >     ( VkDevice device
+--   >     , const VkPipelineLayoutCreateInfo* pCreateInfo
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     , VkPipelineLayout* pPipelineLayout
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreatePipelineLayout vkCreatePipelineLayout registry at www.khronos.org>
+type HS_vkCreatePipelineLayout =
+     VkDevice -- ^ device
+              ->
+       Ptr VkPipelineLayoutCreateInfo -- ^ pCreateInfo
+                                      ->
+         Ptr VkAllocationCallbacks -- ^ pAllocator
+                                   -> Ptr VkPipelineLayout -- ^ pPipelineLayout
+                                                           -> IO VkResult
+
+type PFN_vkCreatePipelineLayout = FunPtr HS_vkCreatePipelineLayout
+
+foreign import ccall unsafe "dynamic" unwrapVkCreatePipelineLayout
+               :: PFN_vkCreatePipelineLayout -> HS_vkCreatePipelineLayout
+
+foreign import ccall safe "dynamic"
+               unwrapVkCreatePipelineLayoutSafe ::
+               PFN_vkCreatePipelineLayout -> HS_vkCreatePipelineLayout
+
+instance VulkanProc "vkCreatePipelineLayout" where
+        type VkProcType "vkCreatePipelineLayout" =
+             HS_vkCreatePipelineLayout
+        vkProcSymbol = _VkCreatePipelineLayout
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkCreatePipelineLayout
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkCreatePipelineLayoutSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkDestroyPipelineLayout :: CString
+
+pattern VkDestroyPipelineLayout <-
+        (is_VkDestroyPipelineLayout -> True)
+  where VkDestroyPipelineLayout = _VkDestroyPipelineLayout
+
+{-# INLINE _VkDestroyPipelineLayout #-}
+
+_VkDestroyPipelineLayout :: CString
+_VkDestroyPipelineLayout = Ptr "vkDestroyPipelineLayout\NUL"##
+
+{-# INLINE is_VkDestroyPipelineLayout #-}
+
+is_VkDestroyPipelineLayout :: CString -> Bool
+is_VkDestroyPipelineLayout
+  = (EQ ==) . cmpCStrings _VkDestroyPipelineLayout
+
+type VkDestroyPipelineLayout = "vkDestroyPipelineLayout"
+
+-- |
+-- > void vkDestroyPipelineLayout
+-- >     ( VkDevice device
+-- >     , VkPipelineLayout pipelineLayout
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyPipelineLayout vkDestroyPipelineLayout registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroyPipelineLayout <- vkGetDeviceProc @VkDestroyPipelineLayout vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroyPipelineLayout <- vkGetProc @VkDestroyPipelineLayout
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkDestroyPipelineLayout"
+               vkDestroyPipelineLayout ::
+               VkDevice -- ^ device
+                        -> VkPipelineLayout -- ^ pipelineLayout
+                                            -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                         -> IO ()
+
+##else
+vkDestroyPipelineLayout ::
+                        VkDevice -- ^ device
+                                 -> VkPipelineLayout -- ^ pipelineLayout
+                                                     -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                                  -> IO ()
+vkDestroyPipelineLayout
+  = unsafeDupablePerformIO (vkGetProc @VkDestroyPipelineLayout)
+
+{-# NOINLINE vkDestroyPipelineLayout #-}
+##endif
+
+-- |
+-- > void vkDestroyPipelineLayout
+-- >     ( VkDevice device
+-- >     , VkPipelineLayout pipelineLayout
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyPipelineLayout vkDestroyPipelineLayout registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroyPipelineLayout <- vkGetDeviceProc @VkDestroyPipelineLayout vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroyPipelineLayout <- vkGetProc @VkDestroyPipelineLayout
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkDestroyPipelineLayout"
+               vkDestroyPipelineLayoutSafe ::
+               VkDevice -- ^ device
+                        -> VkPipelineLayout -- ^ pipelineLayout
+                                            -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                         -> IO ()
+
+##else
+vkDestroyPipelineLayoutSafe ::
+                            VkDevice -- ^ device
+                                     -> VkPipelineLayout -- ^ pipelineLayout
+                                                         -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                                      -> IO ()
+vkDestroyPipelineLayoutSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkDestroyPipelineLayout)
+
+{-# NOINLINE vkDestroyPipelineLayoutSafe #-}
+##endif
+
+-- | > void vkDestroyPipelineLayout
+--   >     ( VkDevice device
+--   >     , VkPipelineLayout pipelineLayout
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyPipelineLayout vkDestroyPipelineLayout registry at www.khronos.org>
+type HS_vkDestroyPipelineLayout =
+     VkDevice -- ^ device
+              -> VkPipelineLayout -- ^ pipelineLayout
+                                  -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                               -> IO ()
+
+type PFN_vkDestroyPipelineLayout =
+     FunPtr HS_vkDestroyPipelineLayout
+
+foreign import ccall unsafe "dynamic" unwrapVkDestroyPipelineLayout
+               :: PFN_vkDestroyPipelineLayout -> HS_vkDestroyPipelineLayout
+
+foreign import ccall safe "dynamic"
+               unwrapVkDestroyPipelineLayoutSafe ::
+               PFN_vkDestroyPipelineLayout -> HS_vkDestroyPipelineLayout
+
+instance VulkanProc "vkDestroyPipelineLayout" where
+        type VkProcType "vkDestroyPipelineLayout" =
+             HS_vkDestroyPipelineLayout
+        vkProcSymbol = _VkDestroyPipelineLayout
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkDestroyPipelineLayout
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkDestroyPipelineLayoutSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCreateSampler :: CString
+
+pattern VkCreateSampler <- (is_VkCreateSampler -> True)
+  where VkCreateSampler = _VkCreateSampler
+
+{-# INLINE _VkCreateSampler #-}
+
+_VkCreateSampler :: CString
+_VkCreateSampler = Ptr "vkCreateSampler\NUL"##
+
+{-# INLINE is_VkCreateSampler #-}
+
+is_VkCreateSampler :: CString -> Bool
+is_VkCreateSampler = (EQ ==) . cmpCStrings _VkCreateSampler
+
+type VkCreateSampler = "vkCreateSampler"
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_TOO_MANY_OBJECTS'.
+--
+-- > VkResult vkCreateSampler
+-- >     ( VkDevice device
+-- >     , const VkSamplerCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkSampler* pSampler
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateSampler vkCreateSampler registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateSampler <- vkGetDeviceProc @VkCreateSampler vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateSampler <- vkGetProc @VkCreateSampler
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCreateSampler" vkCreateSampler ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkSamplerCreateInfo -- ^ pCreateInfo
+                                         ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkSampler -- ^ pSampler
+                                                              -> IO VkResult
+
+##else
+vkCreateSampler ::
+                VkDevice -- ^ device
+                         ->
+                  Ptr VkSamplerCreateInfo -- ^ pCreateInfo
+                                          ->
+                    Ptr VkAllocationCallbacks -- ^ pAllocator
+                                              -> Ptr VkSampler -- ^ pSampler
+                                                               -> IO VkResult
+vkCreateSampler
+  = unsafeDupablePerformIO (vkGetProc @VkCreateSampler)
+
+{-# NOINLINE vkCreateSampler #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_TOO_MANY_OBJECTS'.
+--
+-- > VkResult vkCreateSampler
+-- >     ( VkDevice device
+-- >     , const VkSamplerCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkSampler* pSampler
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateSampler vkCreateSampler registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateSampler <- vkGetDeviceProc @VkCreateSampler vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateSampler <- vkGetProc @VkCreateSampler
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCreateSampler" vkCreateSamplerSafe ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkSamplerCreateInfo -- ^ pCreateInfo
+                                         ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkSampler -- ^ pSampler
+                                                              -> IO VkResult
+
+##else
+vkCreateSamplerSafe ::
+                    VkDevice -- ^ device
+                             ->
+                      Ptr VkSamplerCreateInfo -- ^ pCreateInfo
+                                              ->
+                        Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                  -> Ptr VkSampler -- ^ pSampler
+                                                                   -> IO VkResult
+vkCreateSamplerSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCreateSampler)
+
+{-# NOINLINE vkCreateSamplerSafe #-}
+##endif
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_TOO_MANY_OBJECTS'.
+--
+--   > VkResult vkCreateSampler
+--   >     ( VkDevice device
+--   >     , const VkSamplerCreateInfo* pCreateInfo
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     , VkSampler* pSampler
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateSampler vkCreateSampler registry at www.khronos.org>
+type HS_vkCreateSampler =
+     VkDevice -- ^ device
+              ->
+       Ptr VkSamplerCreateInfo -- ^ pCreateInfo
+                               ->
+         Ptr VkAllocationCallbacks -- ^ pAllocator
+                                   -> Ptr VkSampler -- ^ pSampler
+                                                    -> IO VkResult
+
+type PFN_vkCreateSampler = FunPtr HS_vkCreateSampler
+
+foreign import ccall unsafe "dynamic" unwrapVkCreateSampler ::
+               PFN_vkCreateSampler -> HS_vkCreateSampler
+
+foreign import ccall safe "dynamic" unwrapVkCreateSamplerSafe ::
+               PFN_vkCreateSampler -> HS_vkCreateSampler
+
+instance VulkanProc "vkCreateSampler" where
+        type VkProcType "vkCreateSampler" = HS_vkCreateSampler
+        vkProcSymbol = _VkCreateSampler
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkCreateSampler
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkCreateSamplerSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkDestroySampler :: CString
+
+pattern VkDestroySampler <- (is_VkDestroySampler -> True)
+  where VkDestroySampler = _VkDestroySampler
+
+{-# INLINE _VkDestroySampler #-}
+
+_VkDestroySampler :: CString
+_VkDestroySampler = Ptr "vkDestroySampler\NUL"##
+
+{-# INLINE is_VkDestroySampler #-}
+
+is_VkDestroySampler :: CString -> Bool
+is_VkDestroySampler = (EQ ==) . cmpCStrings _VkDestroySampler
+
+type VkDestroySampler = "vkDestroySampler"
+
+-- |
+-- > void vkDestroySampler
+-- >     ( VkDevice device
+-- >     , VkSampler sampler
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroySampler vkDestroySampler registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroySampler <- vkGetDeviceProc @VkDestroySampler vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroySampler <- vkGetProc @VkDestroySampler
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkDestroySampler" vkDestroySampler ::
+               VkDevice -- ^ device
+                        -> VkSampler -- ^ sampler
+                                     -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                  -> IO ()
+
+##else
+vkDestroySampler ::
+                 VkDevice -- ^ device
+                          -> VkSampler -- ^ sampler
+                                       -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                    -> IO ()
+vkDestroySampler
+  = unsafeDupablePerformIO (vkGetProc @VkDestroySampler)
+
+{-# NOINLINE vkDestroySampler #-}
+##endif
+
+-- |
+-- > void vkDestroySampler
+-- >     ( VkDevice device
+-- >     , VkSampler sampler
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroySampler vkDestroySampler registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroySampler <- vkGetDeviceProc @VkDestroySampler vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroySampler <- vkGetProc @VkDestroySampler
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkDestroySampler" vkDestroySamplerSafe
+               :: VkDevice -- ^ device
+                           -> VkSampler -- ^ sampler
+                                        -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                     -> IO ()
+
+##else
+vkDestroySamplerSafe ::
+                     VkDevice -- ^ device
+                              -> VkSampler -- ^ sampler
+                                           -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                        -> IO ()
+vkDestroySamplerSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkDestroySampler)
+
+{-# NOINLINE vkDestroySamplerSafe #-}
+##endif
+
+-- | > void vkDestroySampler
+--   >     ( VkDevice device
+--   >     , VkSampler sampler
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroySampler vkDestroySampler registry at www.khronos.org>
+type HS_vkDestroySampler =
+     VkDevice -- ^ device
+              -> VkSampler -- ^ sampler
+                           -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                        -> IO ()
+
+type PFN_vkDestroySampler = FunPtr HS_vkDestroySampler
+
+foreign import ccall unsafe "dynamic" unwrapVkDestroySampler ::
+               PFN_vkDestroySampler -> HS_vkDestroySampler
+
+foreign import ccall safe "dynamic" unwrapVkDestroySamplerSafe ::
+               PFN_vkDestroySampler -> HS_vkDestroySampler
+
+instance VulkanProc "vkDestroySampler" where
+        type VkProcType "vkDestroySampler" = HS_vkDestroySampler
+        vkProcSymbol = _VkDestroySampler
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkDestroySampler
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkDestroySamplerSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCreateDescriptorSetLayout :: CString
+
+pattern VkCreateDescriptorSetLayout <-
+        (is_VkCreateDescriptorSetLayout -> True)
+  where VkCreateDescriptorSetLayout = _VkCreateDescriptorSetLayout
+
+{-# INLINE _VkCreateDescriptorSetLayout #-}
+
+_VkCreateDescriptorSetLayout :: CString
+_VkCreateDescriptorSetLayout
+  = Ptr "vkCreateDescriptorSetLayout\NUL"##
+
+{-# INLINE is_VkCreateDescriptorSetLayout #-}
+
+is_VkCreateDescriptorSetLayout :: CString -> Bool
+is_VkCreateDescriptorSetLayout
+  = (EQ ==) . cmpCStrings _VkCreateDescriptorSetLayout
+
+type VkCreateDescriptorSetLayout = "vkCreateDescriptorSetLayout"
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkCreateDescriptorSetLayout
+-- >     ( VkDevice device
+-- >     , const VkDescriptorSetLayoutCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkDescriptorSetLayout* pSetLayout
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateDescriptorSetLayout vkCreateDescriptorSetLayout registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateDescriptorSetLayout <- vkGetDeviceProc @VkCreateDescriptorSetLayout vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateDescriptorSetLayout <- vkGetProc @VkCreateDescriptorSetLayout
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCreateDescriptorSetLayout"
+               vkCreateDescriptorSetLayout ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkDescriptorSetLayoutCreateInfo -- ^ pCreateInfo
+                                                     ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             ->
+                     Ptr VkDescriptorSetLayout -- ^ pSetLayout
+                                               -> IO VkResult
+
+##else
+vkCreateDescriptorSetLayout ::
+                            VkDevice -- ^ device
+                                     ->
+                              Ptr VkDescriptorSetLayoutCreateInfo -- ^ pCreateInfo
+                                                                  ->
+                                Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                          ->
+                                  Ptr VkDescriptorSetLayout -- ^ pSetLayout
+                                                            -> IO VkResult
+vkCreateDescriptorSetLayout
+  = unsafeDupablePerformIO (vkGetProc @VkCreateDescriptorSetLayout)
+
+{-# NOINLINE vkCreateDescriptorSetLayout #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkCreateDescriptorSetLayout
+-- >     ( VkDevice device
+-- >     , const VkDescriptorSetLayoutCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkDescriptorSetLayout* pSetLayout
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateDescriptorSetLayout vkCreateDescriptorSetLayout registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateDescriptorSetLayout <- vkGetDeviceProc @VkCreateDescriptorSetLayout vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateDescriptorSetLayout <- vkGetProc @VkCreateDescriptorSetLayout
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCreateDescriptorSetLayout"
+               vkCreateDescriptorSetLayoutSafe ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkDescriptorSetLayoutCreateInfo -- ^ pCreateInfo
+                                                     ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             ->
+                     Ptr VkDescriptorSetLayout -- ^ pSetLayout
+                                               -> IO VkResult
+
+##else
+vkCreateDescriptorSetLayoutSafe ::
+                                VkDevice -- ^ device
+                                         ->
+                                  Ptr VkDescriptorSetLayoutCreateInfo -- ^ pCreateInfo
+                                                                      ->
+                                    Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                              ->
+                                      Ptr VkDescriptorSetLayout -- ^ pSetLayout
+                                                                -> IO VkResult
+vkCreateDescriptorSetLayoutSafe
+  = unsafeDupablePerformIO
+      (vkGetProcSafe @VkCreateDescriptorSetLayout)
+
+{-# NOINLINE vkCreateDescriptorSetLayoutSafe #-}
+##endif
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+--   > VkResult vkCreateDescriptorSetLayout
+--   >     ( VkDevice device
+--   >     , const VkDescriptorSetLayoutCreateInfo* pCreateInfo
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     , VkDescriptorSetLayout* pSetLayout
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateDescriptorSetLayout vkCreateDescriptorSetLayout registry at www.khronos.org>
+type HS_vkCreateDescriptorSetLayout =
+     VkDevice -- ^ device
+              ->
+       Ptr VkDescriptorSetLayoutCreateInfo -- ^ pCreateInfo
+                                           ->
+         Ptr VkAllocationCallbacks -- ^ pAllocator
+                                   ->
+           Ptr VkDescriptorSetLayout -- ^ pSetLayout
+                                     -> IO VkResult
+
+type PFN_vkCreateDescriptorSetLayout =
+     FunPtr HS_vkCreateDescriptorSetLayout
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkCreateDescriptorSetLayout ::
+               PFN_vkCreateDescriptorSetLayout -> HS_vkCreateDescriptorSetLayout
+
+foreign import ccall safe "dynamic"
+               unwrapVkCreateDescriptorSetLayoutSafe ::
+               PFN_vkCreateDescriptorSetLayout -> HS_vkCreateDescriptorSetLayout
+
+instance VulkanProc "vkCreateDescriptorSetLayout" where
+        type VkProcType "vkCreateDescriptorSetLayout" =
+             HS_vkCreateDescriptorSetLayout
+        vkProcSymbol = _VkCreateDescriptorSetLayout
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkCreateDescriptorSetLayout
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkCreateDescriptorSetLayoutSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkDestroyDescriptorSetLayout :: CString
+
+pattern VkDestroyDescriptorSetLayout <-
+        (is_VkDestroyDescriptorSetLayout -> True)
+  where VkDestroyDescriptorSetLayout = _VkDestroyDescriptorSetLayout
+
+{-# INLINE _VkDestroyDescriptorSetLayout #-}
+
+_VkDestroyDescriptorSetLayout :: CString
+_VkDestroyDescriptorSetLayout
+  = Ptr "vkDestroyDescriptorSetLayout\NUL"##
+
+{-# INLINE is_VkDestroyDescriptorSetLayout #-}
+
+is_VkDestroyDescriptorSetLayout :: CString -> Bool
+is_VkDestroyDescriptorSetLayout
+  = (EQ ==) . cmpCStrings _VkDestroyDescriptorSetLayout
+
+type VkDestroyDescriptorSetLayout = "vkDestroyDescriptorSetLayout"
+
+-- |
+-- > void vkDestroyDescriptorSetLayout
+-- >     ( VkDevice device
+-- >     , VkDescriptorSetLayout descriptorSetLayout
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyDescriptorSetLayout vkDestroyDescriptorSetLayout registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroyDescriptorSetLayout <- vkGetDeviceProc @VkDestroyDescriptorSetLayout vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroyDescriptorSetLayout <- vkGetProc @VkDestroyDescriptorSetLayout
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkDestroyDescriptorSetLayout"
+               vkDestroyDescriptorSetLayout ::
+               VkDevice -- ^ device
+                        ->
+                 VkDescriptorSetLayout -- ^ descriptorSetLayout
+                                       -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                    -> IO ()
+
+##else
+vkDestroyDescriptorSetLayout ::
+                             VkDevice -- ^ device
+                                      ->
+                               VkDescriptorSetLayout -- ^ descriptorSetLayout
+                                                     -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                                  -> IO ()
+vkDestroyDescriptorSetLayout
+  = unsafeDupablePerformIO (vkGetProc @VkDestroyDescriptorSetLayout)
+
+{-# NOINLINE vkDestroyDescriptorSetLayout #-}
+##endif
+
+-- |
+-- > void vkDestroyDescriptorSetLayout
+-- >     ( VkDevice device
+-- >     , VkDescriptorSetLayout descriptorSetLayout
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyDescriptorSetLayout vkDestroyDescriptorSetLayout registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroyDescriptorSetLayout <- vkGetDeviceProc @VkDestroyDescriptorSetLayout vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroyDescriptorSetLayout <- vkGetProc @VkDestroyDescriptorSetLayout
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkDestroyDescriptorSetLayout"
+               vkDestroyDescriptorSetLayoutSafe ::
+               VkDevice -- ^ device
+                        ->
+                 VkDescriptorSetLayout -- ^ descriptorSetLayout
+                                       -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                    -> IO ()
+
+##else
+vkDestroyDescriptorSetLayoutSafe ::
+                                 VkDevice -- ^ device
+                                          ->
+                                   VkDescriptorSetLayout -- ^ descriptorSetLayout
+                                                         -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                                      -> IO ()
+vkDestroyDescriptorSetLayoutSafe
+  = unsafeDupablePerformIO
+      (vkGetProcSafe @VkDestroyDescriptorSetLayout)
+
+{-# NOINLINE vkDestroyDescriptorSetLayoutSafe #-}
+##endif
+
+-- | > void vkDestroyDescriptorSetLayout
+--   >     ( VkDevice device
+--   >     , VkDescriptorSetLayout descriptorSetLayout
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyDescriptorSetLayout vkDestroyDescriptorSetLayout registry at www.khronos.org>
+type HS_vkDestroyDescriptorSetLayout =
+     VkDevice -- ^ device
+              ->
+       VkDescriptorSetLayout -- ^ descriptorSetLayout
+                             -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                          -> IO ()
+
+type PFN_vkDestroyDescriptorSetLayout =
+     FunPtr HS_vkDestroyDescriptorSetLayout
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkDestroyDescriptorSetLayout ::
+               PFN_vkDestroyDescriptorSetLayout -> HS_vkDestroyDescriptorSetLayout
+
+foreign import ccall safe "dynamic"
+               unwrapVkDestroyDescriptorSetLayoutSafe ::
+               PFN_vkDestroyDescriptorSetLayout -> HS_vkDestroyDescriptorSetLayout
+
+instance VulkanProc "vkDestroyDescriptorSetLayout" where
+        type VkProcType "vkDestroyDescriptorSetLayout" =
+             HS_vkDestroyDescriptorSetLayout
+        vkProcSymbol = _VkDestroyDescriptorSetLayout
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkDestroyDescriptorSetLayout
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkDestroyDescriptorSetLayoutSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCreateDescriptorPool :: CString
+
+pattern VkCreateDescriptorPool <-
+        (is_VkCreateDescriptorPool -> True)
+  where VkCreateDescriptorPool = _VkCreateDescriptorPool
+
+{-# INLINE _VkCreateDescriptorPool #-}
+
+_VkCreateDescriptorPool :: CString
+_VkCreateDescriptorPool = Ptr "vkCreateDescriptorPool\NUL"##
+
+{-# INLINE is_VkCreateDescriptorPool #-}
+
+is_VkCreateDescriptorPool :: CString -> Bool
+is_VkCreateDescriptorPool
+  = (EQ ==) . cmpCStrings _VkCreateDescriptorPool
+
+type VkCreateDescriptorPool = "vkCreateDescriptorPool"
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_FRAGMENTATION_EXT'.
+--
+-- > VkResult vkCreateDescriptorPool
+-- >     ( VkDevice device
+-- >     , const VkDescriptorPoolCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkDescriptorPool* pDescriptorPool
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateDescriptorPool vkCreateDescriptorPool registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateDescriptorPool <- vkGetDeviceProc @VkCreateDescriptorPool vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateDescriptorPool <- vkGetProc @VkCreateDescriptorPool
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCreateDescriptorPool"
+               vkCreateDescriptorPool ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkDescriptorPoolCreateInfo -- ^ pCreateInfo
+                                                ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkDescriptorPool -- ^ pDescriptorPool
+                                                                     -> IO VkResult
+
+##else
+vkCreateDescriptorPool ::
+                       VkDevice -- ^ device
+                                ->
+                         Ptr VkDescriptorPoolCreateInfo -- ^ pCreateInfo
+                                                        ->
+                           Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                     -> Ptr VkDescriptorPool -- ^ pDescriptorPool
+                                                                             -> IO VkResult
+vkCreateDescriptorPool
+  = unsafeDupablePerformIO (vkGetProc @VkCreateDescriptorPool)
+
+{-# NOINLINE vkCreateDescriptorPool #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_FRAGMENTATION_EXT'.
+--
+-- > VkResult vkCreateDescriptorPool
+-- >     ( VkDevice device
+-- >     , const VkDescriptorPoolCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkDescriptorPool* pDescriptorPool
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateDescriptorPool vkCreateDescriptorPool registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateDescriptorPool <- vkGetDeviceProc @VkCreateDescriptorPool vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateDescriptorPool <- vkGetProc @VkCreateDescriptorPool
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCreateDescriptorPool"
+               vkCreateDescriptorPoolSafe ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkDescriptorPoolCreateInfo -- ^ pCreateInfo
+                                                ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkDescriptorPool -- ^ pDescriptorPool
+                                                                     -> IO VkResult
+
+##else
+vkCreateDescriptorPoolSafe ::
+                           VkDevice -- ^ device
+                                    ->
+                             Ptr VkDescriptorPoolCreateInfo -- ^ pCreateInfo
+                                                            ->
+                               Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                         -> Ptr VkDescriptorPool -- ^ pDescriptorPool
+                                                                                 -> IO VkResult
+vkCreateDescriptorPoolSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCreateDescriptorPool)
+
+{-# NOINLINE vkCreateDescriptorPoolSafe #-}
+##endif
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_FRAGMENTATION_EXT'.
+--
+--   > VkResult vkCreateDescriptorPool
+--   >     ( VkDevice device
+--   >     , const VkDescriptorPoolCreateInfo* pCreateInfo
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     , VkDescriptorPool* pDescriptorPool
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateDescriptorPool vkCreateDescriptorPool registry at www.khronos.org>
+type HS_vkCreateDescriptorPool =
+     VkDevice -- ^ device
+              ->
+       Ptr VkDescriptorPoolCreateInfo -- ^ pCreateInfo
+                                      ->
+         Ptr VkAllocationCallbacks -- ^ pAllocator
+                                   -> Ptr VkDescriptorPool -- ^ pDescriptorPool
+                                                           -> IO VkResult
+
+type PFN_vkCreateDescriptorPool = FunPtr HS_vkCreateDescriptorPool
+
+foreign import ccall unsafe "dynamic" unwrapVkCreateDescriptorPool
+               :: PFN_vkCreateDescriptorPool -> HS_vkCreateDescriptorPool
+
+foreign import ccall safe "dynamic"
+               unwrapVkCreateDescriptorPoolSafe ::
+               PFN_vkCreateDescriptorPool -> HS_vkCreateDescriptorPool
+
+instance VulkanProc "vkCreateDescriptorPool" where
+        type VkProcType "vkCreateDescriptorPool" =
+             HS_vkCreateDescriptorPool
+        vkProcSymbol = _VkCreateDescriptorPool
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkCreateDescriptorPool
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkCreateDescriptorPoolSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkDestroyDescriptorPool :: CString
+
+pattern VkDestroyDescriptorPool <-
+        (is_VkDestroyDescriptorPool -> True)
+  where VkDestroyDescriptorPool = _VkDestroyDescriptorPool
+
+{-# INLINE _VkDestroyDescriptorPool #-}
+
+_VkDestroyDescriptorPool :: CString
+_VkDestroyDescriptorPool = Ptr "vkDestroyDescriptorPool\NUL"##
+
+{-# INLINE is_VkDestroyDescriptorPool #-}
+
+is_VkDestroyDescriptorPool :: CString -> Bool
+is_VkDestroyDescriptorPool
+  = (EQ ==) . cmpCStrings _VkDestroyDescriptorPool
+
+type VkDestroyDescriptorPool = "vkDestroyDescriptorPool"
+
+-- |
+-- > void vkDestroyDescriptorPool
+-- >     ( VkDevice device
+-- >     , VkDescriptorPool descriptorPool
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyDescriptorPool vkDestroyDescriptorPool registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroyDescriptorPool <- vkGetDeviceProc @VkDestroyDescriptorPool vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroyDescriptorPool <- vkGetProc @VkDestroyDescriptorPool
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkDestroyDescriptorPool"
+               vkDestroyDescriptorPool ::
+               VkDevice -- ^ device
+                        -> VkDescriptorPool -- ^ descriptorPool
+                                            -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                         -> IO ()
+
+##else
+vkDestroyDescriptorPool ::
+                        VkDevice -- ^ device
+                                 -> VkDescriptorPool -- ^ descriptorPool
+                                                     -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                                  -> IO ()
+vkDestroyDescriptorPool
+  = unsafeDupablePerformIO (vkGetProc @VkDestroyDescriptorPool)
+
+{-# NOINLINE vkDestroyDescriptorPool #-}
+##endif
+
+-- |
+-- > void vkDestroyDescriptorPool
+-- >     ( VkDevice device
+-- >     , VkDescriptorPool descriptorPool
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyDescriptorPool vkDestroyDescriptorPool registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroyDescriptorPool <- vkGetDeviceProc @VkDestroyDescriptorPool vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroyDescriptorPool <- vkGetProc @VkDestroyDescriptorPool
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkDestroyDescriptorPool"
+               vkDestroyDescriptorPoolSafe ::
+               VkDevice -- ^ device
+                        -> VkDescriptorPool -- ^ descriptorPool
+                                            -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                         -> IO ()
+
+##else
+vkDestroyDescriptorPoolSafe ::
+                            VkDevice -- ^ device
+                                     -> VkDescriptorPool -- ^ descriptorPool
+                                                         -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                                      -> IO ()
+vkDestroyDescriptorPoolSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkDestroyDescriptorPool)
+
+{-# NOINLINE vkDestroyDescriptorPoolSafe #-}
+##endif
+
+-- | > void vkDestroyDescriptorPool
+--   >     ( VkDevice device
+--   >     , VkDescriptorPool descriptorPool
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyDescriptorPool vkDestroyDescriptorPool registry at www.khronos.org>
+type HS_vkDestroyDescriptorPool =
+     VkDevice -- ^ device
+              -> VkDescriptorPool -- ^ descriptorPool
+                                  -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                               -> IO ()
+
+type PFN_vkDestroyDescriptorPool =
+     FunPtr HS_vkDestroyDescriptorPool
+
+foreign import ccall unsafe "dynamic" unwrapVkDestroyDescriptorPool
+               :: PFN_vkDestroyDescriptorPool -> HS_vkDestroyDescriptorPool
+
+foreign import ccall safe "dynamic"
+               unwrapVkDestroyDescriptorPoolSafe ::
+               PFN_vkDestroyDescriptorPool -> HS_vkDestroyDescriptorPool
+
+instance VulkanProc "vkDestroyDescriptorPool" where
+        type VkProcType "vkDestroyDescriptorPool" =
+             HS_vkDestroyDescriptorPool
+        vkProcSymbol = _VkDestroyDescriptorPool
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkDestroyDescriptorPool
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkDestroyDescriptorPoolSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkResetDescriptorPool :: CString
+
+pattern VkResetDescriptorPool <- (is_VkResetDescriptorPool -> True)
+  where VkResetDescriptorPool = _VkResetDescriptorPool
+
+{-# INLINE _VkResetDescriptorPool #-}
+
+_VkResetDescriptorPool :: CString
+_VkResetDescriptorPool = Ptr "vkResetDescriptorPool\NUL"##
+
+{-# INLINE is_VkResetDescriptorPool #-}
+
+is_VkResetDescriptorPool :: CString -> Bool
+is_VkResetDescriptorPool
+  = (EQ ==) . cmpCStrings _VkResetDescriptorPool
+
+type VkResetDescriptorPool = "vkResetDescriptorPool"
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkResetDescriptorPool
+-- >     ( VkDevice device
+-- >     , VkDescriptorPool descriptorPool
+-- >     , VkDescriptorPoolResetFlags flags
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkResetDescriptorPool vkResetDescriptorPool registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myResetDescriptorPool <- vkGetDeviceProc @VkResetDescriptorPool vkDevice
+--
+-- or less efficient:
+--
+-- > myResetDescriptorPool <- vkGetProc @VkResetDescriptorPool
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkResetDescriptorPool"
+               vkResetDescriptorPool ::
+               VkDevice -- ^ device
+                        ->
+                 VkDescriptorPool -- ^ descriptorPool
+                                  -> VkDescriptorPoolResetFlags -- ^ flags
+                                                                -> IO VkResult
+
+##else
+vkResetDescriptorPool ::
+                      VkDevice -- ^ device
+                               ->
+                        VkDescriptorPool -- ^ descriptorPool
+                                         -> VkDescriptorPoolResetFlags -- ^ flags
+                                                                       -> IO VkResult
+vkResetDescriptorPool
+  = unsafeDupablePerformIO (vkGetProc @VkResetDescriptorPool)
+
+{-# NOINLINE vkResetDescriptorPool #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkResetDescriptorPool
+-- >     ( VkDevice device
+-- >     , VkDescriptorPool descriptorPool
+-- >     , VkDescriptorPoolResetFlags flags
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkResetDescriptorPool vkResetDescriptorPool registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myResetDescriptorPool <- vkGetDeviceProc @VkResetDescriptorPool vkDevice
+--
+-- or less efficient:
+--
+-- > myResetDescriptorPool <- vkGetProc @VkResetDescriptorPool
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkResetDescriptorPool"
+               vkResetDescriptorPoolSafe ::
+               VkDevice -- ^ device
+                        ->
+                 VkDescriptorPool -- ^ descriptorPool
+                                  -> VkDescriptorPoolResetFlags -- ^ flags
+                                                                -> IO VkResult
+
+##else
+vkResetDescriptorPoolSafe ::
+                          VkDevice -- ^ device
+                                   ->
+                            VkDescriptorPool -- ^ descriptorPool
+                                             -> VkDescriptorPoolResetFlags -- ^ flags
+                                                                           -> IO VkResult
+vkResetDescriptorPoolSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkResetDescriptorPool)
+
+{-# NOINLINE vkResetDescriptorPoolSafe #-}
+##endif
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+--   > VkResult vkResetDescriptorPool
+--   >     ( VkDevice device
+--   >     , VkDescriptorPool descriptorPool
+--   >     , VkDescriptorPoolResetFlags flags
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkResetDescriptorPool vkResetDescriptorPool registry at www.khronos.org>
+type HS_vkResetDescriptorPool =
+     VkDevice -- ^ device
+              ->
+       VkDescriptorPool -- ^ descriptorPool
+                        -> VkDescriptorPoolResetFlags -- ^ flags
+                                                      -> IO VkResult
+
+type PFN_vkResetDescriptorPool = FunPtr HS_vkResetDescriptorPool
+
+foreign import ccall unsafe "dynamic" unwrapVkResetDescriptorPool
+               :: PFN_vkResetDescriptorPool -> HS_vkResetDescriptorPool
+
+foreign import ccall safe "dynamic" unwrapVkResetDescriptorPoolSafe
+               :: PFN_vkResetDescriptorPool -> HS_vkResetDescriptorPool
+
+instance VulkanProc "vkResetDescriptorPool" where
+        type VkProcType "vkResetDescriptorPool" = HS_vkResetDescriptorPool
+        vkProcSymbol = _VkResetDescriptorPool
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkResetDescriptorPool
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkResetDescriptorPoolSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkAllocateDescriptorSets :: CString
+
+pattern VkAllocateDescriptorSets <-
+        (is_VkAllocateDescriptorSets -> True)
+  where VkAllocateDescriptorSets = _VkAllocateDescriptorSets
+
+{-# INLINE _VkAllocateDescriptorSets #-}
+
+_VkAllocateDescriptorSets :: CString
+_VkAllocateDescriptorSets = Ptr "vkAllocateDescriptorSets\NUL"##
+
+{-# INLINE is_VkAllocateDescriptorSets #-}
+
+is_VkAllocateDescriptorSets :: CString -> Bool
+is_VkAllocateDescriptorSets
+  = (EQ ==) . cmpCStrings _VkAllocateDescriptorSets
+
+type VkAllocateDescriptorSets = "vkAllocateDescriptorSets"
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_FRAGMENTED_POOL', 'VK_ERROR_OUT_OF_POOL_MEMORY'.
+--
+-- > VkResult vkAllocateDescriptorSets
+-- >     ( VkDevice device
+-- >     , const VkDescriptorSetAllocateInfo* pAllocateInfo
+-- >     , VkDescriptorSet* pDescriptorSets
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkAllocateDescriptorSets vkAllocateDescriptorSets registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myAllocateDescriptorSets <- vkGetDeviceProc @VkAllocateDescriptorSets vkDevice
+--
+-- or less efficient:
+--
+-- > myAllocateDescriptorSets <- vkGetProc @VkAllocateDescriptorSets
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkAllocateDescriptorSets"
+               vkAllocateDescriptorSets ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkDescriptorSetAllocateInfo -- ^ pAllocateInfo
+                                                 ->
+                   Ptr VkDescriptorSet -- ^ pDescriptorSets
+                                       -> IO VkResult
+
+##else
+vkAllocateDescriptorSets ::
+                         VkDevice -- ^ device
+                                  ->
+                           Ptr VkDescriptorSetAllocateInfo -- ^ pAllocateInfo
+                                                           ->
+                             Ptr VkDescriptorSet -- ^ pDescriptorSets
+                                                 -> IO VkResult
+vkAllocateDescriptorSets
+  = unsafeDupablePerformIO (vkGetProc @VkAllocateDescriptorSets)
+
+{-# NOINLINE vkAllocateDescriptorSets #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_FRAGMENTED_POOL', 'VK_ERROR_OUT_OF_POOL_MEMORY'.
+--
+-- > VkResult vkAllocateDescriptorSets
+-- >     ( VkDevice device
+-- >     , const VkDescriptorSetAllocateInfo* pAllocateInfo
+-- >     , VkDescriptorSet* pDescriptorSets
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkAllocateDescriptorSets vkAllocateDescriptorSets registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myAllocateDescriptorSets <- vkGetDeviceProc @VkAllocateDescriptorSets vkDevice
+--
+-- or less efficient:
+--
+-- > myAllocateDescriptorSets <- vkGetProc @VkAllocateDescriptorSets
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkAllocateDescriptorSets"
+               vkAllocateDescriptorSetsSafe ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkDescriptorSetAllocateInfo -- ^ pAllocateInfo
+                                                 ->
+                   Ptr VkDescriptorSet -- ^ pDescriptorSets
+                                       -> IO VkResult
+
+##else
+vkAllocateDescriptorSetsSafe ::
+                             VkDevice -- ^ device
+                                      ->
+                               Ptr VkDescriptorSetAllocateInfo -- ^ pAllocateInfo
+                                                               ->
+                                 Ptr VkDescriptorSet -- ^ pDescriptorSets
+                                                     -> IO VkResult
+vkAllocateDescriptorSetsSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkAllocateDescriptorSets)
+
+{-# NOINLINE vkAllocateDescriptorSetsSafe #-}
+##endif
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_FRAGMENTED_POOL', 'VK_ERROR_OUT_OF_POOL_MEMORY'.
+--
+--   > VkResult vkAllocateDescriptorSets
+--   >     ( VkDevice device
+--   >     , const VkDescriptorSetAllocateInfo* pAllocateInfo
+--   >     , VkDescriptorSet* pDescriptorSets
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkAllocateDescriptorSets vkAllocateDescriptorSets registry at www.khronos.org>
+type HS_vkAllocateDescriptorSets =
+     VkDevice -- ^ device
+              ->
+       Ptr VkDescriptorSetAllocateInfo -- ^ pAllocateInfo
+                                       ->
+         Ptr VkDescriptorSet -- ^ pDescriptorSets
+                             -> IO VkResult
+
+type PFN_vkAllocateDescriptorSets =
+     FunPtr HS_vkAllocateDescriptorSets
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkAllocateDescriptorSets ::
+               PFN_vkAllocateDescriptorSets -> HS_vkAllocateDescriptorSets
+
+foreign import ccall safe "dynamic"
+               unwrapVkAllocateDescriptorSetsSafe ::
+               PFN_vkAllocateDescriptorSets -> HS_vkAllocateDescriptorSets
+
+instance VulkanProc "vkAllocateDescriptorSets" where
+        type VkProcType "vkAllocateDescriptorSets" =
+             HS_vkAllocateDescriptorSets
+        vkProcSymbol = _VkAllocateDescriptorSets
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkAllocateDescriptorSets
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkAllocateDescriptorSetsSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkFreeDescriptorSets :: CString
+
+pattern VkFreeDescriptorSets <- (is_VkFreeDescriptorSets -> True)
+  where VkFreeDescriptorSets = _VkFreeDescriptorSets
+
+{-# INLINE _VkFreeDescriptorSets #-}
+
+_VkFreeDescriptorSets :: CString
+_VkFreeDescriptorSets = Ptr "vkFreeDescriptorSets\NUL"##
+
+{-# INLINE is_VkFreeDescriptorSets #-}
+
+is_VkFreeDescriptorSets :: CString -> Bool
+is_VkFreeDescriptorSets
+  = (EQ ==) . cmpCStrings _VkFreeDescriptorSets
+
+type VkFreeDescriptorSets = "vkFreeDescriptorSets"
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkFreeDescriptorSets
+-- >     ( VkDevice device
+-- >     , VkDescriptorPool descriptorPool
+-- >     , uint32_t descriptorSetCount
+-- >     , const VkDescriptorSet* pDescriptorSets
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkFreeDescriptorSets vkFreeDescriptorSets registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myFreeDescriptorSets <- vkGetDeviceProc @VkFreeDescriptorSets vkDevice
+--
+-- or less efficient:
+--
+-- > myFreeDescriptorSets <- vkGetProc @VkFreeDescriptorSets
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkFreeDescriptorSets"
+               vkFreeDescriptorSets ::
+               VkDevice -- ^ device
+                        ->
+                 VkDescriptorPool -- ^ descriptorPool
+                                  -> Word32 -- ^ descriptorSetCount
+                                            -> Ptr VkDescriptorSet -- ^ pDescriptorSets
+                                                                   -> IO VkResult
+
+##else
+vkFreeDescriptorSets ::
+                     VkDevice -- ^ device
+                              ->
+                       VkDescriptorPool -- ^ descriptorPool
+                                        -> Word32 -- ^ descriptorSetCount
+                                                  -> Ptr VkDescriptorSet -- ^ pDescriptorSets
+                                                                         -> IO VkResult
+vkFreeDescriptorSets
+  = unsafeDupablePerformIO (vkGetProc @VkFreeDescriptorSets)
+
+{-# NOINLINE vkFreeDescriptorSets #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkFreeDescriptorSets
+-- >     ( VkDevice device
+-- >     , VkDescriptorPool descriptorPool
+-- >     , uint32_t descriptorSetCount
+-- >     , const VkDescriptorSet* pDescriptorSets
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkFreeDescriptorSets vkFreeDescriptorSets registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myFreeDescriptorSets <- vkGetDeviceProc @VkFreeDescriptorSets vkDevice
+--
+-- or less efficient:
+--
+-- > myFreeDescriptorSets <- vkGetProc @VkFreeDescriptorSets
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkFreeDescriptorSets"
+               vkFreeDescriptorSetsSafe ::
+               VkDevice -- ^ device
+                        ->
+                 VkDescriptorPool -- ^ descriptorPool
+                                  -> Word32 -- ^ descriptorSetCount
+                                            -> Ptr VkDescriptorSet -- ^ pDescriptorSets
+                                                                   -> IO VkResult
+
+##else
+vkFreeDescriptorSetsSafe ::
+                         VkDevice -- ^ device
+                                  ->
+                           VkDescriptorPool -- ^ descriptorPool
+                                            -> Word32 -- ^ descriptorSetCount
+                                                      -> Ptr VkDescriptorSet -- ^ pDescriptorSets
+                                                                             -> IO VkResult
+vkFreeDescriptorSetsSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkFreeDescriptorSets)
+
+{-# NOINLINE vkFreeDescriptorSetsSafe #-}
+##endif
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+--   > VkResult vkFreeDescriptorSets
+--   >     ( VkDevice device
+--   >     , VkDescriptorPool descriptorPool
+--   >     , uint32_t descriptorSetCount
+--   >     , const VkDescriptorSet* pDescriptorSets
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkFreeDescriptorSets vkFreeDescriptorSets registry at www.khronos.org>
+type HS_vkFreeDescriptorSets =
+     VkDevice -- ^ device
+              ->
+       VkDescriptorPool -- ^ descriptorPool
+                        -> Word32 -- ^ descriptorSetCount
+                                  -> Ptr VkDescriptorSet -- ^ pDescriptorSets
+                                                         -> IO VkResult
+
+type PFN_vkFreeDescriptorSets = FunPtr HS_vkFreeDescriptorSets
+
+foreign import ccall unsafe "dynamic" unwrapVkFreeDescriptorSets ::
+               PFN_vkFreeDescriptorSets -> HS_vkFreeDescriptorSets
+
+foreign import ccall safe "dynamic" unwrapVkFreeDescriptorSetsSafe
+               :: PFN_vkFreeDescriptorSets -> HS_vkFreeDescriptorSets
+
+instance VulkanProc "vkFreeDescriptorSets" where
+        type VkProcType "vkFreeDescriptorSets" = HS_vkFreeDescriptorSets
+        vkProcSymbol = _VkFreeDescriptorSets
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkFreeDescriptorSets
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkFreeDescriptorSetsSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkUpdateDescriptorSets :: CString
+
+pattern VkUpdateDescriptorSets <-
+        (is_VkUpdateDescriptorSets -> True)
+  where VkUpdateDescriptorSets = _VkUpdateDescriptorSets
+
+{-# INLINE _VkUpdateDescriptorSets #-}
+
+_VkUpdateDescriptorSets :: CString
+_VkUpdateDescriptorSets = Ptr "vkUpdateDescriptorSets\NUL"##
+
+{-# INLINE is_VkUpdateDescriptorSets #-}
+
+is_VkUpdateDescriptorSets :: CString -> Bool
+is_VkUpdateDescriptorSets
+  = (EQ ==) . cmpCStrings _VkUpdateDescriptorSets
+
+type VkUpdateDescriptorSets = "vkUpdateDescriptorSets"
+
+-- |
+-- > void vkUpdateDescriptorSets
+-- >     ( VkDevice device
+-- >     , uint32_t descriptorWriteCount
+-- >     , const VkWriteDescriptorSet* pDescriptorWrites
+-- >     , uint32_t descriptorCopyCount
+-- >     , const VkCopyDescriptorSet* pDescriptorCopies
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkUpdateDescriptorSets vkUpdateDescriptorSets registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myUpdateDescriptorSets <- vkGetDeviceProc @VkUpdateDescriptorSets vkDevice
+--
+-- or less efficient:
+--
+-- > myUpdateDescriptorSets <- vkGetProc @VkUpdateDescriptorSets
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkUpdateDescriptorSets"
+               vkUpdateDescriptorSets ::
+               VkDevice -- ^ device
+                        ->
+                 Word32 -- ^ descriptorWriteCount
+                        ->
+                   Ptr VkWriteDescriptorSet -- ^ pDescriptorWrites
+                                            ->
+                     Word32 -- ^ descriptorCopyCount
+                            -> Ptr VkCopyDescriptorSet -- ^ pDescriptorCopies
+                                                       -> IO ()
+
+##else
+vkUpdateDescriptorSets ::
+                       VkDevice -- ^ device
+                                ->
+                         Word32 -- ^ descriptorWriteCount
+                                ->
+                           Ptr VkWriteDescriptorSet -- ^ pDescriptorWrites
+                                                    ->
+                             Word32 -- ^ descriptorCopyCount
+                                    -> Ptr VkCopyDescriptorSet -- ^ pDescriptorCopies
+                                                               -> IO ()
+vkUpdateDescriptorSets
+  = unsafeDupablePerformIO (vkGetProc @VkUpdateDescriptorSets)
+
+{-# NOINLINE vkUpdateDescriptorSets #-}
+##endif
+
+-- |
+-- > void vkUpdateDescriptorSets
+-- >     ( VkDevice device
+-- >     , uint32_t descriptorWriteCount
+-- >     , const VkWriteDescriptorSet* pDescriptorWrites
+-- >     , uint32_t descriptorCopyCount
+-- >     , const VkCopyDescriptorSet* pDescriptorCopies
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkUpdateDescriptorSets vkUpdateDescriptorSets registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myUpdateDescriptorSets <- vkGetDeviceProc @VkUpdateDescriptorSets vkDevice
+--
+-- or less efficient:
+--
+-- > myUpdateDescriptorSets <- vkGetProc @VkUpdateDescriptorSets
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkUpdateDescriptorSets"
+               vkUpdateDescriptorSetsSafe ::
+               VkDevice -- ^ device
+                        ->
+                 Word32 -- ^ descriptorWriteCount
+                        ->
+                   Ptr VkWriteDescriptorSet -- ^ pDescriptorWrites
+                                            ->
+                     Word32 -- ^ descriptorCopyCount
+                            -> Ptr VkCopyDescriptorSet -- ^ pDescriptorCopies
+                                                       -> IO ()
+
+##else
+vkUpdateDescriptorSetsSafe ::
+                           VkDevice -- ^ device
+                                    ->
+                             Word32 -- ^ descriptorWriteCount
+                                    ->
+                               Ptr VkWriteDescriptorSet -- ^ pDescriptorWrites
+                                                        ->
+                                 Word32 -- ^ descriptorCopyCount
+                                        -> Ptr VkCopyDescriptorSet -- ^ pDescriptorCopies
+                                                                   -> IO ()
+vkUpdateDescriptorSetsSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkUpdateDescriptorSets)
+
+{-# NOINLINE vkUpdateDescriptorSetsSafe #-}
+##endif
+
+-- | > void vkUpdateDescriptorSets
+--   >     ( VkDevice device
+--   >     , uint32_t descriptorWriteCount
+--   >     , const VkWriteDescriptorSet* pDescriptorWrites
+--   >     , uint32_t descriptorCopyCount
+--   >     , const VkCopyDescriptorSet* pDescriptorCopies
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkUpdateDescriptorSets vkUpdateDescriptorSets registry at www.khronos.org>
+type HS_vkUpdateDescriptorSets =
+     VkDevice -- ^ device
+              ->
+       Word32 -- ^ descriptorWriteCount
+              ->
+         Ptr VkWriteDescriptorSet -- ^ pDescriptorWrites
+                                  ->
+           Word32 -- ^ descriptorCopyCount
+                  -> Ptr VkCopyDescriptorSet -- ^ pDescriptorCopies
+                                             -> IO ()
+
+type PFN_vkUpdateDescriptorSets = FunPtr HS_vkUpdateDescriptorSets
+
+foreign import ccall unsafe "dynamic" unwrapVkUpdateDescriptorSets
+               :: PFN_vkUpdateDescriptorSets -> HS_vkUpdateDescriptorSets
+
+foreign import ccall safe "dynamic"
+               unwrapVkUpdateDescriptorSetsSafe ::
+               PFN_vkUpdateDescriptorSets -> HS_vkUpdateDescriptorSets
+
+instance VulkanProc "vkUpdateDescriptorSets" where
+        type VkProcType "vkUpdateDescriptorSets" =
+             HS_vkUpdateDescriptorSets
+        vkProcSymbol = _VkUpdateDescriptorSets
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkUpdateDescriptorSets
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkUpdateDescriptorSetsSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCreateFramebuffer :: CString
+
+pattern VkCreateFramebuffer <- (is_VkCreateFramebuffer -> True)
+  where VkCreateFramebuffer = _VkCreateFramebuffer
+
+{-# INLINE _VkCreateFramebuffer #-}
+
+_VkCreateFramebuffer :: CString
+_VkCreateFramebuffer = Ptr "vkCreateFramebuffer\NUL"##
+
+{-# INLINE is_VkCreateFramebuffer #-}
+
+is_VkCreateFramebuffer :: CString -> Bool
+is_VkCreateFramebuffer = (EQ ==) . cmpCStrings _VkCreateFramebuffer
+
+type VkCreateFramebuffer = "vkCreateFramebuffer"
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkCreateFramebuffer
+-- >     ( VkDevice device
+-- >     , const VkFramebufferCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkFramebuffer* pFramebuffer
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateFramebuffer vkCreateFramebuffer registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateFramebuffer <- vkGetDeviceProc @VkCreateFramebuffer vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateFramebuffer <- vkGetProc @VkCreateFramebuffer
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCreateFramebuffer"
+               vkCreateFramebuffer ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkFramebufferCreateInfo -- ^ pCreateInfo
+                                             ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkFramebuffer -- ^ pFramebuffer
+                                                                  -> IO VkResult
+
+##else
+vkCreateFramebuffer ::
+                    VkDevice -- ^ device
+                             ->
+                      Ptr VkFramebufferCreateInfo -- ^ pCreateInfo
+                                                  ->
+                        Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                  -> Ptr VkFramebuffer -- ^ pFramebuffer
+                                                                       -> IO VkResult
+vkCreateFramebuffer
+  = unsafeDupablePerformIO (vkGetProc @VkCreateFramebuffer)
+
+{-# NOINLINE vkCreateFramebuffer #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkCreateFramebuffer
+-- >     ( VkDevice device
+-- >     , const VkFramebufferCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkFramebuffer* pFramebuffer
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateFramebuffer vkCreateFramebuffer registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateFramebuffer <- vkGetDeviceProc @VkCreateFramebuffer vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateFramebuffer <- vkGetProc @VkCreateFramebuffer
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCreateFramebuffer"
+               vkCreateFramebufferSafe ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkFramebufferCreateInfo -- ^ pCreateInfo
+                                             ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkFramebuffer -- ^ pFramebuffer
+                                                                  -> IO VkResult
+
+##else
+vkCreateFramebufferSafe ::
+                        VkDevice -- ^ device
+                                 ->
+                          Ptr VkFramebufferCreateInfo -- ^ pCreateInfo
+                                                      ->
+                            Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                      -> Ptr VkFramebuffer -- ^ pFramebuffer
+                                                                           -> IO VkResult
+vkCreateFramebufferSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCreateFramebuffer)
+
+{-# NOINLINE vkCreateFramebufferSafe #-}
+##endif
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+--   > VkResult vkCreateFramebuffer
+--   >     ( VkDevice device
+--   >     , const VkFramebufferCreateInfo* pCreateInfo
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     , VkFramebuffer* pFramebuffer
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateFramebuffer vkCreateFramebuffer registry at www.khronos.org>
+type HS_vkCreateFramebuffer =
+     VkDevice -- ^ device
+              ->
+       Ptr VkFramebufferCreateInfo -- ^ pCreateInfo
+                                   ->
+         Ptr VkAllocationCallbacks -- ^ pAllocator
+                                   -> Ptr VkFramebuffer -- ^ pFramebuffer
+                                                        -> IO VkResult
+
+type PFN_vkCreateFramebuffer = FunPtr HS_vkCreateFramebuffer
+
+foreign import ccall unsafe "dynamic" unwrapVkCreateFramebuffer ::
+               PFN_vkCreateFramebuffer -> HS_vkCreateFramebuffer
+
+foreign import ccall safe "dynamic" unwrapVkCreateFramebufferSafe
+               :: PFN_vkCreateFramebuffer -> HS_vkCreateFramebuffer
+
+instance VulkanProc "vkCreateFramebuffer" where
+        type VkProcType "vkCreateFramebuffer" = HS_vkCreateFramebuffer
+        vkProcSymbol = _VkCreateFramebuffer
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkCreateFramebuffer
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkCreateFramebufferSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkDestroyFramebuffer :: CString
+
+pattern VkDestroyFramebuffer <- (is_VkDestroyFramebuffer -> True)
+  where VkDestroyFramebuffer = _VkDestroyFramebuffer
+
+{-# INLINE _VkDestroyFramebuffer #-}
+
+_VkDestroyFramebuffer :: CString
+_VkDestroyFramebuffer = Ptr "vkDestroyFramebuffer\NUL"##
+
+{-# INLINE is_VkDestroyFramebuffer #-}
+
+is_VkDestroyFramebuffer :: CString -> Bool
+is_VkDestroyFramebuffer
+  = (EQ ==) . cmpCStrings _VkDestroyFramebuffer
+
+type VkDestroyFramebuffer = "vkDestroyFramebuffer"
+
+-- |
+-- > void vkDestroyFramebuffer
+-- >     ( VkDevice device
+-- >     , VkFramebuffer framebuffer
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyFramebuffer vkDestroyFramebuffer registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroyFramebuffer <- vkGetDeviceProc @VkDestroyFramebuffer vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroyFramebuffer <- vkGetProc @VkDestroyFramebuffer
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkDestroyFramebuffer"
+               vkDestroyFramebuffer ::
+               VkDevice -- ^ device
+                        -> VkFramebuffer -- ^ framebuffer
+                                         -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                      -> IO ()
+
+##else
+vkDestroyFramebuffer ::
+                     VkDevice -- ^ device
+                              -> VkFramebuffer -- ^ framebuffer
+                                               -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                            -> IO ()
+vkDestroyFramebuffer
+  = unsafeDupablePerformIO (vkGetProc @VkDestroyFramebuffer)
+
+{-# NOINLINE vkDestroyFramebuffer #-}
+##endif
+
+-- |
+-- > void vkDestroyFramebuffer
+-- >     ( VkDevice device
+-- >     , VkFramebuffer framebuffer
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyFramebuffer vkDestroyFramebuffer registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroyFramebuffer <- vkGetDeviceProc @VkDestroyFramebuffer vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroyFramebuffer <- vkGetProc @VkDestroyFramebuffer
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkDestroyFramebuffer"
+               vkDestroyFramebufferSafe ::
+               VkDevice -- ^ device
+                        -> VkFramebuffer -- ^ framebuffer
+                                         -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                      -> IO ()
+
+##else
+vkDestroyFramebufferSafe ::
+                         VkDevice -- ^ device
+                                  -> VkFramebuffer -- ^ framebuffer
+                                                   -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                                -> IO ()
+vkDestroyFramebufferSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkDestroyFramebuffer)
+
+{-# NOINLINE vkDestroyFramebufferSafe #-}
+##endif
+
+-- | > void vkDestroyFramebuffer
+--   >     ( VkDevice device
+--   >     , VkFramebuffer framebuffer
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyFramebuffer vkDestroyFramebuffer registry at www.khronos.org>
+type HS_vkDestroyFramebuffer =
+     VkDevice -- ^ device
+              -> VkFramebuffer -- ^ framebuffer
+                               -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                            -> IO ()
+
+type PFN_vkDestroyFramebuffer = FunPtr HS_vkDestroyFramebuffer
+
+foreign import ccall unsafe "dynamic" unwrapVkDestroyFramebuffer ::
+               PFN_vkDestroyFramebuffer -> HS_vkDestroyFramebuffer
+
+foreign import ccall safe "dynamic" unwrapVkDestroyFramebufferSafe
+               :: PFN_vkDestroyFramebuffer -> HS_vkDestroyFramebuffer
+
+instance VulkanProc "vkDestroyFramebuffer" where
+        type VkProcType "vkDestroyFramebuffer" = HS_vkDestroyFramebuffer
+        vkProcSymbol = _VkDestroyFramebuffer
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkDestroyFramebuffer
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkDestroyFramebufferSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCreateRenderPass :: CString
+
+pattern VkCreateRenderPass <- (is_VkCreateRenderPass -> True)
+  where VkCreateRenderPass = _VkCreateRenderPass
+
+{-# INLINE _VkCreateRenderPass #-}
+
+_VkCreateRenderPass :: CString
+_VkCreateRenderPass = Ptr "vkCreateRenderPass\NUL"##
+
+{-# INLINE is_VkCreateRenderPass #-}
+
+is_VkCreateRenderPass :: CString -> Bool
+is_VkCreateRenderPass = (EQ ==) . cmpCStrings _VkCreateRenderPass
+
+type VkCreateRenderPass = "vkCreateRenderPass"
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkCreateRenderPass
+-- >     ( VkDevice device
+-- >     , const VkRenderPassCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkRenderPass* pRenderPass
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateRenderPass vkCreateRenderPass registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateRenderPass <- vkGetDeviceProc @VkCreateRenderPass vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateRenderPass <- vkGetProc @VkCreateRenderPass
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCreateRenderPass" vkCreateRenderPass
+               ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkRenderPassCreateInfo -- ^ pCreateInfo
+                                            ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkRenderPass -- ^ pRenderPass
+                                                                 -> IO VkResult
+
+##else
+vkCreateRenderPass ::
+                   VkDevice -- ^ device
+                            ->
+                     Ptr VkRenderPassCreateInfo -- ^ pCreateInfo
+                                                ->
+                       Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                 -> Ptr VkRenderPass -- ^ pRenderPass
+                                                                     -> IO VkResult
+vkCreateRenderPass
+  = unsafeDupablePerformIO (vkGetProc @VkCreateRenderPass)
+
+{-# NOINLINE vkCreateRenderPass #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkCreateRenderPass
+-- >     ( VkDevice device
+-- >     , const VkRenderPassCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkRenderPass* pRenderPass
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateRenderPass vkCreateRenderPass registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateRenderPass <- vkGetDeviceProc @VkCreateRenderPass vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateRenderPass <- vkGetProc @VkCreateRenderPass
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCreateRenderPass"
+               vkCreateRenderPassSafe ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkRenderPassCreateInfo -- ^ pCreateInfo
+                                            ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkRenderPass -- ^ pRenderPass
+                                                                 -> IO VkResult
+
+##else
+vkCreateRenderPassSafe ::
+                       VkDevice -- ^ device
+                                ->
+                         Ptr VkRenderPassCreateInfo -- ^ pCreateInfo
+                                                    ->
+                           Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                     -> Ptr VkRenderPass -- ^ pRenderPass
+                                                                         -> IO VkResult
+vkCreateRenderPassSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCreateRenderPass)
+
+{-# NOINLINE vkCreateRenderPassSafe #-}
+##endif
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+--   > VkResult vkCreateRenderPass
+--   >     ( VkDevice device
+--   >     , const VkRenderPassCreateInfo* pCreateInfo
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     , VkRenderPass* pRenderPass
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateRenderPass vkCreateRenderPass registry at www.khronos.org>
+type HS_vkCreateRenderPass =
+     VkDevice -- ^ device
+              ->
+       Ptr VkRenderPassCreateInfo -- ^ pCreateInfo
+                                  ->
+         Ptr VkAllocationCallbacks -- ^ pAllocator
+                                   -> Ptr VkRenderPass -- ^ pRenderPass
+                                                       -> IO VkResult
+
+type PFN_vkCreateRenderPass = FunPtr HS_vkCreateRenderPass
+
+foreign import ccall unsafe "dynamic" unwrapVkCreateRenderPass ::
+               PFN_vkCreateRenderPass -> HS_vkCreateRenderPass
+
+foreign import ccall safe "dynamic" unwrapVkCreateRenderPassSafe ::
+               PFN_vkCreateRenderPass -> HS_vkCreateRenderPass
+
+instance VulkanProc "vkCreateRenderPass" where
+        type VkProcType "vkCreateRenderPass" = HS_vkCreateRenderPass
+        vkProcSymbol = _VkCreateRenderPass
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkCreateRenderPass
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkCreateRenderPassSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkDestroyRenderPass :: CString
+
+pattern VkDestroyRenderPass <- (is_VkDestroyRenderPass -> True)
+  where VkDestroyRenderPass = _VkDestroyRenderPass
+
+{-# INLINE _VkDestroyRenderPass #-}
+
+_VkDestroyRenderPass :: CString
+_VkDestroyRenderPass = Ptr "vkDestroyRenderPass\NUL"##
+
+{-# INLINE is_VkDestroyRenderPass #-}
+
+is_VkDestroyRenderPass :: CString -> Bool
+is_VkDestroyRenderPass = (EQ ==) . cmpCStrings _VkDestroyRenderPass
+
+type VkDestroyRenderPass = "vkDestroyRenderPass"
+
+-- |
+-- > void vkDestroyRenderPass
+-- >     ( VkDevice device
+-- >     , VkRenderPass renderPass
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyRenderPass vkDestroyRenderPass registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroyRenderPass <- vkGetDeviceProc @VkDestroyRenderPass vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroyRenderPass <- vkGetProc @VkDestroyRenderPass
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkDestroyRenderPass"
+               vkDestroyRenderPass ::
+               VkDevice -- ^ device
+                        -> VkRenderPass -- ^ renderPass
+                                        -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                     -> IO ()
+
+##else
+vkDestroyRenderPass ::
+                    VkDevice -- ^ device
+                             -> VkRenderPass -- ^ renderPass
+                                             -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                          -> IO ()
+vkDestroyRenderPass
+  = unsafeDupablePerformIO (vkGetProc @VkDestroyRenderPass)
+
+{-# NOINLINE vkDestroyRenderPass #-}
+##endif
+
+-- |
+-- > void vkDestroyRenderPass
+-- >     ( VkDevice device
+-- >     , VkRenderPass renderPass
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyRenderPass vkDestroyRenderPass registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroyRenderPass <- vkGetDeviceProc @VkDestroyRenderPass vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroyRenderPass <- vkGetProc @VkDestroyRenderPass
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkDestroyRenderPass"
+               vkDestroyRenderPassSafe ::
+               VkDevice -- ^ device
+                        -> VkRenderPass -- ^ renderPass
+                                        -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                     -> IO ()
+
+##else
+vkDestroyRenderPassSafe ::
+                        VkDevice -- ^ device
+                                 -> VkRenderPass -- ^ renderPass
+                                                 -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                              -> IO ()
+vkDestroyRenderPassSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkDestroyRenderPass)
+
+{-# NOINLINE vkDestroyRenderPassSafe #-}
+##endif
+
+-- | > void vkDestroyRenderPass
+--   >     ( VkDevice device
+--   >     , VkRenderPass renderPass
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyRenderPass vkDestroyRenderPass registry at www.khronos.org>
+type HS_vkDestroyRenderPass =
+     VkDevice -- ^ device
+              -> VkRenderPass -- ^ renderPass
+                              -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                           -> IO ()
+
+type PFN_vkDestroyRenderPass = FunPtr HS_vkDestroyRenderPass
+
+foreign import ccall unsafe "dynamic" unwrapVkDestroyRenderPass ::
+               PFN_vkDestroyRenderPass -> HS_vkDestroyRenderPass
+
+foreign import ccall safe "dynamic" unwrapVkDestroyRenderPassSafe
+               :: PFN_vkDestroyRenderPass -> HS_vkDestroyRenderPass
+
+instance VulkanProc "vkDestroyRenderPass" where
+        type VkProcType "vkDestroyRenderPass" = HS_vkDestroyRenderPass
+        vkProcSymbol = _VkDestroyRenderPass
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkDestroyRenderPass
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkDestroyRenderPassSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkGetRenderAreaGranularity :: CString
+
+pattern VkGetRenderAreaGranularity <-
+        (is_VkGetRenderAreaGranularity -> True)
+  where VkGetRenderAreaGranularity = _VkGetRenderAreaGranularity
+
+{-# INLINE _VkGetRenderAreaGranularity #-}
+
+_VkGetRenderAreaGranularity :: CString
+_VkGetRenderAreaGranularity = Ptr "vkGetRenderAreaGranularity\NUL"##
+
+{-# INLINE is_VkGetRenderAreaGranularity #-}
+
+is_VkGetRenderAreaGranularity :: CString -> Bool
+is_VkGetRenderAreaGranularity
+  = (EQ ==) . cmpCStrings _VkGetRenderAreaGranularity
+
+type VkGetRenderAreaGranularity = "vkGetRenderAreaGranularity"
+
+-- |
+-- > void vkGetRenderAreaGranularity
+-- >     ( VkDevice device
+-- >     , VkRenderPass renderPass
+-- >     , VkExtent2D* pGranularity
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetRenderAreaGranularity vkGetRenderAreaGranularity registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetRenderAreaGranularity <- vkGetDeviceProc @VkGetRenderAreaGranularity vkDevice
+--
+-- or less efficient:
+--
+-- > myGetRenderAreaGranularity <- vkGetProc @VkGetRenderAreaGranularity
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkGetRenderAreaGranularity"
+               vkGetRenderAreaGranularity ::
+               VkDevice -- ^ device
+                        -> VkRenderPass -- ^ renderPass
+                                        -> Ptr VkExtent2D -- ^ pGranularity
+                                                          -> IO ()
+
+##else
+vkGetRenderAreaGranularity ::
+                           VkDevice -- ^ device
+                                    -> VkRenderPass -- ^ renderPass
+                                                    -> Ptr VkExtent2D -- ^ pGranularity
+                                                                      -> IO ()
+vkGetRenderAreaGranularity
+  = unsafeDupablePerformIO (vkGetProc @VkGetRenderAreaGranularity)
+
+{-# NOINLINE vkGetRenderAreaGranularity #-}
+##endif
+
+-- |
+-- > void vkGetRenderAreaGranularity
+-- >     ( VkDevice device
+-- >     , VkRenderPass renderPass
+-- >     , VkExtent2D* pGranularity
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetRenderAreaGranularity vkGetRenderAreaGranularity registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetRenderAreaGranularity <- vkGetDeviceProc @VkGetRenderAreaGranularity vkDevice
+--
+-- or less efficient:
+--
+-- > myGetRenderAreaGranularity <- vkGetProc @VkGetRenderAreaGranularity
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkGetRenderAreaGranularity"
+               vkGetRenderAreaGranularitySafe ::
+               VkDevice -- ^ device
+                        -> VkRenderPass -- ^ renderPass
+                                        -> Ptr VkExtent2D -- ^ pGranularity
+                                                          -> IO ()
+
+##else
+vkGetRenderAreaGranularitySafe ::
+                               VkDevice -- ^ device
+                                        -> VkRenderPass -- ^ renderPass
+                                                        -> Ptr VkExtent2D -- ^ pGranularity
+                                                                          -> IO ()
+vkGetRenderAreaGranularitySafe
+  = unsafeDupablePerformIO
+      (vkGetProcSafe @VkGetRenderAreaGranularity)
+
+{-# NOINLINE vkGetRenderAreaGranularitySafe #-}
+##endif
+
+-- | > void vkGetRenderAreaGranularity
+--   >     ( VkDevice device
+--   >     , VkRenderPass renderPass
+--   >     , VkExtent2D* pGranularity
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetRenderAreaGranularity vkGetRenderAreaGranularity registry at www.khronos.org>
+type HS_vkGetRenderAreaGranularity =
+     VkDevice -- ^ device
+              -> VkRenderPass -- ^ renderPass
+                              -> Ptr VkExtent2D -- ^ pGranularity
+                                                -> IO ()
+
+type PFN_vkGetRenderAreaGranularity =
+     FunPtr HS_vkGetRenderAreaGranularity
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkGetRenderAreaGranularity ::
+               PFN_vkGetRenderAreaGranularity -> HS_vkGetRenderAreaGranularity
+
+foreign import ccall safe "dynamic"
+               unwrapVkGetRenderAreaGranularitySafe ::
+               PFN_vkGetRenderAreaGranularity -> HS_vkGetRenderAreaGranularity
+
+instance VulkanProc "vkGetRenderAreaGranularity" where
+        type VkProcType "vkGetRenderAreaGranularity" =
+             HS_vkGetRenderAreaGranularity
+        vkProcSymbol = _VkGetRenderAreaGranularity
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkGetRenderAreaGranularity
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkGetRenderAreaGranularitySafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCreateCommandPool :: CString
+
+pattern VkCreateCommandPool <- (is_VkCreateCommandPool -> True)
+  where VkCreateCommandPool = _VkCreateCommandPool
+
+{-# INLINE _VkCreateCommandPool #-}
+
+_VkCreateCommandPool :: CString
+_VkCreateCommandPool = Ptr "vkCreateCommandPool\NUL"##
+
+{-# INLINE is_VkCreateCommandPool #-}
+
+is_VkCreateCommandPool :: CString -> Bool
+is_VkCreateCommandPool = (EQ ==) . cmpCStrings _VkCreateCommandPool
+
+type VkCreateCommandPool = "vkCreateCommandPool"
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkCreateCommandPool
+-- >     ( VkDevice device
+-- >     , const VkCommandPoolCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkCommandPool* pCommandPool
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateCommandPool vkCreateCommandPool registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateCommandPool <- vkGetDeviceProc @VkCreateCommandPool vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateCommandPool <- vkGetProc @VkCreateCommandPool
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCreateCommandPool"
+               vkCreateCommandPool ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkCommandPoolCreateInfo -- ^ pCreateInfo
+                                             ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkCommandPool -- ^ pCommandPool
+                                                                  -> IO VkResult
+
+##else
+vkCreateCommandPool ::
+                    VkDevice -- ^ device
+                             ->
+                      Ptr VkCommandPoolCreateInfo -- ^ pCreateInfo
+                                                  ->
+                        Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                  -> Ptr VkCommandPool -- ^ pCommandPool
+                                                                       -> IO VkResult
+vkCreateCommandPool
+  = unsafeDupablePerformIO (vkGetProc @VkCreateCommandPool)
+
+{-# NOINLINE vkCreateCommandPool #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkCreateCommandPool
+-- >     ( VkDevice device
+-- >     , const VkCommandPoolCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkCommandPool* pCommandPool
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateCommandPool vkCreateCommandPool registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateCommandPool <- vkGetDeviceProc @VkCreateCommandPool vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateCommandPool <- vkGetProc @VkCreateCommandPool
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCreateCommandPool"
+               vkCreateCommandPoolSafe ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkCommandPoolCreateInfo -- ^ pCreateInfo
+                                             ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkCommandPool -- ^ pCommandPool
+                                                                  -> IO VkResult
+
+##else
+vkCreateCommandPoolSafe ::
+                        VkDevice -- ^ device
+                                 ->
+                          Ptr VkCommandPoolCreateInfo -- ^ pCreateInfo
+                                                      ->
+                            Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                      -> Ptr VkCommandPool -- ^ pCommandPool
+                                                                           -> IO VkResult
+vkCreateCommandPoolSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCreateCommandPool)
+
+{-# NOINLINE vkCreateCommandPoolSafe #-}
+##endif
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+--   > VkResult vkCreateCommandPool
+--   >     ( VkDevice device
+--   >     , const VkCommandPoolCreateInfo* pCreateInfo
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     , VkCommandPool* pCommandPool
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateCommandPool vkCreateCommandPool registry at www.khronos.org>
+type HS_vkCreateCommandPool =
+     VkDevice -- ^ device
+              ->
+       Ptr VkCommandPoolCreateInfo -- ^ pCreateInfo
+                                   ->
+         Ptr VkAllocationCallbacks -- ^ pAllocator
+                                   -> Ptr VkCommandPool -- ^ pCommandPool
+                                                        -> IO VkResult
+
+type PFN_vkCreateCommandPool = FunPtr HS_vkCreateCommandPool
+
+foreign import ccall unsafe "dynamic" unwrapVkCreateCommandPool ::
+               PFN_vkCreateCommandPool -> HS_vkCreateCommandPool
+
+foreign import ccall safe "dynamic" unwrapVkCreateCommandPoolSafe
+               :: PFN_vkCreateCommandPool -> HS_vkCreateCommandPool
+
+instance VulkanProc "vkCreateCommandPool" where
+        type VkProcType "vkCreateCommandPool" = HS_vkCreateCommandPool
+        vkProcSymbol = _VkCreateCommandPool
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkCreateCommandPool
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkCreateCommandPoolSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkDestroyCommandPool :: CString
+
+pattern VkDestroyCommandPool <- (is_VkDestroyCommandPool -> True)
+  where VkDestroyCommandPool = _VkDestroyCommandPool
+
+{-# INLINE _VkDestroyCommandPool #-}
+
+_VkDestroyCommandPool :: CString
+_VkDestroyCommandPool = Ptr "vkDestroyCommandPool\NUL"##
+
+{-# INLINE is_VkDestroyCommandPool #-}
+
+is_VkDestroyCommandPool :: CString -> Bool
+is_VkDestroyCommandPool
+  = (EQ ==) . cmpCStrings _VkDestroyCommandPool
+
+type VkDestroyCommandPool = "vkDestroyCommandPool"
+
+-- |
+-- > void vkDestroyCommandPool
+-- >     ( VkDevice device
+-- >     , VkCommandPool commandPool
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyCommandPool vkDestroyCommandPool registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroyCommandPool <- vkGetDeviceProc @VkDestroyCommandPool vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroyCommandPool <- vkGetProc @VkDestroyCommandPool
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkDestroyCommandPool"
+               vkDestroyCommandPool ::
+               VkDevice -- ^ device
+                        -> VkCommandPool -- ^ commandPool
+                                         -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                      -> IO ()
+
+##else
+vkDestroyCommandPool ::
+                     VkDevice -- ^ device
+                              -> VkCommandPool -- ^ commandPool
+                                               -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                            -> IO ()
+vkDestroyCommandPool
+  = unsafeDupablePerformIO (vkGetProc @VkDestroyCommandPool)
+
+{-# NOINLINE vkDestroyCommandPool #-}
+##endif
+
+-- |
+-- > void vkDestroyCommandPool
+-- >     ( VkDevice device
+-- >     , VkCommandPool commandPool
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyCommandPool vkDestroyCommandPool registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroyCommandPool <- vkGetDeviceProc @VkDestroyCommandPool vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroyCommandPool <- vkGetProc @VkDestroyCommandPool
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkDestroyCommandPool"
+               vkDestroyCommandPoolSafe ::
+               VkDevice -- ^ device
+                        -> VkCommandPool -- ^ commandPool
+                                         -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                      -> IO ()
+
+##else
+vkDestroyCommandPoolSafe ::
+                         VkDevice -- ^ device
+                                  -> VkCommandPool -- ^ commandPool
+                                                   -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                                -> IO ()
+vkDestroyCommandPoolSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkDestroyCommandPool)
+
+{-# NOINLINE vkDestroyCommandPoolSafe #-}
+##endif
+
+-- | > void vkDestroyCommandPool
+--   >     ( VkDevice device
+--   >     , VkCommandPool commandPool
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyCommandPool vkDestroyCommandPool registry at www.khronos.org>
+type HS_vkDestroyCommandPool =
+     VkDevice -- ^ device
+              -> VkCommandPool -- ^ commandPool
+                               -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                            -> IO ()
+
+type PFN_vkDestroyCommandPool = FunPtr HS_vkDestroyCommandPool
+
+foreign import ccall unsafe "dynamic" unwrapVkDestroyCommandPool ::
+               PFN_vkDestroyCommandPool -> HS_vkDestroyCommandPool
+
+foreign import ccall safe "dynamic" unwrapVkDestroyCommandPoolSafe
+               :: PFN_vkDestroyCommandPool -> HS_vkDestroyCommandPool
+
+instance VulkanProc "vkDestroyCommandPool" where
+        type VkProcType "vkDestroyCommandPool" = HS_vkDestroyCommandPool
+        vkProcSymbol = _VkDestroyCommandPool
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkDestroyCommandPool
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkDestroyCommandPoolSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkResetCommandPool :: CString
+
+pattern VkResetCommandPool <- (is_VkResetCommandPool -> True)
+  where VkResetCommandPool = _VkResetCommandPool
+
+{-# INLINE _VkResetCommandPool #-}
+
+_VkResetCommandPool :: CString
+_VkResetCommandPool = Ptr "vkResetCommandPool\NUL"##
+
+{-# INLINE is_VkResetCommandPool #-}
+
+is_VkResetCommandPool :: CString -> Bool
+is_VkResetCommandPool = (EQ ==) . cmpCStrings _VkResetCommandPool
+
+type VkResetCommandPool = "vkResetCommandPool"
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkResetCommandPool
+-- >     ( VkDevice device
+-- >     , VkCommandPool commandPool
+-- >     , VkCommandPoolResetFlags flags
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkResetCommandPool vkResetCommandPool registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myResetCommandPool <- vkGetDeviceProc @VkResetCommandPool vkDevice
+--
+-- or less efficient:
+--
+-- > myResetCommandPool <- vkGetProc @VkResetCommandPool
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkResetCommandPool" vkResetCommandPool
+               ::
+               VkDevice -- ^ device
+                        -> VkCommandPool -- ^ commandPool
+                                         -> VkCommandPoolResetFlags -- ^ flags
+                                                                    -> IO VkResult
+
+##else
+vkResetCommandPool ::
+                   VkDevice -- ^ device
+                            -> VkCommandPool -- ^ commandPool
+                                             -> VkCommandPoolResetFlags -- ^ flags
+                                                                        -> IO VkResult
+vkResetCommandPool
+  = unsafeDupablePerformIO (vkGetProc @VkResetCommandPool)
+
+{-# NOINLINE vkResetCommandPool #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkResetCommandPool
+-- >     ( VkDevice device
+-- >     , VkCommandPool commandPool
+-- >     , VkCommandPoolResetFlags flags
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkResetCommandPool vkResetCommandPool registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myResetCommandPool <- vkGetDeviceProc @VkResetCommandPool vkDevice
+--
+-- or less efficient:
+--
+-- > myResetCommandPool <- vkGetProc @VkResetCommandPool
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkResetCommandPool"
+               vkResetCommandPoolSafe ::
+               VkDevice -- ^ device
+                        -> VkCommandPool -- ^ commandPool
+                                         -> VkCommandPoolResetFlags -- ^ flags
+                                                                    -> IO VkResult
+
+##else
+vkResetCommandPoolSafe ::
+                       VkDevice -- ^ device
+                                -> VkCommandPool -- ^ commandPool
+                                                 -> VkCommandPoolResetFlags -- ^ flags
+                                                                            -> IO VkResult
+vkResetCommandPoolSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkResetCommandPool)
+
+{-# NOINLINE vkResetCommandPoolSafe #-}
+##endif
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+--   > VkResult vkResetCommandPool
+--   >     ( VkDevice device
+--   >     , VkCommandPool commandPool
+--   >     , VkCommandPoolResetFlags flags
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkResetCommandPool vkResetCommandPool registry at www.khronos.org>
+type HS_vkResetCommandPool =
+     VkDevice -- ^ device
+              -> VkCommandPool -- ^ commandPool
+                               -> VkCommandPoolResetFlags -- ^ flags
+                                                          -> IO VkResult
+
+type PFN_vkResetCommandPool = FunPtr HS_vkResetCommandPool
+
+foreign import ccall unsafe "dynamic" unwrapVkResetCommandPool ::
+               PFN_vkResetCommandPool -> HS_vkResetCommandPool
+
+foreign import ccall safe "dynamic" unwrapVkResetCommandPoolSafe ::
+               PFN_vkResetCommandPool -> HS_vkResetCommandPool
+
+instance VulkanProc "vkResetCommandPool" where
+        type VkProcType "vkResetCommandPool" = HS_vkResetCommandPool
+        vkProcSymbol = _VkResetCommandPool
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkResetCommandPool
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkResetCommandPoolSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkAllocateCommandBuffers :: CString
+
+pattern VkAllocateCommandBuffers <-
+        (is_VkAllocateCommandBuffers -> True)
+  where VkAllocateCommandBuffers = _VkAllocateCommandBuffers
+
+{-# INLINE _VkAllocateCommandBuffers #-}
+
+_VkAllocateCommandBuffers :: CString
+_VkAllocateCommandBuffers = Ptr "vkAllocateCommandBuffers\NUL"##
+
+{-# INLINE is_VkAllocateCommandBuffers #-}
+
+is_VkAllocateCommandBuffers :: CString -> Bool
+is_VkAllocateCommandBuffers
+  = (EQ ==) . cmpCStrings _VkAllocateCommandBuffers
+
+type VkAllocateCommandBuffers = "vkAllocateCommandBuffers"
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkAllocateCommandBuffers
+-- >     ( VkDevice device
+-- >     , const VkCommandBufferAllocateInfo* pAllocateInfo
+-- >     , VkCommandBuffer* pCommandBuffers
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkAllocateCommandBuffers vkAllocateCommandBuffers registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myAllocateCommandBuffers <- vkGetDeviceProc @VkAllocateCommandBuffers vkDevice
+--
+-- or less efficient:
+--
+-- > myAllocateCommandBuffers <- vkGetProc @VkAllocateCommandBuffers
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkAllocateCommandBuffers"
+               vkAllocateCommandBuffers ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkCommandBufferAllocateInfo -- ^ pAllocateInfo
+                                                 ->
+                   Ptr VkCommandBuffer -- ^ pCommandBuffers
+                                       -> IO VkResult
+
+##else
+vkAllocateCommandBuffers ::
+                         VkDevice -- ^ device
+                                  ->
+                           Ptr VkCommandBufferAllocateInfo -- ^ pAllocateInfo
+                                                           ->
+                             Ptr VkCommandBuffer -- ^ pCommandBuffers
+                                                 -> IO VkResult
+vkAllocateCommandBuffers
+  = unsafeDupablePerformIO (vkGetProc @VkAllocateCommandBuffers)
+
+{-# NOINLINE vkAllocateCommandBuffers #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkAllocateCommandBuffers
+-- >     ( VkDevice device
+-- >     , const VkCommandBufferAllocateInfo* pAllocateInfo
+-- >     , VkCommandBuffer* pCommandBuffers
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkAllocateCommandBuffers vkAllocateCommandBuffers registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myAllocateCommandBuffers <- vkGetDeviceProc @VkAllocateCommandBuffers vkDevice
+--
+-- or less efficient:
+--
+-- > myAllocateCommandBuffers <- vkGetProc @VkAllocateCommandBuffers
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkAllocateCommandBuffers"
+               vkAllocateCommandBuffersSafe ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkCommandBufferAllocateInfo -- ^ pAllocateInfo
+                                                 ->
+                   Ptr VkCommandBuffer -- ^ pCommandBuffers
+                                       -> IO VkResult
+
+##else
+vkAllocateCommandBuffersSafe ::
+                             VkDevice -- ^ device
+                                      ->
+                               Ptr VkCommandBufferAllocateInfo -- ^ pAllocateInfo
+                                                               ->
+                                 Ptr VkCommandBuffer -- ^ pCommandBuffers
+                                                     -> IO VkResult
+vkAllocateCommandBuffersSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkAllocateCommandBuffers)
+
+{-# NOINLINE vkAllocateCommandBuffersSafe #-}
+##endif
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+--   > VkResult vkAllocateCommandBuffers
+--   >     ( VkDevice device
+--   >     , const VkCommandBufferAllocateInfo* pAllocateInfo
+--   >     , VkCommandBuffer* pCommandBuffers
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkAllocateCommandBuffers vkAllocateCommandBuffers registry at www.khronos.org>
+type HS_vkAllocateCommandBuffers =
+     VkDevice -- ^ device
+              ->
+       Ptr VkCommandBufferAllocateInfo -- ^ pAllocateInfo
+                                       ->
+         Ptr VkCommandBuffer -- ^ pCommandBuffers
+                             -> IO VkResult
+
+type PFN_vkAllocateCommandBuffers =
+     FunPtr HS_vkAllocateCommandBuffers
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkAllocateCommandBuffers ::
+               PFN_vkAllocateCommandBuffers -> HS_vkAllocateCommandBuffers
+
+foreign import ccall safe "dynamic"
+               unwrapVkAllocateCommandBuffersSafe ::
+               PFN_vkAllocateCommandBuffers -> HS_vkAllocateCommandBuffers
+
+instance VulkanProc "vkAllocateCommandBuffers" where
+        type VkProcType "vkAllocateCommandBuffers" =
+             HS_vkAllocateCommandBuffers
+        vkProcSymbol = _VkAllocateCommandBuffers
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkAllocateCommandBuffers
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkAllocateCommandBuffersSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkFreeCommandBuffers :: CString
+
+pattern VkFreeCommandBuffers <- (is_VkFreeCommandBuffers -> True)
+  where VkFreeCommandBuffers = _VkFreeCommandBuffers
+
+{-# INLINE _VkFreeCommandBuffers #-}
+
+_VkFreeCommandBuffers :: CString
+_VkFreeCommandBuffers = Ptr "vkFreeCommandBuffers\NUL"##
+
+{-# INLINE is_VkFreeCommandBuffers #-}
+
+is_VkFreeCommandBuffers :: CString -> Bool
+is_VkFreeCommandBuffers
+  = (EQ ==) . cmpCStrings _VkFreeCommandBuffers
+
+type VkFreeCommandBuffers = "vkFreeCommandBuffers"
+
+-- |
+-- > void vkFreeCommandBuffers
+-- >     ( VkDevice device
+-- >     , VkCommandPool commandPool
+-- >     , uint32_t commandBufferCount
+-- >     , const VkCommandBuffer* pCommandBuffers
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkFreeCommandBuffers vkFreeCommandBuffers registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myFreeCommandBuffers <- vkGetDeviceProc @VkFreeCommandBuffers vkDevice
+--
+-- or less efficient:
+--
+-- > myFreeCommandBuffers <- vkGetProc @VkFreeCommandBuffers
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkFreeCommandBuffers"
+               vkFreeCommandBuffers ::
+               VkDevice -- ^ device
+                        -> VkCommandPool -- ^ commandPool
+                                         -> Word32 -- ^ commandBufferCount
+                                                   -> Ptr VkCommandBuffer -- ^ pCommandBuffers
+                                                                          -> IO ()
+
+##else
+vkFreeCommandBuffers ::
+                     VkDevice -- ^ device
+                              -> VkCommandPool -- ^ commandPool
+                                               -> Word32 -- ^ commandBufferCount
+                                                         -> Ptr VkCommandBuffer -- ^ pCommandBuffers
+                                                                                -> IO ()
+vkFreeCommandBuffers
+  = unsafeDupablePerformIO (vkGetProc @VkFreeCommandBuffers)
+
+{-# NOINLINE vkFreeCommandBuffers #-}
+##endif
+
+-- |
+-- > void vkFreeCommandBuffers
+-- >     ( VkDevice device
+-- >     , VkCommandPool commandPool
+-- >     , uint32_t commandBufferCount
+-- >     , const VkCommandBuffer* pCommandBuffers
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkFreeCommandBuffers vkFreeCommandBuffers registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myFreeCommandBuffers <- vkGetDeviceProc @VkFreeCommandBuffers vkDevice
+--
+-- or less efficient:
+--
+-- > myFreeCommandBuffers <- vkGetProc @VkFreeCommandBuffers
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkFreeCommandBuffers"
+               vkFreeCommandBuffersSafe ::
+               VkDevice -- ^ device
+                        -> VkCommandPool -- ^ commandPool
+                                         -> Word32 -- ^ commandBufferCount
+                                                   -> Ptr VkCommandBuffer -- ^ pCommandBuffers
+                                                                          -> IO ()
+
+##else
+vkFreeCommandBuffersSafe ::
+                         VkDevice -- ^ device
+                                  -> VkCommandPool -- ^ commandPool
+                                                   -> Word32 -- ^ commandBufferCount
+                                                             -> Ptr VkCommandBuffer -- ^ pCommandBuffers
+                                                                                    -> IO ()
+vkFreeCommandBuffersSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkFreeCommandBuffers)
+
+{-# NOINLINE vkFreeCommandBuffersSafe #-}
+##endif
+
+-- | > void vkFreeCommandBuffers
+--   >     ( VkDevice device
+--   >     , VkCommandPool commandPool
+--   >     , uint32_t commandBufferCount
+--   >     , const VkCommandBuffer* pCommandBuffers
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkFreeCommandBuffers vkFreeCommandBuffers registry at www.khronos.org>
+type HS_vkFreeCommandBuffers =
+     VkDevice -- ^ device
+              -> VkCommandPool -- ^ commandPool
+                               -> Word32 -- ^ commandBufferCount
+                                         -> Ptr VkCommandBuffer -- ^ pCommandBuffers
+                                                                -> IO ()
+
+type PFN_vkFreeCommandBuffers = FunPtr HS_vkFreeCommandBuffers
+
+foreign import ccall unsafe "dynamic" unwrapVkFreeCommandBuffers ::
+               PFN_vkFreeCommandBuffers -> HS_vkFreeCommandBuffers
+
+foreign import ccall safe "dynamic" unwrapVkFreeCommandBuffersSafe
+               :: PFN_vkFreeCommandBuffers -> HS_vkFreeCommandBuffers
+
+instance VulkanProc "vkFreeCommandBuffers" where
+        type VkProcType "vkFreeCommandBuffers" = HS_vkFreeCommandBuffers
+        vkProcSymbol = _VkFreeCommandBuffers
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkFreeCommandBuffers
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkFreeCommandBuffersSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkBeginCommandBuffer :: CString
+
+pattern VkBeginCommandBuffer <- (is_VkBeginCommandBuffer -> True)
+  where VkBeginCommandBuffer = _VkBeginCommandBuffer
+
+{-# INLINE _VkBeginCommandBuffer #-}
+
+_VkBeginCommandBuffer :: CString
+_VkBeginCommandBuffer = Ptr "vkBeginCommandBuffer\NUL"##
+
+{-# INLINE is_VkBeginCommandBuffer #-}
+
+is_VkBeginCommandBuffer :: CString -> Bool
+is_VkBeginCommandBuffer
+  = (EQ ==) . cmpCStrings _VkBeginCommandBuffer
+
+type VkBeginCommandBuffer = "vkBeginCommandBuffer"
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkBeginCommandBuffer
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , const VkCommandBufferBeginInfo* pBeginInfo
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkBeginCommandBuffer vkBeginCommandBuffer registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myBeginCommandBuffer <- vkGetInstanceProc @VkBeginCommandBuffer vkInstance
+--
+-- or less efficient:
+--
+-- > myBeginCommandBuffer <- vkGetProc @VkBeginCommandBuffer
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkBeginCommandBuffer"
+               vkBeginCommandBuffer ::
+               VkCommandBuffer -- ^ commandBuffer
+                               -> Ptr VkCommandBufferBeginInfo -- ^ pBeginInfo
+                                                               -> IO VkResult
+
+##else
+vkBeginCommandBuffer ::
+                     VkCommandBuffer -- ^ commandBuffer
+                                     -> Ptr VkCommandBufferBeginInfo -- ^ pBeginInfo
+                                                                     -> IO VkResult
+vkBeginCommandBuffer
+  = unsafeDupablePerformIO (vkGetProc @VkBeginCommandBuffer)
+
+{-# NOINLINE vkBeginCommandBuffer #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkBeginCommandBuffer
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , const VkCommandBufferBeginInfo* pBeginInfo
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkBeginCommandBuffer vkBeginCommandBuffer registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myBeginCommandBuffer <- vkGetInstanceProc @VkBeginCommandBuffer vkInstance
+--
+-- or less efficient:
+--
+-- > myBeginCommandBuffer <- vkGetProc @VkBeginCommandBuffer
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkBeginCommandBuffer"
+               vkBeginCommandBufferSafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               -> Ptr VkCommandBufferBeginInfo -- ^ pBeginInfo
+                                                               -> IO VkResult
+
+##else
+vkBeginCommandBufferSafe ::
+                         VkCommandBuffer -- ^ commandBuffer
+                                         -> Ptr VkCommandBufferBeginInfo -- ^ pBeginInfo
+                                                                         -> IO VkResult
+vkBeginCommandBufferSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkBeginCommandBuffer)
+
+{-# NOINLINE vkBeginCommandBufferSafe #-}
+##endif
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+--   > VkResult vkBeginCommandBuffer
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , const VkCommandBufferBeginInfo* pBeginInfo
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkBeginCommandBuffer vkBeginCommandBuffer registry at www.khronos.org>
+type HS_vkBeginCommandBuffer =
+     VkCommandBuffer -- ^ commandBuffer
+                     -> Ptr VkCommandBufferBeginInfo -- ^ pBeginInfo
+                                                     -> IO VkResult
+
+type PFN_vkBeginCommandBuffer = FunPtr HS_vkBeginCommandBuffer
+
+foreign import ccall unsafe "dynamic" unwrapVkBeginCommandBuffer ::
+               PFN_vkBeginCommandBuffer -> HS_vkBeginCommandBuffer
+
+foreign import ccall safe "dynamic" unwrapVkBeginCommandBufferSafe
+               :: PFN_vkBeginCommandBuffer -> HS_vkBeginCommandBuffer
+
+instance VulkanProc "vkBeginCommandBuffer" where
+        type VkProcType "vkBeginCommandBuffer" = HS_vkBeginCommandBuffer
+        vkProcSymbol = _VkBeginCommandBuffer
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkBeginCommandBuffer
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkBeginCommandBufferSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkEndCommandBuffer :: CString
+
+pattern VkEndCommandBuffer <- (is_VkEndCommandBuffer -> True)
+  where VkEndCommandBuffer = _VkEndCommandBuffer
+
+{-# INLINE _VkEndCommandBuffer #-}
+
+_VkEndCommandBuffer :: CString
+_VkEndCommandBuffer = Ptr "vkEndCommandBuffer\NUL"##
+
+{-# INLINE is_VkEndCommandBuffer #-}
+
+is_VkEndCommandBuffer :: CString -> Bool
+is_VkEndCommandBuffer = (EQ ==) . cmpCStrings _VkEndCommandBuffer
+
+type VkEndCommandBuffer = "vkEndCommandBuffer"
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkEndCommandBuffer
+-- >     ( VkCommandBuffer commandBuffer
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEndCommandBuffer vkEndCommandBuffer registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myEndCommandBuffer <- vkGetInstanceProc @VkEndCommandBuffer vkInstance
+--
+-- or less efficient:
+--
+-- > myEndCommandBuffer <- vkGetProc @VkEndCommandBuffer
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkEndCommandBuffer" vkEndCommandBuffer
+               :: VkCommandBuffer -- ^ commandBuffer
+                                  -> IO VkResult
+
+##else
+vkEndCommandBuffer :: VkCommandBuffer -- ^ commandBuffer
+                                      -> IO VkResult
+vkEndCommandBuffer
+  = unsafeDupablePerformIO (vkGetProc @VkEndCommandBuffer)
+
+{-# NOINLINE vkEndCommandBuffer #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkEndCommandBuffer
+-- >     ( VkCommandBuffer commandBuffer
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEndCommandBuffer vkEndCommandBuffer registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myEndCommandBuffer <- vkGetInstanceProc @VkEndCommandBuffer vkInstance
+--
+-- or less efficient:
+--
+-- > myEndCommandBuffer <- vkGetProc @VkEndCommandBuffer
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkEndCommandBuffer"
+               vkEndCommandBufferSafe :: VkCommandBuffer -- ^ commandBuffer
+                                                         -> IO VkResult
+
+##else
+vkEndCommandBufferSafe :: VkCommandBuffer -- ^ commandBuffer
+                                          -> IO VkResult
+vkEndCommandBufferSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkEndCommandBuffer)
+
+{-# NOINLINE vkEndCommandBufferSafe #-}
+##endif
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+--   > VkResult vkEndCommandBuffer
+--   >     ( VkCommandBuffer commandBuffer
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEndCommandBuffer vkEndCommandBuffer registry at www.khronos.org>
+type HS_vkEndCommandBuffer = VkCommandBuffer -- ^ commandBuffer
+                                             -> IO VkResult
+
+type PFN_vkEndCommandBuffer = FunPtr HS_vkEndCommandBuffer
+
+foreign import ccall unsafe "dynamic" unwrapVkEndCommandBuffer ::
+               PFN_vkEndCommandBuffer -> HS_vkEndCommandBuffer
+
+foreign import ccall safe "dynamic" unwrapVkEndCommandBufferSafe ::
+               PFN_vkEndCommandBuffer -> HS_vkEndCommandBuffer
+
+instance VulkanProc "vkEndCommandBuffer" where
+        type VkProcType "vkEndCommandBuffer" = HS_vkEndCommandBuffer
+        vkProcSymbol = _VkEndCommandBuffer
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkEndCommandBuffer
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkEndCommandBufferSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkResetCommandBuffer :: CString
+
+pattern VkResetCommandBuffer <- (is_VkResetCommandBuffer -> True)
+  where VkResetCommandBuffer = _VkResetCommandBuffer
+
+{-# INLINE _VkResetCommandBuffer #-}
+
+_VkResetCommandBuffer :: CString
+_VkResetCommandBuffer = Ptr "vkResetCommandBuffer\NUL"##
+
+{-# INLINE is_VkResetCommandBuffer #-}
+
+is_VkResetCommandBuffer :: CString -> Bool
+is_VkResetCommandBuffer
+  = (EQ ==) . cmpCStrings _VkResetCommandBuffer
+
+type VkResetCommandBuffer = "vkResetCommandBuffer"
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkResetCommandBuffer
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkCommandBufferResetFlags flags
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkResetCommandBuffer vkResetCommandBuffer registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myResetCommandBuffer <- vkGetInstanceProc @VkResetCommandBuffer vkInstance
+--
+-- or less efficient:
+--
+-- > myResetCommandBuffer <- vkGetProc @VkResetCommandBuffer
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkResetCommandBuffer"
+               vkResetCommandBuffer ::
+               VkCommandBuffer -- ^ commandBuffer
+                               -> VkCommandBufferResetFlags -- ^ flags
+                                                            -> IO VkResult
+
+##else
+vkResetCommandBuffer ::
+                     VkCommandBuffer -- ^ commandBuffer
+                                     -> VkCommandBufferResetFlags -- ^ flags
+                                                                  -> IO VkResult
+vkResetCommandBuffer
+  = unsafeDupablePerformIO (vkGetProc @VkResetCommandBuffer)
+
+{-# NOINLINE vkResetCommandBuffer #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkResetCommandBuffer
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkCommandBufferResetFlags flags
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkResetCommandBuffer vkResetCommandBuffer registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myResetCommandBuffer <- vkGetInstanceProc @VkResetCommandBuffer vkInstance
+--
+-- or less efficient:
+--
+-- > myResetCommandBuffer <- vkGetProc @VkResetCommandBuffer
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkResetCommandBuffer"
+               vkResetCommandBufferSafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               -> VkCommandBufferResetFlags -- ^ flags
+                                                            -> IO VkResult
+
+##else
+vkResetCommandBufferSafe ::
+                         VkCommandBuffer -- ^ commandBuffer
+                                         -> VkCommandBufferResetFlags -- ^ flags
+                                                                      -> IO VkResult
+vkResetCommandBufferSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkResetCommandBuffer)
+
+{-# NOINLINE vkResetCommandBufferSafe #-}
+##endif
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+--   > VkResult vkResetCommandBuffer
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , VkCommandBufferResetFlags flags
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkResetCommandBuffer vkResetCommandBuffer registry at www.khronos.org>
+type HS_vkResetCommandBuffer =
+     VkCommandBuffer -- ^ commandBuffer
+                     -> VkCommandBufferResetFlags -- ^ flags
+                                                  -> IO VkResult
+
+type PFN_vkResetCommandBuffer = FunPtr HS_vkResetCommandBuffer
+
+foreign import ccall unsafe "dynamic" unwrapVkResetCommandBuffer ::
+               PFN_vkResetCommandBuffer -> HS_vkResetCommandBuffer
+
+foreign import ccall safe "dynamic" unwrapVkResetCommandBufferSafe
+               :: PFN_vkResetCommandBuffer -> HS_vkResetCommandBuffer
+
+instance VulkanProc "vkResetCommandBuffer" where
+        type VkProcType "vkResetCommandBuffer" = HS_vkResetCommandBuffer
+        vkProcSymbol = _VkResetCommandBuffer
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkResetCommandBuffer
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkResetCommandBufferSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCmdBindPipeline :: CString
+
+pattern VkCmdBindPipeline <- (is_VkCmdBindPipeline -> True)
+  where VkCmdBindPipeline = _VkCmdBindPipeline
+
+{-# INLINE _VkCmdBindPipeline #-}
+
+_VkCmdBindPipeline :: CString
+_VkCmdBindPipeline = Ptr "vkCmdBindPipeline\NUL"##
+
+{-# INLINE is_VkCmdBindPipeline #-}
+
+is_VkCmdBindPipeline :: CString -> Bool
+is_VkCmdBindPipeline = (EQ ==) . cmpCStrings _VkCmdBindPipeline
+
+type VkCmdBindPipeline = "vkCmdBindPipeline"
+
+-- |
+-- Queues: 'graphics', 'compute'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdBindPipeline
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkPipelineBindPoint pipelineBindPoint
+-- >     , VkPipeline pipeline
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBindPipeline vkCmdBindPipeline registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdBindPipeline <- vkGetInstanceProc @VkCmdBindPipeline vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdBindPipeline <- vkGetProc @VkCmdBindPipeline
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCmdBindPipeline" vkCmdBindPipeline
+               :: VkCommandBuffer -- ^ commandBuffer
+                                  -> VkPipelineBindPoint -- ^ pipelineBindPoint
+                                                         -> VkPipeline -- ^ pipeline
+                                                                       -> IO ()
+
+##else
+vkCmdBindPipeline ::
+                  VkCommandBuffer -- ^ commandBuffer
+                                  -> VkPipelineBindPoint -- ^ pipelineBindPoint
+                                                         -> VkPipeline -- ^ pipeline
+                                                                       -> IO ()
+vkCmdBindPipeline
+  = unsafeDupablePerformIO (vkGetProc @VkCmdBindPipeline)
+
+{-# NOINLINE vkCmdBindPipeline #-}
+##endif
+
+-- |
+-- Queues: 'graphics', 'compute'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdBindPipeline
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkPipelineBindPoint pipelineBindPoint
+-- >     , VkPipeline pipeline
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBindPipeline vkCmdBindPipeline registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdBindPipeline <- vkGetInstanceProc @VkCmdBindPipeline vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdBindPipeline <- vkGetProc @VkCmdBindPipeline
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCmdBindPipeline" vkCmdBindPipelineSafe
+               :: VkCommandBuffer -- ^ commandBuffer
+                                  -> VkPipelineBindPoint -- ^ pipelineBindPoint
+                                                         -> VkPipeline -- ^ pipeline
+                                                                       -> IO ()
+
+##else
+vkCmdBindPipelineSafe ::
+                      VkCommandBuffer -- ^ commandBuffer
+                                      -> VkPipelineBindPoint -- ^ pipelineBindPoint
+                                                             -> VkPipeline -- ^ pipeline
+                                                                           -> IO ()
+vkCmdBindPipelineSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdBindPipeline)
+
+{-# NOINLINE vkCmdBindPipelineSafe #-}
+##endif
+
+-- | Queues: 'graphics', 'compute'.
+--
+--   Renderpass: @both@
+--
+--   > void vkCmdBindPipeline
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , VkPipelineBindPoint pipelineBindPoint
+--   >     , VkPipeline pipeline
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBindPipeline vkCmdBindPipeline registry at www.khronos.org>
+type HS_vkCmdBindPipeline =
+     VkCommandBuffer -- ^ commandBuffer
+                     -> VkPipelineBindPoint -- ^ pipelineBindPoint
+                                            -> VkPipeline -- ^ pipeline
+                                                          -> IO ()
+
+type PFN_vkCmdBindPipeline = FunPtr HS_vkCmdBindPipeline
+
+foreign import ccall unsafe "dynamic" unwrapVkCmdBindPipeline ::
+               PFN_vkCmdBindPipeline -> HS_vkCmdBindPipeline
+
+foreign import ccall safe "dynamic" unwrapVkCmdBindPipelineSafe ::
+               PFN_vkCmdBindPipeline -> HS_vkCmdBindPipeline
+
+instance VulkanProc "vkCmdBindPipeline" where
+        type VkProcType "vkCmdBindPipeline" = HS_vkCmdBindPipeline
+        vkProcSymbol = _VkCmdBindPipeline
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkCmdBindPipeline
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkCmdBindPipelineSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCmdSetViewport :: CString
+
+pattern VkCmdSetViewport <- (is_VkCmdSetViewport -> True)
+  where VkCmdSetViewport = _VkCmdSetViewport
+
+{-# INLINE _VkCmdSetViewport #-}
+
+_VkCmdSetViewport :: CString
+_VkCmdSetViewport = Ptr "vkCmdSetViewport\NUL"##
+
+{-# INLINE is_VkCmdSetViewport #-}
+
+is_VkCmdSetViewport :: CString -> Bool
+is_VkCmdSetViewport = (EQ ==) . cmpCStrings _VkCmdSetViewport
+
+type VkCmdSetViewport = "vkCmdSetViewport"
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdSetViewport
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , uint32_t firstViewport
+-- >     , uint32_t viewportCount
+-- >     , const VkViewport* pViewports
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetViewport vkCmdSetViewport registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdSetViewport <- vkGetInstanceProc @VkCmdSetViewport vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdSetViewport <- vkGetProc @VkCmdSetViewport
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCmdSetViewport" vkCmdSetViewport ::
+               VkCommandBuffer -- ^ commandBuffer
+                               -> Word32 -- ^ firstViewport
+                                         -> Word32 -- ^ viewportCount
+                                                   -> Ptr VkViewport -- ^ pViewports
+                                                                     -> IO ()
+
+##else
+vkCmdSetViewport ::
+                 VkCommandBuffer -- ^ commandBuffer
+                                 -> Word32 -- ^ firstViewport
+                                           -> Word32 -- ^ viewportCount
+                                                     -> Ptr VkViewport -- ^ pViewports
+                                                                       -> IO ()
+vkCmdSetViewport
+  = unsafeDupablePerformIO (vkGetProc @VkCmdSetViewport)
+
+{-# NOINLINE vkCmdSetViewport #-}
+##endif
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdSetViewport
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , uint32_t firstViewport
+-- >     , uint32_t viewportCount
+-- >     , const VkViewport* pViewports
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetViewport vkCmdSetViewport registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdSetViewport <- vkGetInstanceProc @VkCmdSetViewport vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdSetViewport <- vkGetProc @VkCmdSetViewport
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCmdSetViewport" vkCmdSetViewportSafe
+               :: VkCommandBuffer -- ^ commandBuffer
+                                  -> Word32 -- ^ firstViewport
+                                            -> Word32 -- ^ viewportCount
+                                                      -> Ptr VkViewport -- ^ pViewports
+                                                                        -> IO ()
+
+##else
+vkCmdSetViewportSafe ::
+                     VkCommandBuffer -- ^ commandBuffer
+                                     -> Word32 -- ^ firstViewport
+                                               -> Word32 -- ^ viewportCount
+                                                         -> Ptr VkViewport -- ^ pViewports
+                                                                           -> IO ()
+vkCmdSetViewportSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdSetViewport)
+
+{-# NOINLINE vkCmdSetViewportSafe #-}
+##endif
+
+-- | Queues: 'graphics'.
+--
+--   Renderpass: @both@
+--
+--   > void vkCmdSetViewport
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , uint32_t firstViewport
+--   >     , uint32_t viewportCount
+--   >     , const VkViewport* pViewports
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetViewport vkCmdSetViewport registry at www.khronos.org>
+type HS_vkCmdSetViewport =
+     VkCommandBuffer -- ^ commandBuffer
+                     -> Word32 -- ^ firstViewport
+                               -> Word32 -- ^ viewportCount
+                                         -> Ptr VkViewport -- ^ pViewports
+                                                           -> IO ()
+
+type PFN_vkCmdSetViewport = FunPtr HS_vkCmdSetViewport
+
+foreign import ccall unsafe "dynamic" unwrapVkCmdSetViewport ::
+               PFN_vkCmdSetViewport -> HS_vkCmdSetViewport
+
+foreign import ccall safe "dynamic" unwrapVkCmdSetViewportSafe ::
+               PFN_vkCmdSetViewport -> HS_vkCmdSetViewport
+
+instance VulkanProc "vkCmdSetViewport" where
+        type VkProcType "vkCmdSetViewport" = HS_vkCmdSetViewport
+        vkProcSymbol = _VkCmdSetViewport
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkCmdSetViewport
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkCmdSetViewportSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCmdSetScissor :: CString
+
+pattern VkCmdSetScissor <- (is_VkCmdSetScissor -> True)
+  where VkCmdSetScissor = _VkCmdSetScissor
+
+{-# INLINE _VkCmdSetScissor #-}
+
+_VkCmdSetScissor :: CString
+_VkCmdSetScissor = Ptr "vkCmdSetScissor\NUL"##
+
+{-# INLINE is_VkCmdSetScissor #-}
+
+is_VkCmdSetScissor :: CString -> Bool
+is_VkCmdSetScissor = (EQ ==) . cmpCStrings _VkCmdSetScissor
+
+type VkCmdSetScissor = "vkCmdSetScissor"
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdSetScissor
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , uint32_t firstScissor
+-- >     , uint32_t scissorCount
+-- >     , const VkRect2D* pScissors
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetScissor vkCmdSetScissor registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdSetScissor <- vkGetInstanceProc @VkCmdSetScissor vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdSetScissor <- vkGetProc @VkCmdSetScissor
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCmdSetScissor" vkCmdSetScissor ::
+               VkCommandBuffer -- ^ commandBuffer
+                               -> Word32 -- ^ firstScissor
+                                         -> Word32 -- ^ scissorCount
+                                                   -> Ptr VkRect2D -- ^ pScissors
+                                                                   -> IO ()
+
+##else
+vkCmdSetScissor ::
+                VkCommandBuffer -- ^ commandBuffer
+                                -> Word32 -- ^ firstScissor
+                                          -> Word32 -- ^ scissorCount
+                                                    -> Ptr VkRect2D -- ^ pScissors
+                                                                    -> IO ()
+vkCmdSetScissor
+  = unsafeDupablePerformIO (vkGetProc @VkCmdSetScissor)
+
+{-# NOINLINE vkCmdSetScissor #-}
+##endif
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdSetScissor
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , uint32_t firstScissor
+-- >     , uint32_t scissorCount
+-- >     , const VkRect2D* pScissors
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetScissor vkCmdSetScissor registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdSetScissor <- vkGetInstanceProc @VkCmdSetScissor vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdSetScissor <- vkGetProc @VkCmdSetScissor
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCmdSetScissor" vkCmdSetScissorSafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               -> Word32 -- ^ firstScissor
+                                         -> Word32 -- ^ scissorCount
+                                                   -> Ptr VkRect2D -- ^ pScissors
+                                                                   -> IO ()
+
+##else
+vkCmdSetScissorSafe ::
+                    VkCommandBuffer -- ^ commandBuffer
+                                    -> Word32 -- ^ firstScissor
+                                              -> Word32 -- ^ scissorCount
+                                                        -> Ptr VkRect2D -- ^ pScissors
+                                                                        -> IO ()
+vkCmdSetScissorSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdSetScissor)
+
+{-# NOINLINE vkCmdSetScissorSafe #-}
+##endif
+
+-- | Queues: 'graphics'.
+--
+--   Renderpass: @both@
+--
+--   > void vkCmdSetScissor
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , uint32_t firstScissor
+--   >     , uint32_t scissorCount
+--   >     , const VkRect2D* pScissors
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetScissor vkCmdSetScissor registry at www.khronos.org>
+type HS_vkCmdSetScissor =
+     VkCommandBuffer -- ^ commandBuffer
+                     -> Word32 -- ^ firstScissor
+                               -> Word32 -- ^ scissorCount
+                                         -> Ptr VkRect2D -- ^ pScissors
+                                                         -> IO ()
+
+type PFN_vkCmdSetScissor = FunPtr HS_vkCmdSetScissor
+
+foreign import ccall unsafe "dynamic" unwrapVkCmdSetScissor ::
+               PFN_vkCmdSetScissor -> HS_vkCmdSetScissor
+
+foreign import ccall safe "dynamic" unwrapVkCmdSetScissorSafe ::
+               PFN_vkCmdSetScissor -> HS_vkCmdSetScissor
+
+instance VulkanProc "vkCmdSetScissor" where
+        type VkProcType "vkCmdSetScissor" = HS_vkCmdSetScissor
+        vkProcSymbol = _VkCmdSetScissor
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkCmdSetScissor
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkCmdSetScissorSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCmdSetLineWidth :: CString
+
+pattern VkCmdSetLineWidth <- (is_VkCmdSetLineWidth -> True)
+  where VkCmdSetLineWidth = _VkCmdSetLineWidth
+
+{-# INLINE _VkCmdSetLineWidth #-}
+
+_VkCmdSetLineWidth :: CString
+_VkCmdSetLineWidth = Ptr "vkCmdSetLineWidth\NUL"##
+
+{-# INLINE is_VkCmdSetLineWidth #-}
+
+is_VkCmdSetLineWidth :: CString -> Bool
+is_VkCmdSetLineWidth = (EQ ==) . cmpCStrings _VkCmdSetLineWidth
+
+type VkCmdSetLineWidth = "vkCmdSetLineWidth"
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdSetLineWidth
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , float lineWidth
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetLineWidth vkCmdSetLineWidth registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdSetLineWidth <- vkGetInstanceProc @VkCmdSetLineWidth vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdSetLineWidth <- vkGetProc @VkCmdSetLineWidth
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCmdSetLineWidth" vkCmdSetLineWidth
+               :: VkCommandBuffer -- ^ commandBuffer
+                                  -> #{type float} -> IO ()
+
+##else
+vkCmdSetLineWidth ::
+                  VkCommandBuffer -- ^ commandBuffer
+                                  -> #{type float} -> IO ()
+vkCmdSetLineWidth
+  = unsafeDupablePerformIO (vkGetProc @VkCmdSetLineWidth)
+
+{-# NOINLINE vkCmdSetLineWidth #-}
+##endif
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdSetLineWidth
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , float lineWidth
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetLineWidth vkCmdSetLineWidth registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdSetLineWidth <- vkGetInstanceProc @VkCmdSetLineWidth vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdSetLineWidth <- vkGetProc @VkCmdSetLineWidth
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCmdSetLineWidth" vkCmdSetLineWidthSafe
+               :: VkCommandBuffer -- ^ commandBuffer
+                                  -> #{type float} -> IO ()
+
+##else
+vkCmdSetLineWidthSafe ::
+                      VkCommandBuffer -- ^ commandBuffer
+                                      -> #{type float} -> IO ()
+vkCmdSetLineWidthSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdSetLineWidth)
+
+{-# NOINLINE vkCmdSetLineWidthSafe #-}
+##endif
+
+-- | Queues: 'graphics'.
+--
+--   Renderpass: @both@
+--
+--   > void vkCmdSetLineWidth
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , float lineWidth
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetLineWidth vkCmdSetLineWidth registry at www.khronos.org>
+type HS_vkCmdSetLineWidth =
+     VkCommandBuffer -- ^ commandBuffer
+                     -> #{type float} -> IO ()
+
+type PFN_vkCmdSetLineWidth = FunPtr HS_vkCmdSetLineWidth
+
+foreign import ccall unsafe "dynamic" unwrapVkCmdSetLineWidth ::
+               PFN_vkCmdSetLineWidth -> HS_vkCmdSetLineWidth
+
+foreign import ccall safe "dynamic" unwrapVkCmdSetLineWidthSafe ::
+               PFN_vkCmdSetLineWidth -> HS_vkCmdSetLineWidth
+
+instance VulkanProc "vkCmdSetLineWidth" where
+        type VkProcType "vkCmdSetLineWidth" = HS_vkCmdSetLineWidth
+        vkProcSymbol = _VkCmdSetLineWidth
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkCmdSetLineWidth
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkCmdSetLineWidthSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCmdSetDepthBias :: CString
+
+pattern VkCmdSetDepthBias <- (is_VkCmdSetDepthBias -> True)
+  where VkCmdSetDepthBias = _VkCmdSetDepthBias
+
+{-# INLINE _VkCmdSetDepthBias #-}
+
+_VkCmdSetDepthBias :: CString
+_VkCmdSetDepthBias = Ptr "vkCmdSetDepthBias\NUL"##
+
+{-# INLINE is_VkCmdSetDepthBias #-}
+
+is_VkCmdSetDepthBias :: CString -> Bool
+is_VkCmdSetDepthBias = (EQ ==) . cmpCStrings _VkCmdSetDepthBias
+
+type VkCmdSetDepthBias = "vkCmdSetDepthBias"
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdSetDepthBias
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , float depthBiasConstantFactor
+-- >     , float depthBiasClamp
+-- >     , float depthBiasSlopeFactor
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetDepthBias vkCmdSetDepthBias registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdSetDepthBias <- vkGetInstanceProc @VkCmdSetDepthBias vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdSetDepthBias <- vkGetProc @VkCmdSetDepthBias
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCmdSetDepthBias" vkCmdSetDepthBias
+               ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 #{type float} ->
+                   #{type float} -> #{type float} -> IO ()
+
+##else
+vkCmdSetDepthBias ::
+                  VkCommandBuffer -- ^ commandBuffer
+                                  ->
+                    #{type float} ->
+                      #{type float} -> #{type float} -> IO ()
+vkCmdSetDepthBias
+  = unsafeDupablePerformIO (vkGetProc @VkCmdSetDepthBias)
+
+{-# NOINLINE vkCmdSetDepthBias #-}
+##endif
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdSetDepthBias
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , float depthBiasConstantFactor
+-- >     , float depthBiasClamp
+-- >     , float depthBiasSlopeFactor
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetDepthBias vkCmdSetDepthBias registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdSetDepthBias <- vkGetInstanceProc @VkCmdSetDepthBias vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdSetDepthBias <- vkGetProc @VkCmdSetDepthBias
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCmdSetDepthBias" vkCmdSetDepthBiasSafe
+               ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 #{type float} ->
+                   #{type float} -> #{type float} -> IO ()
+
+##else
+vkCmdSetDepthBiasSafe ::
+                      VkCommandBuffer -- ^ commandBuffer
+                                      ->
+                        #{type float} ->
+                          #{type float} -> #{type float} -> IO ()
+vkCmdSetDepthBiasSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdSetDepthBias)
+
+{-# NOINLINE vkCmdSetDepthBiasSafe #-}
+##endif
+
+-- | Queues: 'graphics'.
+--
+--   Renderpass: @both@
+--
+--   > void vkCmdSetDepthBias
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , float depthBiasConstantFactor
+--   >     , float depthBiasClamp
+--   >     , float depthBiasSlopeFactor
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetDepthBias vkCmdSetDepthBias registry at www.khronos.org>
+type HS_vkCmdSetDepthBias =
+     VkCommandBuffer -- ^ commandBuffer
+                     ->
+       #{type float} ->
+         #{type float} -> #{type float} -> IO ()
+
+type PFN_vkCmdSetDepthBias = FunPtr HS_vkCmdSetDepthBias
+
+foreign import ccall unsafe "dynamic" unwrapVkCmdSetDepthBias ::
+               PFN_vkCmdSetDepthBias -> HS_vkCmdSetDepthBias
+
+foreign import ccall safe "dynamic" unwrapVkCmdSetDepthBiasSafe ::
+               PFN_vkCmdSetDepthBias -> HS_vkCmdSetDepthBias
+
+instance VulkanProc "vkCmdSetDepthBias" where
+        type VkProcType "vkCmdSetDepthBias" = HS_vkCmdSetDepthBias
+        vkProcSymbol = _VkCmdSetDepthBias
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkCmdSetDepthBias
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkCmdSetDepthBiasSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCmdSetBlendConstants :: CString
+
+pattern VkCmdSetBlendConstants <-
+        (is_VkCmdSetBlendConstants -> True)
+  where VkCmdSetBlendConstants = _VkCmdSetBlendConstants
+
+{-# INLINE _VkCmdSetBlendConstants #-}
+
+_VkCmdSetBlendConstants :: CString
+_VkCmdSetBlendConstants = Ptr "vkCmdSetBlendConstants\NUL"##
+
+{-# INLINE is_VkCmdSetBlendConstants #-}
+
+is_VkCmdSetBlendConstants :: CString -> Bool
+is_VkCmdSetBlendConstants
+  = (EQ ==) . cmpCStrings _VkCmdSetBlendConstants
+
+type VkCmdSetBlendConstants = "vkCmdSetBlendConstants"
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdSetBlendConstants
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , const float blendConstants[4]
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetBlendConstants vkCmdSetBlendConstants registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdSetBlendConstants <- vkGetInstanceProc @VkCmdSetBlendConstants vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdSetBlendConstants <- vkGetProc @VkCmdSetBlendConstants
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCmdSetBlendConstants"
+               vkCmdSetBlendConstants ::
+               VkCommandBuffer -- ^ commandBuffer
+                               -> Ptr #{type float} -- ^ blendConstants
+                                                                -> IO ()
+
+##else
+vkCmdSetBlendConstants ::
+                       VkCommandBuffer -- ^ commandBuffer
+                                       -> Ptr #{type float} -- ^ blendConstants
+                                                                        -> IO ()
+vkCmdSetBlendConstants
+  = unsafeDupablePerformIO (vkGetProc @VkCmdSetBlendConstants)
+
+{-# NOINLINE vkCmdSetBlendConstants #-}
+##endif
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdSetBlendConstants
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , const float blendConstants[4]
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetBlendConstants vkCmdSetBlendConstants registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdSetBlendConstants <- vkGetInstanceProc @VkCmdSetBlendConstants vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdSetBlendConstants <- vkGetProc @VkCmdSetBlendConstants
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCmdSetBlendConstants"
+               vkCmdSetBlendConstantsSafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               -> Ptr #{type float} -- ^ blendConstants
+                                                                -> IO ()
+
+##else
+vkCmdSetBlendConstantsSafe ::
+                           VkCommandBuffer -- ^ commandBuffer
+                                           -> Ptr #{type float} -- ^ blendConstants
+                                                                            -> IO ()
+vkCmdSetBlendConstantsSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdSetBlendConstants)
+
+{-# NOINLINE vkCmdSetBlendConstantsSafe #-}
+##endif
+
+-- | Queues: 'graphics'.
+--
+--   Renderpass: @both@
+--
+--   > void vkCmdSetBlendConstants
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , const float blendConstants[4]
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetBlendConstants vkCmdSetBlendConstants registry at www.khronos.org>
+type HS_vkCmdSetBlendConstants =
+     VkCommandBuffer -- ^ commandBuffer
+                     -> Ptr #{type float} -- ^ blendConstants
+                                                      -> IO ()
+
+type PFN_vkCmdSetBlendConstants = FunPtr HS_vkCmdSetBlendConstants
+
+foreign import ccall unsafe "dynamic" unwrapVkCmdSetBlendConstants
+               :: PFN_vkCmdSetBlendConstants -> HS_vkCmdSetBlendConstants
+
+foreign import ccall safe "dynamic"
+               unwrapVkCmdSetBlendConstantsSafe ::
+               PFN_vkCmdSetBlendConstants -> HS_vkCmdSetBlendConstants
+
+instance VulkanProc "vkCmdSetBlendConstants" where
+        type VkProcType "vkCmdSetBlendConstants" =
+             HS_vkCmdSetBlendConstants
+        vkProcSymbol = _VkCmdSetBlendConstants
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkCmdSetBlendConstants
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkCmdSetBlendConstantsSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCmdSetDepthBounds :: CString
+
+pattern VkCmdSetDepthBounds <- (is_VkCmdSetDepthBounds -> True)
+  where VkCmdSetDepthBounds = _VkCmdSetDepthBounds
+
+{-# INLINE _VkCmdSetDepthBounds #-}
+
+_VkCmdSetDepthBounds :: CString
+_VkCmdSetDepthBounds = Ptr "vkCmdSetDepthBounds\NUL"##
+
+{-# INLINE is_VkCmdSetDepthBounds #-}
+
+is_VkCmdSetDepthBounds :: CString -> Bool
+is_VkCmdSetDepthBounds = (EQ ==) . cmpCStrings _VkCmdSetDepthBounds
+
+type VkCmdSetDepthBounds = "vkCmdSetDepthBounds"
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdSetDepthBounds
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , float minDepthBounds
+-- >     , float maxDepthBounds
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetDepthBounds vkCmdSetDepthBounds registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdSetDepthBounds <- vkGetInstanceProc @VkCmdSetDepthBounds vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdSetDepthBounds <- vkGetProc @VkCmdSetDepthBounds
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCmdSetDepthBounds"
+               vkCmdSetDepthBounds ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 #{type float} -> #{type float} -> IO ()
+
+##else
+vkCmdSetDepthBounds ::
+                    VkCommandBuffer -- ^ commandBuffer
+                                    ->
+                      #{type float} -> #{type float} -> IO ()
+vkCmdSetDepthBounds
+  = unsafeDupablePerformIO (vkGetProc @VkCmdSetDepthBounds)
+
+{-# NOINLINE vkCmdSetDepthBounds #-}
+##endif
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdSetDepthBounds
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , float minDepthBounds
+-- >     , float maxDepthBounds
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetDepthBounds vkCmdSetDepthBounds registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdSetDepthBounds <- vkGetInstanceProc @VkCmdSetDepthBounds vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdSetDepthBounds <- vkGetProc @VkCmdSetDepthBounds
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCmdSetDepthBounds"
+               vkCmdSetDepthBoundsSafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 #{type float} -> #{type float} -> IO ()
+
+##else
+vkCmdSetDepthBoundsSafe ::
+                        VkCommandBuffer -- ^ commandBuffer
+                                        ->
+                          #{type float} -> #{type float} -> IO ()
+vkCmdSetDepthBoundsSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdSetDepthBounds)
+
+{-# NOINLINE vkCmdSetDepthBoundsSafe #-}
+##endif
+
+-- | Queues: 'graphics'.
+--
+--   Renderpass: @both@
+--
+--   > void vkCmdSetDepthBounds
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , float minDepthBounds
+--   >     , float maxDepthBounds
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetDepthBounds vkCmdSetDepthBounds registry at www.khronos.org>
+type HS_vkCmdSetDepthBounds =
+     VkCommandBuffer -- ^ commandBuffer
+                     ->
+       #{type float} -> #{type float} -> IO ()
+
+type PFN_vkCmdSetDepthBounds = FunPtr HS_vkCmdSetDepthBounds
+
+foreign import ccall unsafe "dynamic" unwrapVkCmdSetDepthBounds ::
+               PFN_vkCmdSetDepthBounds -> HS_vkCmdSetDepthBounds
+
+foreign import ccall safe "dynamic" unwrapVkCmdSetDepthBoundsSafe
+               :: PFN_vkCmdSetDepthBounds -> HS_vkCmdSetDepthBounds
+
+instance VulkanProc "vkCmdSetDepthBounds" where
+        type VkProcType "vkCmdSetDepthBounds" = HS_vkCmdSetDepthBounds
+        vkProcSymbol = _VkCmdSetDepthBounds
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkCmdSetDepthBounds
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkCmdSetDepthBoundsSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCmdSetStencilCompareMask :: CString
+
+pattern VkCmdSetStencilCompareMask <-
+        (is_VkCmdSetStencilCompareMask -> True)
+  where VkCmdSetStencilCompareMask = _VkCmdSetStencilCompareMask
+
+{-# INLINE _VkCmdSetStencilCompareMask #-}
+
+_VkCmdSetStencilCompareMask :: CString
+_VkCmdSetStencilCompareMask = Ptr "vkCmdSetStencilCompareMask\NUL"##
+
+{-# INLINE is_VkCmdSetStencilCompareMask #-}
+
+is_VkCmdSetStencilCompareMask :: CString -> Bool
+is_VkCmdSetStencilCompareMask
+  = (EQ ==) . cmpCStrings _VkCmdSetStencilCompareMask
+
+type VkCmdSetStencilCompareMask = "vkCmdSetStencilCompareMask"
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdSetStencilCompareMask
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkStencilFaceFlags faceMask
+-- >     , uint32_t compareMask
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetStencilCompareMask vkCmdSetStencilCompareMask registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdSetStencilCompareMask <- vkGetInstanceProc @VkCmdSetStencilCompareMask vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdSetStencilCompareMask <- vkGetProc @VkCmdSetStencilCompareMask
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCmdSetStencilCompareMask"
+               vkCmdSetStencilCompareMask ::
+               VkCommandBuffer -- ^ commandBuffer
+                               -> VkStencilFaceFlags -- ^ faceMask
+                                                     -> Word32 -- ^ compareMask
+                                                               -> IO ()
+
+##else
+vkCmdSetStencilCompareMask ::
+                           VkCommandBuffer -- ^ commandBuffer
+                                           -> VkStencilFaceFlags -- ^ faceMask
+                                                                 -> Word32 -- ^ compareMask
+                                                                           -> IO ()
+vkCmdSetStencilCompareMask
+  = unsafeDupablePerformIO (vkGetProc @VkCmdSetStencilCompareMask)
+
+{-# NOINLINE vkCmdSetStencilCompareMask #-}
+##endif
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdSetStencilCompareMask
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkStencilFaceFlags faceMask
+-- >     , uint32_t compareMask
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetStencilCompareMask vkCmdSetStencilCompareMask registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdSetStencilCompareMask <- vkGetInstanceProc @VkCmdSetStencilCompareMask vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdSetStencilCompareMask <- vkGetProc @VkCmdSetStencilCompareMask
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCmdSetStencilCompareMask"
+               vkCmdSetStencilCompareMaskSafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               -> VkStencilFaceFlags -- ^ faceMask
+                                                     -> Word32 -- ^ compareMask
+                                                               -> IO ()
+
+##else
+vkCmdSetStencilCompareMaskSafe ::
+                               VkCommandBuffer -- ^ commandBuffer
+                                               -> VkStencilFaceFlags -- ^ faceMask
+                                                                     -> Word32 -- ^ compareMask
+                                                                               -> IO ()
+vkCmdSetStencilCompareMaskSafe
+  = unsafeDupablePerformIO
+      (vkGetProcSafe @VkCmdSetStencilCompareMask)
+
+{-# NOINLINE vkCmdSetStencilCompareMaskSafe #-}
+##endif
+
+-- | Queues: 'graphics'.
+--
+--   Renderpass: @both@
+--
+--   > void vkCmdSetStencilCompareMask
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , VkStencilFaceFlags faceMask
+--   >     , uint32_t compareMask
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetStencilCompareMask vkCmdSetStencilCompareMask registry at www.khronos.org>
+type HS_vkCmdSetStencilCompareMask =
+     VkCommandBuffer -- ^ commandBuffer
+                     -> VkStencilFaceFlags -- ^ faceMask
+                                           -> Word32 -- ^ compareMask
+                                                     -> IO ()
+
+type PFN_vkCmdSetStencilCompareMask =
+     FunPtr HS_vkCmdSetStencilCompareMask
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkCmdSetStencilCompareMask ::
+               PFN_vkCmdSetStencilCompareMask -> HS_vkCmdSetStencilCompareMask
+
+foreign import ccall safe "dynamic"
+               unwrapVkCmdSetStencilCompareMaskSafe ::
+               PFN_vkCmdSetStencilCompareMask -> HS_vkCmdSetStencilCompareMask
+
+instance VulkanProc "vkCmdSetStencilCompareMask" where
+        type VkProcType "vkCmdSetStencilCompareMask" =
+             HS_vkCmdSetStencilCompareMask
+        vkProcSymbol = _VkCmdSetStencilCompareMask
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkCmdSetStencilCompareMask
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkCmdSetStencilCompareMaskSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCmdSetStencilWriteMask :: CString
+
+pattern VkCmdSetStencilWriteMask <-
+        (is_VkCmdSetStencilWriteMask -> True)
+  where VkCmdSetStencilWriteMask = _VkCmdSetStencilWriteMask
+
+{-# INLINE _VkCmdSetStencilWriteMask #-}
+
+_VkCmdSetStencilWriteMask :: CString
+_VkCmdSetStencilWriteMask = Ptr "vkCmdSetStencilWriteMask\NUL"##
+
+{-# INLINE is_VkCmdSetStencilWriteMask #-}
+
+is_VkCmdSetStencilWriteMask :: CString -> Bool
+is_VkCmdSetStencilWriteMask
+  = (EQ ==) . cmpCStrings _VkCmdSetStencilWriteMask
+
+type VkCmdSetStencilWriteMask = "vkCmdSetStencilWriteMask"
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdSetStencilWriteMask
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkStencilFaceFlags faceMask
+-- >     , uint32_t writeMask
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetStencilWriteMask vkCmdSetStencilWriteMask registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdSetStencilWriteMask <- vkGetInstanceProc @VkCmdSetStencilWriteMask vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdSetStencilWriteMask <- vkGetProc @VkCmdSetStencilWriteMask
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCmdSetStencilWriteMask"
+               vkCmdSetStencilWriteMask ::
+               VkCommandBuffer -- ^ commandBuffer
+                               -> VkStencilFaceFlags -- ^ faceMask
+                                                     -> Word32 -- ^ writeMask
+                                                               -> IO ()
+
+##else
+vkCmdSetStencilWriteMask ::
+                         VkCommandBuffer -- ^ commandBuffer
+                                         -> VkStencilFaceFlags -- ^ faceMask
+                                                               -> Word32 -- ^ writeMask
+                                                                         -> IO ()
+vkCmdSetStencilWriteMask
+  = unsafeDupablePerformIO (vkGetProc @VkCmdSetStencilWriteMask)
+
+{-# NOINLINE vkCmdSetStencilWriteMask #-}
+##endif
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdSetStencilWriteMask
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkStencilFaceFlags faceMask
+-- >     , uint32_t writeMask
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetStencilWriteMask vkCmdSetStencilWriteMask registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdSetStencilWriteMask <- vkGetInstanceProc @VkCmdSetStencilWriteMask vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdSetStencilWriteMask <- vkGetProc @VkCmdSetStencilWriteMask
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCmdSetStencilWriteMask"
+               vkCmdSetStencilWriteMaskSafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               -> VkStencilFaceFlags -- ^ faceMask
+                                                     -> Word32 -- ^ writeMask
+                                                               -> IO ()
+
+##else
+vkCmdSetStencilWriteMaskSafe ::
+                             VkCommandBuffer -- ^ commandBuffer
+                                             -> VkStencilFaceFlags -- ^ faceMask
+                                                                   -> Word32 -- ^ writeMask
+                                                                             -> IO ()
+vkCmdSetStencilWriteMaskSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdSetStencilWriteMask)
+
+{-# NOINLINE vkCmdSetStencilWriteMaskSafe #-}
+##endif
+
+-- | Queues: 'graphics'.
+--
+--   Renderpass: @both@
+--
+--   > void vkCmdSetStencilWriteMask
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , VkStencilFaceFlags faceMask
+--   >     , uint32_t writeMask
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetStencilWriteMask vkCmdSetStencilWriteMask registry at www.khronos.org>
+type HS_vkCmdSetStencilWriteMask =
+     VkCommandBuffer -- ^ commandBuffer
+                     -> VkStencilFaceFlags -- ^ faceMask
+                                           -> Word32 -- ^ writeMask
+                                                     -> IO ()
+
+type PFN_vkCmdSetStencilWriteMask =
+     FunPtr HS_vkCmdSetStencilWriteMask
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkCmdSetStencilWriteMask ::
+               PFN_vkCmdSetStencilWriteMask -> HS_vkCmdSetStencilWriteMask
+
+foreign import ccall safe "dynamic"
+               unwrapVkCmdSetStencilWriteMaskSafe ::
+               PFN_vkCmdSetStencilWriteMask -> HS_vkCmdSetStencilWriteMask
+
+instance VulkanProc "vkCmdSetStencilWriteMask" where
+        type VkProcType "vkCmdSetStencilWriteMask" =
+             HS_vkCmdSetStencilWriteMask
+        vkProcSymbol = _VkCmdSetStencilWriteMask
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkCmdSetStencilWriteMask
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkCmdSetStencilWriteMaskSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCmdSetStencilReference :: CString
+
+pattern VkCmdSetStencilReference <-
+        (is_VkCmdSetStencilReference -> True)
+  where VkCmdSetStencilReference = _VkCmdSetStencilReference
+
+{-# INLINE _VkCmdSetStencilReference #-}
+
+_VkCmdSetStencilReference :: CString
+_VkCmdSetStencilReference = Ptr "vkCmdSetStencilReference\NUL"##
+
+{-# INLINE is_VkCmdSetStencilReference #-}
+
+is_VkCmdSetStencilReference :: CString -> Bool
+is_VkCmdSetStencilReference
+  = (EQ ==) . cmpCStrings _VkCmdSetStencilReference
+
+type VkCmdSetStencilReference = "vkCmdSetStencilReference"
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdSetStencilReference
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkStencilFaceFlags faceMask
+-- >     , uint32_t reference
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetStencilReference vkCmdSetStencilReference registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdSetStencilReference <- vkGetInstanceProc @VkCmdSetStencilReference vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdSetStencilReference <- vkGetProc @VkCmdSetStencilReference
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCmdSetStencilReference"
+               vkCmdSetStencilReference ::
+               VkCommandBuffer -- ^ commandBuffer
+                               -> VkStencilFaceFlags -- ^ faceMask
+                                                     -> Word32 -- ^ reference
+                                                               -> IO ()
+
+##else
+vkCmdSetStencilReference ::
+                         VkCommandBuffer -- ^ commandBuffer
+                                         -> VkStencilFaceFlags -- ^ faceMask
+                                                               -> Word32 -- ^ reference
+                                                                         -> IO ()
+vkCmdSetStencilReference
+  = unsafeDupablePerformIO (vkGetProc @VkCmdSetStencilReference)
+
+{-# NOINLINE vkCmdSetStencilReference #-}
+##endif
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdSetStencilReference
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkStencilFaceFlags faceMask
+-- >     , uint32_t reference
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetStencilReference vkCmdSetStencilReference registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdSetStencilReference <- vkGetInstanceProc @VkCmdSetStencilReference vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdSetStencilReference <- vkGetProc @VkCmdSetStencilReference
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCmdSetStencilReference"
+               vkCmdSetStencilReferenceSafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               -> VkStencilFaceFlags -- ^ faceMask
+                                                     -> Word32 -- ^ reference
+                                                               -> IO ()
+
+##else
+vkCmdSetStencilReferenceSafe ::
+                             VkCommandBuffer -- ^ commandBuffer
+                                             -> VkStencilFaceFlags -- ^ faceMask
+                                                                   -> Word32 -- ^ reference
+                                                                             -> IO ()
+vkCmdSetStencilReferenceSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdSetStencilReference)
+
+{-# NOINLINE vkCmdSetStencilReferenceSafe #-}
+##endif
+
+-- | Queues: 'graphics'.
+--
+--   Renderpass: @both@
+--
+--   > void vkCmdSetStencilReference
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , VkStencilFaceFlags faceMask
+--   >     , uint32_t reference
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetStencilReference vkCmdSetStencilReference registry at www.khronos.org>
+type HS_vkCmdSetStencilReference =
+     VkCommandBuffer -- ^ commandBuffer
+                     -> VkStencilFaceFlags -- ^ faceMask
+                                           -> Word32 -- ^ reference
+                                                     -> IO ()
+
+type PFN_vkCmdSetStencilReference =
+     FunPtr HS_vkCmdSetStencilReference
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkCmdSetStencilReference ::
+               PFN_vkCmdSetStencilReference -> HS_vkCmdSetStencilReference
+
+foreign import ccall safe "dynamic"
+               unwrapVkCmdSetStencilReferenceSafe ::
+               PFN_vkCmdSetStencilReference -> HS_vkCmdSetStencilReference
+
+instance VulkanProc "vkCmdSetStencilReference" where
+        type VkProcType "vkCmdSetStencilReference" =
+             HS_vkCmdSetStencilReference
+        vkProcSymbol = _VkCmdSetStencilReference
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkCmdSetStencilReference
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkCmdSetStencilReferenceSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCmdBindDescriptorSets :: CString
+
+pattern VkCmdBindDescriptorSets <-
+        (is_VkCmdBindDescriptorSets -> True)
+  where VkCmdBindDescriptorSets = _VkCmdBindDescriptorSets
+
+{-# INLINE _VkCmdBindDescriptorSets #-}
+
+_VkCmdBindDescriptorSets :: CString
+_VkCmdBindDescriptorSets = Ptr "vkCmdBindDescriptorSets\NUL"##
+
+{-# INLINE is_VkCmdBindDescriptorSets #-}
+
+is_VkCmdBindDescriptorSets :: CString -> Bool
+is_VkCmdBindDescriptorSets
+  = (EQ ==) . cmpCStrings _VkCmdBindDescriptorSets
+
+type VkCmdBindDescriptorSets = "vkCmdBindDescriptorSets"
+
+-- |
+-- Queues: 'graphics', 'compute'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdBindDescriptorSets
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkPipelineBindPoint pipelineBindPoint
+-- >     , VkPipelineLayout layout
+-- >     , uint32_t firstSet
+-- >     , uint32_t descriptorSetCount
+-- >     , const VkDescriptorSet* pDescriptorSets
+-- >     , uint32_t dynamicOffsetCount
+-- >     , const uint32_t* pDynamicOffsets
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBindDescriptorSets vkCmdBindDescriptorSets registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdBindDescriptorSets <- vkGetInstanceProc @VkCmdBindDescriptorSets vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdBindDescriptorSets <- vkGetProc @VkCmdBindDescriptorSets
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCmdBindDescriptorSets"
+               vkCmdBindDescriptorSets ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 VkPipelineBindPoint -- ^ pipelineBindPoint
+                                     ->
+                   VkPipelineLayout -- ^ layout
+                                    ->
+                     Word32 -- ^ firstSet
+                            ->
+                       Word32 -- ^ descriptorSetCount
+                              -> Ptr VkDescriptorSet -- ^ pDescriptorSets
+                                                     -> Word32 -- ^ dynamicOffsetCount
+                                                               -> Ptr Word32 -- ^ pDynamicOffsets
+                                                                             -> IO ()
+
+##else
+vkCmdBindDescriptorSets ::
+                        VkCommandBuffer -- ^ commandBuffer
+                                        ->
+                          VkPipelineBindPoint -- ^ pipelineBindPoint
+                                              ->
+                            VkPipelineLayout -- ^ layout
+                                             ->
+                              Word32 -- ^ firstSet
+                                     ->
+                                Word32 -- ^ descriptorSetCount
+                                       -> Ptr VkDescriptorSet -- ^ pDescriptorSets
+                                                              -> Word32 -- ^ dynamicOffsetCount
+                                                                        -> Ptr Word32 -- ^ pDynamicOffsets
+                                                                                      -> IO ()
+vkCmdBindDescriptorSets
+  = unsafeDupablePerformIO (vkGetProc @VkCmdBindDescriptorSets)
+
+{-# NOINLINE vkCmdBindDescriptorSets #-}
+##endif
+
+-- |
+-- Queues: 'graphics', 'compute'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdBindDescriptorSets
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkPipelineBindPoint pipelineBindPoint
+-- >     , VkPipelineLayout layout
+-- >     , uint32_t firstSet
+-- >     , uint32_t descriptorSetCount
+-- >     , const VkDescriptorSet* pDescriptorSets
+-- >     , uint32_t dynamicOffsetCount
+-- >     , const uint32_t* pDynamicOffsets
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBindDescriptorSets vkCmdBindDescriptorSets registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdBindDescriptorSets <- vkGetInstanceProc @VkCmdBindDescriptorSets vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdBindDescriptorSets <- vkGetProc @VkCmdBindDescriptorSets
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCmdBindDescriptorSets"
+               vkCmdBindDescriptorSetsSafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 VkPipelineBindPoint -- ^ pipelineBindPoint
+                                     ->
+                   VkPipelineLayout -- ^ layout
+                                    ->
+                     Word32 -- ^ firstSet
+                            ->
+                       Word32 -- ^ descriptorSetCount
+                              -> Ptr VkDescriptorSet -- ^ pDescriptorSets
+                                                     -> Word32 -- ^ dynamicOffsetCount
+                                                               -> Ptr Word32 -- ^ pDynamicOffsets
+                                                                             -> IO ()
+
+##else
+vkCmdBindDescriptorSetsSafe ::
+                            VkCommandBuffer -- ^ commandBuffer
+                                            ->
+                              VkPipelineBindPoint -- ^ pipelineBindPoint
+                                                  ->
+                                VkPipelineLayout -- ^ layout
+                                                 ->
+                                  Word32 -- ^ firstSet
+                                         ->
+                                    Word32 -- ^ descriptorSetCount
+                                           -> Ptr VkDescriptorSet -- ^ pDescriptorSets
+                                                                  -> Word32 -- ^ dynamicOffsetCount
+                                                                            -> Ptr Word32 -- ^ pDynamicOffsets
+                                                                                          -> IO ()
+vkCmdBindDescriptorSetsSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdBindDescriptorSets)
+
+{-# NOINLINE vkCmdBindDescriptorSetsSafe #-}
+##endif
+
+-- | Queues: 'graphics', 'compute'.
+--
+--   Renderpass: @both@
+--
+--   > void vkCmdBindDescriptorSets
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , VkPipelineBindPoint pipelineBindPoint
+--   >     , VkPipelineLayout layout
+--   >     , uint32_t firstSet
+--   >     , uint32_t descriptorSetCount
+--   >     , const VkDescriptorSet* pDescriptorSets
+--   >     , uint32_t dynamicOffsetCount
+--   >     , const uint32_t* pDynamicOffsets
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBindDescriptorSets vkCmdBindDescriptorSets registry at www.khronos.org>
+type HS_vkCmdBindDescriptorSets =
+     VkCommandBuffer -- ^ commandBuffer
+                     ->
+       VkPipelineBindPoint -- ^ pipelineBindPoint
+                           ->
+         VkPipelineLayout -- ^ layout
+                          ->
+           Word32 -- ^ firstSet
+                  ->
+             Word32 -- ^ descriptorSetCount
+                    -> Ptr VkDescriptorSet -- ^ pDescriptorSets
+                                           -> Word32 -- ^ dynamicOffsetCount
+                                                     -> Ptr Word32 -- ^ pDynamicOffsets
+                                                                   -> IO ()
+
+type PFN_vkCmdBindDescriptorSets =
+     FunPtr HS_vkCmdBindDescriptorSets
+
+foreign import ccall unsafe "dynamic" unwrapVkCmdBindDescriptorSets
+               :: PFN_vkCmdBindDescriptorSets -> HS_vkCmdBindDescriptorSets
+
+foreign import ccall safe "dynamic"
+               unwrapVkCmdBindDescriptorSetsSafe ::
+               PFN_vkCmdBindDescriptorSets -> HS_vkCmdBindDescriptorSets
+
+instance VulkanProc "vkCmdBindDescriptorSets" where
+        type VkProcType "vkCmdBindDescriptorSets" =
+             HS_vkCmdBindDescriptorSets
+        vkProcSymbol = _VkCmdBindDescriptorSets
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkCmdBindDescriptorSets
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkCmdBindDescriptorSetsSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCmdBindIndexBuffer :: CString
+
+pattern VkCmdBindIndexBuffer <- (is_VkCmdBindIndexBuffer -> True)
+  where VkCmdBindIndexBuffer = _VkCmdBindIndexBuffer
+
+{-# INLINE _VkCmdBindIndexBuffer #-}
+
+_VkCmdBindIndexBuffer :: CString
+_VkCmdBindIndexBuffer = Ptr "vkCmdBindIndexBuffer\NUL"##
+
+{-# INLINE is_VkCmdBindIndexBuffer #-}
+
+is_VkCmdBindIndexBuffer :: CString -> Bool
+is_VkCmdBindIndexBuffer
+  = (EQ ==) . cmpCStrings _VkCmdBindIndexBuffer
+
+type VkCmdBindIndexBuffer = "vkCmdBindIndexBuffer"
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdBindIndexBuffer
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkBuffer buffer
+-- >     , VkDeviceSize offset
+-- >     , VkIndexType indexType
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBindIndexBuffer vkCmdBindIndexBuffer registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdBindIndexBuffer <- vkGetInstanceProc @VkCmdBindIndexBuffer vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdBindIndexBuffer <- vkGetProc @VkCmdBindIndexBuffer
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCmdBindIndexBuffer"
+               vkCmdBindIndexBuffer ::
+               VkCommandBuffer -- ^ commandBuffer
+                               -> VkBuffer -- ^ buffer
+                                           -> VkDeviceSize -- ^ offset
+                                                           -> VkIndexType -- ^ indexType
+                                                                          -> IO ()
+
+##else
+vkCmdBindIndexBuffer ::
+                     VkCommandBuffer -- ^ commandBuffer
+                                     -> VkBuffer -- ^ buffer
+                                                 -> VkDeviceSize -- ^ offset
+                                                                 -> VkIndexType -- ^ indexType
+                                                                                -> IO ()
+vkCmdBindIndexBuffer
+  = unsafeDupablePerformIO (vkGetProc @VkCmdBindIndexBuffer)
+
+{-# NOINLINE vkCmdBindIndexBuffer #-}
+##endif
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdBindIndexBuffer
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkBuffer buffer
+-- >     , VkDeviceSize offset
+-- >     , VkIndexType indexType
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBindIndexBuffer vkCmdBindIndexBuffer registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdBindIndexBuffer <- vkGetInstanceProc @VkCmdBindIndexBuffer vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdBindIndexBuffer <- vkGetProc @VkCmdBindIndexBuffer
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCmdBindIndexBuffer"
+               vkCmdBindIndexBufferSafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               -> VkBuffer -- ^ buffer
+                                           -> VkDeviceSize -- ^ offset
+                                                           -> VkIndexType -- ^ indexType
+                                                                          -> IO ()
+
+##else
+vkCmdBindIndexBufferSafe ::
+                         VkCommandBuffer -- ^ commandBuffer
+                                         -> VkBuffer -- ^ buffer
+                                                     -> VkDeviceSize -- ^ offset
+                                                                     -> VkIndexType -- ^ indexType
+                                                                                    -> IO ()
+vkCmdBindIndexBufferSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdBindIndexBuffer)
+
+{-# NOINLINE vkCmdBindIndexBufferSafe #-}
+##endif
+
+-- | Queues: 'graphics'.
+--
+--   Renderpass: @both@
+--
+--   > void vkCmdBindIndexBuffer
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , VkBuffer buffer
+--   >     , VkDeviceSize offset
+--   >     , VkIndexType indexType
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBindIndexBuffer vkCmdBindIndexBuffer registry at www.khronos.org>
+type HS_vkCmdBindIndexBuffer =
+     VkCommandBuffer -- ^ commandBuffer
+                     -> VkBuffer -- ^ buffer
+                                 -> VkDeviceSize -- ^ offset
+                                                 -> VkIndexType -- ^ indexType
+                                                                -> IO ()
+
+type PFN_vkCmdBindIndexBuffer = FunPtr HS_vkCmdBindIndexBuffer
+
+foreign import ccall unsafe "dynamic" unwrapVkCmdBindIndexBuffer ::
+               PFN_vkCmdBindIndexBuffer -> HS_vkCmdBindIndexBuffer
+
+foreign import ccall safe "dynamic" unwrapVkCmdBindIndexBufferSafe
+               :: PFN_vkCmdBindIndexBuffer -> HS_vkCmdBindIndexBuffer
+
+instance VulkanProc "vkCmdBindIndexBuffer" where
+        type VkProcType "vkCmdBindIndexBuffer" = HS_vkCmdBindIndexBuffer
+        vkProcSymbol = _VkCmdBindIndexBuffer
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkCmdBindIndexBuffer
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkCmdBindIndexBufferSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCmdBindVertexBuffers :: CString
+
+pattern VkCmdBindVertexBuffers <-
+        (is_VkCmdBindVertexBuffers -> True)
+  where VkCmdBindVertexBuffers = _VkCmdBindVertexBuffers
+
+{-# INLINE _VkCmdBindVertexBuffers #-}
+
+_VkCmdBindVertexBuffers :: CString
+_VkCmdBindVertexBuffers = Ptr "vkCmdBindVertexBuffers\NUL"##
+
+{-# INLINE is_VkCmdBindVertexBuffers #-}
+
+is_VkCmdBindVertexBuffers :: CString -> Bool
+is_VkCmdBindVertexBuffers
+  = (EQ ==) . cmpCStrings _VkCmdBindVertexBuffers
+
+type VkCmdBindVertexBuffers = "vkCmdBindVertexBuffers"
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdBindVertexBuffers
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , uint32_t firstBinding
+-- >     , uint32_t bindingCount
+-- >     , const VkBuffer* pBuffers
+-- >     , const VkDeviceSize* pOffsets
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBindVertexBuffers vkCmdBindVertexBuffers registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdBindVertexBuffers <- vkGetInstanceProc @VkCmdBindVertexBuffers vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdBindVertexBuffers <- vkGetProc @VkCmdBindVertexBuffers
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCmdBindVertexBuffers"
+               vkCmdBindVertexBuffers ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 Word32 -- ^ firstBinding
+                        -> Word32 -- ^ bindingCount
+                                  -> Ptr VkBuffer -- ^ pBuffers
+                                                  -> Ptr VkDeviceSize -- ^ pOffsets
+                                                                      -> IO ()
+
+##else
+vkCmdBindVertexBuffers ::
+                       VkCommandBuffer -- ^ commandBuffer
+                                       ->
+                         Word32 -- ^ firstBinding
+                                -> Word32 -- ^ bindingCount
+                                          -> Ptr VkBuffer -- ^ pBuffers
+                                                          -> Ptr VkDeviceSize -- ^ pOffsets
+                                                                              -> IO ()
+vkCmdBindVertexBuffers
+  = unsafeDupablePerformIO (vkGetProc @VkCmdBindVertexBuffers)
+
+{-# NOINLINE vkCmdBindVertexBuffers #-}
+##endif
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdBindVertexBuffers
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , uint32_t firstBinding
+-- >     , uint32_t bindingCount
+-- >     , const VkBuffer* pBuffers
+-- >     , const VkDeviceSize* pOffsets
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBindVertexBuffers vkCmdBindVertexBuffers registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdBindVertexBuffers <- vkGetInstanceProc @VkCmdBindVertexBuffers vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdBindVertexBuffers <- vkGetProc @VkCmdBindVertexBuffers
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCmdBindVertexBuffers"
+               vkCmdBindVertexBuffersSafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 Word32 -- ^ firstBinding
+                        -> Word32 -- ^ bindingCount
+                                  -> Ptr VkBuffer -- ^ pBuffers
+                                                  -> Ptr VkDeviceSize -- ^ pOffsets
+                                                                      -> IO ()
+
+##else
+vkCmdBindVertexBuffersSafe ::
+                           VkCommandBuffer -- ^ commandBuffer
+                                           ->
+                             Word32 -- ^ firstBinding
+                                    -> Word32 -- ^ bindingCount
+                                              -> Ptr VkBuffer -- ^ pBuffers
+                                                              -> Ptr VkDeviceSize -- ^ pOffsets
+                                                                                  -> IO ()
+vkCmdBindVertexBuffersSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdBindVertexBuffers)
+
+{-# NOINLINE vkCmdBindVertexBuffersSafe #-}
+##endif
+
+-- | Queues: 'graphics'.
+--
+--   Renderpass: @both@
+--
+--   > void vkCmdBindVertexBuffers
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , uint32_t firstBinding
+--   >     , uint32_t bindingCount
+--   >     , const VkBuffer* pBuffers
+--   >     , const VkDeviceSize* pOffsets
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBindVertexBuffers vkCmdBindVertexBuffers registry at www.khronos.org>
+type HS_vkCmdBindVertexBuffers =
+     VkCommandBuffer -- ^ commandBuffer
+                     ->
+       Word32 -- ^ firstBinding
+              -> Word32 -- ^ bindingCount
+                        -> Ptr VkBuffer -- ^ pBuffers
+                                        -> Ptr VkDeviceSize -- ^ pOffsets
+                                                            -> IO ()
+
+type PFN_vkCmdBindVertexBuffers = FunPtr HS_vkCmdBindVertexBuffers
+
+foreign import ccall unsafe "dynamic" unwrapVkCmdBindVertexBuffers
+               :: PFN_vkCmdBindVertexBuffers -> HS_vkCmdBindVertexBuffers
+
+foreign import ccall safe "dynamic"
+               unwrapVkCmdBindVertexBuffersSafe ::
+               PFN_vkCmdBindVertexBuffers -> HS_vkCmdBindVertexBuffers
+
+instance VulkanProc "vkCmdBindVertexBuffers" where
+        type VkProcType "vkCmdBindVertexBuffers" =
+             HS_vkCmdBindVertexBuffers
+        vkProcSymbol = _VkCmdBindVertexBuffers
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkCmdBindVertexBuffers
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkCmdBindVertexBuffersSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCmdDraw :: CString
+
+pattern VkCmdDraw <- (is_VkCmdDraw -> True)
+  where VkCmdDraw = _VkCmdDraw
+
+{-# INLINE _VkCmdDraw #-}
+
+_VkCmdDraw :: CString
+_VkCmdDraw = Ptr "vkCmdDraw\NUL"##
+
+{-# INLINE is_VkCmdDraw #-}
+
+is_VkCmdDraw :: CString -> Bool
+is_VkCmdDraw = (EQ ==) . cmpCStrings _VkCmdDraw
+
+type VkCmdDraw = "vkCmdDraw"
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @inside@
+--
+-- Pipeline: @graphics@
+--
+-- > void vkCmdDraw
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , uint32_t vertexCount
+-- >     , uint32_t instanceCount
+-- >     , uint32_t firstVertex
+-- >     , uint32_t firstInstance
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDraw vkCmdDraw registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdDraw <- vkGetInstanceProc @VkCmdDraw vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdDraw <- vkGetProc @VkCmdDraw
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCmdDraw" vkCmdDraw ::
+               VkCommandBuffer -- ^ commandBuffer
+                               -> Word32 -- ^ vertexCount
+                                         -> Word32 -- ^ instanceCount
+                                                   -> Word32 -- ^ firstVertex
+                                                             -> Word32 -- ^ firstInstance
+                                                                       -> IO ()
+
+##else
+vkCmdDraw ::
+          VkCommandBuffer -- ^ commandBuffer
+                          -> Word32 -- ^ vertexCount
+                                    -> Word32 -- ^ instanceCount
+                                              -> Word32 -- ^ firstVertex
+                                                        -> Word32 -- ^ firstInstance
+                                                                  -> IO ()
+vkCmdDraw = unsafeDupablePerformIO (vkGetProc @VkCmdDraw)
+
+{-# NOINLINE vkCmdDraw #-}
+##endif
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @inside@
+--
+-- Pipeline: @graphics@
+--
+-- > void vkCmdDraw
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , uint32_t vertexCount
+-- >     , uint32_t instanceCount
+-- >     , uint32_t firstVertex
+-- >     , uint32_t firstInstance
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDraw vkCmdDraw registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdDraw <- vkGetInstanceProc @VkCmdDraw vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdDraw <- vkGetProc @VkCmdDraw
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCmdDraw" vkCmdDrawSafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               -> Word32 -- ^ vertexCount
+                                         -> Word32 -- ^ instanceCount
+                                                   -> Word32 -- ^ firstVertex
+                                                             -> Word32 -- ^ firstInstance
+                                                                       -> IO ()
+
+##else
+vkCmdDrawSafe ::
+              VkCommandBuffer -- ^ commandBuffer
+                              -> Word32 -- ^ vertexCount
+                                        -> Word32 -- ^ instanceCount
+                                                  -> Word32 -- ^ firstVertex
+                                                            -> Word32 -- ^ firstInstance
+                                                                      -> IO ()
+vkCmdDrawSafe = unsafeDupablePerformIO (vkGetProcSafe @VkCmdDraw)
+
+{-# NOINLINE vkCmdDrawSafe #-}
+##endif
+
+-- | Queues: 'graphics'.
+--
+--   Renderpass: @inside@
+--
+--   Pipeline: @graphics@
+--
+--   > void vkCmdDraw
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , uint32_t vertexCount
+--   >     , uint32_t instanceCount
+--   >     , uint32_t firstVertex
+--   >     , uint32_t firstInstance
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDraw vkCmdDraw registry at www.khronos.org>
+type HS_vkCmdDraw =
+     VkCommandBuffer -- ^ commandBuffer
+                     -> Word32 -- ^ vertexCount
+                               -> Word32 -- ^ instanceCount
+                                         -> Word32 -- ^ firstVertex
+                                                   -> Word32 -- ^ firstInstance
+                                                             -> IO ()
+
+type PFN_vkCmdDraw = FunPtr HS_vkCmdDraw
+
+foreign import ccall unsafe "dynamic" unwrapVkCmdDraw ::
+               PFN_vkCmdDraw -> HS_vkCmdDraw
+
+foreign import ccall safe "dynamic" unwrapVkCmdDrawSafe ::
+               PFN_vkCmdDraw -> HS_vkCmdDraw
+
+instance VulkanProc "vkCmdDraw" where
+        type VkProcType "vkCmdDraw" = HS_vkCmdDraw
+        vkProcSymbol = _VkCmdDraw
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkCmdDraw
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkCmdDrawSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCmdDrawIndexed :: CString
+
+pattern VkCmdDrawIndexed <- (is_VkCmdDrawIndexed -> True)
+  where VkCmdDrawIndexed = _VkCmdDrawIndexed
+
+{-# INLINE _VkCmdDrawIndexed #-}
+
+_VkCmdDrawIndexed :: CString
+_VkCmdDrawIndexed = Ptr "vkCmdDrawIndexed\NUL"##
+
+{-# INLINE is_VkCmdDrawIndexed #-}
+
+is_VkCmdDrawIndexed :: CString -> Bool
+is_VkCmdDrawIndexed = (EQ ==) . cmpCStrings _VkCmdDrawIndexed
+
+type VkCmdDrawIndexed = "vkCmdDrawIndexed"
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @inside@
+--
+-- Pipeline: @graphics@
+--
+-- > void vkCmdDrawIndexed
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , uint32_t indexCount
+-- >     , uint32_t instanceCount
+-- >     , uint32_t firstIndex
+-- >     , int32_t vertexOffset
+-- >     , uint32_t firstInstance
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDrawIndexed vkCmdDrawIndexed registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdDrawIndexed <- vkGetInstanceProc @VkCmdDrawIndexed vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdDrawIndexed <- vkGetProc @VkCmdDrawIndexed
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCmdDrawIndexed" vkCmdDrawIndexed ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 Word32 -- ^ indexCount
+                        -> Word32 -- ^ instanceCount
+                                  -> Word32 -- ^ firstIndex
+                                            -> Int32 -- ^ vertexOffset
+                                                     -> Word32 -- ^ firstInstance
+                                                               -> IO ()
+
+##else
+vkCmdDrawIndexed ::
+                 VkCommandBuffer -- ^ commandBuffer
+                                 ->
+                   Word32 -- ^ indexCount
+                          -> Word32 -- ^ instanceCount
+                                    -> Word32 -- ^ firstIndex
+                                              -> Int32 -- ^ vertexOffset
+                                                       -> Word32 -- ^ firstInstance
+                                                                 -> IO ()
+vkCmdDrawIndexed
+  = unsafeDupablePerformIO (vkGetProc @VkCmdDrawIndexed)
+
+{-# NOINLINE vkCmdDrawIndexed #-}
+##endif
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @inside@
+--
+-- Pipeline: @graphics@
+--
+-- > void vkCmdDrawIndexed
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , uint32_t indexCount
+-- >     , uint32_t instanceCount
+-- >     , uint32_t firstIndex
+-- >     , int32_t vertexOffset
+-- >     , uint32_t firstInstance
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDrawIndexed vkCmdDrawIndexed registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdDrawIndexed <- vkGetInstanceProc @VkCmdDrawIndexed vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdDrawIndexed <- vkGetProc @VkCmdDrawIndexed
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCmdDrawIndexed" vkCmdDrawIndexedSafe
+               ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 Word32 -- ^ indexCount
+                        -> Word32 -- ^ instanceCount
+                                  -> Word32 -- ^ firstIndex
+                                            -> Int32 -- ^ vertexOffset
+                                                     -> Word32 -- ^ firstInstance
+                                                               -> IO ()
+
+##else
+vkCmdDrawIndexedSafe ::
+                     VkCommandBuffer -- ^ commandBuffer
+                                     ->
+                       Word32 -- ^ indexCount
+                              -> Word32 -- ^ instanceCount
+                                        -> Word32 -- ^ firstIndex
+                                                  -> Int32 -- ^ vertexOffset
+                                                           -> Word32 -- ^ firstInstance
+                                                                     -> IO ()
+vkCmdDrawIndexedSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdDrawIndexed)
+
+{-# NOINLINE vkCmdDrawIndexedSafe #-}
+##endif
+
+-- | Queues: 'graphics'.
+--
+--   Renderpass: @inside@
+--
+--   Pipeline: @graphics@
+--
+--   > void vkCmdDrawIndexed
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , uint32_t indexCount
+--   >     , uint32_t instanceCount
+--   >     , uint32_t firstIndex
+--   >     , int32_t vertexOffset
+--   >     , uint32_t firstInstance
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDrawIndexed vkCmdDrawIndexed registry at www.khronos.org>
+type HS_vkCmdDrawIndexed =
+     VkCommandBuffer -- ^ commandBuffer
+                     ->
+       Word32 -- ^ indexCount
+              -> Word32 -- ^ instanceCount
+                        -> Word32 -- ^ firstIndex
+                                  -> Int32 -- ^ vertexOffset
+                                           -> Word32 -- ^ firstInstance
+                                                     -> IO ()
+
+type PFN_vkCmdDrawIndexed = FunPtr HS_vkCmdDrawIndexed
+
+foreign import ccall unsafe "dynamic" unwrapVkCmdDrawIndexed ::
+               PFN_vkCmdDrawIndexed -> HS_vkCmdDrawIndexed
+
+foreign import ccall safe "dynamic" unwrapVkCmdDrawIndexedSafe ::
+               PFN_vkCmdDrawIndexed -> HS_vkCmdDrawIndexed
+
+instance VulkanProc "vkCmdDrawIndexed" where
+        type VkProcType "vkCmdDrawIndexed" = HS_vkCmdDrawIndexed
+        vkProcSymbol = _VkCmdDrawIndexed
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkCmdDrawIndexed
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkCmdDrawIndexedSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCmdDrawIndirect :: CString
+
+pattern VkCmdDrawIndirect <- (is_VkCmdDrawIndirect -> True)
+  where VkCmdDrawIndirect = _VkCmdDrawIndirect
+
+{-# INLINE _VkCmdDrawIndirect #-}
+
+_VkCmdDrawIndirect :: CString
+_VkCmdDrawIndirect = Ptr "vkCmdDrawIndirect\NUL"##
+
+{-# INLINE is_VkCmdDrawIndirect #-}
+
+is_VkCmdDrawIndirect :: CString -> Bool
+is_VkCmdDrawIndirect = (EQ ==) . cmpCStrings _VkCmdDrawIndirect
+
+type VkCmdDrawIndirect = "vkCmdDrawIndirect"
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @inside@
+--
+-- Pipeline: @graphics@
+--
+-- > void vkCmdDrawIndirect
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkBuffer buffer
+-- >     , VkDeviceSize offset
+-- >     , uint32_t drawCount
+-- >     , uint32_t stride
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDrawIndirect vkCmdDrawIndirect registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdDrawIndirect <- vkGetInstanceProc @VkCmdDrawIndirect vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdDrawIndirect <- vkGetProc @VkCmdDrawIndirect
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCmdDrawIndirect" vkCmdDrawIndirect
+               ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 VkBuffer -- ^ buffer
+                          -> VkDeviceSize -- ^ offset
+                                          -> Word32 -- ^ drawCount
+                                                    -> Word32 -- ^ stride
+                                                              -> IO ()
+
+##else
+vkCmdDrawIndirect ::
+                  VkCommandBuffer -- ^ commandBuffer
+                                  ->
+                    VkBuffer -- ^ buffer
+                             -> VkDeviceSize -- ^ offset
+                                             -> Word32 -- ^ drawCount
+                                                       -> Word32 -- ^ stride
+                                                                 -> IO ()
+vkCmdDrawIndirect
+  = unsafeDupablePerformIO (vkGetProc @VkCmdDrawIndirect)
+
+{-# NOINLINE vkCmdDrawIndirect #-}
+##endif
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @inside@
+--
+-- Pipeline: @graphics@
+--
+-- > void vkCmdDrawIndirect
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkBuffer buffer
+-- >     , VkDeviceSize offset
+-- >     , uint32_t drawCount
+-- >     , uint32_t stride
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDrawIndirect vkCmdDrawIndirect registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdDrawIndirect <- vkGetInstanceProc @VkCmdDrawIndirect vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdDrawIndirect <- vkGetProc @VkCmdDrawIndirect
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCmdDrawIndirect" vkCmdDrawIndirectSafe
+               ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 VkBuffer -- ^ buffer
+                          -> VkDeviceSize -- ^ offset
+                                          -> Word32 -- ^ drawCount
+                                                    -> Word32 -- ^ stride
+                                                              -> IO ()
+
+##else
+vkCmdDrawIndirectSafe ::
+                      VkCommandBuffer -- ^ commandBuffer
+                                      ->
+                        VkBuffer -- ^ buffer
+                                 -> VkDeviceSize -- ^ offset
+                                                 -> Word32 -- ^ drawCount
+                                                           -> Word32 -- ^ stride
+                                                                     -> IO ()
+vkCmdDrawIndirectSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdDrawIndirect)
+
+{-# NOINLINE vkCmdDrawIndirectSafe #-}
+##endif
+
+-- | Queues: 'graphics'.
+--
+--   Renderpass: @inside@
+--
+--   Pipeline: @graphics@
+--
+--   > void vkCmdDrawIndirect
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , VkBuffer buffer
+--   >     , VkDeviceSize offset
+--   >     , uint32_t drawCount
+--   >     , uint32_t stride
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDrawIndirect vkCmdDrawIndirect registry at www.khronos.org>
+type HS_vkCmdDrawIndirect =
+     VkCommandBuffer -- ^ commandBuffer
+                     ->
+       VkBuffer -- ^ buffer
+                -> VkDeviceSize -- ^ offset
+                                -> Word32 -- ^ drawCount
+                                          -> Word32 -- ^ stride
+                                                    -> IO ()
+
+type PFN_vkCmdDrawIndirect = FunPtr HS_vkCmdDrawIndirect
+
+foreign import ccall unsafe "dynamic" unwrapVkCmdDrawIndirect ::
+               PFN_vkCmdDrawIndirect -> HS_vkCmdDrawIndirect
+
+foreign import ccall safe "dynamic" unwrapVkCmdDrawIndirectSafe ::
+               PFN_vkCmdDrawIndirect -> HS_vkCmdDrawIndirect
+
+instance VulkanProc "vkCmdDrawIndirect" where
+        type VkProcType "vkCmdDrawIndirect" = HS_vkCmdDrawIndirect
+        vkProcSymbol = _VkCmdDrawIndirect
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkCmdDrawIndirect
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkCmdDrawIndirectSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCmdDrawIndexedIndirect :: CString
+
+pattern VkCmdDrawIndexedIndirect <-
+        (is_VkCmdDrawIndexedIndirect -> True)
+  where VkCmdDrawIndexedIndirect = _VkCmdDrawIndexedIndirect
+
+{-# INLINE _VkCmdDrawIndexedIndirect #-}
+
+_VkCmdDrawIndexedIndirect :: CString
+_VkCmdDrawIndexedIndirect = Ptr "vkCmdDrawIndexedIndirect\NUL"##
+
+{-# INLINE is_VkCmdDrawIndexedIndirect #-}
+
+is_VkCmdDrawIndexedIndirect :: CString -> Bool
+is_VkCmdDrawIndexedIndirect
+  = (EQ ==) . cmpCStrings _VkCmdDrawIndexedIndirect
+
+type VkCmdDrawIndexedIndirect = "vkCmdDrawIndexedIndirect"
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @inside@
+--
+-- Pipeline: @graphics@
+--
+-- > void vkCmdDrawIndexedIndirect
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkBuffer buffer
+-- >     , VkDeviceSize offset
+-- >     , uint32_t drawCount
+-- >     , uint32_t stride
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDrawIndexedIndirect vkCmdDrawIndexedIndirect registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdDrawIndexedIndirect <- vkGetInstanceProc @VkCmdDrawIndexedIndirect vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdDrawIndexedIndirect <- vkGetProc @VkCmdDrawIndexedIndirect
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCmdDrawIndexedIndirect"
+               vkCmdDrawIndexedIndirect ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 VkBuffer -- ^ buffer
+                          -> VkDeviceSize -- ^ offset
+                                          -> Word32 -- ^ drawCount
+                                                    -> Word32 -- ^ stride
+                                                              -> IO ()
+
+##else
+vkCmdDrawIndexedIndirect ::
+                         VkCommandBuffer -- ^ commandBuffer
+                                         ->
+                           VkBuffer -- ^ buffer
+                                    -> VkDeviceSize -- ^ offset
+                                                    -> Word32 -- ^ drawCount
+                                                              -> Word32 -- ^ stride
+                                                                        -> IO ()
+vkCmdDrawIndexedIndirect
+  = unsafeDupablePerformIO (vkGetProc @VkCmdDrawIndexedIndirect)
+
+{-# NOINLINE vkCmdDrawIndexedIndirect #-}
+##endif
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @inside@
+--
+-- Pipeline: @graphics@
+--
+-- > void vkCmdDrawIndexedIndirect
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkBuffer buffer
+-- >     , VkDeviceSize offset
+-- >     , uint32_t drawCount
+-- >     , uint32_t stride
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDrawIndexedIndirect vkCmdDrawIndexedIndirect registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdDrawIndexedIndirect <- vkGetInstanceProc @VkCmdDrawIndexedIndirect vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdDrawIndexedIndirect <- vkGetProc @VkCmdDrawIndexedIndirect
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCmdDrawIndexedIndirect"
+               vkCmdDrawIndexedIndirectSafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 VkBuffer -- ^ buffer
+                          -> VkDeviceSize -- ^ offset
+                                          -> Word32 -- ^ drawCount
+                                                    -> Word32 -- ^ stride
+                                                              -> IO ()
+
+##else
+vkCmdDrawIndexedIndirectSafe ::
+                             VkCommandBuffer -- ^ commandBuffer
+                                             ->
+                               VkBuffer -- ^ buffer
+                                        -> VkDeviceSize -- ^ offset
+                                                        -> Word32 -- ^ drawCount
+                                                                  -> Word32 -- ^ stride
+                                                                            -> IO ()
+vkCmdDrawIndexedIndirectSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdDrawIndexedIndirect)
+
+{-# NOINLINE vkCmdDrawIndexedIndirectSafe #-}
+##endif
+
+-- | Queues: 'graphics'.
+--
+--   Renderpass: @inside@
+--
+--   Pipeline: @graphics@
+--
+--   > void vkCmdDrawIndexedIndirect
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , VkBuffer buffer
+--   >     , VkDeviceSize offset
+--   >     , uint32_t drawCount
+--   >     , uint32_t stride
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDrawIndexedIndirect vkCmdDrawIndexedIndirect registry at www.khronos.org>
+type HS_vkCmdDrawIndexedIndirect =
+     VkCommandBuffer -- ^ commandBuffer
+                     ->
+       VkBuffer -- ^ buffer
+                -> VkDeviceSize -- ^ offset
+                                -> Word32 -- ^ drawCount
+                                          -> Word32 -- ^ stride
+                                                    -> IO ()
+
+type PFN_vkCmdDrawIndexedIndirect =
+     FunPtr HS_vkCmdDrawIndexedIndirect
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkCmdDrawIndexedIndirect ::
+               PFN_vkCmdDrawIndexedIndirect -> HS_vkCmdDrawIndexedIndirect
+
+foreign import ccall safe "dynamic"
+               unwrapVkCmdDrawIndexedIndirectSafe ::
+               PFN_vkCmdDrawIndexedIndirect -> HS_vkCmdDrawIndexedIndirect
+
+instance VulkanProc "vkCmdDrawIndexedIndirect" where
+        type VkProcType "vkCmdDrawIndexedIndirect" =
+             HS_vkCmdDrawIndexedIndirect
+        vkProcSymbol = _VkCmdDrawIndexedIndirect
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkCmdDrawIndexedIndirect
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkCmdDrawIndexedIndirectSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCmdDispatch :: CString
+
+pattern VkCmdDispatch <- (is_VkCmdDispatch -> True)
+  where VkCmdDispatch = _VkCmdDispatch
+
+{-# INLINE _VkCmdDispatch #-}
+
+_VkCmdDispatch :: CString
+_VkCmdDispatch = Ptr "vkCmdDispatch\NUL"##
+
+{-# INLINE is_VkCmdDispatch #-}
+
+is_VkCmdDispatch :: CString -> Bool
+is_VkCmdDispatch = (EQ ==) . cmpCStrings _VkCmdDispatch
+
+type VkCmdDispatch = "vkCmdDispatch"
+
+-- |
+-- Queues: 'compute'.
+--
+-- Renderpass: @outside@
+--
+-- Pipeline: @compute@
+--
+-- > void vkCmdDispatch
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , uint32_t groupCountX
+-- >     , uint32_t groupCountY
+-- >     , uint32_t groupCountZ
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDispatch vkCmdDispatch registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdDispatch <- vkGetInstanceProc @VkCmdDispatch vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdDispatch <- vkGetProc @VkCmdDispatch
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCmdDispatch" vkCmdDispatch ::
+               VkCommandBuffer -- ^ commandBuffer
+                               -> Word32 -- ^ groupCountX
+                                         -> Word32 -- ^ groupCountY
+                                                   -> Word32 -- ^ groupCountZ
+                                                             -> IO ()
+
+##else
+vkCmdDispatch ::
+              VkCommandBuffer -- ^ commandBuffer
+                              -> Word32 -- ^ groupCountX
+                                        -> Word32 -- ^ groupCountY
+                                                  -> Word32 -- ^ groupCountZ
+                                                            -> IO ()
+vkCmdDispatch = unsafeDupablePerformIO (vkGetProc @VkCmdDispatch)
+
+{-# NOINLINE vkCmdDispatch #-}
+##endif
+
+-- |
+-- Queues: 'compute'.
+--
+-- Renderpass: @outside@
+--
+-- Pipeline: @compute@
+--
+-- > void vkCmdDispatch
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , uint32_t groupCountX
+-- >     , uint32_t groupCountY
+-- >     , uint32_t groupCountZ
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDispatch vkCmdDispatch registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdDispatch <- vkGetInstanceProc @VkCmdDispatch vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdDispatch <- vkGetProc @VkCmdDispatch
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCmdDispatch" vkCmdDispatchSafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               -> Word32 -- ^ groupCountX
+                                         -> Word32 -- ^ groupCountY
+                                                   -> Word32 -- ^ groupCountZ
+                                                             -> IO ()
+
+##else
+vkCmdDispatchSafe ::
+                  VkCommandBuffer -- ^ commandBuffer
+                                  -> Word32 -- ^ groupCountX
+                                            -> Word32 -- ^ groupCountY
+                                                      -> Word32 -- ^ groupCountZ
+                                                                -> IO ()
+vkCmdDispatchSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdDispatch)
+
+{-# NOINLINE vkCmdDispatchSafe #-}
+##endif
+
+-- | Queues: 'compute'.
+--
+--   Renderpass: @outside@
+--
+--   Pipeline: @compute@
+--
+--   > void vkCmdDispatch
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , uint32_t groupCountX
+--   >     , uint32_t groupCountY
+--   >     , uint32_t groupCountZ
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDispatch vkCmdDispatch registry at www.khronos.org>
+type HS_vkCmdDispatch =
+     VkCommandBuffer -- ^ commandBuffer
+                     -> Word32 -- ^ groupCountX
+                               -> Word32 -- ^ groupCountY
+                                         -> Word32 -- ^ groupCountZ
+                                                   -> IO ()
+
+type PFN_vkCmdDispatch = FunPtr HS_vkCmdDispatch
+
+foreign import ccall unsafe "dynamic" unwrapVkCmdDispatch ::
+               PFN_vkCmdDispatch -> HS_vkCmdDispatch
+
+foreign import ccall safe "dynamic" unwrapVkCmdDispatchSafe ::
+               PFN_vkCmdDispatch -> HS_vkCmdDispatch
+
+instance VulkanProc "vkCmdDispatch" where
+        type VkProcType "vkCmdDispatch" = HS_vkCmdDispatch
+        vkProcSymbol = _VkCmdDispatch
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkCmdDispatch
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkCmdDispatchSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCmdDispatchIndirect :: CString
+
+pattern VkCmdDispatchIndirect <- (is_VkCmdDispatchIndirect -> True)
+  where VkCmdDispatchIndirect = _VkCmdDispatchIndirect
+
+{-# INLINE _VkCmdDispatchIndirect #-}
+
+_VkCmdDispatchIndirect :: CString
+_VkCmdDispatchIndirect = Ptr "vkCmdDispatchIndirect\NUL"##
+
+{-# INLINE is_VkCmdDispatchIndirect #-}
+
+is_VkCmdDispatchIndirect :: CString -> Bool
+is_VkCmdDispatchIndirect
+  = (EQ ==) . cmpCStrings _VkCmdDispatchIndirect
+
+type VkCmdDispatchIndirect = "vkCmdDispatchIndirect"
+
+-- |
+-- Queues: 'compute'.
+--
+-- Renderpass: @outside@
+--
+-- Pipeline: @compute@
+--
+-- > void vkCmdDispatchIndirect
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkBuffer buffer
+-- >     , VkDeviceSize offset
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDispatchIndirect vkCmdDispatchIndirect registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdDispatchIndirect <- vkGetInstanceProc @VkCmdDispatchIndirect vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdDispatchIndirect <- vkGetProc @VkCmdDispatchIndirect
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCmdDispatchIndirect"
+               vkCmdDispatchIndirect ::
+               VkCommandBuffer -- ^ commandBuffer
+                               -> VkBuffer -- ^ buffer
+                                           -> VkDeviceSize -- ^ offset
+                                                           -> IO ()
+
+##else
+vkCmdDispatchIndirect ::
+                      VkCommandBuffer -- ^ commandBuffer
+                                      -> VkBuffer -- ^ buffer
+                                                  -> VkDeviceSize -- ^ offset
+                                                                  -> IO ()
+vkCmdDispatchIndirect
+  = unsafeDupablePerformIO (vkGetProc @VkCmdDispatchIndirect)
+
+{-# NOINLINE vkCmdDispatchIndirect #-}
+##endif
+
+-- |
+-- Queues: 'compute'.
+--
+-- Renderpass: @outside@
+--
+-- Pipeline: @compute@
+--
+-- > void vkCmdDispatchIndirect
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkBuffer buffer
+-- >     , VkDeviceSize offset
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDispatchIndirect vkCmdDispatchIndirect registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdDispatchIndirect <- vkGetInstanceProc @VkCmdDispatchIndirect vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdDispatchIndirect <- vkGetProc @VkCmdDispatchIndirect
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCmdDispatchIndirect"
+               vkCmdDispatchIndirectSafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               -> VkBuffer -- ^ buffer
+                                           -> VkDeviceSize -- ^ offset
+                                                           -> IO ()
+
+##else
+vkCmdDispatchIndirectSafe ::
+                          VkCommandBuffer -- ^ commandBuffer
+                                          -> VkBuffer -- ^ buffer
+                                                      -> VkDeviceSize -- ^ offset
+                                                                      -> IO ()
+vkCmdDispatchIndirectSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdDispatchIndirect)
+
+{-# NOINLINE vkCmdDispatchIndirectSafe #-}
+##endif
+
+-- | Queues: 'compute'.
+--
+--   Renderpass: @outside@
+--
+--   Pipeline: @compute@
+--
+--   > void vkCmdDispatchIndirect
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , VkBuffer buffer
+--   >     , VkDeviceSize offset
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDispatchIndirect vkCmdDispatchIndirect registry at www.khronos.org>
+type HS_vkCmdDispatchIndirect =
+     VkCommandBuffer -- ^ commandBuffer
+                     -> VkBuffer -- ^ buffer
+                                 -> VkDeviceSize -- ^ offset
+                                                 -> IO ()
+
+type PFN_vkCmdDispatchIndirect = FunPtr HS_vkCmdDispatchIndirect
+
+foreign import ccall unsafe "dynamic" unwrapVkCmdDispatchIndirect
+               :: PFN_vkCmdDispatchIndirect -> HS_vkCmdDispatchIndirect
+
+foreign import ccall safe "dynamic" unwrapVkCmdDispatchIndirectSafe
+               :: PFN_vkCmdDispatchIndirect -> HS_vkCmdDispatchIndirect
+
+instance VulkanProc "vkCmdDispatchIndirect" where
+        type VkProcType "vkCmdDispatchIndirect" = HS_vkCmdDispatchIndirect
+        vkProcSymbol = _VkCmdDispatchIndirect
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkCmdDispatchIndirect
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkCmdDispatchIndirectSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCmdCopyBuffer :: CString
+
+pattern VkCmdCopyBuffer <- (is_VkCmdCopyBuffer -> True)
+  where VkCmdCopyBuffer = _VkCmdCopyBuffer
+
+{-# INLINE _VkCmdCopyBuffer #-}
+
+_VkCmdCopyBuffer :: CString
+_VkCmdCopyBuffer = Ptr "vkCmdCopyBuffer\NUL"##
+
+{-# INLINE is_VkCmdCopyBuffer #-}
+
+is_VkCmdCopyBuffer :: CString -> Bool
+is_VkCmdCopyBuffer = (EQ ==) . cmpCStrings _VkCmdCopyBuffer
+
+type VkCmdCopyBuffer = "vkCmdCopyBuffer"
+
+-- |
+-- Queues: 'transfer', 'graphics', 'compute'.
+--
+-- Renderpass: @outside@
+--
+-- Pipeline: @transfer@
+--
+-- > void vkCmdCopyBuffer
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkBuffer srcBuffer
+-- >     , VkBuffer dstBuffer
+-- >     , uint32_t regionCount
+-- >     , const VkBufferCopy* pRegions
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdCopyBuffer vkCmdCopyBuffer registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdCopyBuffer <- vkGetInstanceProc @VkCmdCopyBuffer vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdCopyBuffer <- vkGetProc @VkCmdCopyBuffer
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCmdCopyBuffer" vkCmdCopyBuffer ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 VkBuffer -- ^ srcBuffer
+                          -> VkBuffer -- ^ dstBuffer
+                                      -> Word32 -- ^ regionCount
+                                                -> Ptr VkBufferCopy -- ^ pRegions
+                                                                    -> IO ()
+
+##else
+vkCmdCopyBuffer ::
+                VkCommandBuffer -- ^ commandBuffer
+                                ->
+                  VkBuffer -- ^ srcBuffer
+                           -> VkBuffer -- ^ dstBuffer
+                                       -> Word32 -- ^ regionCount
+                                                 -> Ptr VkBufferCopy -- ^ pRegions
+                                                                     -> IO ()
+vkCmdCopyBuffer
+  = unsafeDupablePerformIO (vkGetProc @VkCmdCopyBuffer)
+
+{-# NOINLINE vkCmdCopyBuffer #-}
+##endif
+
+-- |
+-- Queues: 'transfer', 'graphics', 'compute'.
+--
+-- Renderpass: @outside@
+--
+-- Pipeline: @transfer@
+--
+-- > void vkCmdCopyBuffer
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkBuffer srcBuffer
+-- >     , VkBuffer dstBuffer
+-- >     , uint32_t regionCount
+-- >     , const VkBufferCopy* pRegions
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdCopyBuffer vkCmdCopyBuffer registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdCopyBuffer <- vkGetInstanceProc @VkCmdCopyBuffer vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdCopyBuffer <- vkGetProc @VkCmdCopyBuffer
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCmdCopyBuffer" vkCmdCopyBufferSafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 VkBuffer -- ^ srcBuffer
+                          -> VkBuffer -- ^ dstBuffer
+                                      -> Word32 -- ^ regionCount
+                                                -> Ptr VkBufferCopy -- ^ pRegions
+                                                                    -> IO ()
+
+##else
+vkCmdCopyBufferSafe ::
+                    VkCommandBuffer -- ^ commandBuffer
+                                    ->
+                      VkBuffer -- ^ srcBuffer
+                               -> VkBuffer -- ^ dstBuffer
+                                           -> Word32 -- ^ regionCount
+                                                     -> Ptr VkBufferCopy -- ^ pRegions
+                                                                         -> IO ()
+vkCmdCopyBufferSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdCopyBuffer)
+
+{-# NOINLINE vkCmdCopyBufferSafe #-}
+##endif
+
+-- | Queues: 'transfer', 'graphics', 'compute'.
+--
+--   Renderpass: @outside@
+--
+--   Pipeline: @transfer@
+--
+--   > void vkCmdCopyBuffer
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , VkBuffer srcBuffer
+--   >     , VkBuffer dstBuffer
+--   >     , uint32_t regionCount
+--   >     , const VkBufferCopy* pRegions
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdCopyBuffer vkCmdCopyBuffer registry at www.khronos.org>
+type HS_vkCmdCopyBuffer =
+     VkCommandBuffer -- ^ commandBuffer
+                     ->
+       VkBuffer -- ^ srcBuffer
+                -> VkBuffer -- ^ dstBuffer
+                            -> Word32 -- ^ regionCount
+                                      -> Ptr VkBufferCopy -- ^ pRegions
+                                                          -> IO ()
+
+type PFN_vkCmdCopyBuffer = FunPtr HS_vkCmdCopyBuffer
+
+foreign import ccall unsafe "dynamic" unwrapVkCmdCopyBuffer ::
+               PFN_vkCmdCopyBuffer -> HS_vkCmdCopyBuffer
+
+foreign import ccall safe "dynamic" unwrapVkCmdCopyBufferSafe ::
+               PFN_vkCmdCopyBuffer -> HS_vkCmdCopyBuffer
+
+instance VulkanProc "vkCmdCopyBuffer" where
+        type VkProcType "vkCmdCopyBuffer" = HS_vkCmdCopyBuffer
+        vkProcSymbol = _VkCmdCopyBuffer
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkCmdCopyBuffer
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkCmdCopyBufferSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCmdCopyImage :: CString
+
+pattern VkCmdCopyImage <- (is_VkCmdCopyImage -> True)
+  where VkCmdCopyImage = _VkCmdCopyImage
+
+{-# INLINE _VkCmdCopyImage #-}
+
+_VkCmdCopyImage :: CString
+_VkCmdCopyImage = Ptr "vkCmdCopyImage\NUL"##
+
+{-# INLINE is_VkCmdCopyImage #-}
+
+is_VkCmdCopyImage :: CString -> Bool
+is_VkCmdCopyImage = (EQ ==) . cmpCStrings _VkCmdCopyImage
+
+type VkCmdCopyImage = "vkCmdCopyImage"
+
+-- |
+-- Queues: 'transfer', 'graphics', 'compute'.
+--
+-- Renderpass: @outside@
+--
+-- Pipeline: @transfer@
+--
+-- > void vkCmdCopyImage
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkImage srcImage
+-- >     , VkImageLayout srcImageLayout
+-- >     , VkImage dstImage
+-- >     , VkImageLayout dstImageLayout
+-- >     , uint32_t regionCount
+-- >     , const VkImageCopy* pRegions
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdCopyImage vkCmdCopyImage registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdCopyImage <- vkGetInstanceProc @VkCmdCopyImage vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdCopyImage <- vkGetProc @VkCmdCopyImage
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCmdCopyImage" vkCmdCopyImage ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 VkImage -- ^ srcImage
+                         ->
+                   VkImageLayout -- ^ srcImageLayout
+                                 ->
+                     VkImage -- ^ dstImage
+                             -> VkImageLayout -- ^ dstImageLayout
+                                              -> Word32 -- ^ regionCount
+                                                        -> Ptr VkImageCopy -- ^ pRegions
+                                                                           -> IO ()
+
+##else
+vkCmdCopyImage ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 VkImage -- ^ srcImage
+                         ->
+                   VkImageLayout -- ^ srcImageLayout
+                                 ->
+                     VkImage -- ^ dstImage
+                             -> VkImageLayout -- ^ dstImageLayout
+                                              -> Word32 -- ^ regionCount
+                                                        -> Ptr VkImageCopy -- ^ pRegions
+                                                                           -> IO ()
+vkCmdCopyImage = unsafeDupablePerformIO (vkGetProc @VkCmdCopyImage)
+
+{-# NOINLINE vkCmdCopyImage #-}
+##endif
+
+-- |
+-- Queues: 'transfer', 'graphics', 'compute'.
+--
+-- Renderpass: @outside@
+--
+-- Pipeline: @transfer@
+--
+-- > void vkCmdCopyImage
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkImage srcImage
+-- >     , VkImageLayout srcImageLayout
+-- >     , VkImage dstImage
+-- >     , VkImageLayout dstImageLayout
+-- >     , uint32_t regionCount
+-- >     , const VkImageCopy* pRegions
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdCopyImage vkCmdCopyImage registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdCopyImage <- vkGetInstanceProc @VkCmdCopyImage vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdCopyImage <- vkGetProc @VkCmdCopyImage
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCmdCopyImage" vkCmdCopyImageSafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 VkImage -- ^ srcImage
+                         ->
+                   VkImageLayout -- ^ srcImageLayout
+                                 ->
+                     VkImage -- ^ dstImage
+                             -> VkImageLayout -- ^ dstImageLayout
+                                              -> Word32 -- ^ regionCount
+                                                        -> Ptr VkImageCopy -- ^ pRegions
+                                                                           -> IO ()
+
+##else
+vkCmdCopyImageSafe ::
+                   VkCommandBuffer -- ^ commandBuffer
+                                   ->
+                     VkImage -- ^ srcImage
+                             ->
+                       VkImageLayout -- ^ srcImageLayout
+                                     ->
+                         VkImage -- ^ dstImage
+                                 -> VkImageLayout -- ^ dstImageLayout
+                                                  -> Word32 -- ^ regionCount
+                                                            -> Ptr VkImageCopy -- ^ pRegions
+                                                                               -> IO ()
+vkCmdCopyImageSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdCopyImage)
+
+{-# NOINLINE vkCmdCopyImageSafe #-}
+##endif
+
+-- | Queues: 'transfer', 'graphics', 'compute'.
+--
+--   Renderpass: @outside@
+--
+--   Pipeline: @transfer@
+--
+--   > void vkCmdCopyImage
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , VkImage srcImage
+--   >     , VkImageLayout srcImageLayout
+--   >     , VkImage dstImage
+--   >     , VkImageLayout dstImageLayout
+--   >     , uint32_t regionCount
+--   >     , const VkImageCopy* pRegions
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdCopyImage vkCmdCopyImage registry at www.khronos.org>
+type HS_vkCmdCopyImage =
+     VkCommandBuffer -- ^ commandBuffer
+                     ->
+       VkImage -- ^ srcImage
+               ->
+         VkImageLayout -- ^ srcImageLayout
+                       ->
+           VkImage -- ^ dstImage
+                   -> VkImageLayout -- ^ dstImageLayout
+                                    -> Word32 -- ^ regionCount
+                                              -> Ptr VkImageCopy -- ^ pRegions
+                                                                 -> IO ()
+
+type PFN_vkCmdCopyImage = FunPtr HS_vkCmdCopyImage
+
+foreign import ccall unsafe "dynamic" unwrapVkCmdCopyImage ::
+               PFN_vkCmdCopyImage -> HS_vkCmdCopyImage
+
+foreign import ccall safe "dynamic" unwrapVkCmdCopyImageSafe ::
+               PFN_vkCmdCopyImage -> HS_vkCmdCopyImage
+
+instance VulkanProc "vkCmdCopyImage" where
+        type VkProcType "vkCmdCopyImage" = HS_vkCmdCopyImage
+        vkProcSymbol = _VkCmdCopyImage
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkCmdCopyImage
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkCmdCopyImageSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCmdBlitImage :: CString
+
+pattern VkCmdBlitImage <- (is_VkCmdBlitImage -> True)
+  where VkCmdBlitImage = _VkCmdBlitImage
+
+{-# INLINE _VkCmdBlitImage #-}
+
+_VkCmdBlitImage :: CString
+_VkCmdBlitImage = Ptr "vkCmdBlitImage\NUL"##
+
+{-# INLINE is_VkCmdBlitImage #-}
+
+is_VkCmdBlitImage :: CString -> Bool
+is_VkCmdBlitImage = (EQ ==) . cmpCStrings _VkCmdBlitImage
+
+type VkCmdBlitImage = "vkCmdBlitImage"
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @outside@
+--
+-- Pipeline: @transfer@
+--
+-- > void vkCmdBlitImage
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkImage srcImage
+-- >     , VkImageLayout srcImageLayout
+-- >     , VkImage dstImage
+-- >     , VkImageLayout dstImageLayout
+-- >     , uint32_t regionCount
+-- >     , const VkImageBlit* pRegions
+-- >     , VkFilter filter
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBlitImage vkCmdBlitImage registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdBlitImage <- vkGetInstanceProc @VkCmdBlitImage vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdBlitImage <- vkGetProc @VkCmdBlitImage
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCmdBlitImage" vkCmdBlitImage ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 VkImage -- ^ srcImage
+                         ->
+                   VkImageLayout -- ^ srcImageLayout
+                                 ->
+                     VkImage -- ^ dstImage
+                             ->
+                       VkImageLayout -- ^ dstImageLayout
+                                     -> Word32 -- ^ regionCount
+                                               -> Ptr VkImageBlit -- ^ pRegions
+                                                                  -> VkFilter -- ^ filter
+                                                                              -> IO ()
+
+##else
+vkCmdBlitImage ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 VkImage -- ^ srcImage
+                         ->
+                   VkImageLayout -- ^ srcImageLayout
+                                 ->
+                     VkImage -- ^ dstImage
+                             ->
+                       VkImageLayout -- ^ dstImageLayout
+                                     -> Word32 -- ^ regionCount
+                                               -> Ptr VkImageBlit -- ^ pRegions
+                                                                  -> VkFilter -- ^ filter
+                                                                              -> IO ()
+vkCmdBlitImage = unsafeDupablePerformIO (vkGetProc @VkCmdBlitImage)
+
+{-# NOINLINE vkCmdBlitImage #-}
+##endif
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @outside@
+--
+-- Pipeline: @transfer@
+--
+-- > void vkCmdBlitImage
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkImage srcImage
+-- >     , VkImageLayout srcImageLayout
+-- >     , VkImage dstImage
+-- >     , VkImageLayout dstImageLayout
+-- >     , uint32_t regionCount
+-- >     , const VkImageBlit* pRegions
+-- >     , VkFilter filter
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBlitImage vkCmdBlitImage registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdBlitImage <- vkGetInstanceProc @VkCmdBlitImage vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdBlitImage <- vkGetProc @VkCmdBlitImage
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCmdBlitImage" vkCmdBlitImageSafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 VkImage -- ^ srcImage
+                         ->
+                   VkImageLayout -- ^ srcImageLayout
+                                 ->
+                     VkImage -- ^ dstImage
+                             ->
+                       VkImageLayout -- ^ dstImageLayout
+                                     -> Word32 -- ^ regionCount
+                                               -> Ptr VkImageBlit -- ^ pRegions
+                                                                  -> VkFilter -- ^ filter
+                                                                              -> IO ()
+
+##else
+vkCmdBlitImageSafe ::
+                   VkCommandBuffer -- ^ commandBuffer
+                                   ->
+                     VkImage -- ^ srcImage
+                             ->
+                       VkImageLayout -- ^ srcImageLayout
+                                     ->
+                         VkImage -- ^ dstImage
+                                 ->
+                           VkImageLayout -- ^ dstImageLayout
+                                         -> Word32 -- ^ regionCount
+                                                   -> Ptr VkImageBlit -- ^ pRegions
+                                                                      -> VkFilter -- ^ filter
+                                                                                  -> IO ()
+vkCmdBlitImageSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdBlitImage)
+
+{-# NOINLINE vkCmdBlitImageSafe #-}
+##endif
+
+-- | Queues: 'graphics'.
+--
+--   Renderpass: @outside@
+--
+--   Pipeline: @transfer@
+--
+--   > void vkCmdBlitImage
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , VkImage srcImage
+--   >     , VkImageLayout srcImageLayout
+--   >     , VkImage dstImage
+--   >     , VkImageLayout dstImageLayout
+--   >     , uint32_t regionCount
+--   >     , const VkImageBlit* pRegions
+--   >     , VkFilter filter
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBlitImage vkCmdBlitImage registry at www.khronos.org>
+type HS_vkCmdBlitImage =
+     VkCommandBuffer -- ^ commandBuffer
+                     ->
+       VkImage -- ^ srcImage
+               ->
+         VkImageLayout -- ^ srcImageLayout
+                       ->
+           VkImage -- ^ dstImage
+                   ->
+             VkImageLayout -- ^ dstImageLayout
+                           -> Word32 -- ^ regionCount
+                                     -> Ptr VkImageBlit -- ^ pRegions
+                                                        -> VkFilter -- ^ filter
+                                                                    -> IO ()
+
+type PFN_vkCmdBlitImage = FunPtr HS_vkCmdBlitImage
+
+foreign import ccall unsafe "dynamic" unwrapVkCmdBlitImage ::
+               PFN_vkCmdBlitImage -> HS_vkCmdBlitImage
+
+foreign import ccall safe "dynamic" unwrapVkCmdBlitImageSafe ::
+               PFN_vkCmdBlitImage -> HS_vkCmdBlitImage
+
+instance VulkanProc "vkCmdBlitImage" where
+        type VkProcType "vkCmdBlitImage" = HS_vkCmdBlitImage
+        vkProcSymbol = _VkCmdBlitImage
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkCmdBlitImage
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkCmdBlitImageSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCmdCopyBufferToImage :: CString
+
+pattern VkCmdCopyBufferToImage <-
+        (is_VkCmdCopyBufferToImage -> True)
+  where VkCmdCopyBufferToImage = _VkCmdCopyBufferToImage
+
+{-# INLINE _VkCmdCopyBufferToImage #-}
+
+_VkCmdCopyBufferToImage :: CString
+_VkCmdCopyBufferToImage = Ptr "vkCmdCopyBufferToImage\NUL"##
+
+{-# INLINE is_VkCmdCopyBufferToImage #-}
+
+is_VkCmdCopyBufferToImage :: CString -> Bool
+is_VkCmdCopyBufferToImage
+  = (EQ ==) . cmpCStrings _VkCmdCopyBufferToImage
+
+type VkCmdCopyBufferToImage = "vkCmdCopyBufferToImage"
+
+-- |
+-- Queues: 'transfer', 'graphics', 'compute'.
+--
+-- Renderpass: @outside@
+--
+-- Pipeline: @transfer@
+--
+-- > void vkCmdCopyBufferToImage
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkBuffer srcBuffer
+-- >     , VkImage dstImage
+-- >     , VkImageLayout dstImageLayout
+-- >     , uint32_t regionCount
+-- >     , const VkBufferImageCopy* pRegions
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdCopyBufferToImage vkCmdCopyBufferToImage registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdCopyBufferToImage <- vkGetInstanceProc @VkCmdCopyBufferToImage vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdCopyBufferToImage <- vkGetProc @VkCmdCopyBufferToImage
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCmdCopyBufferToImage"
+               vkCmdCopyBufferToImage ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 VkBuffer -- ^ srcBuffer
+                          ->
+                   VkImage -- ^ dstImage
+                           ->
+                     VkImageLayout -- ^ dstImageLayout
+                                   -> Word32 -- ^ regionCount
+                                             -> Ptr VkBufferImageCopy -- ^ pRegions
+                                                                      -> IO ()
+
+##else
+vkCmdCopyBufferToImage ::
+                       VkCommandBuffer -- ^ commandBuffer
+                                       ->
+                         VkBuffer -- ^ srcBuffer
+                                  ->
+                           VkImage -- ^ dstImage
+                                   ->
+                             VkImageLayout -- ^ dstImageLayout
+                                           -> Word32 -- ^ regionCount
+                                                     -> Ptr VkBufferImageCopy -- ^ pRegions
+                                                                              -> IO ()
+vkCmdCopyBufferToImage
+  = unsafeDupablePerformIO (vkGetProc @VkCmdCopyBufferToImage)
+
+{-# NOINLINE vkCmdCopyBufferToImage #-}
+##endif
+
+-- |
+-- Queues: 'transfer', 'graphics', 'compute'.
+--
+-- Renderpass: @outside@
+--
+-- Pipeline: @transfer@
+--
+-- > void vkCmdCopyBufferToImage
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkBuffer srcBuffer
+-- >     , VkImage dstImage
+-- >     , VkImageLayout dstImageLayout
+-- >     , uint32_t regionCount
+-- >     , const VkBufferImageCopy* pRegions
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdCopyBufferToImage vkCmdCopyBufferToImage registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdCopyBufferToImage <- vkGetInstanceProc @VkCmdCopyBufferToImage vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdCopyBufferToImage <- vkGetProc @VkCmdCopyBufferToImage
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCmdCopyBufferToImage"
+               vkCmdCopyBufferToImageSafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 VkBuffer -- ^ srcBuffer
+                          ->
+                   VkImage -- ^ dstImage
+                           ->
+                     VkImageLayout -- ^ dstImageLayout
+                                   -> Word32 -- ^ regionCount
+                                             -> Ptr VkBufferImageCopy -- ^ pRegions
+                                                                      -> IO ()
+
+##else
+vkCmdCopyBufferToImageSafe ::
+                           VkCommandBuffer -- ^ commandBuffer
+                                           ->
+                             VkBuffer -- ^ srcBuffer
+                                      ->
+                               VkImage -- ^ dstImage
+                                       ->
+                                 VkImageLayout -- ^ dstImageLayout
+                                               -> Word32 -- ^ regionCount
+                                                         -> Ptr VkBufferImageCopy -- ^ pRegions
+                                                                                  -> IO ()
+vkCmdCopyBufferToImageSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdCopyBufferToImage)
+
+{-# NOINLINE vkCmdCopyBufferToImageSafe #-}
+##endif
+
+-- | Queues: 'transfer', 'graphics', 'compute'.
+--
+--   Renderpass: @outside@
+--
+--   Pipeline: @transfer@
+--
+--   > void vkCmdCopyBufferToImage
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , VkBuffer srcBuffer
+--   >     , VkImage dstImage
+--   >     , VkImageLayout dstImageLayout
+--   >     , uint32_t regionCount
+--   >     , const VkBufferImageCopy* pRegions
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdCopyBufferToImage vkCmdCopyBufferToImage registry at www.khronos.org>
+type HS_vkCmdCopyBufferToImage =
+     VkCommandBuffer -- ^ commandBuffer
+                     ->
+       VkBuffer -- ^ srcBuffer
+                ->
+         VkImage -- ^ dstImage
+                 ->
+           VkImageLayout -- ^ dstImageLayout
+                         -> Word32 -- ^ regionCount
+                                   -> Ptr VkBufferImageCopy -- ^ pRegions
+                                                            -> IO ()
+
+type PFN_vkCmdCopyBufferToImage = FunPtr HS_vkCmdCopyBufferToImage
+
+foreign import ccall unsafe "dynamic" unwrapVkCmdCopyBufferToImage
+               :: PFN_vkCmdCopyBufferToImage -> HS_vkCmdCopyBufferToImage
+
+foreign import ccall safe "dynamic"
+               unwrapVkCmdCopyBufferToImageSafe ::
+               PFN_vkCmdCopyBufferToImage -> HS_vkCmdCopyBufferToImage
+
+instance VulkanProc "vkCmdCopyBufferToImage" where
+        type VkProcType "vkCmdCopyBufferToImage" =
+             HS_vkCmdCopyBufferToImage
+        vkProcSymbol = _VkCmdCopyBufferToImage
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkCmdCopyBufferToImage
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkCmdCopyBufferToImageSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCmdCopyImageToBuffer :: CString
+
+pattern VkCmdCopyImageToBuffer <-
+        (is_VkCmdCopyImageToBuffer -> True)
+  where VkCmdCopyImageToBuffer = _VkCmdCopyImageToBuffer
+
+{-# INLINE _VkCmdCopyImageToBuffer #-}
+
+_VkCmdCopyImageToBuffer :: CString
+_VkCmdCopyImageToBuffer = Ptr "vkCmdCopyImageToBuffer\NUL"##
+
+{-# INLINE is_VkCmdCopyImageToBuffer #-}
+
+is_VkCmdCopyImageToBuffer :: CString -> Bool
+is_VkCmdCopyImageToBuffer
+  = (EQ ==) . cmpCStrings _VkCmdCopyImageToBuffer
+
+type VkCmdCopyImageToBuffer = "vkCmdCopyImageToBuffer"
+
+-- |
+-- Queues: 'transfer', 'graphics', 'compute'.
+--
+-- Renderpass: @outside@
+--
+-- Pipeline: @transfer@
+--
+-- > void vkCmdCopyImageToBuffer
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkImage srcImage
+-- >     , VkImageLayout srcImageLayout
+-- >     , VkBuffer dstBuffer
+-- >     , uint32_t regionCount
+-- >     , const VkBufferImageCopy* pRegions
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdCopyImageToBuffer vkCmdCopyImageToBuffer registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdCopyImageToBuffer <- vkGetInstanceProc @VkCmdCopyImageToBuffer vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdCopyImageToBuffer <- vkGetProc @VkCmdCopyImageToBuffer
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCmdCopyImageToBuffer"
+               vkCmdCopyImageToBuffer ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 VkImage -- ^ srcImage
+                         ->
+                   VkImageLayout -- ^ srcImageLayout
+                                 ->
+                     VkBuffer -- ^ dstBuffer
+                              -> Word32 -- ^ regionCount
+                                        -> Ptr VkBufferImageCopy -- ^ pRegions
+                                                                 -> IO ()
+
+##else
+vkCmdCopyImageToBuffer ::
+                       VkCommandBuffer -- ^ commandBuffer
+                                       ->
+                         VkImage -- ^ srcImage
+                                 ->
+                           VkImageLayout -- ^ srcImageLayout
+                                         ->
+                             VkBuffer -- ^ dstBuffer
+                                      -> Word32 -- ^ regionCount
+                                                -> Ptr VkBufferImageCopy -- ^ pRegions
+                                                                         -> IO ()
+vkCmdCopyImageToBuffer
+  = unsafeDupablePerformIO (vkGetProc @VkCmdCopyImageToBuffer)
+
+{-# NOINLINE vkCmdCopyImageToBuffer #-}
+##endif
+
+-- |
+-- Queues: 'transfer', 'graphics', 'compute'.
+--
+-- Renderpass: @outside@
+--
+-- Pipeline: @transfer@
+--
+-- > void vkCmdCopyImageToBuffer
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkImage srcImage
+-- >     , VkImageLayout srcImageLayout
+-- >     , VkBuffer dstBuffer
+-- >     , uint32_t regionCount
+-- >     , const VkBufferImageCopy* pRegions
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdCopyImageToBuffer vkCmdCopyImageToBuffer registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdCopyImageToBuffer <- vkGetInstanceProc @VkCmdCopyImageToBuffer vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdCopyImageToBuffer <- vkGetProc @VkCmdCopyImageToBuffer
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCmdCopyImageToBuffer"
+               vkCmdCopyImageToBufferSafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 VkImage -- ^ srcImage
+                         ->
+                   VkImageLayout -- ^ srcImageLayout
+                                 ->
+                     VkBuffer -- ^ dstBuffer
+                              -> Word32 -- ^ regionCount
+                                        -> Ptr VkBufferImageCopy -- ^ pRegions
+                                                                 -> IO ()
+
+##else
+vkCmdCopyImageToBufferSafe ::
+                           VkCommandBuffer -- ^ commandBuffer
+                                           ->
+                             VkImage -- ^ srcImage
+                                     ->
+                               VkImageLayout -- ^ srcImageLayout
+                                             ->
+                                 VkBuffer -- ^ dstBuffer
+                                          -> Word32 -- ^ regionCount
+                                                    -> Ptr VkBufferImageCopy -- ^ pRegions
+                                                                             -> IO ()
+vkCmdCopyImageToBufferSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdCopyImageToBuffer)
+
+{-# NOINLINE vkCmdCopyImageToBufferSafe #-}
+##endif
+
+-- | Queues: 'transfer', 'graphics', 'compute'.
+--
+--   Renderpass: @outside@
+--
+--   Pipeline: @transfer@
+--
+--   > void vkCmdCopyImageToBuffer
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , VkImage srcImage
+--   >     , VkImageLayout srcImageLayout
+--   >     , VkBuffer dstBuffer
+--   >     , uint32_t regionCount
+--   >     , const VkBufferImageCopy* pRegions
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdCopyImageToBuffer vkCmdCopyImageToBuffer registry at www.khronos.org>
+type HS_vkCmdCopyImageToBuffer =
+     VkCommandBuffer -- ^ commandBuffer
+                     ->
+       VkImage -- ^ srcImage
+               ->
+         VkImageLayout -- ^ srcImageLayout
+                       ->
+           VkBuffer -- ^ dstBuffer
+                    -> Word32 -- ^ regionCount
+                              -> Ptr VkBufferImageCopy -- ^ pRegions
+                                                       -> IO ()
+
+type PFN_vkCmdCopyImageToBuffer = FunPtr HS_vkCmdCopyImageToBuffer
+
+foreign import ccall unsafe "dynamic" unwrapVkCmdCopyImageToBuffer
+               :: PFN_vkCmdCopyImageToBuffer -> HS_vkCmdCopyImageToBuffer
+
+foreign import ccall safe "dynamic"
+               unwrapVkCmdCopyImageToBufferSafe ::
+               PFN_vkCmdCopyImageToBuffer -> HS_vkCmdCopyImageToBuffer
+
+instance VulkanProc "vkCmdCopyImageToBuffer" where
+        type VkProcType "vkCmdCopyImageToBuffer" =
+             HS_vkCmdCopyImageToBuffer
+        vkProcSymbol = _VkCmdCopyImageToBuffer
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkCmdCopyImageToBuffer
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkCmdCopyImageToBufferSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCmdUpdateBuffer :: CString
+
+pattern VkCmdUpdateBuffer <- (is_VkCmdUpdateBuffer -> True)
+  where VkCmdUpdateBuffer = _VkCmdUpdateBuffer
+
+{-# INLINE _VkCmdUpdateBuffer #-}
+
+_VkCmdUpdateBuffer :: CString
+_VkCmdUpdateBuffer = Ptr "vkCmdUpdateBuffer\NUL"##
+
+{-# INLINE is_VkCmdUpdateBuffer #-}
+
+is_VkCmdUpdateBuffer :: CString -> Bool
+is_VkCmdUpdateBuffer = (EQ ==) . cmpCStrings _VkCmdUpdateBuffer
+
+type VkCmdUpdateBuffer = "vkCmdUpdateBuffer"
+
+-- |
+-- Queues: 'transfer', 'graphics', 'compute'.
+--
+-- Renderpass: @outside@
+--
+-- Pipeline: @transfer@
+--
+-- > void vkCmdUpdateBuffer
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkBuffer dstBuffer
+-- >     , VkDeviceSize dstOffset
+-- >     , VkDeviceSize dataSize
+-- >     , const void* pData
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdUpdateBuffer vkCmdUpdateBuffer registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdUpdateBuffer <- vkGetInstanceProc @VkCmdUpdateBuffer vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdUpdateBuffer <- vkGetProc @VkCmdUpdateBuffer
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCmdUpdateBuffer" vkCmdUpdateBuffer
+               ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 VkBuffer -- ^ dstBuffer
+                          -> VkDeviceSize -- ^ dstOffset
+                                          -> VkDeviceSize -- ^ dataSize
+                                                          -> Ptr Void -- ^ pData
+                                                                      -> IO ()
+
+##else
+vkCmdUpdateBuffer ::
+                  VkCommandBuffer -- ^ commandBuffer
+                                  ->
+                    VkBuffer -- ^ dstBuffer
+                             -> VkDeviceSize -- ^ dstOffset
+                                             -> VkDeviceSize -- ^ dataSize
+                                                             -> Ptr Void -- ^ pData
+                                                                         -> IO ()
+vkCmdUpdateBuffer
+  = unsafeDupablePerformIO (vkGetProc @VkCmdUpdateBuffer)
+
+{-# NOINLINE vkCmdUpdateBuffer #-}
+##endif
+
+-- |
+-- Queues: 'transfer', 'graphics', 'compute'.
+--
+-- Renderpass: @outside@
+--
+-- Pipeline: @transfer@
+--
+-- > void vkCmdUpdateBuffer
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkBuffer dstBuffer
+-- >     , VkDeviceSize dstOffset
+-- >     , VkDeviceSize dataSize
+-- >     , const void* pData
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdUpdateBuffer vkCmdUpdateBuffer registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdUpdateBuffer <- vkGetInstanceProc @VkCmdUpdateBuffer vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdUpdateBuffer <- vkGetProc @VkCmdUpdateBuffer
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCmdUpdateBuffer" vkCmdUpdateBufferSafe
+               ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 VkBuffer -- ^ dstBuffer
+                          -> VkDeviceSize -- ^ dstOffset
+                                          -> VkDeviceSize -- ^ dataSize
+                                                          -> Ptr Void -- ^ pData
+                                                                      -> IO ()
+
+##else
+vkCmdUpdateBufferSafe ::
+                      VkCommandBuffer -- ^ commandBuffer
+                                      ->
+                        VkBuffer -- ^ dstBuffer
+                                 -> VkDeviceSize -- ^ dstOffset
+                                                 -> VkDeviceSize -- ^ dataSize
+                                                                 -> Ptr Void -- ^ pData
+                                                                             -> IO ()
+vkCmdUpdateBufferSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdUpdateBuffer)
+
+{-# NOINLINE vkCmdUpdateBufferSafe #-}
+##endif
+
+-- | Queues: 'transfer', 'graphics', 'compute'.
+--
+--   Renderpass: @outside@
+--
+--   Pipeline: @transfer@
+--
+--   > void vkCmdUpdateBuffer
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , VkBuffer dstBuffer
+--   >     , VkDeviceSize dstOffset
+--   >     , VkDeviceSize dataSize
+--   >     , const void* pData
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdUpdateBuffer vkCmdUpdateBuffer registry at www.khronos.org>
+type HS_vkCmdUpdateBuffer =
+     VkCommandBuffer -- ^ commandBuffer
+                     ->
+       VkBuffer -- ^ dstBuffer
+                -> VkDeviceSize -- ^ dstOffset
+                                -> VkDeviceSize -- ^ dataSize
+                                                -> Ptr Void -- ^ pData
+                                                            -> IO ()
+
+type PFN_vkCmdUpdateBuffer = FunPtr HS_vkCmdUpdateBuffer
+
+foreign import ccall unsafe "dynamic" unwrapVkCmdUpdateBuffer ::
+               PFN_vkCmdUpdateBuffer -> HS_vkCmdUpdateBuffer
+
+foreign import ccall safe "dynamic" unwrapVkCmdUpdateBufferSafe ::
+               PFN_vkCmdUpdateBuffer -> HS_vkCmdUpdateBuffer
+
+instance VulkanProc "vkCmdUpdateBuffer" where
+        type VkProcType "vkCmdUpdateBuffer" = HS_vkCmdUpdateBuffer
+        vkProcSymbol = _VkCmdUpdateBuffer
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkCmdUpdateBuffer
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkCmdUpdateBufferSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCmdFillBuffer :: CString
+
+pattern VkCmdFillBuffer <- (is_VkCmdFillBuffer -> True)
+  where VkCmdFillBuffer = _VkCmdFillBuffer
+
+{-# INLINE _VkCmdFillBuffer #-}
+
+_VkCmdFillBuffer :: CString
+_VkCmdFillBuffer = Ptr "vkCmdFillBuffer\NUL"##
+
+{-# INLINE is_VkCmdFillBuffer #-}
+
+is_VkCmdFillBuffer :: CString -> Bool
+is_VkCmdFillBuffer = (EQ ==) . cmpCStrings _VkCmdFillBuffer
+
+type VkCmdFillBuffer = "vkCmdFillBuffer"
+
+-- |
+-- transfer support is only available when VK_KHR_maintenance1 is enabled, as documented in valid usage language in the specification
+--
+-- Queues: 'transfer', 'graphics', 'compute'.
+--
+-- Renderpass: @outside@
+--
+-- Pipeline: @transfer@
+--
+-- > void vkCmdFillBuffer
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkBuffer dstBuffer
+-- >     , VkDeviceSize dstOffset
+-- >     , VkDeviceSize size
+-- >     , uint32_t data
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdFillBuffer vkCmdFillBuffer registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdFillBuffer <- vkGetInstanceProc @VkCmdFillBuffer vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdFillBuffer <- vkGetProc @VkCmdFillBuffer
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCmdFillBuffer" vkCmdFillBuffer ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 VkBuffer -- ^ dstBuffer
+                          -> VkDeviceSize -- ^ dstOffset
+                                          -> VkDeviceSize -- ^ size
+                                                          -> Word32 -- ^ data
+                                                                    -> IO ()
+
+##else
+vkCmdFillBuffer ::
+                VkCommandBuffer -- ^ commandBuffer
+                                ->
+                  VkBuffer -- ^ dstBuffer
+                           -> VkDeviceSize -- ^ dstOffset
+                                           -> VkDeviceSize -- ^ size
+                                                           -> Word32 -- ^ data
+                                                                     -> IO ()
+vkCmdFillBuffer
+  = unsafeDupablePerformIO (vkGetProc @VkCmdFillBuffer)
+
+{-# NOINLINE vkCmdFillBuffer #-}
+##endif
+
+-- |
+-- transfer support is only available when VK_KHR_maintenance1 is enabled, as documented in valid usage language in the specification
+--
+-- Queues: 'transfer', 'graphics', 'compute'.
+--
+-- Renderpass: @outside@
+--
+-- Pipeline: @transfer@
+--
+-- > void vkCmdFillBuffer
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkBuffer dstBuffer
+-- >     , VkDeviceSize dstOffset
+-- >     , VkDeviceSize size
+-- >     , uint32_t data
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdFillBuffer vkCmdFillBuffer registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdFillBuffer <- vkGetInstanceProc @VkCmdFillBuffer vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdFillBuffer <- vkGetProc @VkCmdFillBuffer
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCmdFillBuffer" vkCmdFillBufferSafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 VkBuffer -- ^ dstBuffer
+                          -> VkDeviceSize -- ^ dstOffset
+                                          -> VkDeviceSize -- ^ size
+                                                          -> Word32 -- ^ data
+                                                                    -> IO ()
+
+##else
+vkCmdFillBufferSafe ::
+                    VkCommandBuffer -- ^ commandBuffer
+                                    ->
+                      VkBuffer -- ^ dstBuffer
+                               -> VkDeviceSize -- ^ dstOffset
+                                               -> VkDeviceSize -- ^ size
+                                                               -> Word32 -- ^ data
+                                                                         -> IO ()
+vkCmdFillBufferSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdFillBuffer)
+
+{-# NOINLINE vkCmdFillBufferSafe #-}
+##endif
+
+-- | transfer support is only available when VK_KHR_maintenance1 is enabled, as documented in valid usage language in the specification
+--
+--   Queues: 'transfer', 'graphics', 'compute'.
+--
+--   Renderpass: @outside@
+--
+--   Pipeline: @transfer@
+--
+--   > void vkCmdFillBuffer
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , VkBuffer dstBuffer
+--   >     , VkDeviceSize dstOffset
+--   >     , VkDeviceSize size
+--   >     , uint32_t data
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdFillBuffer vkCmdFillBuffer registry at www.khronos.org>
+type HS_vkCmdFillBuffer =
+     VkCommandBuffer -- ^ commandBuffer
+                     ->
+       VkBuffer -- ^ dstBuffer
+                -> VkDeviceSize -- ^ dstOffset
+                                -> VkDeviceSize -- ^ size
+                                                -> Word32 -- ^ data
+                                                          -> IO ()
+
+type PFN_vkCmdFillBuffer = FunPtr HS_vkCmdFillBuffer
+
+foreign import ccall unsafe "dynamic" unwrapVkCmdFillBuffer ::
+               PFN_vkCmdFillBuffer -> HS_vkCmdFillBuffer
+
+foreign import ccall safe "dynamic" unwrapVkCmdFillBufferSafe ::
+               PFN_vkCmdFillBuffer -> HS_vkCmdFillBuffer
+
+instance VulkanProc "vkCmdFillBuffer" where
+        type VkProcType "vkCmdFillBuffer" = HS_vkCmdFillBuffer
+        vkProcSymbol = _VkCmdFillBuffer
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkCmdFillBuffer
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkCmdFillBufferSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCmdClearColorImage :: CString
+
+pattern VkCmdClearColorImage <- (is_VkCmdClearColorImage -> True)
+  where VkCmdClearColorImage = _VkCmdClearColorImage
+
+{-# INLINE _VkCmdClearColorImage #-}
+
+_VkCmdClearColorImage :: CString
+_VkCmdClearColorImage = Ptr "vkCmdClearColorImage\NUL"##
+
+{-# INLINE is_VkCmdClearColorImage #-}
+
+is_VkCmdClearColorImage :: CString -> Bool
+is_VkCmdClearColorImage
+  = (EQ ==) . cmpCStrings _VkCmdClearColorImage
+
+type VkCmdClearColorImage = "vkCmdClearColorImage"
+
+-- |
+-- Queues: 'graphics', 'compute'.
+--
+-- Renderpass: @outside@
+--
+-- Pipeline: @transfer@
+--
+-- > void vkCmdClearColorImage
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkImage image
+-- >     , VkImageLayout imageLayout
+-- >     , const VkClearColorValue* pColor
+-- >     , uint32_t rangeCount
+-- >     , const VkImageSubresourceRange* pRanges
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdClearColorImage vkCmdClearColorImage registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdClearColorImage <- vkGetInstanceProc @VkCmdClearColorImage vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdClearColorImage <- vkGetProc @VkCmdClearColorImage
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCmdClearColorImage"
+               vkCmdClearColorImage ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 VkImage -- ^ image
+                         ->
+                   VkImageLayout -- ^ imageLayout
+                                 ->
+                     Ptr VkClearColorValue -- ^ pColor
+                                           ->
+                       Word32 -- ^ rangeCount
+                              -> Ptr VkImageSubresourceRange -- ^ pRanges
+                                                             -> IO ()
+
+##else
+vkCmdClearColorImage ::
+                     VkCommandBuffer -- ^ commandBuffer
+                                     ->
+                       VkImage -- ^ image
+                               ->
+                         VkImageLayout -- ^ imageLayout
+                                       ->
+                           Ptr VkClearColorValue -- ^ pColor
+                                                 ->
+                             Word32 -- ^ rangeCount
+                                    -> Ptr VkImageSubresourceRange -- ^ pRanges
+                                                                   -> IO ()
+vkCmdClearColorImage
+  = unsafeDupablePerformIO (vkGetProc @VkCmdClearColorImage)
+
+{-# NOINLINE vkCmdClearColorImage #-}
+##endif
+
+-- |
+-- Queues: 'graphics', 'compute'.
+--
+-- Renderpass: @outside@
+--
+-- Pipeline: @transfer@
+--
+-- > void vkCmdClearColorImage
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkImage image
+-- >     , VkImageLayout imageLayout
+-- >     , const VkClearColorValue* pColor
+-- >     , uint32_t rangeCount
+-- >     , const VkImageSubresourceRange* pRanges
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdClearColorImage vkCmdClearColorImage registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdClearColorImage <- vkGetInstanceProc @VkCmdClearColorImage vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdClearColorImage <- vkGetProc @VkCmdClearColorImage
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCmdClearColorImage"
+               vkCmdClearColorImageSafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 VkImage -- ^ image
+                         ->
+                   VkImageLayout -- ^ imageLayout
+                                 ->
+                     Ptr VkClearColorValue -- ^ pColor
+                                           ->
+                       Word32 -- ^ rangeCount
+                              -> Ptr VkImageSubresourceRange -- ^ pRanges
+                                                             -> IO ()
+
+##else
+vkCmdClearColorImageSafe ::
+                         VkCommandBuffer -- ^ commandBuffer
+                                         ->
+                           VkImage -- ^ image
+                                   ->
+                             VkImageLayout -- ^ imageLayout
+                                           ->
+                               Ptr VkClearColorValue -- ^ pColor
+                                                     ->
+                                 Word32 -- ^ rangeCount
+                                        -> Ptr VkImageSubresourceRange -- ^ pRanges
+                                                                       -> IO ()
+vkCmdClearColorImageSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdClearColorImage)
+
+{-# NOINLINE vkCmdClearColorImageSafe #-}
+##endif
+
+-- | Queues: 'graphics', 'compute'.
+--
+--   Renderpass: @outside@
+--
+--   Pipeline: @transfer@
+--
+--   > void vkCmdClearColorImage
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , VkImage image
+--   >     , VkImageLayout imageLayout
+--   >     , const VkClearColorValue* pColor
+--   >     , uint32_t rangeCount
+--   >     , const VkImageSubresourceRange* pRanges
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdClearColorImage vkCmdClearColorImage registry at www.khronos.org>
+type HS_vkCmdClearColorImage =
+     VkCommandBuffer -- ^ commandBuffer
+                     ->
+       VkImage -- ^ image
+               ->
+         VkImageLayout -- ^ imageLayout
+                       ->
+           Ptr VkClearColorValue -- ^ pColor
+                                 ->
+             Word32 -- ^ rangeCount
+                    -> Ptr VkImageSubresourceRange -- ^ pRanges
+                                                   -> IO ()
+
+type PFN_vkCmdClearColorImage = FunPtr HS_vkCmdClearColorImage
+
+foreign import ccall unsafe "dynamic" unwrapVkCmdClearColorImage ::
+               PFN_vkCmdClearColorImage -> HS_vkCmdClearColorImage
+
+foreign import ccall safe "dynamic" unwrapVkCmdClearColorImageSafe
+               :: PFN_vkCmdClearColorImage -> HS_vkCmdClearColorImage
+
+instance VulkanProc "vkCmdClearColorImage" where
+        type VkProcType "vkCmdClearColorImage" = HS_vkCmdClearColorImage
+        vkProcSymbol = _VkCmdClearColorImage
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkCmdClearColorImage
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkCmdClearColorImageSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCmdClearDepthStencilImage :: CString
+
+pattern VkCmdClearDepthStencilImage <-
+        (is_VkCmdClearDepthStencilImage -> True)
+  where VkCmdClearDepthStencilImage = _VkCmdClearDepthStencilImage
+
+{-# INLINE _VkCmdClearDepthStencilImage #-}
+
+_VkCmdClearDepthStencilImage :: CString
+_VkCmdClearDepthStencilImage
+  = Ptr "vkCmdClearDepthStencilImage\NUL"##
+
+{-# INLINE is_VkCmdClearDepthStencilImage #-}
+
+is_VkCmdClearDepthStencilImage :: CString -> Bool
+is_VkCmdClearDepthStencilImage
+  = (EQ ==) . cmpCStrings _VkCmdClearDepthStencilImage
+
+type VkCmdClearDepthStencilImage = "vkCmdClearDepthStencilImage"
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @outside@
+--
+-- Pipeline: @transfer@
+--
+-- > void vkCmdClearDepthStencilImage
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkImage image
+-- >     , VkImageLayout imageLayout
+-- >     , const VkClearDepthStencilValue* pDepthStencil
+-- >     , uint32_t rangeCount
+-- >     , const VkImageSubresourceRange* pRanges
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdClearDepthStencilImage vkCmdClearDepthStencilImage registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdClearDepthStencilImage <- vkGetInstanceProc @VkCmdClearDepthStencilImage vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdClearDepthStencilImage <- vkGetProc @VkCmdClearDepthStencilImage
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCmdClearDepthStencilImage"
+               vkCmdClearDepthStencilImage ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 VkImage -- ^ image
+                         ->
+                   VkImageLayout -- ^ imageLayout
+                                 ->
+                     Ptr VkClearDepthStencilValue -- ^ pDepthStencil
+                                                  ->
+                       Word32 -- ^ rangeCount
+                              -> Ptr VkImageSubresourceRange -- ^ pRanges
+                                                             -> IO ()
+
+##else
+vkCmdClearDepthStencilImage ::
+                            VkCommandBuffer -- ^ commandBuffer
+                                            ->
+                              VkImage -- ^ image
+                                      ->
+                                VkImageLayout -- ^ imageLayout
+                                              ->
+                                  Ptr VkClearDepthStencilValue -- ^ pDepthStencil
+                                                               ->
+                                    Word32 -- ^ rangeCount
+                                           -> Ptr VkImageSubresourceRange -- ^ pRanges
+                                                                          -> IO ()
+vkCmdClearDepthStencilImage
+  = unsafeDupablePerformIO (vkGetProc @VkCmdClearDepthStencilImage)
+
+{-# NOINLINE vkCmdClearDepthStencilImage #-}
+##endif
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @outside@
+--
+-- Pipeline: @transfer@
+--
+-- > void vkCmdClearDepthStencilImage
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkImage image
+-- >     , VkImageLayout imageLayout
+-- >     , const VkClearDepthStencilValue* pDepthStencil
+-- >     , uint32_t rangeCount
+-- >     , const VkImageSubresourceRange* pRanges
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdClearDepthStencilImage vkCmdClearDepthStencilImage registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdClearDepthStencilImage <- vkGetInstanceProc @VkCmdClearDepthStencilImage vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdClearDepthStencilImage <- vkGetProc @VkCmdClearDepthStencilImage
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCmdClearDepthStencilImage"
+               vkCmdClearDepthStencilImageSafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 VkImage -- ^ image
+                         ->
+                   VkImageLayout -- ^ imageLayout
+                                 ->
+                     Ptr VkClearDepthStencilValue -- ^ pDepthStencil
+                                                  ->
+                       Word32 -- ^ rangeCount
+                              -> Ptr VkImageSubresourceRange -- ^ pRanges
+                                                             -> IO ()
+
+##else
+vkCmdClearDepthStencilImageSafe ::
+                                VkCommandBuffer -- ^ commandBuffer
+                                                ->
+                                  VkImage -- ^ image
+                                          ->
+                                    VkImageLayout -- ^ imageLayout
+                                                  ->
+                                      Ptr VkClearDepthStencilValue -- ^ pDepthStencil
+                                                                   ->
+                                        Word32 -- ^ rangeCount
+                                               -> Ptr VkImageSubresourceRange -- ^ pRanges
+                                                                              -> IO ()
+vkCmdClearDepthStencilImageSafe
+  = unsafeDupablePerformIO
+      (vkGetProcSafe @VkCmdClearDepthStencilImage)
+
+{-# NOINLINE vkCmdClearDepthStencilImageSafe #-}
+##endif
+
+-- | Queues: 'graphics'.
+--
+--   Renderpass: @outside@
+--
+--   Pipeline: @transfer@
+--
+--   > void vkCmdClearDepthStencilImage
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , VkImage image
+--   >     , VkImageLayout imageLayout
+--   >     , const VkClearDepthStencilValue* pDepthStencil
+--   >     , uint32_t rangeCount
+--   >     , const VkImageSubresourceRange* pRanges
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdClearDepthStencilImage vkCmdClearDepthStencilImage registry at www.khronos.org>
+type HS_vkCmdClearDepthStencilImage =
+     VkCommandBuffer -- ^ commandBuffer
+                     ->
+       VkImage -- ^ image
+               ->
+         VkImageLayout -- ^ imageLayout
+                       ->
+           Ptr VkClearDepthStencilValue -- ^ pDepthStencil
+                                        ->
+             Word32 -- ^ rangeCount
+                    -> Ptr VkImageSubresourceRange -- ^ pRanges
+                                                   -> IO ()
+
+type PFN_vkCmdClearDepthStencilImage =
+     FunPtr HS_vkCmdClearDepthStencilImage
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkCmdClearDepthStencilImage ::
+               PFN_vkCmdClearDepthStencilImage -> HS_vkCmdClearDepthStencilImage
+
+foreign import ccall safe "dynamic"
+               unwrapVkCmdClearDepthStencilImageSafe ::
+               PFN_vkCmdClearDepthStencilImage -> HS_vkCmdClearDepthStencilImage
+
+instance VulkanProc "vkCmdClearDepthStencilImage" where
+        type VkProcType "vkCmdClearDepthStencilImage" =
+             HS_vkCmdClearDepthStencilImage
+        vkProcSymbol = _VkCmdClearDepthStencilImage
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkCmdClearDepthStencilImage
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkCmdClearDepthStencilImageSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCmdClearAttachments :: CString
+
+pattern VkCmdClearAttachments <- (is_VkCmdClearAttachments -> True)
+  where VkCmdClearAttachments = _VkCmdClearAttachments
+
+{-# INLINE _VkCmdClearAttachments #-}
+
+_VkCmdClearAttachments :: CString
+_VkCmdClearAttachments = Ptr "vkCmdClearAttachments\NUL"##
+
+{-# INLINE is_VkCmdClearAttachments #-}
+
+is_VkCmdClearAttachments :: CString -> Bool
+is_VkCmdClearAttachments
+  = (EQ ==) . cmpCStrings _VkCmdClearAttachments
+
+type VkCmdClearAttachments = "vkCmdClearAttachments"
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @inside@
+--
+-- Pipeline: @graphics@
+--
+-- > void vkCmdClearAttachments
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , uint32_t attachmentCount
+-- >     , const VkClearAttachment* pAttachments
+-- >     , uint32_t rectCount
+-- >     , const VkClearRect* pRects
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdClearAttachments vkCmdClearAttachments registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdClearAttachments <- vkGetInstanceProc @VkCmdClearAttachments vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdClearAttachments <- vkGetProc @VkCmdClearAttachments
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCmdClearAttachments"
+               vkCmdClearAttachments ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 Word32 -- ^ attachmentCount
+                        ->
+                   Ptr VkClearAttachment -- ^ pAttachments
+                                         -> Word32 -- ^ rectCount
+                                                   -> Ptr VkClearRect -- ^ pRects
+                                                                      -> IO ()
+
+##else
+vkCmdClearAttachments ::
+                      VkCommandBuffer -- ^ commandBuffer
+                                      ->
+                        Word32 -- ^ attachmentCount
+                               ->
+                          Ptr VkClearAttachment -- ^ pAttachments
+                                                -> Word32 -- ^ rectCount
+                                                          -> Ptr VkClearRect -- ^ pRects
+                                                                             -> IO ()
+vkCmdClearAttachments
+  = unsafeDupablePerformIO (vkGetProc @VkCmdClearAttachments)
+
+{-# NOINLINE vkCmdClearAttachments #-}
+##endif
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @inside@
+--
+-- Pipeline: @graphics@
+--
+-- > void vkCmdClearAttachments
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , uint32_t attachmentCount
+-- >     , const VkClearAttachment* pAttachments
+-- >     , uint32_t rectCount
+-- >     , const VkClearRect* pRects
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdClearAttachments vkCmdClearAttachments registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdClearAttachments <- vkGetInstanceProc @VkCmdClearAttachments vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdClearAttachments <- vkGetProc @VkCmdClearAttachments
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCmdClearAttachments"
+               vkCmdClearAttachmentsSafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 Word32 -- ^ attachmentCount
+                        ->
+                   Ptr VkClearAttachment -- ^ pAttachments
+                                         -> Word32 -- ^ rectCount
+                                                   -> Ptr VkClearRect -- ^ pRects
+                                                                      -> IO ()
+
+##else
+vkCmdClearAttachmentsSafe ::
+                          VkCommandBuffer -- ^ commandBuffer
+                                          ->
+                            Word32 -- ^ attachmentCount
+                                   ->
+                              Ptr VkClearAttachment -- ^ pAttachments
+                                                    -> Word32 -- ^ rectCount
+                                                              -> Ptr VkClearRect -- ^ pRects
+                                                                                 -> IO ()
+vkCmdClearAttachmentsSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdClearAttachments)
+
+{-# NOINLINE vkCmdClearAttachmentsSafe #-}
+##endif
+
+-- | Queues: 'graphics'.
+--
+--   Renderpass: @inside@
+--
+--   Pipeline: @graphics@
+--
+--   > void vkCmdClearAttachments
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , uint32_t attachmentCount
+--   >     , const VkClearAttachment* pAttachments
+--   >     , uint32_t rectCount
+--   >     , const VkClearRect* pRects
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdClearAttachments vkCmdClearAttachments registry at www.khronos.org>
+type HS_vkCmdClearAttachments =
+     VkCommandBuffer -- ^ commandBuffer
+                     ->
+       Word32 -- ^ attachmentCount
+              ->
+         Ptr VkClearAttachment -- ^ pAttachments
+                               -> Word32 -- ^ rectCount
+                                         -> Ptr VkClearRect -- ^ pRects
+                                                            -> IO ()
+
+type PFN_vkCmdClearAttachments = FunPtr HS_vkCmdClearAttachments
+
+foreign import ccall unsafe "dynamic" unwrapVkCmdClearAttachments
+               :: PFN_vkCmdClearAttachments -> HS_vkCmdClearAttachments
+
+foreign import ccall safe "dynamic" unwrapVkCmdClearAttachmentsSafe
+               :: PFN_vkCmdClearAttachments -> HS_vkCmdClearAttachments
+
+instance VulkanProc "vkCmdClearAttachments" where
+        type VkProcType "vkCmdClearAttachments" = HS_vkCmdClearAttachments
+        vkProcSymbol = _VkCmdClearAttachments
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkCmdClearAttachments
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkCmdClearAttachmentsSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCmdResolveImage :: CString
+
+pattern VkCmdResolveImage <- (is_VkCmdResolveImage -> True)
+  where VkCmdResolveImage = _VkCmdResolveImage
+
+{-# INLINE _VkCmdResolveImage #-}
+
+_VkCmdResolveImage :: CString
+_VkCmdResolveImage = Ptr "vkCmdResolveImage\NUL"##
+
+{-# INLINE is_VkCmdResolveImage #-}
+
+is_VkCmdResolveImage :: CString -> Bool
+is_VkCmdResolveImage = (EQ ==) . cmpCStrings _VkCmdResolveImage
+
+type VkCmdResolveImage = "vkCmdResolveImage"
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @outside@
+--
+-- Pipeline: @transfer@
+--
+-- > void vkCmdResolveImage
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkImage srcImage
+-- >     , VkImageLayout srcImageLayout
+-- >     , VkImage dstImage
+-- >     , VkImageLayout dstImageLayout
+-- >     , uint32_t regionCount
+-- >     , const VkImageResolve* pRegions
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdResolveImage vkCmdResolveImage registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdResolveImage <- vkGetInstanceProc @VkCmdResolveImage vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdResolveImage <- vkGetProc @VkCmdResolveImage
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCmdResolveImage" vkCmdResolveImage
+               ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 VkImage -- ^ srcImage
+                         ->
+                   VkImageLayout -- ^ srcImageLayout
+                                 ->
+                     VkImage -- ^ dstImage
+                             -> VkImageLayout -- ^ dstImageLayout
+                                              -> Word32 -- ^ regionCount
+                                                        -> Ptr VkImageResolve -- ^ pRegions
+                                                                              -> IO ()
+
+##else
+vkCmdResolveImage ::
+                  VkCommandBuffer -- ^ commandBuffer
+                                  ->
+                    VkImage -- ^ srcImage
+                            ->
+                      VkImageLayout -- ^ srcImageLayout
+                                    ->
+                        VkImage -- ^ dstImage
+                                -> VkImageLayout -- ^ dstImageLayout
+                                                 -> Word32 -- ^ regionCount
+                                                           -> Ptr VkImageResolve -- ^ pRegions
+                                                                                 -> IO ()
+vkCmdResolveImage
+  = unsafeDupablePerformIO (vkGetProc @VkCmdResolveImage)
+
+{-# NOINLINE vkCmdResolveImage #-}
+##endif
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @outside@
+--
+-- Pipeline: @transfer@
+--
+-- > void vkCmdResolveImage
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkImage srcImage
+-- >     , VkImageLayout srcImageLayout
+-- >     , VkImage dstImage
+-- >     , VkImageLayout dstImageLayout
+-- >     , uint32_t regionCount
+-- >     , const VkImageResolve* pRegions
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdResolveImage vkCmdResolveImage registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdResolveImage <- vkGetInstanceProc @VkCmdResolveImage vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdResolveImage <- vkGetProc @VkCmdResolveImage
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCmdResolveImage" vkCmdResolveImageSafe
+               ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 VkImage -- ^ srcImage
+                         ->
+                   VkImageLayout -- ^ srcImageLayout
+                                 ->
+                     VkImage -- ^ dstImage
+                             -> VkImageLayout -- ^ dstImageLayout
+                                              -> Word32 -- ^ regionCount
+                                                        -> Ptr VkImageResolve -- ^ pRegions
+                                                                              -> IO ()
+
+##else
+vkCmdResolveImageSafe ::
+                      VkCommandBuffer -- ^ commandBuffer
+                                      ->
+                        VkImage -- ^ srcImage
+                                ->
+                          VkImageLayout -- ^ srcImageLayout
+                                        ->
+                            VkImage -- ^ dstImage
+                                    -> VkImageLayout -- ^ dstImageLayout
+                                                     -> Word32 -- ^ regionCount
+                                                               -> Ptr VkImageResolve -- ^ pRegions
+                                                                                     -> IO ()
+vkCmdResolveImageSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdResolveImage)
+
+{-# NOINLINE vkCmdResolveImageSafe #-}
+##endif
+
+-- | Queues: 'graphics'.
+--
+--   Renderpass: @outside@
+--
+--   Pipeline: @transfer@
+--
+--   > void vkCmdResolveImage
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , VkImage srcImage
+--   >     , VkImageLayout srcImageLayout
+--   >     , VkImage dstImage
+--   >     , VkImageLayout dstImageLayout
+--   >     , uint32_t regionCount
+--   >     , const VkImageResolve* pRegions
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdResolveImage vkCmdResolveImage registry at www.khronos.org>
+type HS_vkCmdResolveImage =
+     VkCommandBuffer -- ^ commandBuffer
+                     ->
+       VkImage -- ^ srcImage
+               ->
+         VkImageLayout -- ^ srcImageLayout
+                       ->
+           VkImage -- ^ dstImage
+                   -> VkImageLayout -- ^ dstImageLayout
+                                    -> Word32 -- ^ regionCount
+                                              -> Ptr VkImageResolve -- ^ pRegions
+                                                                    -> IO ()
+
+type PFN_vkCmdResolveImage = FunPtr HS_vkCmdResolveImage
+
+foreign import ccall unsafe "dynamic" unwrapVkCmdResolveImage ::
+               PFN_vkCmdResolveImage -> HS_vkCmdResolveImage
+
+foreign import ccall safe "dynamic" unwrapVkCmdResolveImageSafe ::
+               PFN_vkCmdResolveImage -> HS_vkCmdResolveImage
+
+instance VulkanProc "vkCmdResolveImage" where
+        type VkProcType "vkCmdResolveImage" = HS_vkCmdResolveImage
+        vkProcSymbol = _VkCmdResolveImage
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkCmdResolveImage
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkCmdResolveImageSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCmdSetEvent :: CString
+
+pattern VkCmdSetEvent <- (is_VkCmdSetEvent -> True)
+  where VkCmdSetEvent = _VkCmdSetEvent
+
+{-# INLINE _VkCmdSetEvent #-}
+
+_VkCmdSetEvent :: CString
+_VkCmdSetEvent = Ptr "vkCmdSetEvent\NUL"##
+
+{-# INLINE is_VkCmdSetEvent #-}
+
+is_VkCmdSetEvent :: CString -> Bool
+is_VkCmdSetEvent = (EQ ==) . cmpCStrings _VkCmdSetEvent
+
+type VkCmdSetEvent = "vkCmdSetEvent"
+
+-- |
+-- Queues: 'graphics', 'compute'.
+--
+-- Renderpass: @outside@
+--
+-- > void vkCmdSetEvent
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkEvent event
+-- >     , VkPipelineStageFlags stageMask
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetEvent vkCmdSetEvent registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdSetEvent <- vkGetInstanceProc @VkCmdSetEvent vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdSetEvent <- vkGetProc @VkCmdSetEvent
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCmdSetEvent" vkCmdSetEvent ::
+               VkCommandBuffer -- ^ commandBuffer
+                               -> VkEvent -- ^ event
+                                          -> VkPipelineStageFlags -- ^ stageMask
+                                                                  -> IO ()
+
+##else
+vkCmdSetEvent ::
+              VkCommandBuffer -- ^ commandBuffer
+                              -> VkEvent -- ^ event
+                                         -> VkPipelineStageFlags -- ^ stageMask
+                                                                 -> IO ()
+vkCmdSetEvent = unsafeDupablePerformIO (vkGetProc @VkCmdSetEvent)
+
+{-# NOINLINE vkCmdSetEvent #-}
+##endif
+
+-- |
+-- Queues: 'graphics', 'compute'.
+--
+-- Renderpass: @outside@
+--
+-- > void vkCmdSetEvent
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkEvent event
+-- >     , VkPipelineStageFlags stageMask
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetEvent vkCmdSetEvent registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdSetEvent <- vkGetInstanceProc @VkCmdSetEvent vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdSetEvent <- vkGetProc @VkCmdSetEvent
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCmdSetEvent" vkCmdSetEventSafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               -> VkEvent -- ^ event
+                                          -> VkPipelineStageFlags -- ^ stageMask
+                                                                  -> IO ()
+
+##else
+vkCmdSetEventSafe ::
+                  VkCommandBuffer -- ^ commandBuffer
+                                  -> VkEvent -- ^ event
+                                             -> VkPipelineStageFlags -- ^ stageMask
+                                                                     -> IO ()
+vkCmdSetEventSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdSetEvent)
+
+{-# NOINLINE vkCmdSetEventSafe #-}
+##endif
+
+-- | Queues: 'graphics', 'compute'.
+--
+--   Renderpass: @outside@
+--
+--   > void vkCmdSetEvent
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , VkEvent event
+--   >     , VkPipelineStageFlags stageMask
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetEvent vkCmdSetEvent registry at www.khronos.org>
+type HS_vkCmdSetEvent =
+     VkCommandBuffer -- ^ commandBuffer
+                     -> VkEvent -- ^ event
+                                -> VkPipelineStageFlags -- ^ stageMask
+                                                        -> IO ()
+
+type PFN_vkCmdSetEvent = FunPtr HS_vkCmdSetEvent
+
+foreign import ccall unsafe "dynamic" unwrapVkCmdSetEvent ::
+               PFN_vkCmdSetEvent -> HS_vkCmdSetEvent
+
+foreign import ccall safe "dynamic" unwrapVkCmdSetEventSafe ::
+               PFN_vkCmdSetEvent -> HS_vkCmdSetEvent
+
+instance VulkanProc "vkCmdSetEvent" where
+        type VkProcType "vkCmdSetEvent" = HS_vkCmdSetEvent
+        vkProcSymbol = _VkCmdSetEvent
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkCmdSetEvent
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkCmdSetEventSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCmdResetEvent :: CString
+
+pattern VkCmdResetEvent <- (is_VkCmdResetEvent -> True)
+  where VkCmdResetEvent = _VkCmdResetEvent
+
+{-# INLINE _VkCmdResetEvent #-}
+
+_VkCmdResetEvent :: CString
+_VkCmdResetEvent = Ptr "vkCmdResetEvent\NUL"##
+
+{-# INLINE is_VkCmdResetEvent #-}
+
+is_VkCmdResetEvent :: CString -> Bool
+is_VkCmdResetEvent = (EQ ==) . cmpCStrings _VkCmdResetEvent
+
+type VkCmdResetEvent = "vkCmdResetEvent"
+
+-- |
+-- Queues: 'graphics', 'compute'.
+--
+-- Renderpass: @outside@
+--
+-- > void vkCmdResetEvent
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkEvent event
+-- >     , VkPipelineStageFlags stageMask
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdResetEvent vkCmdResetEvent registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdResetEvent <- vkGetInstanceProc @VkCmdResetEvent vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdResetEvent <- vkGetProc @VkCmdResetEvent
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCmdResetEvent" vkCmdResetEvent ::
+               VkCommandBuffer -- ^ commandBuffer
+                               -> VkEvent -- ^ event
+                                          -> VkPipelineStageFlags -- ^ stageMask
+                                                                  -> IO ()
+
+##else
+vkCmdResetEvent ::
+                VkCommandBuffer -- ^ commandBuffer
+                                -> VkEvent -- ^ event
+                                           -> VkPipelineStageFlags -- ^ stageMask
+                                                                   -> IO ()
+vkCmdResetEvent
+  = unsafeDupablePerformIO (vkGetProc @VkCmdResetEvent)
+
+{-# NOINLINE vkCmdResetEvent #-}
+##endif
+
+-- |
+-- Queues: 'graphics', 'compute'.
+--
+-- Renderpass: @outside@
+--
+-- > void vkCmdResetEvent
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkEvent event
+-- >     , VkPipelineStageFlags stageMask
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdResetEvent vkCmdResetEvent registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdResetEvent <- vkGetInstanceProc @VkCmdResetEvent vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdResetEvent <- vkGetProc @VkCmdResetEvent
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCmdResetEvent" vkCmdResetEventSafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               -> VkEvent -- ^ event
+                                          -> VkPipelineStageFlags -- ^ stageMask
+                                                                  -> IO ()
+
+##else
+vkCmdResetEventSafe ::
+                    VkCommandBuffer -- ^ commandBuffer
+                                    -> VkEvent -- ^ event
+                                               -> VkPipelineStageFlags -- ^ stageMask
+                                                                       -> IO ()
+vkCmdResetEventSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdResetEvent)
+
+{-# NOINLINE vkCmdResetEventSafe #-}
+##endif
+
+-- | Queues: 'graphics', 'compute'.
+--
+--   Renderpass: @outside@
+--
+--   > void vkCmdResetEvent
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , VkEvent event
+--   >     , VkPipelineStageFlags stageMask
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdResetEvent vkCmdResetEvent registry at www.khronos.org>
+type HS_vkCmdResetEvent =
+     VkCommandBuffer -- ^ commandBuffer
+                     -> VkEvent -- ^ event
+                                -> VkPipelineStageFlags -- ^ stageMask
+                                                        -> IO ()
+
+type PFN_vkCmdResetEvent = FunPtr HS_vkCmdResetEvent
+
+foreign import ccall unsafe "dynamic" unwrapVkCmdResetEvent ::
+               PFN_vkCmdResetEvent -> HS_vkCmdResetEvent
+
+foreign import ccall safe "dynamic" unwrapVkCmdResetEventSafe ::
+               PFN_vkCmdResetEvent -> HS_vkCmdResetEvent
+
+instance VulkanProc "vkCmdResetEvent" where
+        type VkProcType "vkCmdResetEvent" = HS_vkCmdResetEvent
+        vkProcSymbol = _VkCmdResetEvent
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkCmdResetEvent
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkCmdResetEventSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCmdWaitEvents :: CString
+
+pattern VkCmdWaitEvents <- (is_VkCmdWaitEvents -> True)
+  where VkCmdWaitEvents = _VkCmdWaitEvents
+
+{-# INLINE _VkCmdWaitEvents #-}
+
+_VkCmdWaitEvents :: CString
+_VkCmdWaitEvents = Ptr "vkCmdWaitEvents\NUL"##
+
+{-# INLINE is_VkCmdWaitEvents #-}
+
+is_VkCmdWaitEvents :: CString -> Bool
+is_VkCmdWaitEvents = (EQ ==) . cmpCStrings _VkCmdWaitEvents
+
+type VkCmdWaitEvents = "vkCmdWaitEvents"
+
+-- |
+-- Queues: 'graphics', 'compute'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdWaitEvents
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , uint32_t eventCount
+-- >     , const VkEvent* pEvents
+-- >     , VkPipelineStageFlags srcStageMask
+-- >     , VkPipelineStageFlags dstStageMask
+-- >     , uint32_t memoryBarrierCount
+-- >     , const VkMemoryBarrier* pMemoryBarriers
+-- >     , uint32_t bufferMemoryBarrierCount
+-- >     , const VkBufferMemoryBarrier* pBufferMemoryBarriers
+-- >     , uint32_t imageMemoryBarrierCount
+-- >     , const VkImageMemoryBarrier* pImageMemoryBarriers
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdWaitEvents vkCmdWaitEvents registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdWaitEvents <- vkGetInstanceProc @VkCmdWaitEvents vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdWaitEvents <- vkGetProc @VkCmdWaitEvents
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCmdWaitEvents" vkCmdWaitEvents ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 Word32 -- ^ eventCount
+                        ->
+                   Ptr VkEvent -- ^ pEvents
+                               ->
+                     VkPipelineStageFlags -- ^ srcStageMask
+                                          ->
+                       VkPipelineStageFlags -- ^ dstStageMask
+                                            ->
+                         Word32 -- ^ memoryBarrierCount
+                                ->
+                           Ptr VkMemoryBarrier -- ^ pMemoryBarriers
+                                               ->
+                             Word32 -- ^ bufferMemoryBarrierCount
+                                    ->
+                               Ptr VkBufferMemoryBarrier -- ^ pBufferMemoryBarriers
+                                                         ->
+                                 Word32 -- ^ imageMemoryBarrierCount
+                                        -> Ptr VkImageMemoryBarrier -- ^ pImageMemoryBarriers
+                                                                    -> IO ()
+
+##else
+vkCmdWaitEvents ::
+                VkCommandBuffer -- ^ commandBuffer
+                                ->
+                  Word32 -- ^ eventCount
+                         ->
+                    Ptr VkEvent -- ^ pEvents
+                                ->
+                      VkPipelineStageFlags -- ^ srcStageMask
+                                           ->
+                        VkPipelineStageFlags -- ^ dstStageMask
+                                             ->
+                          Word32 -- ^ memoryBarrierCount
+                                 ->
+                            Ptr VkMemoryBarrier -- ^ pMemoryBarriers
+                                                ->
+                              Word32 -- ^ bufferMemoryBarrierCount
+                                     ->
+                                Ptr VkBufferMemoryBarrier -- ^ pBufferMemoryBarriers
+                                                          ->
+                                  Word32 -- ^ imageMemoryBarrierCount
+                                         -> Ptr VkImageMemoryBarrier -- ^ pImageMemoryBarriers
+                                                                     -> IO ()
+vkCmdWaitEvents
+  = unsafeDupablePerformIO (vkGetProc @VkCmdWaitEvents)
+
+{-# NOINLINE vkCmdWaitEvents #-}
+##endif
+
+-- |
+-- Queues: 'graphics', 'compute'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdWaitEvents
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , uint32_t eventCount
+-- >     , const VkEvent* pEvents
+-- >     , VkPipelineStageFlags srcStageMask
+-- >     , VkPipelineStageFlags dstStageMask
+-- >     , uint32_t memoryBarrierCount
+-- >     , const VkMemoryBarrier* pMemoryBarriers
+-- >     , uint32_t bufferMemoryBarrierCount
+-- >     , const VkBufferMemoryBarrier* pBufferMemoryBarriers
+-- >     , uint32_t imageMemoryBarrierCount
+-- >     , const VkImageMemoryBarrier* pImageMemoryBarriers
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdWaitEvents vkCmdWaitEvents registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdWaitEvents <- vkGetInstanceProc @VkCmdWaitEvents vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdWaitEvents <- vkGetProc @VkCmdWaitEvents
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCmdWaitEvents" vkCmdWaitEventsSafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 Word32 -- ^ eventCount
+                        ->
+                   Ptr VkEvent -- ^ pEvents
+                               ->
+                     VkPipelineStageFlags -- ^ srcStageMask
+                                          ->
+                       VkPipelineStageFlags -- ^ dstStageMask
+                                            ->
+                         Word32 -- ^ memoryBarrierCount
+                                ->
+                           Ptr VkMemoryBarrier -- ^ pMemoryBarriers
+                                               ->
+                             Word32 -- ^ bufferMemoryBarrierCount
+                                    ->
+                               Ptr VkBufferMemoryBarrier -- ^ pBufferMemoryBarriers
+                                                         ->
+                                 Word32 -- ^ imageMemoryBarrierCount
+                                        -> Ptr VkImageMemoryBarrier -- ^ pImageMemoryBarriers
+                                                                    -> IO ()
+
+##else
+vkCmdWaitEventsSafe ::
+                    VkCommandBuffer -- ^ commandBuffer
+                                    ->
+                      Word32 -- ^ eventCount
+                             ->
+                        Ptr VkEvent -- ^ pEvents
+                                    ->
+                          VkPipelineStageFlags -- ^ srcStageMask
+                                               ->
+                            VkPipelineStageFlags -- ^ dstStageMask
+                                                 ->
+                              Word32 -- ^ memoryBarrierCount
+                                     ->
+                                Ptr VkMemoryBarrier -- ^ pMemoryBarriers
+                                                    ->
+                                  Word32 -- ^ bufferMemoryBarrierCount
+                                         ->
+                                    Ptr VkBufferMemoryBarrier -- ^ pBufferMemoryBarriers
+                                                              ->
+                                      Word32 -- ^ imageMemoryBarrierCount
+                                             -> Ptr VkImageMemoryBarrier -- ^ pImageMemoryBarriers
+                                                                         -> IO ()
+vkCmdWaitEventsSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdWaitEvents)
+
+{-# NOINLINE vkCmdWaitEventsSafe #-}
+##endif
+
+-- | Queues: 'graphics', 'compute'.
+--
+--   Renderpass: @both@
+--
+--   > void vkCmdWaitEvents
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , uint32_t eventCount
+--   >     , const VkEvent* pEvents
+--   >     , VkPipelineStageFlags srcStageMask
+--   >     , VkPipelineStageFlags dstStageMask
+--   >     , uint32_t memoryBarrierCount
+--   >     , const VkMemoryBarrier* pMemoryBarriers
+--   >     , uint32_t bufferMemoryBarrierCount
+--   >     , const VkBufferMemoryBarrier* pBufferMemoryBarriers
+--   >     , uint32_t imageMemoryBarrierCount
+--   >     , const VkImageMemoryBarrier* pImageMemoryBarriers
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdWaitEvents vkCmdWaitEvents registry at www.khronos.org>
+type HS_vkCmdWaitEvents =
+     VkCommandBuffer -- ^ commandBuffer
+                     ->
+       Word32 -- ^ eventCount
+              ->
+         Ptr VkEvent -- ^ pEvents
+                     ->
+           VkPipelineStageFlags -- ^ srcStageMask
+                                ->
+             VkPipelineStageFlags -- ^ dstStageMask
+                                  ->
+               Word32 -- ^ memoryBarrierCount
+                      ->
+                 Ptr VkMemoryBarrier -- ^ pMemoryBarriers
+                                     ->
+                   Word32 -- ^ bufferMemoryBarrierCount
+                          ->
+                     Ptr VkBufferMemoryBarrier -- ^ pBufferMemoryBarriers
+                                               ->
+                       Word32 -- ^ imageMemoryBarrierCount
+                              -> Ptr VkImageMemoryBarrier -- ^ pImageMemoryBarriers
+                                                          -> IO ()
+
+type PFN_vkCmdWaitEvents = FunPtr HS_vkCmdWaitEvents
+
+foreign import ccall unsafe "dynamic" unwrapVkCmdWaitEvents ::
+               PFN_vkCmdWaitEvents -> HS_vkCmdWaitEvents
+
+foreign import ccall safe "dynamic" unwrapVkCmdWaitEventsSafe ::
+               PFN_vkCmdWaitEvents -> HS_vkCmdWaitEvents
+
+instance VulkanProc "vkCmdWaitEvents" where
+        type VkProcType "vkCmdWaitEvents" = HS_vkCmdWaitEvents
+        vkProcSymbol = _VkCmdWaitEvents
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkCmdWaitEvents
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkCmdWaitEventsSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCmdPipelineBarrier :: CString
+
+pattern VkCmdPipelineBarrier <- (is_VkCmdPipelineBarrier -> True)
+  where VkCmdPipelineBarrier = _VkCmdPipelineBarrier
+
+{-# INLINE _VkCmdPipelineBarrier #-}
+
+_VkCmdPipelineBarrier :: CString
+_VkCmdPipelineBarrier = Ptr "vkCmdPipelineBarrier\NUL"##
+
+{-# INLINE is_VkCmdPipelineBarrier #-}
+
+is_VkCmdPipelineBarrier :: CString -> Bool
+is_VkCmdPipelineBarrier
+  = (EQ ==) . cmpCStrings _VkCmdPipelineBarrier
+
+type VkCmdPipelineBarrier = "vkCmdPipelineBarrier"
+
+-- |
+-- Queues: 'transfer', 'graphics', 'compute'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdPipelineBarrier
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkPipelineStageFlags srcStageMask
+-- >     , VkPipelineStageFlags dstStageMask
+-- >     , VkDependencyFlags dependencyFlags
+-- >     , uint32_t memoryBarrierCount
+-- >     , const VkMemoryBarrier* pMemoryBarriers
+-- >     , uint32_t bufferMemoryBarrierCount
+-- >     , const VkBufferMemoryBarrier* pBufferMemoryBarriers
+-- >     , uint32_t imageMemoryBarrierCount
+-- >     , const VkImageMemoryBarrier* pImageMemoryBarriers
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdPipelineBarrier vkCmdPipelineBarrier registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdPipelineBarrier <- vkGetInstanceProc @VkCmdPipelineBarrier vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdPipelineBarrier <- vkGetProc @VkCmdPipelineBarrier
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCmdPipelineBarrier"
+               vkCmdPipelineBarrier ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 VkPipelineStageFlags -- ^ srcStageMask
+                                      ->
+                   VkPipelineStageFlags -- ^ dstStageMask
+                                        ->
+                     VkDependencyFlags -- ^ dependencyFlags
+                                       ->
+                       Word32 -- ^ memoryBarrierCount
+                              ->
+                         Ptr VkMemoryBarrier -- ^ pMemoryBarriers
+                                             ->
+                           Word32 -- ^ bufferMemoryBarrierCount
+                                  ->
+                             Ptr VkBufferMemoryBarrier -- ^ pBufferMemoryBarriers
+                                                       ->
+                               Word32 -- ^ imageMemoryBarrierCount
+                                      -> Ptr VkImageMemoryBarrier -- ^ pImageMemoryBarriers
+                                                                  -> IO ()
+
+##else
+vkCmdPipelineBarrier ::
+                     VkCommandBuffer -- ^ commandBuffer
+                                     ->
+                       VkPipelineStageFlags -- ^ srcStageMask
+                                            ->
+                         VkPipelineStageFlags -- ^ dstStageMask
+                                              ->
+                           VkDependencyFlags -- ^ dependencyFlags
+                                             ->
+                             Word32 -- ^ memoryBarrierCount
+                                    ->
+                               Ptr VkMemoryBarrier -- ^ pMemoryBarriers
+                                                   ->
+                                 Word32 -- ^ bufferMemoryBarrierCount
+                                        ->
+                                   Ptr VkBufferMemoryBarrier -- ^ pBufferMemoryBarriers
+                                                             ->
+                                     Word32 -- ^ imageMemoryBarrierCount
+                                            -> Ptr VkImageMemoryBarrier -- ^ pImageMemoryBarriers
+                                                                        -> IO ()
+vkCmdPipelineBarrier
+  = unsafeDupablePerformIO (vkGetProc @VkCmdPipelineBarrier)
+
+{-# NOINLINE vkCmdPipelineBarrier #-}
+##endif
+
+-- |
+-- Queues: 'transfer', 'graphics', 'compute'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdPipelineBarrier
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkPipelineStageFlags srcStageMask
+-- >     , VkPipelineStageFlags dstStageMask
+-- >     , VkDependencyFlags dependencyFlags
+-- >     , uint32_t memoryBarrierCount
+-- >     , const VkMemoryBarrier* pMemoryBarriers
+-- >     , uint32_t bufferMemoryBarrierCount
+-- >     , const VkBufferMemoryBarrier* pBufferMemoryBarriers
+-- >     , uint32_t imageMemoryBarrierCount
+-- >     , const VkImageMemoryBarrier* pImageMemoryBarriers
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdPipelineBarrier vkCmdPipelineBarrier registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdPipelineBarrier <- vkGetInstanceProc @VkCmdPipelineBarrier vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdPipelineBarrier <- vkGetProc @VkCmdPipelineBarrier
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCmdPipelineBarrier"
+               vkCmdPipelineBarrierSafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 VkPipelineStageFlags -- ^ srcStageMask
+                                      ->
+                   VkPipelineStageFlags -- ^ dstStageMask
+                                        ->
+                     VkDependencyFlags -- ^ dependencyFlags
+                                       ->
+                       Word32 -- ^ memoryBarrierCount
+                              ->
+                         Ptr VkMemoryBarrier -- ^ pMemoryBarriers
+                                             ->
+                           Word32 -- ^ bufferMemoryBarrierCount
+                                  ->
+                             Ptr VkBufferMemoryBarrier -- ^ pBufferMemoryBarriers
+                                                       ->
+                               Word32 -- ^ imageMemoryBarrierCount
+                                      -> Ptr VkImageMemoryBarrier -- ^ pImageMemoryBarriers
+                                                                  -> IO ()
+
+##else
+vkCmdPipelineBarrierSafe ::
+                         VkCommandBuffer -- ^ commandBuffer
+                                         ->
+                           VkPipelineStageFlags -- ^ srcStageMask
+                                                ->
+                             VkPipelineStageFlags -- ^ dstStageMask
+                                                  ->
+                               VkDependencyFlags -- ^ dependencyFlags
+                                                 ->
+                                 Word32 -- ^ memoryBarrierCount
+                                        ->
+                                   Ptr VkMemoryBarrier -- ^ pMemoryBarriers
+                                                       ->
+                                     Word32 -- ^ bufferMemoryBarrierCount
+                                            ->
+                                       Ptr VkBufferMemoryBarrier -- ^ pBufferMemoryBarriers
+                                                                 ->
+                                         Word32 -- ^ imageMemoryBarrierCount
+                                                -> Ptr VkImageMemoryBarrier -- ^ pImageMemoryBarriers
+                                                                            -> IO ()
+vkCmdPipelineBarrierSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdPipelineBarrier)
+
+{-# NOINLINE vkCmdPipelineBarrierSafe #-}
+##endif
+
+-- | Queues: 'transfer', 'graphics', 'compute'.
+--
+--   Renderpass: @both@
+--
+--   > void vkCmdPipelineBarrier
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , VkPipelineStageFlags srcStageMask
+--   >     , VkPipelineStageFlags dstStageMask
+--   >     , VkDependencyFlags dependencyFlags
+--   >     , uint32_t memoryBarrierCount
+--   >     , const VkMemoryBarrier* pMemoryBarriers
+--   >     , uint32_t bufferMemoryBarrierCount
+--   >     , const VkBufferMemoryBarrier* pBufferMemoryBarriers
+--   >     , uint32_t imageMemoryBarrierCount
+--   >     , const VkImageMemoryBarrier* pImageMemoryBarriers
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdPipelineBarrier vkCmdPipelineBarrier registry at www.khronos.org>
+type HS_vkCmdPipelineBarrier =
+     VkCommandBuffer -- ^ commandBuffer
+                     ->
+       VkPipelineStageFlags -- ^ srcStageMask
+                            ->
+         VkPipelineStageFlags -- ^ dstStageMask
+                              ->
+           VkDependencyFlags -- ^ dependencyFlags
+                             ->
+             Word32 -- ^ memoryBarrierCount
+                    ->
+               Ptr VkMemoryBarrier -- ^ pMemoryBarriers
+                                   ->
+                 Word32 -- ^ bufferMemoryBarrierCount
+                        ->
+                   Ptr VkBufferMemoryBarrier -- ^ pBufferMemoryBarriers
+                                             ->
+                     Word32 -- ^ imageMemoryBarrierCount
+                            -> Ptr VkImageMemoryBarrier -- ^ pImageMemoryBarriers
+                                                        -> IO ()
+
+type PFN_vkCmdPipelineBarrier = FunPtr HS_vkCmdPipelineBarrier
+
+foreign import ccall unsafe "dynamic" unwrapVkCmdPipelineBarrier ::
+               PFN_vkCmdPipelineBarrier -> HS_vkCmdPipelineBarrier
+
+foreign import ccall safe "dynamic" unwrapVkCmdPipelineBarrierSafe
+               :: PFN_vkCmdPipelineBarrier -> HS_vkCmdPipelineBarrier
+
+instance VulkanProc "vkCmdPipelineBarrier" where
+        type VkProcType "vkCmdPipelineBarrier" = HS_vkCmdPipelineBarrier
+        vkProcSymbol = _VkCmdPipelineBarrier
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkCmdPipelineBarrier
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkCmdPipelineBarrierSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCmdBeginQuery :: CString
+
+pattern VkCmdBeginQuery <- (is_VkCmdBeginQuery -> True)
+  where VkCmdBeginQuery = _VkCmdBeginQuery
+
+{-# INLINE _VkCmdBeginQuery #-}
+
+_VkCmdBeginQuery :: CString
+_VkCmdBeginQuery = Ptr "vkCmdBeginQuery\NUL"##
+
+{-# INLINE is_VkCmdBeginQuery #-}
+
+is_VkCmdBeginQuery :: CString -> Bool
+is_VkCmdBeginQuery = (EQ ==) . cmpCStrings _VkCmdBeginQuery
+
+type VkCmdBeginQuery = "vkCmdBeginQuery"
+
+-- |
+-- Queues: 'graphics', 'compute'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdBeginQuery
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkQueryPool queryPool
+-- >     , uint32_t query
+-- >     , VkQueryControlFlags flags
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBeginQuery vkCmdBeginQuery registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdBeginQuery <- vkGetInstanceProc @VkCmdBeginQuery vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdBeginQuery <- vkGetProc @VkCmdBeginQuery
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCmdBeginQuery" vkCmdBeginQuery ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 VkQueryPool -- ^ queryPool
+                             -> Word32 -- ^ query
+                                       -> VkQueryControlFlags -- ^ flags
+                                                              -> IO ()
+
+##else
+vkCmdBeginQuery ::
+                VkCommandBuffer -- ^ commandBuffer
+                                ->
+                  VkQueryPool -- ^ queryPool
+                              -> Word32 -- ^ query
+                                        -> VkQueryControlFlags -- ^ flags
+                                                               -> IO ()
+vkCmdBeginQuery
+  = unsafeDupablePerformIO (vkGetProc @VkCmdBeginQuery)
+
+{-# NOINLINE vkCmdBeginQuery #-}
+##endif
+
+-- |
+-- Queues: 'graphics', 'compute'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdBeginQuery
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkQueryPool queryPool
+-- >     , uint32_t query
+-- >     , VkQueryControlFlags flags
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBeginQuery vkCmdBeginQuery registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdBeginQuery <- vkGetInstanceProc @VkCmdBeginQuery vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdBeginQuery <- vkGetProc @VkCmdBeginQuery
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCmdBeginQuery" vkCmdBeginQuerySafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 VkQueryPool -- ^ queryPool
+                             -> Word32 -- ^ query
+                                       -> VkQueryControlFlags -- ^ flags
+                                                              -> IO ()
+
+##else
+vkCmdBeginQuerySafe ::
+                    VkCommandBuffer -- ^ commandBuffer
+                                    ->
+                      VkQueryPool -- ^ queryPool
+                                  -> Word32 -- ^ query
+                                            -> VkQueryControlFlags -- ^ flags
+                                                                   -> IO ()
+vkCmdBeginQuerySafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdBeginQuery)
+
+{-# NOINLINE vkCmdBeginQuerySafe #-}
+##endif
+
+-- | Queues: 'graphics', 'compute'.
+--
+--   Renderpass: @both@
+--
+--   > void vkCmdBeginQuery
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , VkQueryPool queryPool
+--   >     , uint32_t query
+--   >     , VkQueryControlFlags flags
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBeginQuery vkCmdBeginQuery registry at www.khronos.org>
+type HS_vkCmdBeginQuery =
+     VkCommandBuffer -- ^ commandBuffer
+                     ->
+       VkQueryPool -- ^ queryPool
+                   -> Word32 -- ^ query
+                             -> VkQueryControlFlags -- ^ flags
+                                                    -> IO ()
+
+type PFN_vkCmdBeginQuery = FunPtr HS_vkCmdBeginQuery
+
+foreign import ccall unsafe "dynamic" unwrapVkCmdBeginQuery ::
+               PFN_vkCmdBeginQuery -> HS_vkCmdBeginQuery
+
+foreign import ccall safe "dynamic" unwrapVkCmdBeginQuerySafe ::
+               PFN_vkCmdBeginQuery -> HS_vkCmdBeginQuery
+
+instance VulkanProc "vkCmdBeginQuery" where
+        type VkProcType "vkCmdBeginQuery" = HS_vkCmdBeginQuery
+        vkProcSymbol = _VkCmdBeginQuery
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkCmdBeginQuery
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkCmdBeginQuerySafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCmdEndQuery :: CString
+
+pattern VkCmdEndQuery <- (is_VkCmdEndQuery -> True)
+  where VkCmdEndQuery = _VkCmdEndQuery
+
+{-# INLINE _VkCmdEndQuery #-}
+
+_VkCmdEndQuery :: CString
+_VkCmdEndQuery = Ptr "vkCmdEndQuery\NUL"##
+
+{-# INLINE is_VkCmdEndQuery #-}
+
+is_VkCmdEndQuery :: CString -> Bool
+is_VkCmdEndQuery = (EQ ==) . cmpCStrings _VkCmdEndQuery
+
+type VkCmdEndQuery = "vkCmdEndQuery"
+
+-- |
+-- Queues: 'graphics', 'compute'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdEndQuery
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkQueryPool queryPool
+-- >     , uint32_t query
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdEndQuery vkCmdEndQuery registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdEndQuery <- vkGetInstanceProc @VkCmdEndQuery vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdEndQuery <- vkGetProc @VkCmdEndQuery
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCmdEndQuery" vkCmdEndQuery ::
+               VkCommandBuffer -- ^ commandBuffer
+                               -> VkQueryPool -- ^ queryPool
+                                              -> Word32 -- ^ query
+                                                        -> IO ()
+
+##else
+vkCmdEndQuery :: VkCommandBuffer -- ^ commandBuffer
+                                 -> VkQueryPool -- ^ queryPool
+                                                -> Word32 -- ^ query
+                                                          -> IO ()
+vkCmdEndQuery = unsafeDupablePerformIO (vkGetProc @VkCmdEndQuery)
+
+{-# NOINLINE vkCmdEndQuery #-}
+##endif
+
+-- |
+-- Queues: 'graphics', 'compute'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdEndQuery
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkQueryPool queryPool
+-- >     , uint32_t query
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdEndQuery vkCmdEndQuery registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdEndQuery <- vkGetInstanceProc @VkCmdEndQuery vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdEndQuery <- vkGetProc @VkCmdEndQuery
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCmdEndQuery" vkCmdEndQuerySafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               -> VkQueryPool -- ^ queryPool
+                                              -> Word32 -- ^ query
+                                                        -> IO ()
+
+##else
+vkCmdEndQuerySafe ::
+                  VkCommandBuffer -- ^ commandBuffer
+                                  -> VkQueryPool -- ^ queryPool
+                                                 -> Word32 -- ^ query
+                                                           -> IO ()
+vkCmdEndQuerySafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdEndQuery)
+
+{-# NOINLINE vkCmdEndQuerySafe #-}
+##endif
+
+-- | Queues: 'graphics', 'compute'.
+--
+--   Renderpass: @both@
+--
+--   > void vkCmdEndQuery
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , VkQueryPool queryPool
+--   >     , uint32_t query
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdEndQuery vkCmdEndQuery registry at www.khronos.org>
+type HS_vkCmdEndQuery =
+     VkCommandBuffer -- ^ commandBuffer
+                     -> VkQueryPool -- ^ queryPool
+                                    -> Word32 -- ^ query
+                                              -> IO ()
+
+type PFN_vkCmdEndQuery = FunPtr HS_vkCmdEndQuery
+
+foreign import ccall unsafe "dynamic" unwrapVkCmdEndQuery ::
+               PFN_vkCmdEndQuery -> HS_vkCmdEndQuery
+
+foreign import ccall safe "dynamic" unwrapVkCmdEndQuerySafe ::
+               PFN_vkCmdEndQuery -> HS_vkCmdEndQuery
+
+instance VulkanProc "vkCmdEndQuery" where
+        type VkProcType "vkCmdEndQuery" = HS_vkCmdEndQuery
+        vkProcSymbol = _VkCmdEndQuery
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkCmdEndQuery
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkCmdEndQuerySafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCmdResetQueryPool :: CString
+
+pattern VkCmdResetQueryPool <- (is_VkCmdResetQueryPool -> True)
+  where VkCmdResetQueryPool = _VkCmdResetQueryPool
+
+{-# INLINE _VkCmdResetQueryPool #-}
+
+_VkCmdResetQueryPool :: CString
+_VkCmdResetQueryPool = Ptr "vkCmdResetQueryPool\NUL"##
+
+{-# INLINE is_VkCmdResetQueryPool #-}
+
+is_VkCmdResetQueryPool :: CString -> Bool
+is_VkCmdResetQueryPool = (EQ ==) . cmpCStrings _VkCmdResetQueryPool
+
+type VkCmdResetQueryPool = "vkCmdResetQueryPool"
+
+-- |
+-- Queues: 'graphics', 'compute'.
+--
+-- Renderpass: @outside@
+--
+-- > void vkCmdResetQueryPool
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkQueryPool queryPool
+-- >     , uint32_t firstQuery
+-- >     , uint32_t queryCount
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdResetQueryPool vkCmdResetQueryPool registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdResetQueryPool <- vkGetInstanceProc @VkCmdResetQueryPool vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdResetQueryPool <- vkGetProc @VkCmdResetQueryPool
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCmdResetQueryPool"
+               vkCmdResetQueryPool ::
+               VkCommandBuffer -- ^ commandBuffer
+                               -> VkQueryPool -- ^ queryPool
+                                              -> Word32 -- ^ firstQuery
+                                                        -> Word32 -- ^ queryCount
+                                                                  -> IO ()
+
+##else
+vkCmdResetQueryPool ::
+                    VkCommandBuffer -- ^ commandBuffer
+                                    -> VkQueryPool -- ^ queryPool
+                                                   -> Word32 -- ^ firstQuery
+                                                             -> Word32 -- ^ queryCount
+                                                                       -> IO ()
+vkCmdResetQueryPool
+  = unsafeDupablePerformIO (vkGetProc @VkCmdResetQueryPool)
+
+{-# NOINLINE vkCmdResetQueryPool #-}
+##endif
+
+-- |
+-- Queues: 'graphics', 'compute'.
+--
+-- Renderpass: @outside@
+--
+-- > void vkCmdResetQueryPool
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkQueryPool queryPool
+-- >     , uint32_t firstQuery
+-- >     , uint32_t queryCount
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdResetQueryPool vkCmdResetQueryPool registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdResetQueryPool <- vkGetInstanceProc @VkCmdResetQueryPool vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdResetQueryPool <- vkGetProc @VkCmdResetQueryPool
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCmdResetQueryPool"
+               vkCmdResetQueryPoolSafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               -> VkQueryPool -- ^ queryPool
+                                              -> Word32 -- ^ firstQuery
+                                                        -> Word32 -- ^ queryCount
+                                                                  -> IO ()
+
+##else
+vkCmdResetQueryPoolSafe ::
+                        VkCommandBuffer -- ^ commandBuffer
+                                        -> VkQueryPool -- ^ queryPool
+                                                       -> Word32 -- ^ firstQuery
+                                                                 -> Word32 -- ^ queryCount
+                                                                           -> IO ()
+vkCmdResetQueryPoolSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdResetQueryPool)
+
+{-# NOINLINE vkCmdResetQueryPoolSafe #-}
+##endif
+
+-- | Queues: 'graphics', 'compute'.
+--
+--   Renderpass: @outside@
+--
+--   > void vkCmdResetQueryPool
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , VkQueryPool queryPool
+--   >     , uint32_t firstQuery
+--   >     , uint32_t queryCount
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdResetQueryPool vkCmdResetQueryPool registry at www.khronos.org>
+type HS_vkCmdResetQueryPool =
+     VkCommandBuffer -- ^ commandBuffer
+                     -> VkQueryPool -- ^ queryPool
+                                    -> Word32 -- ^ firstQuery
+                                              -> Word32 -- ^ queryCount
+                                                        -> IO ()
+
+type PFN_vkCmdResetQueryPool = FunPtr HS_vkCmdResetQueryPool
+
+foreign import ccall unsafe "dynamic" unwrapVkCmdResetQueryPool ::
+               PFN_vkCmdResetQueryPool -> HS_vkCmdResetQueryPool
+
+foreign import ccall safe "dynamic" unwrapVkCmdResetQueryPoolSafe
+               :: PFN_vkCmdResetQueryPool -> HS_vkCmdResetQueryPool
+
+instance VulkanProc "vkCmdResetQueryPool" where
+        type VkProcType "vkCmdResetQueryPool" = HS_vkCmdResetQueryPool
+        vkProcSymbol = _VkCmdResetQueryPool
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkCmdResetQueryPool
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkCmdResetQueryPoolSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCmdWriteTimestamp :: CString
+
+pattern VkCmdWriteTimestamp <- (is_VkCmdWriteTimestamp -> True)
+  where VkCmdWriteTimestamp = _VkCmdWriteTimestamp
+
+{-# INLINE _VkCmdWriteTimestamp #-}
+
+_VkCmdWriteTimestamp :: CString
+_VkCmdWriteTimestamp = Ptr "vkCmdWriteTimestamp\NUL"##
+
+{-# INLINE is_VkCmdWriteTimestamp #-}
+
+is_VkCmdWriteTimestamp :: CString -> Bool
+is_VkCmdWriteTimestamp = (EQ ==) . cmpCStrings _VkCmdWriteTimestamp
+
+type VkCmdWriteTimestamp = "vkCmdWriteTimestamp"
+
+-- |
+-- Queues: 'transfer', 'graphics', 'compute'.
+--
+-- Renderpass: @both@
+--
+-- Pipeline: @transfer@
+--
+-- > void vkCmdWriteTimestamp
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkPipelineStageFlagBits pipelineStage
+-- >     , VkQueryPool queryPool
+-- >     , uint32_t query
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdWriteTimestamp vkCmdWriteTimestamp registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdWriteTimestamp <- vkGetInstanceProc @VkCmdWriteTimestamp vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdWriteTimestamp <- vkGetProc @VkCmdWriteTimestamp
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCmdWriteTimestamp"
+               vkCmdWriteTimestamp ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 VkPipelineStageFlagBits -- ^ pipelineStage
+                                         -> VkQueryPool -- ^ queryPool
+                                                        -> Word32 -- ^ query
+                                                                  -> IO ()
+
+##else
+vkCmdWriteTimestamp ::
+                    VkCommandBuffer -- ^ commandBuffer
+                                    ->
+                      VkPipelineStageFlagBits -- ^ pipelineStage
+                                              -> VkQueryPool -- ^ queryPool
+                                                             -> Word32 -- ^ query
+                                                                       -> IO ()
+vkCmdWriteTimestamp
+  = unsafeDupablePerformIO (vkGetProc @VkCmdWriteTimestamp)
+
+{-# NOINLINE vkCmdWriteTimestamp #-}
+##endif
+
+-- |
+-- Queues: 'transfer', 'graphics', 'compute'.
+--
+-- Renderpass: @both@
+--
+-- Pipeline: @transfer@
+--
+-- > void vkCmdWriteTimestamp
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkPipelineStageFlagBits pipelineStage
+-- >     , VkQueryPool queryPool
+-- >     , uint32_t query
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdWriteTimestamp vkCmdWriteTimestamp registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdWriteTimestamp <- vkGetInstanceProc @VkCmdWriteTimestamp vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdWriteTimestamp <- vkGetProc @VkCmdWriteTimestamp
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCmdWriteTimestamp"
+               vkCmdWriteTimestampSafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 VkPipelineStageFlagBits -- ^ pipelineStage
+                                         -> VkQueryPool -- ^ queryPool
+                                                        -> Word32 -- ^ query
+                                                                  -> IO ()
+
+##else
+vkCmdWriteTimestampSafe ::
+                        VkCommandBuffer -- ^ commandBuffer
+                                        ->
+                          VkPipelineStageFlagBits -- ^ pipelineStage
+                                                  -> VkQueryPool -- ^ queryPool
+                                                                 -> Word32 -- ^ query
+                                                                           -> IO ()
+vkCmdWriteTimestampSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdWriteTimestamp)
+
+{-# NOINLINE vkCmdWriteTimestampSafe #-}
+##endif
+
+-- | Queues: 'transfer', 'graphics', 'compute'.
+--
+--   Renderpass: @both@
+--
+--   Pipeline: @transfer@
+--
+--   > void vkCmdWriteTimestamp
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , VkPipelineStageFlagBits pipelineStage
+--   >     , VkQueryPool queryPool
+--   >     , uint32_t query
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdWriteTimestamp vkCmdWriteTimestamp registry at www.khronos.org>
+type HS_vkCmdWriteTimestamp =
+     VkCommandBuffer -- ^ commandBuffer
+                     ->
+       VkPipelineStageFlagBits -- ^ pipelineStage
+                               -> VkQueryPool -- ^ queryPool
+                                              -> Word32 -- ^ query
+                                                        -> IO ()
+
+type PFN_vkCmdWriteTimestamp = FunPtr HS_vkCmdWriteTimestamp
+
+foreign import ccall unsafe "dynamic" unwrapVkCmdWriteTimestamp ::
+               PFN_vkCmdWriteTimestamp -> HS_vkCmdWriteTimestamp
+
+foreign import ccall safe "dynamic" unwrapVkCmdWriteTimestampSafe
+               :: PFN_vkCmdWriteTimestamp -> HS_vkCmdWriteTimestamp
+
+instance VulkanProc "vkCmdWriteTimestamp" where
+        type VkProcType "vkCmdWriteTimestamp" = HS_vkCmdWriteTimestamp
+        vkProcSymbol = _VkCmdWriteTimestamp
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkCmdWriteTimestamp
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkCmdWriteTimestampSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCmdCopyQueryPoolResults :: CString
+
+pattern VkCmdCopyQueryPoolResults <-
+        (is_VkCmdCopyQueryPoolResults -> True)
+  where VkCmdCopyQueryPoolResults = _VkCmdCopyQueryPoolResults
+
+{-# INLINE _VkCmdCopyQueryPoolResults #-}
+
+_VkCmdCopyQueryPoolResults :: CString
+_VkCmdCopyQueryPoolResults = Ptr "vkCmdCopyQueryPoolResults\NUL"##
+
+{-# INLINE is_VkCmdCopyQueryPoolResults #-}
+
+is_VkCmdCopyQueryPoolResults :: CString -> Bool
+is_VkCmdCopyQueryPoolResults
+  = (EQ ==) . cmpCStrings _VkCmdCopyQueryPoolResults
+
+type VkCmdCopyQueryPoolResults = "vkCmdCopyQueryPoolResults"
+
+-- |
+-- Queues: 'graphics', 'compute'.
+--
+-- Renderpass: @outside@
+--
+-- Pipeline: @transfer@
+--
+-- > void vkCmdCopyQueryPoolResults
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkQueryPool queryPool
+-- >     , uint32_t firstQuery
+-- >     , uint32_t queryCount
+-- >     , VkBuffer dstBuffer
+-- >     , VkDeviceSize dstOffset
+-- >     , VkDeviceSize stride
+-- >     , VkQueryResultFlags flags
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdCopyQueryPoolResults vkCmdCopyQueryPoolResults registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdCopyQueryPoolResults <- vkGetInstanceProc @VkCmdCopyQueryPoolResults vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdCopyQueryPoolResults <- vkGetProc @VkCmdCopyQueryPoolResults
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCmdCopyQueryPoolResults"
+               vkCmdCopyQueryPoolResults ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 VkQueryPool -- ^ queryPool
+                             ->
+                   Word32 -- ^ firstQuery
+                          ->
+                     Word32 -- ^ queryCount
+                            ->
+                       VkBuffer -- ^ dstBuffer
+                                ->
+                         VkDeviceSize -- ^ dstOffset
+                                      -> VkDeviceSize -- ^ stride
+                                                      -> VkQueryResultFlags -- ^ flags
+                                                                            -> IO ()
+
+##else
+vkCmdCopyQueryPoolResults ::
+                          VkCommandBuffer -- ^ commandBuffer
+                                          ->
+                            VkQueryPool -- ^ queryPool
+                                        ->
+                              Word32 -- ^ firstQuery
+                                     ->
+                                Word32 -- ^ queryCount
+                                       ->
+                                  VkBuffer -- ^ dstBuffer
+                                           ->
+                                    VkDeviceSize -- ^ dstOffset
+                                                 -> VkDeviceSize -- ^ stride
+                                                                 -> VkQueryResultFlags -- ^ flags
+                                                                                       -> IO ()
+vkCmdCopyQueryPoolResults
+  = unsafeDupablePerformIO (vkGetProc @VkCmdCopyQueryPoolResults)
+
+{-# NOINLINE vkCmdCopyQueryPoolResults #-}
+##endif
+
+-- |
+-- Queues: 'graphics', 'compute'.
+--
+-- Renderpass: @outside@
+--
+-- Pipeline: @transfer@
+--
+-- > void vkCmdCopyQueryPoolResults
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkQueryPool queryPool
+-- >     , uint32_t firstQuery
+-- >     , uint32_t queryCount
+-- >     , VkBuffer dstBuffer
+-- >     , VkDeviceSize dstOffset
+-- >     , VkDeviceSize stride
+-- >     , VkQueryResultFlags flags
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdCopyQueryPoolResults vkCmdCopyQueryPoolResults registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdCopyQueryPoolResults <- vkGetInstanceProc @VkCmdCopyQueryPoolResults vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdCopyQueryPoolResults <- vkGetProc @VkCmdCopyQueryPoolResults
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCmdCopyQueryPoolResults"
+               vkCmdCopyQueryPoolResultsSafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 VkQueryPool -- ^ queryPool
+                             ->
+                   Word32 -- ^ firstQuery
+                          ->
+                     Word32 -- ^ queryCount
+                            ->
+                       VkBuffer -- ^ dstBuffer
+                                ->
+                         VkDeviceSize -- ^ dstOffset
+                                      -> VkDeviceSize -- ^ stride
+                                                      -> VkQueryResultFlags -- ^ flags
+                                                                            -> IO ()
+
+##else
+vkCmdCopyQueryPoolResultsSafe ::
+                              VkCommandBuffer -- ^ commandBuffer
+                                              ->
+                                VkQueryPool -- ^ queryPool
+                                            ->
+                                  Word32 -- ^ firstQuery
+                                         ->
+                                    Word32 -- ^ queryCount
+                                           ->
+                                      VkBuffer -- ^ dstBuffer
+                                               ->
+                                        VkDeviceSize -- ^ dstOffset
+                                                     -> VkDeviceSize -- ^ stride
+                                                                     -> VkQueryResultFlags -- ^ flags
+                                                                                           -> IO ()
+vkCmdCopyQueryPoolResultsSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdCopyQueryPoolResults)
+
+{-# NOINLINE vkCmdCopyQueryPoolResultsSafe #-}
+##endif
+
+-- | Queues: 'graphics', 'compute'.
+--
+--   Renderpass: @outside@
+--
+--   Pipeline: @transfer@
+--
+--   > void vkCmdCopyQueryPoolResults
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , VkQueryPool queryPool
+--   >     , uint32_t firstQuery
+--   >     , uint32_t queryCount
+--   >     , VkBuffer dstBuffer
+--   >     , VkDeviceSize dstOffset
+--   >     , VkDeviceSize stride
+--   >     , VkQueryResultFlags flags
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdCopyQueryPoolResults vkCmdCopyQueryPoolResults registry at www.khronos.org>
+type HS_vkCmdCopyQueryPoolResults =
+     VkCommandBuffer -- ^ commandBuffer
+                     ->
+       VkQueryPool -- ^ queryPool
+                   ->
+         Word32 -- ^ firstQuery
+                ->
+           Word32 -- ^ queryCount
+                  ->
+             VkBuffer -- ^ dstBuffer
+                      ->
+               VkDeviceSize -- ^ dstOffset
+                            -> VkDeviceSize -- ^ stride
+                                            -> VkQueryResultFlags -- ^ flags
+                                                                  -> IO ()
+
+type PFN_vkCmdCopyQueryPoolResults =
+     FunPtr HS_vkCmdCopyQueryPoolResults
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkCmdCopyQueryPoolResults ::
+               PFN_vkCmdCopyQueryPoolResults -> HS_vkCmdCopyQueryPoolResults
+
+foreign import ccall safe "dynamic"
+               unwrapVkCmdCopyQueryPoolResultsSafe ::
+               PFN_vkCmdCopyQueryPoolResults -> HS_vkCmdCopyQueryPoolResults
+
+instance VulkanProc "vkCmdCopyQueryPoolResults" where
+        type VkProcType "vkCmdCopyQueryPoolResults" =
+             HS_vkCmdCopyQueryPoolResults
+        vkProcSymbol = _VkCmdCopyQueryPoolResults
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkCmdCopyQueryPoolResults
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkCmdCopyQueryPoolResultsSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCmdPushConstants :: CString
+
+pattern VkCmdPushConstants <- (is_VkCmdPushConstants -> True)
+  where VkCmdPushConstants = _VkCmdPushConstants
+
+{-# INLINE _VkCmdPushConstants #-}
+
+_VkCmdPushConstants :: CString
+_VkCmdPushConstants = Ptr "vkCmdPushConstants\NUL"##
+
+{-# INLINE is_VkCmdPushConstants #-}
+
+is_VkCmdPushConstants :: CString -> Bool
+is_VkCmdPushConstants = (EQ ==) . cmpCStrings _VkCmdPushConstants
+
+type VkCmdPushConstants = "vkCmdPushConstants"
+
+-- |
+-- Queues: 'graphics', 'compute'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdPushConstants
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkPipelineLayout layout
+-- >     , VkShaderStageFlags stageFlags
+-- >     , uint32_t offset
+-- >     , uint32_t size
+-- >     , const void* pValues
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdPushConstants vkCmdPushConstants registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdPushConstants <- vkGetInstanceProc @VkCmdPushConstants vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdPushConstants <- vkGetProc @VkCmdPushConstants
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCmdPushConstants" vkCmdPushConstants
+               ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 VkPipelineLayout -- ^ layout
+                                  ->
+                   VkShaderStageFlags -- ^ stageFlags
+                                      -> Word32 -- ^ offset
+                                                -> Word32 -- ^ size
+                                                          -> Ptr Void -- ^ pValues
+                                                                      -> IO ()
+
+##else
+vkCmdPushConstants ::
+                   VkCommandBuffer -- ^ commandBuffer
+                                   ->
+                     VkPipelineLayout -- ^ layout
+                                      ->
+                       VkShaderStageFlags -- ^ stageFlags
+                                          -> Word32 -- ^ offset
+                                                    -> Word32 -- ^ size
+                                                              -> Ptr Void -- ^ pValues
+                                                                          -> IO ()
+vkCmdPushConstants
+  = unsafeDupablePerformIO (vkGetProc @VkCmdPushConstants)
+
+{-# NOINLINE vkCmdPushConstants #-}
+##endif
+
+-- |
+-- Queues: 'graphics', 'compute'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdPushConstants
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkPipelineLayout layout
+-- >     , VkShaderStageFlags stageFlags
+-- >     , uint32_t offset
+-- >     , uint32_t size
+-- >     , const void* pValues
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdPushConstants vkCmdPushConstants registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdPushConstants <- vkGetInstanceProc @VkCmdPushConstants vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdPushConstants <- vkGetProc @VkCmdPushConstants
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCmdPushConstants"
+               vkCmdPushConstantsSafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 VkPipelineLayout -- ^ layout
+                                  ->
+                   VkShaderStageFlags -- ^ stageFlags
+                                      -> Word32 -- ^ offset
+                                                -> Word32 -- ^ size
+                                                          -> Ptr Void -- ^ pValues
+                                                                      -> IO ()
+
+##else
+vkCmdPushConstantsSafe ::
+                       VkCommandBuffer -- ^ commandBuffer
+                                       ->
+                         VkPipelineLayout -- ^ layout
+                                          ->
+                           VkShaderStageFlags -- ^ stageFlags
+                                              -> Word32 -- ^ offset
+                                                        -> Word32 -- ^ size
+                                                                  -> Ptr Void -- ^ pValues
+                                                                              -> IO ()
+vkCmdPushConstantsSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdPushConstants)
+
+{-# NOINLINE vkCmdPushConstantsSafe #-}
+##endif
+
+-- | Queues: 'graphics', 'compute'.
+--
+--   Renderpass: @both@
+--
+--   > void vkCmdPushConstants
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , VkPipelineLayout layout
+--   >     , VkShaderStageFlags stageFlags
+--   >     , uint32_t offset
+--   >     , uint32_t size
+--   >     , const void* pValues
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdPushConstants vkCmdPushConstants registry at www.khronos.org>
+type HS_vkCmdPushConstants =
+     VkCommandBuffer -- ^ commandBuffer
+                     ->
+       VkPipelineLayout -- ^ layout
+                        ->
+         VkShaderStageFlags -- ^ stageFlags
+                            -> Word32 -- ^ offset
+                                      -> Word32 -- ^ size
+                                                -> Ptr Void -- ^ pValues
+                                                            -> IO ()
+
+type PFN_vkCmdPushConstants = FunPtr HS_vkCmdPushConstants
+
+foreign import ccall unsafe "dynamic" unwrapVkCmdPushConstants ::
+               PFN_vkCmdPushConstants -> HS_vkCmdPushConstants
+
+foreign import ccall safe "dynamic" unwrapVkCmdPushConstantsSafe ::
+               PFN_vkCmdPushConstants -> HS_vkCmdPushConstants
+
+instance VulkanProc "vkCmdPushConstants" where
+        type VkProcType "vkCmdPushConstants" = HS_vkCmdPushConstants
+        vkProcSymbol = _VkCmdPushConstants
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkCmdPushConstants
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkCmdPushConstantsSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCmdBeginRenderPass :: CString
+
+pattern VkCmdBeginRenderPass <- (is_VkCmdBeginRenderPass -> True)
+  where VkCmdBeginRenderPass = _VkCmdBeginRenderPass
+
+{-# INLINE _VkCmdBeginRenderPass #-}
+
+_VkCmdBeginRenderPass :: CString
+_VkCmdBeginRenderPass = Ptr "vkCmdBeginRenderPass\NUL"##
+
+{-# INLINE is_VkCmdBeginRenderPass #-}
+
+is_VkCmdBeginRenderPass :: CString -> Bool
+is_VkCmdBeginRenderPass
+  = (EQ ==) . cmpCStrings _VkCmdBeginRenderPass
+
+type VkCmdBeginRenderPass = "vkCmdBeginRenderPass"
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @outside@
+--
+-- Pipeline: @graphics@
+--
+-- > void vkCmdBeginRenderPass
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , const VkRenderPassBeginInfo* pRenderPassBegin
+-- >     , VkSubpassContents contents
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBeginRenderPass vkCmdBeginRenderPass registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdBeginRenderPass <- vkGetInstanceProc @VkCmdBeginRenderPass vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdBeginRenderPass <- vkGetProc @VkCmdBeginRenderPass
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCmdBeginRenderPass"
+               vkCmdBeginRenderPass ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 Ptr VkRenderPassBeginInfo -- ^ pRenderPassBegin
+                                           -> VkSubpassContents -- ^ contents
+                                                                -> IO ()
+
+##else
+vkCmdBeginRenderPass ::
+                     VkCommandBuffer -- ^ commandBuffer
+                                     ->
+                       Ptr VkRenderPassBeginInfo -- ^ pRenderPassBegin
+                                                 -> VkSubpassContents -- ^ contents
+                                                                      -> IO ()
+vkCmdBeginRenderPass
+  = unsafeDupablePerformIO (vkGetProc @VkCmdBeginRenderPass)
+
+{-# NOINLINE vkCmdBeginRenderPass #-}
+##endif
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @outside@
+--
+-- Pipeline: @graphics@
+--
+-- > void vkCmdBeginRenderPass
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , const VkRenderPassBeginInfo* pRenderPassBegin
+-- >     , VkSubpassContents contents
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBeginRenderPass vkCmdBeginRenderPass registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdBeginRenderPass <- vkGetInstanceProc @VkCmdBeginRenderPass vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdBeginRenderPass <- vkGetProc @VkCmdBeginRenderPass
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCmdBeginRenderPass"
+               vkCmdBeginRenderPassSafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 Ptr VkRenderPassBeginInfo -- ^ pRenderPassBegin
+                                           -> VkSubpassContents -- ^ contents
+                                                                -> IO ()
+
+##else
+vkCmdBeginRenderPassSafe ::
+                         VkCommandBuffer -- ^ commandBuffer
+                                         ->
+                           Ptr VkRenderPassBeginInfo -- ^ pRenderPassBegin
+                                                     -> VkSubpassContents -- ^ contents
+                                                                          -> IO ()
+vkCmdBeginRenderPassSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdBeginRenderPass)
+
+{-# NOINLINE vkCmdBeginRenderPassSafe #-}
+##endif
+
+-- | Queues: 'graphics'.
+--
+--   Renderpass: @outside@
+--
+--   Pipeline: @graphics@
+--
+--   > void vkCmdBeginRenderPass
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , const VkRenderPassBeginInfo* pRenderPassBegin
+--   >     , VkSubpassContents contents
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBeginRenderPass vkCmdBeginRenderPass registry at www.khronos.org>
+type HS_vkCmdBeginRenderPass =
+     VkCommandBuffer -- ^ commandBuffer
+                     ->
+       Ptr VkRenderPassBeginInfo -- ^ pRenderPassBegin
+                                 -> VkSubpassContents -- ^ contents
+                                                      -> IO ()
+
+type PFN_vkCmdBeginRenderPass = FunPtr HS_vkCmdBeginRenderPass
+
+foreign import ccall unsafe "dynamic" unwrapVkCmdBeginRenderPass ::
+               PFN_vkCmdBeginRenderPass -> HS_vkCmdBeginRenderPass
+
+foreign import ccall safe "dynamic" unwrapVkCmdBeginRenderPassSafe
+               :: PFN_vkCmdBeginRenderPass -> HS_vkCmdBeginRenderPass
+
+instance VulkanProc "vkCmdBeginRenderPass" where
+        type VkProcType "vkCmdBeginRenderPass" = HS_vkCmdBeginRenderPass
+        vkProcSymbol = _VkCmdBeginRenderPass
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkCmdBeginRenderPass
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkCmdBeginRenderPassSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCmdNextSubpass :: CString
+
+pattern VkCmdNextSubpass <- (is_VkCmdNextSubpass -> True)
+  where VkCmdNextSubpass = _VkCmdNextSubpass
+
+{-# INLINE _VkCmdNextSubpass #-}
+
+_VkCmdNextSubpass :: CString
+_VkCmdNextSubpass = Ptr "vkCmdNextSubpass\NUL"##
+
+{-# INLINE is_VkCmdNextSubpass #-}
+
+is_VkCmdNextSubpass :: CString -> Bool
+is_VkCmdNextSubpass = (EQ ==) . cmpCStrings _VkCmdNextSubpass
+
+type VkCmdNextSubpass = "vkCmdNextSubpass"
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @inside@
+--
+-- Pipeline: @graphics@
+--
+-- > void vkCmdNextSubpass
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkSubpassContents contents
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdNextSubpass vkCmdNextSubpass registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdNextSubpass <- vkGetInstanceProc @VkCmdNextSubpass vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdNextSubpass <- vkGetProc @VkCmdNextSubpass
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCmdNextSubpass" vkCmdNextSubpass ::
+               VkCommandBuffer -- ^ commandBuffer
+                               -> VkSubpassContents -- ^ contents
+                                                    -> IO ()
+
+##else
+vkCmdNextSubpass :: VkCommandBuffer -- ^ commandBuffer
+                                    -> VkSubpassContents -- ^ contents
+                                                         -> IO ()
+vkCmdNextSubpass
+  = unsafeDupablePerformIO (vkGetProc @VkCmdNextSubpass)
+
+{-# NOINLINE vkCmdNextSubpass #-}
+##endif
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @inside@
+--
+-- Pipeline: @graphics@
+--
+-- > void vkCmdNextSubpass
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkSubpassContents contents
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdNextSubpass vkCmdNextSubpass registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdNextSubpass <- vkGetInstanceProc @VkCmdNextSubpass vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdNextSubpass <- vkGetProc @VkCmdNextSubpass
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCmdNextSubpass" vkCmdNextSubpassSafe
+               :: VkCommandBuffer -- ^ commandBuffer
+                                  -> VkSubpassContents -- ^ contents
+                                                       -> IO ()
+
+##else
+vkCmdNextSubpassSafe ::
+                     VkCommandBuffer -- ^ commandBuffer
+                                     -> VkSubpassContents -- ^ contents
+                                                          -> IO ()
+vkCmdNextSubpassSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdNextSubpass)
+
+{-# NOINLINE vkCmdNextSubpassSafe #-}
+##endif
+
+-- | Queues: 'graphics'.
+--
+--   Renderpass: @inside@
+--
+--   Pipeline: @graphics@
+--
+--   > void vkCmdNextSubpass
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , VkSubpassContents contents
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdNextSubpass vkCmdNextSubpass registry at www.khronos.org>
+type HS_vkCmdNextSubpass =
+     VkCommandBuffer -- ^ commandBuffer
+                     -> VkSubpassContents -- ^ contents
+                                          -> IO ()
+
+type PFN_vkCmdNextSubpass = FunPtr HS_vkCmdNextSubpass
+
+foreign import ccall unsafe "dynamic" unwrapVkCmdNextSubpass ::
+               PFN_vkCmdNextSubpass -> HS_vkCmdNextSubpass
+
+foreign import ccall safe "dynamic" unwrapVkCmdNextSubpassSafe ::
+               PFN_vkCmdNextSubpass -> HS_vkCmdNextSubpass
+
+instance VulkanProc "vkCmdNextSubpass" where
+        type VkProcType "vkCmdNextSubpass" = HS_vkCmdNextSubpass
+        vkProcSymbol = _VkCmdNextSubpass
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkCmdNextSubpass
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkCmdNextSubpassSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCmdEndRenderPass :: CString
+
+pattern VkCmdEndRenderPass <- (is_VkCmdEndRenderPass -> True)
+  where VkCmdEndRenderPass = _VkCmdEndRenderPass
+
+{-# INLINE _VkCmdEndRenderPass #-}
+
+_VkCmdEndRenderPass :: CString
+_VkCmdEndRenderPass = Ptr "vkCmdEndRenderPass\NUL"##
+
+{-# INLINE is_VkCmdEndRenderPass #-}
+
+is_VkCmdEndRenderPass :: CString -> Bool
+is_VkCmdEndRenderPass = (EQ ==) . cmpCStrings _VkCmdEndRenderPass
+
+type VkCmdEndRenderPass = "vkCmdEndRenderPass"
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @inside@
+--
+-- Pipeline: @graphics@
+--
+-- > void vkCmdEndRenderPass
+-- >     ( VkCommandBuffer commandBuffer
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdEndRenderPass vkCmdEndRenderPass registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdEndRenderPass <- vkGetInstanceProc @VkCmdEndRenderPass vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdEndRenderPass <- vkGetProc @VkCmdEndRenderPass
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCmdEndRenderPass" vkCmdEndRenderPass
+               :: VkCommandBuffer -- ^ commandBuffer
+                                  -> IO ()
+
+##else
+vkCmdEndRenderPass :: VkCommandBuffer -- ^ commandBuffer
+                                      -> IO ()
+vkCmdEndRenderPass
+  = unsafeDupablePerformIO (vkGetProc @VkCmdEndRenderPass)
+
+{-# NOINLINE vkCmdEndRenderPass #-}
+##endif
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @inside@
+--
+-- Pipeline: @graphics@
+--
+-- > void vkCmdEndRenderPass
+-- >     ( VkCommandBuffer commandBuffer
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdEndRenderPass vkCmdEndRenderPass registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdEndRenderPass <- vkGetInstanceProc @VkCmdEndRenderPass vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdEndRenderPass <- vkGetProc @VkCmdEndRenderPass
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCmdEndRenderPass"
+               vkCmdEndRenderPassSafe :: VkCommandBuffer -- ^ commandBuffer
+                                                         -> IO ()
+
+##else
+vkCmdEndRenderPassSafe :: VkCommandBuffer -- ^ commandBuffer
+                                          -> IO ()
+vkCmdEndRenderPassSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdEndRenderPass)
+
+{-# NOINLINE vkCmdEndRenderPassSafe #-}
+##endif
+
+-- | Queues: 'graphics'.
+--
+--   Renderpass: @inside@
+--
+--   Pipeline: @graphics@
+--
+--   > void vkCmdEndRenderPass
+--   >     ( VkCommandBuffer commandBuffer
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdEndRenderPass vkCmdEndRenderPass registry at www.khronos.org>
+type HS_vkCmdEndRenderPass = VkCommandBuffer -- ^ commandBuffer
+                                             -> IO ()
+
+type PFN_vkCmdEndRenderPass = FunPtr HS_vkCmdEndRenderPass
+
+foreign import ccall unsafe "dynamic" unwrapVkCmdEndRenderPass ::
+               PFN_vkCmdEndRenderPass -> HS_vkCmdEndRenderPass
+
+foreign import ccall safe "dynamic" unwrapVkCmdEndRenderPassSafe ::
+               PFN_vkCmdEndRenderPass -> HS_vkCmdEndRenderPass
+
+instance VulkanProc "vkCmdEndRenderPass" where
+        type VkProcType "vkCmdEndRenderPass" = HS_vkCmdEndRenderPass
+        vkProcSymbol = _VkCmdEndRenderPass
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkCmdEndRenderPass
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkCmdEndRenderPassSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCmdExecuteCommands :: CString
+
+pattern VkCmdExecuteCommands <- (is_VkCmdExecuteCommands -> True)
+  where VkCmdExecuteCommands = _VkCmdExecuteCommands
+
+{-# INLINE _VkCmdExecuteCommands #-}
+
+_VkCmdExecuteCommands :: CString
+_VkCmdExecuteCommands = Ptr "vkCmdExecuteCommands\NUL"##
+
+{-# INLINE is_VkCmdExecuteCommands #-}
+
+is_VkCmdExecuteCommands :: CString -> Bool
+is_VkCmdExecuteCommands
+  = (EQ ==) . cmpCStrings _VkCmdExecuteCommands
+
+type VkCmdExecuteCommands = "vkCmdExecuteCommands"
+
+-- |
+-- Queues: 'transfer', 'graphics', 'compute'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdExecuteCommands
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , uint32_t commandBufferCount
+-- >     , const VkCommandBuffer* pCommandBuffers
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdExecuteCommands vkCmdExecuteCommands registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdExecuteCommands <- vkGetInstanceProc @VkCmdExecuteCommands vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdExecuteCommands <- vkGetProc @VkCmdExecuteCommands
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCmdExecuteCommands"
+               vkCmdExecuteCommands ::
+               VkCommandBuffer -- ^ commandBuffer
+                               -> Word32 -- ^ commandBufferCount
+                                         -> Ptr VkCommandBuffer -- ^ pCommandBuffers
+                                                                -> IO ()
+
+##else
+vkCmdExecuteCommands ::
+                     VkCommandBuffer -- ^ commandBuffer
+                                     -> Word32 -- ^ commandBufferCount
+                                               -> Ptr VkCommandBuffer -- ^ pCommandBuffers
+                                                                      -> IO ()
+vkCmdExecuteCommands
+  = unsafeDupablePerformIO (vkGetProc @VkCmdExecuteCommands)
+
+{-# NOINLINE vkCmdExecuteCommands #-}
+##endif
+
+-- |
+-- Queues: 'transfer', 'graphics', 'compute'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdExecuteCommands
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , uint32_t commandBufferCount
+-- >     , const VkCommandBuffer* pCommandBuffers
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdExecuteCommands vkCmdExecuteCommands registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdExecuteCommands <- vkGetInstanceProc @VkCmdExecuteCommands vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdExecuteCommands <- vkGetProc @VkCmdExecuteCommands
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCmdExecuteCommands"
+               vkCmdExecuteCommandsSafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               -> Word32 -- ^ commandBufferCount
+                                         -> Ptr VkCommandBuffer -- ^ pCommandBuffers
+                                                                -> IO ()
+
+##else
+vkCmdExecuteCommandsSafe ::
+                         VkCommandBuffer -- ^ commandBuffer
+                                         -> Word32 -- ^ commandBufferCount
+                                                   -> Ptr VkCommandBuffer -- ^ pCommandBuffers
+                                                                          -> IO ()
+vkCmdExecuteCommandsSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdExecuteCommands)
+
+{-# NOINLINE vkCmdExecuteCommandsSafe #-}
+##endif
+
+-- | Queues: 'transfer', 'graphics', 'compute'.
+--
+--   Renderpass: @both@
+--
+--   > void vkCmdExecuteCommands
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , uint32_t commandBufferCount
+--   >     , const VkCommandBuffer* pCommandBuffers
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdExecuteCommands vkCmdExecuteCommands registry at www.khronos.org>
+type HS_vkCmdExecuteCommands =
+     VkCommandBuffer -- ^ commandBuffer
+                     -> Word32 -- ^ commandBufferCount
+                               -> Ptr VkCommandBuffer -- ^ pCommandBuffers
+                                                      -> IO ()
+
+type PFN_vkCmdExecuteCommands = FunPtr HS_vkCmdExecuteCommands
+
+foreign import ccall unsafe "dynamic" unwrapVkCmdExecuteCommands ::
+               PFN_vkCmdExecuteCommands -> HS_vkCmdExecuteCommands
+
+foreign import ccall safe "dynamic" unwrapVkCmdExecuteCommandsSafe
+               :: PFN_vkCmdExecuteCommands -> HS_vkCmdExecuteCommands
+
+instance VulkanProc "vkCmdExecuteCommands" where
+        type VkProcType "vkCmdExecuteCommands" = HS_vkCmdExecuteCommands
+        vkProcSymbol = _VkCmdExecuteCommands
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkCmdExecuteCommands
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkCmdExecuteCommandsSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
diff --git a/src-gen/Graphics/Vulkan/Core_1_1.hs b/src-gen/Graphics/Vulkan/Core_1_1.hs
--- a/src-gen/Graphics/Vulkan/Core_1_1.hs
+++ b/src-gen/Graphics/Vulkan/Core_1_1.hs
@@ -535,5563 +535,5235 @@
 
 type VkEnumerateInstanceVersion = "vkEnumerateInstanceVersion"
 
-#ifdef NATIVE_FFI_VK_VERSION_1_1
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- > VkResult vkEnumerateInstanceVersion
--- >     ( uint32_t* pApiVersion
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumerateInstanceVersion vkEnumerateInstanceVersion registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-1@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkEnumerateInstanceVersion"
-               vkEnumerateInstanceVersion :: Ptr Word32 -- ^ pApiVersion
-                                                        -> IO VkResult
-
-#else
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- > VkResult vkEnumerateInstanceVersion
--- >     ( uint32_t* pApiVersion
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumerateInstanceVersion vkEnumerateInstanceVersion registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-1@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkEnumerateInstanceVersionSafe@ and @vkEnumerateInstanceVersion@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myEnumerateInstanceVersion <- vkGetInstanceProc @VkEnumerateInstanceVersion vkInstance
---
--- or less efficient:
---
--- > myEnumerateInstanceVersion <- vkGetProc @VkEnumerateInstanceVersion
---
-vkEnumerateInstanceVersion :: Ptr Word32 -- ^ pApiVersion
-                                         -> IO VkResult
-vkEnumerateInstanceVersion
-  = unsafeDupablePerformIO (vkGetProc @VkEnumerateInstanceVersion)
-
-{-# NOINLINE vkEnumerateInstanceVersion #-}
-#endif
-
-#ifdef NATIVE_FFI_VK_VERSION_1_1
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- > VkResult vkEnumerateInstanceVersion
--- >     ( uint32_t* pApiVersion
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumerateInstanceVersion vkEnumerateInstanceVersion registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-1@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkEnumerateInstanceVersion"
-               vkEnumerateInstanceVersionSafe :: Ptr Word32 -- ^ pApiVersion
-                                                            -> IO VkResult
-
-#else
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- > VkResult vkEnumerateInstanceVersion
--- >     ( uint32_t* pApiVersion
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumerateInstanceVersion vkEnumerateInstanceVersion registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-1@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkEnumerateInstanceVersionSafe@ and @vkEnumerateInstanceVersion@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myEnumerateInstanceVersion <- vkGetInstanceProc @VkEnumerateInstanceVersion vkInstance
---
--- or less efficient:
---
--- > myEnumerateInstanceVersion <- vkGetProc @VkEnumerateInstanceVersion
---
-vkEnumerateInstanceVersionSafe :: Ptr Word32 -- ^ pApiVersion
-                                             -> IO VkResult
-vkEnumerateInstanceVersionSafe = vkEnumerateInstanceVersion
-
-{-# INLINE vkEnumerateInstanceVersionSafe #-}
-#endif
-
--- | Success codes: 'VK_SUCCESS'.
---
---   > VkResult vkEnumerateInstanceVersion
---   >     ( uint32_t* pApiVersion
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumerateInstanceVersion vkEnumerateInstanceVersion registry at www.khronos.org>
-type HS_vkEnumerateInstanceVersion = Ptr Word32 -- ^ pApiVersion
-                                                -> IO VkResult
-
-type PFN_vkEnumerateInstanceVersion =
-     FunPtr HS_vkEnumerateInstanceVersion
-
-foreign import ccall "dynamic" unwrapVkEnumerateInstanceVersion ::
-               PFN_vkEnumerateInstanceVersion -> HS_vkEnumerateInstanceVersion
-
-instance VulkanProc "vkEnumerateInstanceVersion" where
-        type VkProcType "vkEnumerateInstanceVersion" =
-             HS_vkEnumerateInstanceVersion
-        vkProcSymbol = _VkEnumerateInstanceVersion
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkEnumerateInstanceVersion
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES ::
-        VkStructureType
-
-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES =
-        VkStructureType 1000094000
-
-pattern VkBindBufferMemory2 :: CString
-
-pattern VkBindBufferMemory2 <- (is_VkBindBufferMemory2 -> True)
-  where VkBindBufferMemory2 = _VkBindBufferMemory2
-
-{-# INLINE _VkBindBufferMemory2 #-}
-
-_VkBindBufferMemory2 :: CString
-_VkBindBufferMemory2 = Ptr "vkBindBufferMemory2\NUL"#
-
-{-# INLINE is_VkBindBufferMemory2 #-}
-
-is_VkBindBufferMemory2 :: CString -> Bool
-is_VkBindBufferMemory2 = (EQ ==) . cmpCStrings _VkBindBufferMemory2
-
-type VkBindBufferMemory2 = "vkBindBufferMemory2"
-
-#ifdef NATIVE_FFI_VK_VERSION_1_1
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkBindBufferMemory2
--- >     ( VkDevice device
--- >     , uint32_t bindInfoCount
--- >     , const VkBindBufferMemoryInfo* pBindInfos
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkBindBufferMemory2 vkBindBufferMemory2 registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-1@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkBindBufferMemory2"
-               vkBindBufferMemory2 ::
-               VkDevice -- ^ device
-                        -> Word32 -- ^ bindInfoCount
-                                  -> Ptr VkBindBufferMemoryInfo -- ^ pBindInfos
-                                                                -> IO VkResult
-
-#else
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkBindBufferMemory2
--- >     ( VkDevice device
--- >     , uint32_t bindInfoCount
--- >     , const VkBindBufferMemoryInfo* pBindInfos
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkBindBufferMemory2 vkBindBufferMemory2 registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-1@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkBindBufferMemory2Safe@ and @vkBindBufferMemory2@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myBindBufferMemory2 <- vkGetDeviceProc @VkBindBufferMemory2 vkDevice
---
--- or less efficient:
---
--- > myBindBufferMemory2 <- vkGetProc @VkBindBufferMemory2
---
-vkBindBufferMemory2 ::
-                    VkDevice -- ^ device
-                             -> Word32 -- ^ bindInfoCount
-                                       -> Ptr VkBindBufferMemoryInfo -- ^ pBindInfos
-                                                                     -> IO VkResult
-vkBindBufferMemory2
-  = unsafeDupablePerformIO (vkGetProc @VkBindBufferMemory2)
-
-{-# NOINLINE vkBindBufferMemory2 #-}
-#endif
-
-#ifdef NATIVE_FFI_VK_VERSION_1_1
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkBindBufferMemory2
--- >     ( VkDevice device
--- >     , uint32_t bindInfoCount
--- >     , const VkBindBufferMemoryInfo* pBindInfos
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkBindBufferMemory2 vkBindBufferMemory2 registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-1@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkBindBufferMemory2"
-               vkBindBufferMemory2Safe ::
-               VkDevice -- ^ device
-                        -> Word32 -- ^ bindInfoCount
-                                  -> Ptr VkBindBufferMemoryInfo -- ^ pBindInfos
-                                                                -> IO VkResult
-
-#else
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkBindBufferMemory2
--- >     ( VkDevice device
--- >     , uint32_t bindInfoCount
--- >     , const VkBindBufferMemoryInfo* pBindInfos
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkBindBufferMemory2 vkBindBufferMemory2 registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-1@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkBindBufferMemory2Safe@ and @vkBindBufferMemory2@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myBindBufferMemory2 <- vkGetDeviceProc @VkBindBufferMemory2 vkDevice
---
--- or less efficient:
---
--- > myBindBufferMemory2 <- vkGetProc @VkBindBufferMemory2
---
-vkBindBufferMemory2Safe ::
-                        VkDevice -- ^ device
-                                 -> Word32 -- ^ bindInfoCount
-                                           -> Ptr VkBindBufferMemoryInfo -- ^ pBindInfos
-                                                                         -> IO VkResult
-vkBindBufferMemory2Safe = vkBindBufferMemory2
-
-{-# INLINE vkBindBufferMemory2Safe #-}
-#endif
-
--- | Success codes: 'VK_SUCCESS'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
---   > VkResult vkBindBufferMemory2
---   >     ( VkDevice device
---   >     , uint32_t bindInfoCount
---   >     , const VkBindBufferMemoryInfo* pBindInfos
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkBindBufferMemory2 vkBindBufferMemory2 registry at www.khronos.org>
-type HS_vkBindBufferMemory2 =
-     VkDevice -- ^ device
-              -> Word32 -- ^ bindInfoCount
-                        -> Ptr VkBindBufferMemoryInfo -- ^ pBindInfos
-                                                      -> IO VkResult
-
-type PFN_vkBindBufferMemory2 = FunPtr HS_vkBindBufferMemory2
-
-foreign import ccall "dynamic" unwrapVkBindBufferMemory2 ::
-               PFN_vkBindBufferMemory2 -> HS_vkBindBufferMemory2
-
-instance VulkanProc "vkBindBufferMemory2" where
-        type VkProcType "vkBindBufferMemory2" = HS_vkBindBufferMemory2
-        vkProcSymbol = _VkBindBufferMemory2
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkBindBufferMemory2
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VkBindImageMemory2 :: CString
-
-pattern VkBindImageMemory2 <- (is_VkBindImageMemory2 -> True)
-  where VkBindImageMemory2 = _VkBindImageMemory2
-
-{-# INLINE _VkBindImageMemory2 #-}
-
-_VkBindImageMemory2 :: CString
-_VkBindImageMemory2 = Ptr "vkBindImageMemory2\NUL"#
-
-{-# INLINE is_VkBindImageMemory2 #-}
-
-is_VkBindImageMemory2 :: CString -> Bool
-is_VkBindImageMemory2 = (EQ ==) . cmpCStrings _VkBindImageMemory2
-
-type VkBindImageMemory2 = "vkBindImageMemory2"
-
-#ifdef NATIVE_FFI_VK_VERSION_1_1
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkBindImageMemory2
--- >     ( VkDevice device
--- >     , uint32_t bindInfoCount
--- >     , const VkBindImageMemoryInfo* pBindInfos
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkBindImageMemory2 vkBindImageMemory2 registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-1@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkBindImageMemory2" vkBindImageMemory2
-               :: VkDevice -- ^ device
-                           -> Word32 -- ^ bindInfoCount
-                                     -> Ptr VkBindImageMemoryInfo -- ^ pBindInfos
-                                                                  -> IO VkResult
-
-#else
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkBindImageMemory2
--- >     ( VkDevice device
--- >     , uint32_t bindInfoCount
--- >     , const VkBindImageMemoryInfo* pBindInfos
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkBindImageMemory2 vkBindImageMemory2 registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-1@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkBindImageMemory2Safe@ and @vkBindImageMemory2@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myBindImageMemory2 <- vkGetDeviceProc @VkBindImageMemory2 vkDevice
---
--- or less efficient:
---
--- > myBindImageMemory2 <- vkGetProc @VkBindImageMemory2
---
-vkBindImageMemory2 ::
-                   VkDevice -- ^ device
-                            -> Word32 -- ^ bindInfoCount
-                                      -> Ptr VkBindImageMemoryInfo -- ^ pBindInfos
-                                                                   -> IO VkResult
-vkBindImageMemory2
-  = unsafeDupablePerformIO (vkGetProc @VkBindImageMemory2)
-
-{-# NOINLINE vkBindImageMemory2 #-}
-#endif
-
-#ifdef NATIVE_FFI_VK_VERSION_1_1
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkBindImageMemory2
--- >     ( VkDevice device
--- >     , uint32_t bindInfoCount
--- >     , const VkBindImageMemoryInfo* pBindInfos
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkBindImageMemory2 vkBindImageMemory2 registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-1@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkBindImageMemory2"
-               vkBindImageMemory2Safe ::
-               VkDevice -- ^ device
-                        -> Word32 -- ^ bindInfoCount
-                                  -> Ptr VkBindImageMemoryInfo -- ^ pBindInfos
-                                                               -> IO VkResult
-
-#else
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkBindImageMemory2
--- >     ( VkDevice device
--- >     , uint32_t bindInfoCount
--- >     , const VkBindImageMemoryInfo* pBindInfos
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkBindImageMemory2 vkBindImageMemory2 registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-1@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkBindImageMemory2Safe@ and @vkBindImageMemory2@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myBindImageMemory2 <- vkGetDeviceProc @VkBindImageMemory2 vkDevice
---
--- or less efficient:
---
--- > myBindImageMemory2 <- vkGetProc @VkBindImageMemory2
---
-vkBindImageMemory2Safe ::
-                       VkDevice -- ^ device
-                                -> Word32 -- ^ bindInfoCount
-                                          -> Ptr VkBindImageMemoryInfo -- ^ pBindInfos
-                                                                       -> IO VkResult
-vkBindImageMemory2Safe = vkBindImageMemory2
-
-{-# INLINE vkBindImageMemory2Safe #-}
-#endif
-
--- | Success codes: 'VK_SUCCESS'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
---   > VkResult vkBindImageMemory2
---   >     ( VkDevice device
---   >     , uint32_t bindInfoCount
---   >     , const VkBindImageMemoryInfo* pBindInfos
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkBindImageMemory2 vkBindImageMemory2 registry at www.khronos.org>
-type HS_vkBindImageMemory2 =
-     VkDevice -- ^ device
-              -> Word32 -- ^ bindInfoCount
-                        -> Ptr VkBindImageMemoryInfo -- ^ pBindInfos
-                                                     -> IO VkResult
-
-type PFN_vkBindImageMemory2 = FunPtr HS_vkBindImageMemory2
-
-foreign import ccall "dynamic" unwrapVkBindImageMemory2 ::
-               PFN_vkBindImageMemory2 -> HS_vkBindImageMemory2
-
-instance VulkanProc "vkBindImageMemory2" where
-        type VkProcType "vkBindImageMemory2" = HS_vkBindImageMemory2
-        vkProcSymbol = _VkBindImageMemory2
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkBindImageMemory2
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO ::
-        VkStructureType
-
-pattern VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO =
-        VkStructureType 1000157000
-
-pattern VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO :: VkStructureType
-
-pattern VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO =
-        VkStructureType 1000157001
-
--- | bitpos = @10@
-pattern VK_IMAGE_CREATE_ALIAS_BIT :: VkImageCreateFlagBits
-
-pattern VK_IMAGE_CREATE_ALIAS_BIT = VkImageCreateFlagBits 1024
-
-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES ::
-        VkStructureType
-
-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES =
-        VkStructureType 1000083000
-
-pattern VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS ::
-        VkStructureType
-
-pattern VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS =
-        VkStructureType 1000127000
-
-pattern VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO ::
-        VkStructureType
-
-pattern VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO =
-        VkStructureType 1000127001
-
-pattern VkGetDeviceGroupPeerMemoryFeatures :: CString
-
-pattern VkGetDeviceGroupPeerMemoryFeatures <-
-        (is_VkGetDeviceGroupPeerMemoryFeatures -> True)
-  where VkGetDeviceGroupPeerMemoryFeatures
-          = _VkGetDeviceGroupPeerMemoryFeatures
-
-{-# INLINE _VkGetDeviceGroupPeerMemoryFeatures #-}
-
-_VkGetDeviceGroupPeerMemoryFeatures :: CString
-_VkGetDeviceGroupPeerMemoryFeatures
-  = Ptr "vkGetDeviceGroupPeerMemoryFeatures\NUL"#
-
-{-# INLINE is_VkGetDeviceGroupPeerMemoryFeatures #-}
-
-is_VkGetDeviceGroupPeerMemoryFeatures :: CString -> Bool
-is_VkGetDeviceGroupPeerMemoryFeatures
-  = (EQ ==) . cmpCStrings _VkGetDeviceGroupPeerMemoryFeatures
-
-type VkGetDeviceGroupPeerMemoryFeatures =
-     "vkGetDeviceGroupPeerMemoryFeatures"
-
-#ifdef NATIVE_FFI_VK_VERSION_1_1
--- |
--- > void vkGetDeviceGroupPeerMemoryFeatures
--- >     ( VkDevice device
--- >     , uint32_t heapIndex
--- >     , uint32_t localDeviceIndex
--- >     , uint32_t remoteDeviceIndex
--- >     , VkPeerMemoryFeatureFlags* pPeerMemoryFeatures
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDeviceGroupPeerMemoryFeatures vkGetDeviceGroupPeerMemoryFeatures registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-1@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkGetDeviceGroupPeerMemoryFeatures"
-               vkGetDeviceGroupPeerMemoryFeatures ::
-               VkDevice -- ^ device
-                        ->
-                 Word32 -- ^ heapIndex
-                        -> Word32 -- ^ localDeviceIndex
-                                  -> Word32 -- ^ remoteDeviceIndex
-                                            -> Ptr VkPeerMemoryFeatureFlags -- ^ pPeerMemoryFeatures
-                                                                            -> IO ()
-
-#else
--- |
--- > void vkGetDeviceGroupPeerMemoryFeatures
--- >     ( VkDevice device
--- >     , uint32_t heapIndex
--- >     , uint32_t localDeviceIndex
--- >     , uint32_t remoteDeviceIndex
--- >     , VkPeerMemoryFeatureFlags* pPeerMemoryFeatures
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDeviceGroupPeerMemoryFeatures vkGetDeviceGroupPeerMemoryFeatures registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-1@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkGetDeviceGroupPeerMemoryFeaturesSafe@ and @vkGetDeviceGroupPeerMemoryFeatures@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetDeviceGroupPeerMemoryFeatures <- vkGetDeviceProc @VkGetDeviceGroupPeerMemoryFeatures vkDevice
---
--- or less efficient:
---
--- > myGetDeviceGroupPeerMemoryFeatures <- vkGetProc @VkGetDeviceGroupPeerMemoryFeatures
---
-vkGetDeviceGroupPeerMemoryFeatures ::
-                                   VkDevice -- ^ device
-                                            ->
-                                     Word32 -- ^ heapIndex
-                                            ->
-                                       Word32 -- ^ localDeviceIndex
-                                              -> Word32 -- ^ remoteDeviceIndex
-                                                        -> Ptr VkPeerMemoryFeatureFlags -- ^ pPeerMemoryFeatures
-                                                                                        -> IO ()
-vkGetDeviceGroupPeerMemoryFeatures
-  = unsafeDupablePerformIO
-      (vkGetProc @VkGetDeviceGroupPeerMemoryFeatures)
-
-{-# NOINLINE vkGetDeviceGroupPeerMemoryFeatures #-}
-#endif
-
-#ifdef NATIVE_FFI_VK_VERSION_1_1
--- |
--- > void vkGetDeviceGroupPeerMemoryFeatures
--- >     ( VkDevice device
--- >     , uint32_t heapIndex
--- >     , uint32_t localDeviceIndex
--- >     , uint32_t remoteDeviceIndex
--- >     , VkPeerMemoryFeatureFlags* pPeerMemoryFeatures
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDeviceGroupPeerMemoryFeatures vkGetDeviceGroupPeerMemoryFeatures registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-1@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkGetDeviceGroupPeerMemoryFeatures"
-               vkGetDeviceGroupPeerMemoryFeaturesSafe ::
-               VkDevice -- ^ device
-                        ->
-                 Word32 -- ^ heapIndex
-                        -> Word32 -- ^ localDeviceIndex
-                                  -> Word32 -- ^ remoteDeviceIndex
-                                            -> Ptr VkPeerMemoryFeatureFlags -- ^ pPeerMemoryFeatures
-                                                                            -> IO ()
-
-#else
--- |
--- > void vkGetDeviceGroupPeerMemoryFeatures
--- >     ( VkDevice device
--- >     , uint32_t heapIndex
--- >     , uint32_t localDeviceIndex
--- >     , uint32_t remoteDeviceIndex
--- >     , VkPeerMemoryFeatureFlags* pPeerMemoryFeatures
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDeviceGroupPeerMemoryFeatures vkGetDeviceGroupPeerMemoryFeatures registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-1@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkGetDeviceGroupPeerMemoryFeaturesSafe@ and @vkGetDeviceGroupPeerMemoryFeatures@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetDeviceGroupPeerMemoryFeatures <- vkGetDeviceProc @VkGetDeviceGroupPeerMemoryFeatures vkDevice
---
--- or less efficient:
---
--- > myGetDeviceGroupPeerMemoryFeatures <- vkGetProc @VkGetDeviceGroupPeerMemoryFeatures
---
-vkGetDeviceGroupPeerMemoryFeaturesSafe ::
-                                       VkDevice -- ^ device
-                                                ->
-                                         Word32 -- ^ heapIndex
-                                                ->
-                                           Word32 -- ^ localDeviceIndex
-                                                  -> Word32 -- ^ remoteDeviceIndex
-                                                            -> Ptr VkPeerMemoryFeatureFlags -- ^ pPeerMemoryFeatures
-                                                                                            -> IO ()
-vkGetDeviceGroupPeerMemoryFeaturesSafe
-  = vkGetDeviceGroupPeerMemoryFeatures
-
-{-# INLINE vkGetDeviceGroupPeerMemoryFeaturesSafe #-}
-#endif
-
--- | > void vkGetDeviceGroupPeerMemoryFeatures
---   >     ( VkDevice device
---   >     , uint32_t heapIndex
---   >     , uint32_t localDeviceIndex
---   >     , uint32_t remoteDeviceIndex
---   >     , VkPeerMemoryFeatureFlags* pPeerMemoryFeatures
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDeviceGroupPeerMemoryFeatures vkGetDeviceGroupPeerMemoryFeatures registry at www.khronos.org>
-type HS_vkGetDeviceGroupPeerMemoryFeatures =
-     VkDevice -- ^ device
-              ->
-       Word32 -- ^ heapIndex
-              -> Word32 -- ^ localDeviceIndex
-                        -> Word32 -- ^ remoteDeviceIndex
-                                  -> Ptr VkPeerMemoryFeatureFlags -- ^ pPeerMemoryFeatures
-                                                                  -> IO ()
-
-type PFN_vkGetDeviceGroupPeerMemoryFeatures =
-     FunPtr HS_vkGetDeviceGroupPeerMemoryFeatures
-
-foreign import ccall "dynamic"
-               unwrapVkGetDeviceGroupPeerMemoryFeatures ::
-               PFN_vkGetDeviceGroupPeerMemoryFeatures ->
-                 HS_vkGetDeviceGroupPeerMemoryFeatures
-
-instance VulkanProc "vkGetDeviceGroupPeerMemoryFeatures" where
-        type VkProcType "vkGetDeviceGroupPeerMemoryFeatures" =
-             HS_vkGetDeviceGroupPeerMemoryFeatures
-        vkProcSymbol = _VkGetDeviceGroupPeerMemoryFeatures
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkGetDeviceGroupPeerMemoryFeatures
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VkCmdSetDeviceMask :: CString
-
-pattern VkCmdSetDeviceMask <- (is_VkCmdSetDeviceMask -> True)
-  where VkCmdSetDeviceMask = _VkCmdSetDeviceMask
-
-{-# INLINE _VkCmdSetDeviceMask #-}
-
-_VkCmdSetDeviceMask :: CString
-_VkCmdSetDeviceMask = Ptr "vkCmdSetDeviceMask\NUL"#
-
-{-# INLINE is_VkCmdSetDeviceMask #-}
-
-is_VkCmdSetDeviceMask :: CString -> Bool
-is_VkCmdSetDeviceMask = (EQ ==) . cmpCStrings _VkCmdSetDeviceMask
-
-type VkCmdSetDeviceMask = "vkCmdSetDeviceMask"
-
-#ifdef NATIVE_FFI_VK_VERSION_1_1
--- |
--- Queues: 'graphics', 'compute', 'transfer'.
---
--- Renderpass: @both@
---
--- > void vkCmdSetDeviceMask
--- >     ( VkCommandBuffer commandBuffer
--- >     , uint32_t deviceMask
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetDeviceMask vkCmdSetDeviceMask registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-1@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkCmdSetDeviceMask" vkCmdSetDeviceMask
-               :: VkCommandBuffer -- ^ commandBuffer
-                                  -> Word32 -- ^ deviceMask
-                                            -> IO ()
-
-#else
--- |
--- Queues: 'graphics', 'compute', 'transfer'.
---
--- Renderpass: @both@
---
--- > void vkCmdSetDeviceMask
--- >     ( VkCommandBuffer commandBuffer
--- >     , uint32_t deviceMask
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetDeviceMask vkCmdSetDeviceMask registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-1@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCmdSetDeviceMaskSafe@ and @vkCmdSetDeviceMask@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdSetDeviceMask <- vkGetInstanceProc @VkCmdSetDeviceMask vkInstance
---
--- or less efficient:
---
--- > myCmdSetDeviceMask <- vkGetProc @VkCmdSetDeviceMask
---
-vkCmdSetDeviceMask :: VkCommandBuffer -- ^ commandBuffer
-                                      -> Word32 -- ^ deviceMask
-                                                -> IO ()
-vkCmdSetDeviceMask
-  = unsafeDupablePerformIO (vkGetProc @VkCmdSetDeviceMask)
-
-{-# NOINLINE vkCmdSetDeviceMask #-}
-#endif
-
-#ifdef NATIVE_FFI_VK_VERSION_1_1
--- |
--- Queues: 'graphics', 'compute', 'transfer'.
---
--- Renderpass: @both@
---
--- > void vkCmdSetDeviceMask
--- >     ( VkCommandBuffer commandBuffer
--- >     , uint32_t deviceMask
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetDeviceMask vkCmdSetDeviceMask registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-1@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkCmdSetDeviceMask"
-               vkCmdSetDeviceMaskSafe :: VkCommandBuffer -- ^ commandBuffer
-                                                         -> Word32 -- ^ deviceMask
-                                                                   -> IO ()
-
-#else
--- |
--- Queues: 'graphics', 'compute', 'transfer'.
---
--- Renderpass: @both@
---
--- > void vkCmdSetDeviceMask
--- >     ( VkCommandBuffer commandBuffer
--- >     , uint32_t deviceMask
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetDeviceMask vkCmdSetDeviceMask registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-1@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCmdSetDeviceMaskSafe@ and @vkCmdSetDeviceMask@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdSetDeviceMask <- vkGetInstanceProc @VkCmdSetDeviceMask vkInstance
---
--- or less efficient:
---
--- > myCmdSetDeviceMask <- vkGetProc @VkCmdSetDeviceMask
---
-vkCmdSetDeviceMaskSafe :: VkCommandBuffer -- ^ commandBuffer
-                                          -> Word32 -- ^ deviceMask
-                                                    -> IO ()
-vkCmdSetDeviceMaskSafe = vkCmdSetDeviceMask
-
-{-# INLINE vkCmdSetDeviceMaskSafe #-}
-#endif
-
--- | Queues: 'graphics', 'compute', 'transfer'.
---
---   Renderpass: @both@
---
---   > void vkCmdSetDeviceMask
---   >     ( VkCommandBuffer commandBuffer
---   >     , uint32_t deviceMask
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetDeviceMask vkCmdSetDeviceMask registry at www.khronos.org>
-type HS_vkCmdSetDeviceMask = VkCommandBuffer -- ^ commandBuffer
-                                             -> Word32 -- ^ deviceMask
-                                                       -> IO ()
-
-type PFN_vkCmdSetDeviceMask = FunPtr HS_vkCmdSetDeviceMask
-
-foreign import ccall "dynamic" unwrapVkCmdSetDeviceMask ::
-               PFN_vkCmdSetDeviceMask -> HS_vkCmdSetDeviceMask
-
-instance VulkanProc "vkCmdSetDeviceMask" where
-        type VkProcType "vkCmdSetDeviceMask" = HS_vkCmdSetDeviceMask
-        vkProcSymbol = _VkCmdSetDeviceMask
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCmdSetDeviceMask
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VkCmdDispatchBase :: CString
-
-pattern VkCmdDispatchBase <- (is_VkCmdDispatchBase -> True)
-  where VkCmdDispatchBase = _VkCmdDispatchBase
-
-{-# INLINE _VkCmdDispatchBase #-}
-
-_VkCmdDispatchBase :: CString
-_VkCmdDispatchBase = Ptr "vkCmdDispatchBase\NUL"#
-
-{-# INLINE is_VkCmdDispatchBase #-}
-
-is_VkCmdDispatchBase :: CString -> Bool
-is_VkCmdDispatchBase = (EQ ==) . cmpCStrings _VkCmdDispatchBase
-
-type VkCmdDispatchBase = "vkCmdDispatchBase"
-
-#ifdef NATIVE_FFI_VK_VERSION_1_1
--- |
--- Queues: 'compute'.
---
--- Renderpass: @outside@
---
--- > void vkCmdDispatchBase
--- >     ( VkCommandBuffer commandBuffer
--- >     , uint32_t baseGroupX
--- >     , uint32_t baseGroupY
--- >     , uint32_t baseGroupZ
--- >     , uint32_t groupCountX
--- >     , uint32_t groupCountY
--- >     , uint32_t groupCountZ
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDispatchBase vkCmdDispatchBase registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-1@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkCmdDispatchBase" vkCmdDispatchBase
-               ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 Word32 -- ^ baseGroupX
-                        -> Word32 -- ^ baseGroupY
-                                  -> Word32 -- ^ baseGroupZ
-                                            -> Word32 -- ^ groupCountX
-                                                      -> Word32 -- ^ groupCountY
-                                                                -> Word32 -- ^ groupCountZ
-                                                                          -> IO ()
-
-#else
--- |
--- Queues: 'compute'.
---
--- Renderpass: @outside@
---
--- > void vkCmdDispatchBase
--- >     ( VkCommandBuffer commandBuffer
--- >     , uint32_t baseGroupX
--- >     , uint32_t baseGroupY
--- >     , uint32_t baseGroupZ
--- >     , uint32_t groupCountX
--- >     , uint32_t groupCountY
--- >     , uint32_t groupCountZ
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDispatchBase vkCmdDispatchBase registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-1@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCmdDispatchBaseSafe@ and @vkCmdDispatchBase@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdDispatchBase <- vkGetInstanceProc @VkCmdDispatchBase vkInstance
---
--- or less efficient:
---
--- > myCmdDispatchBase <- vkGetProc @VkCmdDispatchBase
---
-vkCmdDispatchBase ::
-                  VkCommandBuffer -- ^ commandBuffer
-                                  ->
-                    Word32 -- ^ baseGroupX
-                           -> Word32 -- ^ baseGroupY
-                                     -> Word32 -- ^ baseGroupZ
-                                               -> Word32 -- ^ groupCountX
-                                                         -> Word32 -- ^ groupCountY
-                                                                   -> Word32 -- ^ groupCountZ
-                                                                             -> IO ()
-vkCmdDispatchBase
-  = unsafeDupablePerformIO (vkGetProc @VkCmdDispatchBase)
-
-{-# NOINLINE vkCmdDispatchBase #-}
-#endif
-
-#ifdef NATIVE_FFI_VK_VERSION_1_1
--- |
--- Queues: 'compute'.
---
--- Renderpass: @outside@
---
--- > void vkCmdDispatchBase
--- >     ( VkCommandBuffer commandBuffer
--- >     , uint32_t baseGroupX
--- >     , uint32_t baseGroupY
--- >     , uint32_t baseGroupZ
--- >     , uint32_t groupCountX
--- >     , uint32_t groupCountY
--- >     , uint32_t groupCountZ
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDispatchBase vkCmdDispatchBase registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-1@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkCmdDispatchBase" vkCmdDispatchBaseSafe
-               ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 Word32 -- ^ baseGroupX
-                        -> Word32 -- ^ baseGroupY
-                                  -> Word32 -- ^ baseGroupZ
-                                            -> Word32 -- ^ groupCountX
-                                                      -> Word32 -- ^ groupCountY
-                                                                -> Word32 -- ^ groupCountZ
-                                                                          -> IO ()
-
-#else
--- |
--- Queues: 'compute'.
---
--- Renderpass: @outside@
---
--- > void vkCmdDispatchBase
--- >     ( VkCommandBuffer commandBuffer
--- >     , uint32_t baseGroupX
--- >     , uint32_t baseGroupY
--- >     , uint32_t baseGroupZ
--- >     , uint32_t groupCountX
--- >     , uint32_t groupCountY
--- >     , uint32_t groupCountZ
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDispatchBase vkCmdDispatchBase registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-1@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCmdDispatchBaseSafe@ and @vkCmdDispatchBase@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdDispatchBase <- vkGetInstanceProc @VkCmdDispatchBase vkInstance
---
--- or less efficient:
---
--- > myCmdDispatchBase <- vkGetProc @VkCmdDispatchBase
---
-vkCmdDispatchBaseSafe ::
-                      VkCommandBuffer -- ^ commandBuffer
-                                      ->
-                        Word32 -- ^ baseGroupX
-                               -> Word32 -- ^ baseGroupY
-                                         -> Word32 -- ^ baseGroupZ
-                                                   -> Word32 -- ^ groupCountX
-                                                             -> Word32 -- ^ groupCountY
-                                                                       -> Word32 -- ^ groupCountZ
-                                                                                 -> IO ()
-vkCmdDispatchBaseSafe = vkCmdDispatchBase
-
-{-# INLINE vkCmdDispatchBaseSafe #-}
-#endif
-
--- | Queues: 'compute'.
---
---   Renderpass: @outside@
---
---   > void vkCmdDispatchBase
---   >     ( VkCommandBuffer commandBuffer
---   >     , uint32_t baseGroupX
---   >     , uint32_t baseGroupY
---   >     , uint32_t baseGroupZ
---   >     , uint32_t groupCountX
---   >     , uint32_t groupCountY
---   >     , uint32_t groupCountZ
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDispatchBase vkCmdDispatchBase registry at www.khronos.org>
-type HS_vkCmdDispatchBase =
-     VkCommandBuffer -- ^ commandBuffer
-                     ->
-       Word32 -- ^ baseGroupX
-              -> Word32 -- ^ baseGroupY
-                        -> Word32 -- ^ baseGroupZ
-                                  -> Word32 -- ^ groupCountX
-                                            -> Word32 -- ^ groupCountY
-                                                      -> Word32 -- ^ groupCountZ
-                                                                -> IO ()
-
-type PFN_vkCmdDispatchBase = FunPtr HS_vkCmdDispatchBase
-
-foreign import ccall "dynamic" unwrapVkCmdDispatchBase ::
-               PFN_vkCmdDispatchBase -> HS_vkCmdDispatchBase
-
-instance VulkanProc "vkCmdDispatchBase" where
-        type VkProcType "vkCmdDispatchBase" = HS_vkCmdDispatchBase
-        vkProcSymbol = _VkCmdDispatchBase
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCmdDispatchBase
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO ::
-        VkStructureType
-
-pattern VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO =
-        VkStructureType 1000060000
-
-pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO ::
-        VkStructureType
-
-pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO =
-        VkStructureType 1000060003
-
-pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO ::
-        VkStructureType
-
-pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO =
-        VkStructureType 1000060004
-
-pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO ::
-        VkStructureType
-
-pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO =
-        VkStructureType 1000060005
-
-pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO ::
-        VkStructureType
-
-pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO =
-        VkStructureType 1000060006
-
--- | bitpos = @3@
-pattern VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT ::
-        VkPipelineCreateFlagBits
-
-pattern VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT =
-        VkPipelineCreateFlagBits 8
-
--- | bitpos = @4@
-pattern VK_PIPELINE_CREATE_DISPATCH_BASE ::
-        VkPipelineCreateFlagBits
-
-pattern VK_PIPELINE_CREATE_DISPATCH_BASE =
-        VkPipelineCreateFlagBits 16
-
--- | Dependency is across devices
---
---   bitpos = @2@
-pattern VK_DEPENDENCY_DEVICE_GROUP_BIT :: VkDependencyFlagBits
-
-pattern VK_DEPENDENCY_DEVICE_GROUP_BIT = VkDependencyFlagBits 4
-
-pattern VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO ::
-        VkStructureType
-
-pattern VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO =
-        VkStructureType 1000060013
-
-pattern VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO ::
-        VkStructureType
-
-pattern VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO =
-        VkStructureType 1000060014
-
--- | Allows using VkBindImageMemoryDeviceGroupInfo::pSplitInstanceBindRegions when binding memory to the image
---
---   bitpos = @6@
-pattern VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT ::
-        VkImageCreateFlagBits
-
-pattern VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT =
-        VkImageCreateFlagBits 64
-
-pattern VkEnumeratePhysicalDeviceGroups :: CString
-
-pattern VkEnumeratePhysicalDeviceGroups <-
-        (is_VkEnumeratePhysicalDeviceGroups -> True)
-  where VkEnumeratePhysicalDeviceGroups
-          = _VkEnumeratePhysicalDeviceGroups
-
-{-# INLINE _VkEnumeratePhysicalDeviceGroups #-}
-
-_VkEnumeratePhysicalDeviceGroups :: CString
-_VkEnumeratePhysicalDeviceGroups
-  = Ptr "vkEnumeratePhysicalDeviceGroups\NUL"#
-
-{-# INLINE is_VkEnumeratePhysicalDeviceGroups #-}
-
-is_VkEnumeratePhysicalDeviceGroups :: CString -> Bool
-is_VkEnumeratePhysicalDeviceGroups
-  = (EQ ==) . cmpCStrings _VkEnumeratePhysicalDeviceGroups
-
-type VkEnumeratePhysicalDeviceGroups =
-     "vkEnumeratePhysicalDeviceGroups"
-
-#ifdef NATIVE_FFI_VK_VERSION_1_1
--- |
--- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INITIALIZATION_FAILED'.
---
--- > VkResult vkEnumeratePhysicalDeviceGroups
--- >     ( VkInstance instance
--- >     , uint32_t* pPhysicalDeviceGroupCount
--- >     , VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumeratePhysicalDeviceGroups vkEnumeratePhysicalDeviceGroups registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-1@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkEnumeratePhysicalDeviceGroups"
-               vkEnumeratePhysicalDeviceGroups ::
-               VkInstance -- ^ instance
-                          ->
-                 Ptr Word32 -- ^ pPhysicalDeviceGroupCount
-                            -> Ptr VkPhysicalDeviceGroupProperties -- ^ pPhysicalDeviceGroupProperties
-                                                                   -> IO VkResult
-
-#else
--- |
--- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INITIALIZATION_FAILED'.
---
--- > VkResult vkEnumeratePhysicalDeviceGroups
--- >     ( VkInstance instance
--- >     , uint32_t* pPhysicalDeviceGroupCount
--- >     , VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumeratePhysicalDeviceGroups vkEnumeratePhysicalDeviceGroups registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-1@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkEnumeratePhysicalDeviceGroupsSafe@ and @vkEnumeratePhysicalDeviceGroups@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myEnumeratePhysicalDeviceGroups <- vkGetInstanceProc @VkEnumeratePhysicalDeviceGroups vkInstance
---
--- or less efficient:
---
--- > myEnumeratePhysicalDeviceGroups <- vkGetProc @VkEnumeratePhysicalDeviceGroups
---
-vkEnumeratePhysicalDeviceGroups ::
-                                VkInstance -- ^ instance
-                                           ->
-                                  Ptr Word32 -- ^ pPhysicalDeviceGroupCount
-                                             -> Ptr VkPhysicalDeviceGroupProperties -- ^ pPhysicalDeviceGroupProperties
-                                                                                    -> IO VkResult
-vkEnumeratePhysicalDeviceGroups
-  = unsafeDupablePerformIO
-      (vkGetProc @VkEnumeratePhysicalDeviceGroups)
-
-{-# NOINLINE vkEnumeratePhysicalDeviceGroups #-}
-#endif
-
-#ifdef NATIVE_FFI_VK_VERSION_1_1
--- |
--- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INITIALIZATION_FAILED'.
---
--- > VkResult vkEnumeratePhysicalDeviceGroups
--- >     ( VkInstance instance
--- >     , uint32_t* pPhysicalDeviceGroupCount
--- >     , VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumeratePhysicalDeviceGroups vkEnumeratePhysicalDeviceGroups registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-1@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkEnumeratePhysicalDeviceGroups"
-               vkEnumeratePhysicalDeviceGroupsSafe ::
-               VkInstance -- ^ instance
-                          ->
-                 Ptr Word32 -- ^ pPhysicalDeviceGroupCount
-                            -> Ptr VkPhysicalDeviceGroupProperties -- ^ pPhysicalDeviceGroupProperties
-                                                                   -> IO VkResult
-
-#else
--- |
--- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INITIALIZATION_FAILED'.
---
--- > VkResult vkEnumeratePhysicalDeviceGroups
--- >     ( VkInstance instance
--- >     , uint32_t* pPhysicalDeviceGroupCount
--- >     , VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumeratePhysicalDeviceGroups vkEnumeratePhysicalDeviceGroups registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-1@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkEnumeratePhysicalDeviceGroupsSafe@ and @vkEnumeratePhysicalDeviceGroups@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myEnumeratePhysicalDeviceGroups <- vkGetInstanceProc @VkEnumeratePhysicalDeviceGroups vkInstance
---
--- or less efficient:
---
--- > myEnumeratePhysicalDeviceGroups <- vkGetProc @VkEnumeratePhysicalDeviceGroups
---
-vkEnumeratePhysicalDeviceGroupsSafe ::
-                                    VkInstance -- ^ instance
-                                               ->
-                                      Ptr Word32 -- ^ pPhysicalDeviceGroupCount
-                                                 ->
-                                        Ptr VkPhysicalDeviceGroupProperties -- ^ pPhysicalDeviceGroupProperties
-                                                                            -> IO VkResult
-vkEnumeratePhysicalDeviceGroupsSafe
-  = vkEnumeratePhysicalDeviceGroups
-
-{-# INLINE vkEnumeratePhysicalDeviceGroupsSafe #-}
-#endif
-
--- | Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INITIALIZATION_FAILED'.
---
---   > VkResult vkEnumeratePhysicalDeviceGroups
---   >     ( VkInstance instance
---   >     , uint32_t* pPhysicalDeviceGroupCount
---   >     , VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumeratePhysicalDeviceGroups vkEnumeratePhysicalDeviceGroups registry at www.khronos.org>
-type HS_vkEnumeratePhysicalDeviceGroups =
-     VkInstance -- ^ instance
-                ->
-       Ptr Word32 -- ^ pPhysicalDeviceGroupCount
-                  -> Ptr VkPhysicalDeviceGroupProperties -- ^ pPhysicalDeviceGroupProperties
-                                                         -> IO VkResult
-
-type PFN_vkEnumeratePhysicalDeviceGroups =
-     FunPtr HS_vkEnumeratePhysicalDeviceGroups
-
-foreign import ccall "dynamic"
-               unwrapVkEnumeratePhysicalDeviceGroups ::
-               PFN_vkEnumeratePhysicalDeviceGroups ->
-                 HS_vkEnumeratePhysicalDeviceGroups
-
-instance VulkanProc "vkEnumeratePhysicalDeviceGroups" where
-        type VkProcType "vkEnumeratePhysicalDeviceGroups" =
-             HS_vkEnumeratePhysicalDeviceGroups
-        vkProcSymbol = _VkEnumeratePhysicalDeviceGroups
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkEnumeratePhysicalDeviceGroups
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES ::
-        VkStructureType
-
-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES =
-        VkStructureType 1000070000
-
-pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO ::
-        VkStructureType
-
-pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO =
-        VkStructureType 1000070001
-
--- | If set, heap allocations allocate multiple instances by default
---
---   bitpos = @1@
-pattern VK_MEMORY_HEAP_MULTI_INSTANCE_BIT :: VkMemoryHeapFlagBits
-
-pattern VK_MEMORY_HEAP_MULTI_INSTANCE_BIT = VkMemoryHeapFlagBits 2
-
-pattern VkGetImageMemoryRequirements2 :: CString
-
-pattern VkGetImageMemoryRequirements2 <-
-        (is_VkGetImageMemoryRequirements2 -> True)
-  where VkGetImageMemoryRequirements2
-          = _VkGetImageMemoryRequirements2
-
-{-# INLINE _VkGetImageMemoryRequirements2 #-}
-
-_VkGetImageMemoryRequirements2 :: CString
-_VkGetImageMemoryRequirements2
-  = Ptr "vkGetImageMemoryRequirements2\NUL"#
-
-{-# INLINE is_VkGetImageMemoryRequirements2 #-}
-
-is_VkGetImageMemoryRequirements2 :: CString -> Bool
-is_VkGetImageMemoryRequirements2
-  = (EQ ==) . cmpCStrings _VkGetImageMemoryRequirements2
-
-type VkGetImageMemoryRequirements2 =
-     "vkGetImageMemoryRequirements2"
-
-#ifdef NATIVE_FFI_VK_VERSION_1_1
--- |
--- > void vkGetImageMemoryRequirements2
--- >     ( VkDevice device
--- >     , const VkImageMemoryRequirementsInfo2* pInfo
--- >     , VkMemoryRequirements2* pMemoryRequirements
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetImageMemoryRequirements2 vkGetImageMemoryRequirements2 registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-1@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkGetImageMemoryRequirements2"
-               vkGetImageMemoryRequirements2 ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkImageMemoryRequirementsInfo2 -- ^ pInfo
-                                                    ->
-                   Ptr VkMemoryRequirements2 -- ^ pMemoryRequirements
-                                             -> IO ()
-
-#else
--- |
--- > void vkGetImageMemoryRequirements2
--- >     ( VkDevice device
--- >     , const VkImageMemoryRequirementsInfo2* pInfo
--- >     , VkMemoryRequirements2* pMemoryRequirements
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetImageMemoryRequirements2 vkGetImageMemoryRequirements2 registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-1@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkGetImageMemoryRequirements2Safe@ and @vkGetImageMemoryRequirements2@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetImageMemoryRequirements2 <- vkGetDeviceProc @VkGetImageMemoryRequirements2 vkDevice
---
--- or less efficient:
---
--- > myGetImageMemoryRequirements2 <- vkGetProc @VkGetImageMemoryRequirements2
---
-vkGetImageMemoryRequirements2 ::
-                              VkDevice -- ^ device
-                                       ->
-                                Ptr VkImageMemoryRequirementsInfo2 -- ^ pInfo
-                                                                   ->
-                                  Ptr VkMemoryRequirements2 -- ^ pMemoryRequirements
-                                                            -> IO ()
-vkGetImageMemoryRequirements2
-  = unsafeDupablePerformIO (vkGetProc @VkGetImageMemoryRequirements2)
-
-{-# NOINLINE vkGetImageMemoryRequirements2 #-}
-#endif
-
-#ifdef NATIVE_FFI_VK_VERSION_1_1
--- |
--- > void vkGetImageMemoryRequirements2
--- >     ( VkDevice device
--- >     , const VkImageMemoryRequirementsInfo2* pInfo
--- >     , VkMemoryRequirements2* pMemoryRequirements
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetImageMemoryRequirements2 vkGetImageMemoryRequirements2 registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-1@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkGetImageMemoryRequirements2"
-               vkGetImageMemoryRequirements2Safe ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkImageMemoryRequirementsInfo2 -- ^ pInfo
-                                                    ->
-                   Ptr VkMemoryRequirements2 -- ^ pMemoryRequirements
-                                             -> IO ()
-
-#else
--- |
--- > void vkGetImageMemoryRequirements2
--- >     ( VkDevice device
--- >     , const VkImageMemoryRequirementsInfo2* pInfo
--- >     , VkMemoryRequirements2* pMemoryRequirements
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetImageMemoryRequirements2 vkGetImageMemoryRequirements2 registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-1@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkGetImageMemoryRequirements2Safe@ and @vkGetImageMemoryRequirements2@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetImageMemoryRequirements2 <- vkGetDeviceProc @VkGetImageMemoryRequirements2 vkDevice
---
--- or less efficient:
---
--- > myGetImageMemoryRequirements2 <- vkGetProc @VkGetImageMemoryRequirements2
---
-vkGetImageMemoryRequirements2Safe ::
-                                  VkDevice -- ^ device
-                                           ->
-                                    Ptr VkImageMemoryRequirementsInfo2 -- ^ pInfo
-                                                                       ->
-                                      Ptr VkMemoryRequirements2 -- ^ pMemoryRequirements
-                                                                -> IO ()
-vkGetImageMemoryRequirements2Safe = vkGetImageMemoryRequirements2
-
-{-# INLINE vkGetImageMemoryRequirements2Safe #-}
-#endif
-
--- | > void vkGetImageMemoryRequirements2
---   >     ( VkDevice device
---   >     , const VkImageMemoryRequirementsInfo2* pInfo
---   >     , VkMemoryRequirements2* pMemoryRequirements
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetImageMemoryRequirements2 vkGetImageMemoryRequirements2 registry at www.khronos.org>
-type HS_vkGetImageMemoryRequirements2 =
-     VkDevice -- ^ device
-              ->
-       Ptr VkImageMemoryRequirementsInfo2 -- ^ pInfo
-                                          ->
-         Ptr VkMemoryRequirements2 -- ^ pMemoryRequirements
-                                   -> IO ()
-
-type PFN_vkGetImageMemoryRequirements2 =
-     FunPtr HS_vkGetImageMemoryRequirements2
-
-foreign import ccall "dynamic" unwrapVkGetImageMemoryRequirements2
-               ::
-               PFN_vkGetImageMemoryRequirements2 ->
-                 HS_vkGetImageMemoryRequirements2
-
-instance VulkanProc "vkGetImageMemoryRequirements2" where
-        type VkProcType "vkGetImageMemoryRequirements2" =
-             HS_vkGetImageMemoryRequirements2
-        vkProcSymbol = _VkGetImageMemoryRequirements2
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkGetImageMemoryRequirements2
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VkGetBufferMemoryRequirements2 :: CString
-
-pattern VkGetBufferMemoryRequirements2 <-
-        (is_VkGetBufferMemoryRequirements2 -> True)
-  where VkGetBufferMemoryRequirements2
-          = _VkGetBufferMemoryRequirements2
-
-{-# INLINE _VkGetBufferMemoryRequirements2 #-}
-
-_VkGetBufferMemoryRequirements2 :: CString
-_VkGetBufferMemoryRequirements2
-  = Ptr "vkGetBufferMemoryRequirements2\NUL"#
-
-{-# INLINE is_VkGetBufferMemoryRequirements2 #-}
-
-is_VkGetBufferMemoryRequirements2 :: CString -> Bool
-is_VkGetBufferMemoryRequirements2
-  = (EQ ==) . cmpCStrings _VkGetBufferMemoryRequirements2
-
-type VkGetBufferMemoryRequirements2 =
-     "vkGetBufferMemoryRequirements2"
-
-#ifdef NATIVE_FFI_VK_VERSION_1_1
--- |
--- > void vkGetBufferMemoryRequirements2
--- >     ( VkDevice device
--- >     , const VkBufferMemoryRequirementsInfo2* pInfo
--- >     , VkMemoryRequirements2* pMemoryRequirements
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetBufferMemoryRequirements2 vkGetBufferMemoryRequirements2 registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-1@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkGetBufferMemoryRequirements2"
-               vkGetBufferMemoryRequirements2 ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkBufferMemoryRequirementsInfo2 -- ^ pInfo
-                                                     ->
-                   Ptr VkMemoryRequirements2 -- ^ pMemoryRequirements
-                                             -> IO ()
-
-#else
--- |
--- > void vkGetBufferMemoryRequirements2
--- >     ( VkDevice device
--- >     , const VkBufferMemoryRequirementsInfo2* pInfo
--- >     , VkMemoryRequirements2* pMemoryRequirements
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetBufferMemoryRequirements2 vkGetBufferMemoryRequirements2 registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-1@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkGetBufferMemoryRequirements2Safe@ and @vkGetBufferMemoryRequirements2@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetBufferMemoryRequirements2 <- vkGetDeviceProc @VkGetBufferMemoryRequirements2 vkDevice
---
--- or less efficient:
---
--- > myGetBufferMemoryRequirements2 <- vkGetProc @VkGetBufferMemoryRequirements2
---
-vkGetBufferMemoryRequirements2 ::
-                               VkDevice -- ^ device
-                                        ->
-                                 Ptr VkBufferMemoryRequirementsInfo2 -- ^ pInfo
-                                                                     ->
-                                   Ptr VkMemoryRequirements2 -- ^ pMemoryRequirements
-                                                             -> IO ()
-vkGetBufferMemoryRequirements2
-  = unsafeDupablePerformIO
-      (vkGetProc @VkGetBufferMemoryRequirements2)
-
-{-# NOINLINE vkGetBufferMemoryRequirements2 #-}
-#endif
-
-#ifdef NATIVE_FFI_VK_VERSION_1_1
--- |
--- > void vkGetBufferMemoryRequirements2
--- >     ( VkDevice device
--- >     , const VkBufferMemoryRequirementsInfo2* pInfo
--- >     , VkMemoryRequirements2* pMemoryRequirements
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetBufferMemoryRequirements2 vkGetBufferMemoryRequirements2 registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-1@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkGetBufferMemoryRequirements2"
-               vkGetBufferMemoryRequirements2Safe ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkBufferMemoryRequirementsInfo2 -- ^ pInfo
-                                                     ->
-                   Ptr VkMemoryRequirements2 -- ^ pMemoryRequirements
-                                             -> IO ()
-
-#else
--- |
--- > void vkGetBufferMemoryRequirements2
--- >     ( VkDevice device
--- >     , const VkBufferMemoryRequirementsInfo2* pInfo
--- >     , VkMemoryRequirements2* pMemoryRequirements
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetBufferMemoryRequirements2 vkGetBufferMemoryRequirements2 registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-1@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkGetBufferMemoryRequirements2Safe@ and @vkGetBufferMemoryRequirements2@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetBufferMemoryRequirements2 <- vkGetDeviceProc @VkGetBufferMemoryRequirements2 vkDevice
---
--- or less efficient:
---
--- > myGetBufferMemoryRequirements2 <- vkGetProc @VkGetBufferMemoryRequirements2
---
-vkGetBufferMemoryRequirements2Safe ::
-                                   VkDevice -- ^ device
-                                            ->
-                                     Ptr VkBufferMemoryRequirementsInfo2 -- ^ pInfo
-                                                                         ->
-                                       Ptr VkMemoryRequirements2 -- ^ pMemoryRequirements
-                                                                 -> IO ()
-vkGetBufferMemoryRequirements2Safe = vkGetBufferMemoryRequirements2
-
-{-# INLINE vkGetBufferMemoryRequirements2Safe #-}
-#endif
-
--- | > void vkGetBufferMemoryRequirements2
---   >     ( VkDevice device
---   >     , const VkBufferMemoryRequirementsInfo2* pInfo
---   >     , VkMemoryRequirements2* pMemoryRequirements
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetBufferMemoryRequirements2 vkGetBufferMemoryRequirements2 registry at www.khronos.org>
-type HS_vkGetBufferMemoryRequirements2 =
-     VkDevice -- ^ device
-              ->
-       Ptr VkBufferMemoryRequirementsInfo2 -- ^ pInfo
-                                           ->
-         Ptr VkMemoryRequirements2 -- ^ pMemoryRequirements
-                                   -> IO ()
-
-type PFN_vkGetBufferMemoryRequirements2 =
-     FunPtr HS_vkGetBufferMemoryRequirements2
-
-foreign import ccall "dynamic" unwrapVkGetBufferMemoryRequirements2
-               ::
-               PFN_vkGetBufferMemoryRequirements2 ->
-                 HS_vkGetBufferMemoryRequirements2
-
-instance VulkanProc "vkGetBufferMemoryRequirements2" where
-        type VkProcType "vkGetBufferMemoryRequirements2" =
-             HS_vkGetBufferMemoryRequirements2
-        vkProcSymbol = _VkGetBufferMemoryRequirements2
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkGetBufferMemoryRequirements2
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VkGetImageSparseMemoryRequirements2 :: CString
-
-pattern VkGetImageSparseMemoryRequirements2 <-
-        (is_VkGetImageSparseMemoryRequirements2 -> True)
-  where VkGetImageSparseMemoryRequirements2
-          = _VkGetImageSparseMemoryRequirements2
-
-{-# INLINE _VkGetImageSparseMemoryRequirements2 #-}
-
-_VkGetImageSparseMemoryRequirements2 :: CString
-_VkGetImageSparseMemoryRequirements2
-  = Ptr "vkGetImageSparseMemoryRequirements2\NUL"#
-
-{-# INLINE is_VkGetImageSparseMemoryRequirements2 #-}
-
-is_VkGetImageSparseMemoryRequirements2 :: CString -> Bool
-is_VkGetImageSparseMemoryRequirements2
-  = (EQ ==) . cmpCStrings _VkGetImageSparseMemoryRequirements2
-
-type VkGetImageSparseMemoryRequirements2 =
-     "vkGetImageSparseMemoryRequirements2"
-
-#ifdef NATIVE_FFI_VK_VERSION_1_1
--- |
--- > void vkGetImageSparseMemoryRequirements2
--- >     ( VkDevice device
--- >     , const VkImageSparseMemoryRequirementsInfo2* pInfo
--- >     , uint32_t* pSparseMemoryRequirementCount
--- >     , VkSparseImageMemoryRequirements2* pSparseMemoryRequirements
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetImageSparseMemoryRequirements2 vkGetImageSparseMemoryRequirements2 registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-1@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkGetImageSparseMemoryRequirements2"
-               vkGetImageSparseMemoryRequirements2 ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkImageSparseMemoryRequirementsInfo2 -- ^ pInfo
-                                                          ->
-                   Ptr Word32 -- ^ pSparseMemoryRequirementCount
-                              -> Ptr VkSparseImageMemoryRequirements2 -- ^ pSparseMemoryRequirements
-                                                                      -> IO ()
-
-#else
--- |
--- > void vkGetImageSparseMemoryRequirements2
--- >     ( VkDevice device
--- >     , const VkImageSparseMemoryRequirementsInfo2* pInfo
--- >     , uint32_t* pSparseMemoryRequirementCount
--- >     , VkSparseImageMemoryRequirements2* pSparseMemoryRequirements
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetImageSparseMemoryRequirements2 vkGetImageSparseMemoryRequirements2 registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-1@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkGetImageSparseMemoryRequirements2Safe@ and @vkGetImageSparseMemoryRequirements2@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetImageSparseMemoryRequirements2 <- vkGetDeviceProc @VkGetImageSparseMemoryRequirements2 vkDevice
---
--- or less efficient:
---
--- > myGetImageSparseMemoryRequirements2 <- vkGetProc @VkGetImageSparseMemoryRequirements2
---
-vkGetImageSparseMemoryRequirements2 ::
-                                    VkDevice -- ^ device
-                                             ->
-                                      Ptr VkImageSparseMemoryRequirementsInfo2 -- ^ pInfo
-                                                                               ->
-                                        Ptr Word32 -- ^ pSparseMemoryRequirementCount
-                                                   -> Ptr VkSparseImageMemoryRequirements2 -- ^ pSparseMemoryRequirements
-                                                                                           -> IO ()
-vkGetImageSparseMemoryRequirements2
-  = unsafeDupablePerformIO
-      (vkGetProc @VkGetImageSparseMemoryRequirements2)
-
-{-# NOINLINE vkGetImageSparseMemoryRequirements2 #-}
-#endif
-
-#ifdef NATIVE_FFI_VK_VERSION_1_1
--- |
--- > void vkGetImageSparseMemoryRequirements2
--- >     ( VkDevice device
--- >     , const VkImageSparseMemoryRequirementsInfo2* pInfo
--- >     , uint32_t* pSparseMemoryRequirementCount
--- >     , VkSparseImageMemoryRequirements2* pSparseMemoryRequirements
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetImageSparseMemoryRequirements2 vkGetImageSparseMemoryRequirements2 registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-1@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkGetImageSparseMemoryRequirements2"
-               vkGetImageSparseMemoryRequirements2Safe ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkImageSparseMemoryRequirementsInfo2 -- ^ pInfo
-                                                          ->
-                   Ptr Word32 -- ^ pSparseMemoryRequirementCount
-                              -> Ptr VkSparseImageMemoryRequirements2 -- ^ pSparseMemoryRequirements
-                                                                      -> IO ()
-
-#else
--- |
--- > void vkGetImageSparseMemoryRequirements2
--- >     ( VkDevice device
--- >     , const VkImageSparseMemoryRequirementsInfo2* pInfo
--- >     , uint32_t* pSparseMemoryRequirementCount
--- >     , VkSparseImageMemoryRequirements2* pSparseMemoryRequirements
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetImageSparseMemoryRequirements2 vkGetImageSparseMemoryRequirements2 registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-1@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkGetImageSparseMemoryRequirements2Safe@ and @vkGetImageSparseMemoryRequirements2@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetImageSparseMemoryRequirements2 <- vkGetDeviceProc @VkGetImageSparseMemoryRequirements2 vkDevice
---
--- or less efficient:
---
--- > myGetImageSparseMemoryRequirements2 <- vkGetProc @VkGetImageSparseMemoryRequirements2
---
-vkGetImageSparseMemoryRequirements2Safe ::
-                                        VkDevice -- ^ device
-                                                 ->
-                                          Ptr VkImageSparseMemoryRequirementsInfo2 -- ^ pInfo
-                                                                                   ->
-                                            Ptr Word32 -- ^ pSparseMemoryRequirementCount
-                                                       ->
-                                              Ptr VkSparseImageMemoryRequirements2 -- ^ pSparseMemoryRequirements
-                                                                                   -> IO ()
-vkGetImageSparseMemoryRequirements2Safe
-  = vkGetImageSparseMemoryRequirements2
-
-{-# INLINE vkGetImageSparseMemoryRequirements2Safe #-}
-#endif
-
--- | > void vkGetImageSparseMemoryRequirements2
---   >     ( VkDevice device
---   >     , const VkImageSparseMemoryRequirementsInfo2* pInfo
---   >     , uint32_t* pSparseMemoryRequirementCount
---   >     , VkSparseImageMemoryRequirements2* pSparseMemoryRequirements
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetImageSparseMemoryRequirements2 vkGetImageSparseMemoryRequirements2 registry at www.khronos.org>
-type HS_vkGetImageSparseMemoryRequirements2 =
-     VkDevice -- ^ device
-              ->
-       Ptr VkImageSparseMemoryRequirementsInfo2 -- ^ pInfo
-                                                ->
-         Ptr Word32 -- ^ pSparseMemoryRequirementCount
-                    -> Ptr VkSparseImageMemoryRequirements2 -- ^ pSparseMemoryRequirements
-                                                            -> IO ()
-
-type PFN_vkGetImageSparseMemoryRequirements2 =
-     FunPtr HS_vkGetImageSparseMemoryRequirements2
-
-foreign import ccall "dynamic"
-               unwrapVkGetImageSparseMemoryRequirements2 ::
-               PFN_vkGetImageSparseMemoryRequirements2 ->
-                 HS_vkGetImageSparseMemoryRequirements2
-
-instance VulkanProc "vkGetImageSparseMemoryRequirements2" where
-        type VkProcType "vkGetImageSparseMemoryRequirements2" =
-             HS_vkGetImageSparseMemoryRequirements2
-        vkProcSymbol = _VkGetImageSparseMemoryRequirements2
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkGetImageSparseMemoryRequirements2
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2 ::
-        VkStructureType
-
-pattern VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2 =
-        VkStructureType 1000146000
-
-pattern VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2 ::
-        VkStructureType
-
-pattern VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2 =
-        VkStructureType 1000146001
-
-pattern VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2
-        :: VkStructureType
-
-pattern VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2 =
-        VkStructureType 1000146002
-
-pattern VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2 :: VkStructureType
-
-pattern VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2 =
-        VkStructureType 1000146003
-
-pattern VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2 ::
-        VkStructureType
-
-pattern VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2 =
-        VkStructureType 1000146004
-
-pattern VkGetPhysicalDeviceFeatures2 :: CString
-
-pattern VkGetPhysicalDeviceFeatures2 <-
-        (is_VkGetPhysicalDeviceFeatures2 -> True)
-  where VkGetPhysicalDeviceFeatures2 = _VkGetPhysicalDeviceFeatures2
-
-{-# INLINE _VkGetPhysicalDeviceFeatures2 #-}
-
-_VkGetPhysicalDeviceFeatures2 :: CString
-_VkGetPhysicalDeviceFeatures2
-  = Ptr "vkGetPhysicalDeviceFeatures2\NUL"#
-
-{-# INLINE is_VkGetPhysicalDeviceFeatures2 #-}
-
-is_VkGetPhysicalDeviceFeatures2 :: CString -> Bool
-is_VkGetPhysicalDeviceFeatures2
-  = (EQ ==) . cmpCStrings _VkGetPhysicalDeviceFeatures2
-
-type VkGetPhysicalDeviceFeatures2 = "vkGetPhysicalDeviceFeatures2"
-
-#ifdef NATIVE_FFI_VK_VERSION_1_1
--- |
--- > void vkGetPhysicalDeviceFeatures2
--- >     ( VkPhysicalDevice physicalDevice
--- >     , VkPhysicalDeviceFeatures2* pFeatures
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceFeatures2 vkGetPhysicalDeviceFeatures2 registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-1@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkGetPhysicalDeviceFeatures2"
-               vkGetPhysicalDeviceFeatures2 ::
-               VkPhysicalDevice -- ^ physicalDevice
-                                -> Ptr VkPhysicalDeviceFeatures2 -- ^ pFeatures
-                                                                 -> IO ()
-
-#else
--- |
--- > void vkGetPhysicalDeviceFeatures2
--- >     ( VkPhysicalDevice physicalDevice
--- >     , VkPhysicalDeviceFeatures2* pFeatures
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceFeatures2 vkGetPhysicalDeviceFeatures2 registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-1@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkGetPhysicalDeviceFeatures2Safe@ and @vkGetPhysicalDeviceFeatures2@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetPhysicalDeviceFeatures2 <- vkGetInstanceProc @VkGetPhysicalDeviceFeatures2 vkInstance
---
--- or less efficient:
---
--- > myGetPhysicalDeviceFeatures2 <- vkGetProc @VkGetPhysicalDeviceFeatures2
---
-vkGetPhysicalDeviceFeatures2 ::
-                             VkPhysicalDevice -- ^ physicalDevice
-                                              -> Ptr VkPhysicalDeviceFeatures2 -- ^ pFeatures
-                                                                               -> IO ()
-vkGetPhysicalDeviceFeatures2
-  = unsafeDupablePerformIO (vkGetProc @VkGetPhysicalDeviceFeatures2)
-
-{-# NOINLINE vkGetPhysicalDeviceFeatures2 #-}
-#endif
-
-#ifdef NATIVE_FFI_VK_VERSION_1_1
--- |
--- > void vkGetPhysicalDeviceFeatures2
--- >     ( VkPhysicalDevice physicalDevice
--- >     , VkPhysicalDeviceFeatures2* pFeatures
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceFeatures2 vkGetPhysicalDeviceFeatures2 registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-1@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkGetPhysicalDeviceFeatures2"
-               vkGetPhysicalDeviceFeatures2Safe ::
-               VkPhysicalDevice -- ^ physicalDevice
-                                -> Ptr VkPhysicalDeviceFeatures2 -- ^ pFeatures
-                                                                 -> IO ()
-
-#else
--- |
--- > void vkGetPhysicalDeviceFeatures2
--- >     ( VkPhysicalDevice physicalDevice
--- >     , VkPhysicalDeviceFeatures2* pFeatures
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceFeatures2 vkGetPhysicalDeviceFeatures2 registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-1@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkGetPhysicalDeviceFeatures2Safe@ and @vkGetPhysicalDeviceFeatures2@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetPhysicalDeviceFeatures2 <- vkGetInstanceProc @VkGetPhysicalDeviceFeatures2 vkInstance
---
--- or less efficient:
---
--- > myGetPhysicalDeviceFeatures2 <- vkGetProc @VkGetPhysicalDeviceFeatures2
---
-vkGetPhysicalDeviceFeatures2Safe ::
-                                 VkPhysicalDevice -- ^ physicalDevice
-                                                  -> Ptr VkPhysicalDeviceFeatures2 -- ^ pFeatures
-                                                                                   -> IO ()
-vkGetPhysicalDeviceFeatures2Safe = vkGetPhysicalDeviceFeatures2
-
-{-# INLINE vkGetPhysicalDeviceFeatures2Safe #-}
-#endif
-
--- | > void vkGetPhysicalDeviceFeatures2
---   >     ( VkPhysicalDevice physicalDevice
---   >     , VkPhysicalDeviceFeatures2* pFeatures
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceFeatures2 vkGetPhysicalDeviceFeatures2 registry at www.khronos.org>
-type HS_vkGetPhysicalDeviceFeatures2 =
-     VkPhysicalDevice -- ^ physicalDevice
-                      -> Ptr VkPhysicalDeviceFeatures2 -- ^ pFeatures
-                                                       -> IO ()
-
-type PFN_vkGetPhysicalDeviceFeatures2 =
-     FunPtr HS_vkGetPhysicalDeviceFeatures2
-
-foreign import ccall "dynamic" unwrapVkGetPhysicalDeviceFeatures2
-               ::
-               PFN_vkGetPhysicalDeviceFeatures2 -> HS_vkGetPhysicalDeviceFeatures2
-
-instance VulkanProc "vkGetPhysicalDeviceFeatures2" where
-        type VkProcType "vkGetPhysicalDeviceFeatures2" =
-             HS_vkGetPhysicalDeviceFeatures2
-        vkProcSymbol = _VkGetPhysicalDeviceFeatures2
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkGetPhysicalDeviceFeatures2
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VkGetPhysicalDeviceProperties2 :: CString
-
-pattern VkGetPhysicalDeviceProperties2 <-
-        (is_VkGetPhysicalDeviceProperties2 -> True)
-  where VkGetPhysicalDeviceProperties2
-          = _VkGetPhysicalDeviceProperties2
-
-{-# INLINE _VkGetPhysicalDeviceProperties2 #-}
-
-_VkGetPhysicalDeviceProperties2 :: CString
-_VkGetPhysicalDeviceProperties2
-  = Ptr "vkGetPhysicalDeviceProperties2\NUL"#
-
-{-# INLINE is_VkGetPhysicalDeviceProperties2 #-}
-
-is_VkGetPhysicalDeviceProperties2 :: CString -> Bool
-is_VkGetPhysicalDeviceProperties2
-  = (EQ ==) . cmpCStrings _VkGetPhysicalDeviceProperties2
-
-type VkGetPhysicalDeviceProperties2 =
-     "vkGetPhysicalDeviceProperties2"
-
-#ifdef NATIVE_FFI_VK_VERSION_1_1
--- |
--- > void vkGetPhysicalDeviceProperties2
--- >     ( VkPhysicalDevice physicalDevice
--- >     , VkPhysicalDeviceProperties2* pProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceProperties2 vkGetPhysicalDeviceProperties2 registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-1@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkGetPhysicalDeviceProperties2"
-               vkGetPhysicalDeviceProperties2 ::
-               VkPhysicalDevice -- ^ physicalDevice
-                                -> Ptr VkPhysicalDeviceProperties2 -- ^ pProperties
-                                                                   -> IO ()
-
-#else
--- |
--- > void vkGetPhysicalDeviceProperties2
--- >     ( VkPhysicalDevice physicalDevice
--- >     , VkPhysicalDeviceProperties2* pProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceProperties2 vkGetPhysicalDeviceProperties2 registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-1@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkGetPhysicalDeviceProperties2Safe@ and @vkGetPhysicalDeviceProperties2@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetPhysicalDeviceProperties2 <- vkGetInstanceProc @VkGetPhysicalDeviceProperties2 vkInstance
---
--- or less efficient:
---
--- > myGetPhysicalDeviceProperties2 <- vkGetProc @VkGetPhysicalDeviceProperties2
---
-vkGetPhysicalDeviceProperties2 ::
-                               VkPhysicalDevice -- ^ physicalDevice
-                                                -> Ptr VkPhysicalDeviceProperties2 -- ^ pProperties
-                                                                                   -> IO ()
-vkGetPhysicalDeviceProperties2
-  = unsafeDupablePerformIO
-      (vkGetProc @VkGetPhysicalDeviceProperties2)
-
-{-# NOINLINE vkGetPhysicalDeviceProperties2 #-}
-#endif
-
-#ifdef NATIVE_FFI_VK_VERSION_1_1
--- |
--- > void vkGetPhysicalDeviceProperties2
--- >     ( VkPhysicalDevice physicalDevice
--- >     , VkPhysicalDeviceProperties2* pProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceProperties2 vkGetPhysicalDeviceProperties2 registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-1@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkGetPhysicalDeviceProperties2"
-               vkGetPhysicalDeviceProperties2Safe ::
-               VkPhysicalDevice -- ^ physicalDevice
-                                -> Ptr VkPhysicalDeviceProperties2 -- ^ pProperties
-                                                                   -> IO ()
-
-#else
--- |
--- > void vkGetPhysicalDeviceProperties2
--- >     ( VkPhysicalDevice physicalDevice
--- >     , VkPhysicalDeviceProperties2* pProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceProperties2 vkGetPhysicalDeviceProperties2 registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-1@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkGetPhysicalDeviceProperties2Safe@ and @vkGetPhysicalDeviceProperties2@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetPhysicalDeviceProperties2 <- vkGetInstanceProc @VkGetPhysicalDeviceProperties2 vkInstance
---
--- or less efficient:
---
--- > myGetPhysicalDeviceProperties2 <- vkGetProc @VkGetPhysicalDeviceProperties2
---
-vkGetPhysicalDeviceProperties2Safe ::
-                                   VkPhysicalDevice -- ^ physicalDevice
-                                                    -> Ptr VkPhysicalDeviceProperties2 -- ^ pProperties
-                                                                                       -> IO ()
-vkGetPhysicalDeviceProperties2Safe = vkGetPhysicalDeviceProperties2
-
-{-# INLINE vkGetPhysicalDeviceProperties2Safe #-}
-#endif
-
--- | > void vkGetPhysicalDeviceProperties2
---   >     ( VkPhysicalDevice physicalDevice
---   >     , VkPhysicalDeviceProperties2* pProperties
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceProperties2 vkGetPhysicalDeviceProperties2 registry at www.khronos.org>
-type HS_vkGetPhysicalDeviceProperties2 =
-     VkPhysicalDevice -- ^ physicalDevice
-                      -> Ptr VkPhysicalDeviceProperties2 -- ^ pProperties
-                                                         -> IO ()
-
-type PFN_vkGetPhysicalDeviceProperties2 =
-     FunPtr HS_vkGetPhysicalDeviceProperties2
-
-foreign import ccall "dynamic" unwrapVkGetPhysicalDeviceProperties2
-               ::
-               PFN_vkGetPhysicalDeviceProperties2 ->
-                 HS_vkGetPhysicalDeviceProperties2
-
-instance VulkanProc "vkGetPhysicalDeviceProperties2" where
-        type VkProcType "vkGetPhysicalDeviceProperties2" =
-             HS_vkGetPhysicalDeviceProperties2
-        vkProcSymbol = _VkGetPhysicalDeviceProperties2
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkGetPhysicalDeviceProperties2
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VkGetPhysicalDeviceFormatProperties2 :: CString
-
-pattern VkGetPhysicalDeviceFormatProperties2 <-
-        (is_VkGetPhysicalDeviceFormatProperties2 -> True)
-  where VkGetPhysicalDeviceFormatProperties2
-          = _VkGetPhysicalDeviceFormatProperties2
-
-{-# INLINE _VkGetPhysicalDeviceFormatProperties2 #-}
-
-_VkGetPhysicalDeviceFormatProperties2 :: CString
-_VkGetPhysicalDeviceFormatProperties2
-  = Ptr "vkGetPhysicalDeviceFormatProperties2\NUL"#
-
-{-# INLINE is_VkGetPhysicalDeviceFormatProperties2 #-}
-
-is_VkGetPhysicalDeviceFormatProperties2 :: CString -> Bool
-is_VkGetPhysicalDeviceFormatProperties2
-  = (EQ ==) . cmpCStrings _VkGetPhysicalDeviceFormatProperties2
-
-type VkGetPhysicalDeviceFormatProperties2 =
-     "vkGetPhysicalDeviceFormatProperties2"
-
-#ifdef NATIVE_FFI_VK_VERSION_1_1
--- |
--- > void vkGetPhysicalDeviceFormatProperties2
--- >     ( VkPhysicalDevice physicalDevice
--- >     , VkFormat format
--- >     , VkFormatProperties2* pFormatProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceFormatProperties2 vkGetPhysicalDeviceFormatProperties2 registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-1@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkGetPhysicalDeviceFormatProperties2"
-               vkGetPhysicalDeviceFormatProperties2 ::
-               VkPhysicalDevice -- ^ physicalDevice
-                                -> VkFormat -- ^ format
-                                            -> Ptr VkFormatProperties2 -- ^ pFormatProperties
-                                                                       -> IO ()
-
-#else
--- |
--- > void vkGetPhysicalDeviceFormatProperties2
--- >     ( VkPhysicalDevice physicalDevice
--- >     , VkFormat format
--- >     , VkFormatProperties2* pFormatProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceFormatProperties2 vkGetPhysicalDeviceFormatProperties2 registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-1@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkGetPhysicalDeviceFormatProperties2Safe@ and @vkGetPhysicalDeviceFormatProperties2@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetPhysicalDeviceFormatProperties2 <- vkGetInstanceProc @VkGetPhysicalDeviceFormatProperties2 vkInstance
---
--- or less efficient:
---
--- > myGetPhysicalDeviceFormatProperties2 <- vkGetProc @VkGetPhysicalDeviceFormatProperties2
---
-vkGetPhysicalDeviceFormatProperties2 ::
-                                     VkPhysicalDevice -- ^ physicalDevice
-                                                      ->
-                                       VkFormat -- ^ format
-                                                -> Ptr VkFormatProperties2 -- ^ pFormatProperties
-                                                                           -> IO ()
-vkGetPhysicalDeviceFormatProperties2
-  = unsafeDupablePerformIO
-      (vkGetProc @VkGetPhysicalDeviceFormatProperties2)
-
-{-# NOINLINE vkGetPhysicalDeviceFormatProperties2 #-}
-#endif
-
-#ifdef NATIVE_FFI_VK_VERSION_1_1
--- |
--- > void vkGetPhysicalDeviceFormatProperties2
--- >     ( VkPhysicalDevice physicalDevice
--- >     , VkFormat format
--- >     , VkFormatProperties2* pFormatProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceFormatProperties2 vkGetPhysicalDeviceFormatProperties2 registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-1@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkGetPhysicalDeviceFormatProperties2"
-               vkGetPhysicalDeviceFormatProperties2Safe ::
-               VkPhysicalDevice -- ^ physicalDevice
-                                -> VkFormat -- ^ format
-                                            -> Ptr VkFormatProperties2 -- ^ pFormatProperties
-                                                                       -> IO ()
-
-#else
--- |
--- > void vkGetPhysicalDeviceFormatProperties2
--- >     ( VkPhysicalDevice physicalDevice
--- >     , VkFormat format
--- >     , VkFormatProperties2* pFormatProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceFormatProperties2 vkGetPhysicalDeviceFormatProperties2 registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-1@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkGetPhysicalDeviceFormatProperties2Safe@ and @vkGetPhysicalDeviceFormatProperties2@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetPhysicalDeviceFormatProperties2 <- vkGetInstanceProc @VkGetPhysicalDeviceFormatProperties2 vkInstance
---
--- or less efficient:
---
--- > myGetPhysicalDeviceFormatProperties2 <- vkGetProc @VkGetPhysicalDeviceFormatProperties2
---
-vkGetPhysicalDeviceFormatProperties2Safe ::
-                                         VkPhysicalDevice -- ^ physicalDevice
-                                                          ->
-                                           VkFormat -- ^ format
-                                                    -> Ptr VkFormatProperties2 -- ^ pFormatProperties
-                                                                               -> IO ()
-vkGetPhysicalDeviceFormatProperties2Safe
-  = vkGetPhysicalDeviceFormatProperties2
-
-{-# INLINE vkGetPhysicalDeviceFormatProperties2Safe #-}
-#endif
-
--- | > void vkGetPhysicalDeviceFormatProperties2
---   >     ( VkPhysicalDevice physicalDevice
---   >     , VkFormat format
---   >     , VkFormatProperties2* pFormatProperties
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceFormatProperties2 vkGetPhysicalDeviceFormatProperties2 registry at www.khronos.org>
-type HS_vkGetPhysicalDeviceFormatProperties2 =
-     VkPhysicalDevice -- ^ physicalDevice
-                      -> VkFormat -- ^ format
-                                  -> Ptr VkFormatProperties2 -- ^ pFormatProperties
-                                                             -> IO ()
-
-type PFN_vkGetPhysicalDeviceFormatProperties2 =
-     FunPtr HS_vkGetPhysicalDeviceFormatProperties2
-
-foreign import ccall "dynamic"
-               unwrapVkGetPhysicalDeviceFormatProperties2 ::
-               PFN_vkGetPhysicalDeviceFormatProperties2 ->
-                 HS_vkGetPhysicalDeviceFormatProperties2
-
-instance VulkanProc "vkGetPhysicalDeviceFormatProperties2" where
-        type VkProcType "vkGetPhysicalDeviceFormatProperties2" =
-             HS_vkGetPhysicalDeviceFormatProperties2
-        vkProcSymbol = _VkGetPhysicalDeviceFormatProperties2
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkGetPhysicalDeviceFormatProperties2
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VkGetPhysicalDeviceImageFormatProperties2 :: CString
-
-pattern VkGetPhysicalDeviceImageFormatProperties2 <-
-        (is_VkGetPhysicalDeviceImageFormatProperties2 -> True)
-  where VkGetPhysicalDeviceImageFormatProperties2
-          = _VkGetPhysicalDeviceImageFormatProperties2
-
-{-# INLINE _VkGetPhysicalDeviceImageFormatProperties2 #-}
-
-_VkGetPhysicalDeviceImageFormatProperties2 :: CString
-_VkGetPhysicalDeviceImageFormatProperties2
-  = Ptr "vkGetPhysicalDeviceImageFormatProperties2\NUL"#
-
-{-# INLINE is_VkGetPhysicalDeviceImageFormatProperties2 #-}
-
-is_VkGetPhysicalDeviceImageFormatProperties2 :: CString -> Bool
-is_VkGetPhysicalDeviceImageFormatProperties2
-  = (EQ ==) . cmpCStrings _VkGetPhysicalDeviceImageFormatProperties2
-
-type VkGetPhysicalDeviceImageFormatProperties2 =
-     "vkGetPhysicalDeviceImageFormatProperties2"
-
-#ifdef NATIVE_FFI_VK_VERSION_1_1
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_FORMAT_NOT_SUPPORTED'.
---
--- > VkResult vkGetPhysicalDeviceImageFormatProperties2
--- >     ( VkPhysicalDevice physicalDevice
--- >     , const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo
--- >     , VkImageFormatProperties2* pImageFormatProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceImageFormatProperties2 vkGetPhysicalDeviceImageFormatProperties2 registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-1@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe
-               "vkGetPhysicalDeviceImageFormatProperties2"
-               vkGetPhysicalDeviceImageFormatProperties2 ::
-               VkPhysicalDevice -- ^ physicalDevice
-                                ->
-                 Ptr VkPhysicalDeviceImageFormatInfo2 -- ^ pImageFormatInfo
-                                                      ->
-                   Ptr VkImageFormatProperties2 -- ^ pImageFormatProperties
-                                                -> IO VkResult
-
-#else
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_FORMAT_NOT_SUPPORTED'.
---
--- > VkResult vkGetPhysicalDeviceImageFormatProperties2
--- >     ( VkPhysicalDevice physicalDevice
--- >     , const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo
--- >     , VkImageFormatProperties2* pImageFormatProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceImageFormatProperties2 vkGetPhysicalDeviceImageFormatProperties2 registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-1@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkGetPhysicalDeviceImageFormatProperties2Safe@ and @vkGetPhysicalDeviceImageFormatProperties2@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetPhysicalDeviceImageFormatProperties2 <- vkGetInstanceProc @VkGetPhysicalDeviceImageFormatProperties2 vkInstance
---
--- or less efficient:
---
--- > myGetPhysicalDeviceImageFormatProperties2 <- vkGetProc @VkGetPhysicalDeviceImageFormatProperties2
---
-vkGetPhysicalDeviceImageFormatProperties2 ::
-                                          VkPhysicalDevice -- ^ physicalDevice
-                                                           ->
-                                            Ptr VkPhysicalDeviceImageFormatInfo2 -- ^ pImageFormatInfo
-                                                                                 ->
-                                              Ptr VkImageFormatProperties2 -- ^ pImageFormatProperties
-                                                                           -> IO VkResult
-vkGetPhysicalDeviceImageFormatProperties2
-  = unsafeDupablePerformIO
-      (vkGetProc @VkGetPhysicalDeviceImageFormatProperties2)
-
-{-# NOINLINE vkGetPhysicalDeviceImageFormatProperties2 #-}
-#endif
-
-#ifdef NATIVE_FFI_VK_VERSION_1_1
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_FORMAT_NOT_SUPPORTED'.
---
--- > VkResult vkGetPhysicalDeviceImageFormatProperties2
--- >     ( VkPhysicalDevice physicalDevice
--- >     , const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo
--- >     , VkImageFormatProperties2* pImageFormatProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceImageFormatProperties2 vkGetPhysicalDeviceImageFormatProperties2 registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-1@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe
-               "vkGetPhysicalDeviceImageFormatProperties2"
-               vkGetPhysicalDeviceImageFormatProperties2Safe ::
-               VkPhysicalDevice -- ^ physicalDevice
-                                ->
-                 Ptr VkPhysicalDeviceImageFormatInfo2 -- ^ pImageFormatInfo
-                                                      ->
-                   Ptr VkImageFormatProperties2 -- ^ pImageFormatProperties
-                                                -> IO VkResult
-
-#else
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_FORMAT_NOT_SUPPORTED'.
---
--- > VkResult vkGetPhysicalDeviceImageFormatProperties2
--- >     ( VkPhysicalDevice physicalDevice
--- >     , const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo
--- >     , VkImageFormatProperties2* pImageFormatProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceImageFormatProperties2 vkGetPhysicalDeviceImageFormatProperties2 registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-1@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkGetPhysicalDeviceImageFormatProperties2Safe@ and @vkGetPhysicalDeviceImageFormatProperties2@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetPhysicalDeviceImageFormatProperties2 <- vkGetInstanceProc @VkGetPhysicalDeviceImageFormatProperties2 vkInstance
---
--- or less efficient:
---
--- > myGetPhysicalDeviceImageFormatProperties2 <- vkGetProc @VkGetPhysicalDeviceImageFormatProperties2
---
-vkGetPhysicalDeviceImageFormatProperties2Safe ::
-                                              VkPhysicalDevice -- ^ physicalDevice
-                                                               ->
-                                                Ptr VkPhysicalDeviceImageFormatInfo2 -- ^ pImageFormatInfo
-                                                                                     ->
-                                                  Ptr VkImageFormatProperties2 -- ^ pImageFormatProperties
-                                                                               -> IO VkResult
-vkGetPhysicalDeviceImageFormatProperties2Safe
-  = vkGetPhysicalDeviceImageFormatProperties2
-
-{-# INLINE vkGetPhysicalDeviceImageFormatProperties2Safe #-}
-#endif
-
--- | Success codes: 'VK_SUCCESS'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_FORMAT_NOT_SUPPORTED'.
---
---   > VkResult vkGetPhysicalDeviceImageFormatProperties2
---   >     ( VkPhysicalDevice physicalDevice
---   >     , const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo
---   >     , VkImageFormatProperties2* pImageFormatProperties
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceImageFormatProperties2 vkGetPhysicalDeviceImageFormatProperties2 registry at www.khronos.org>
-type HS_vkGetPhysicalDeviceImageFormatProperties2 =
-     VkPhysicalDevice -- ^ physicalDevice
-                      ->
-       Ptr VkPhysicalDeviceImageFormatInfo2 -- ^ pImageFormatInfo
-                                            ->
-         Ptr VkImageFormatProperties2 -- ^ pImageFormatProperties
-                                      -> IO VkResult
-
-type PFN_vkGetPhysicalDeviceImageFormatProperties2 =
-     FunPtr HS_vkGetPhysicalDeviceImageFormatProperties2
-
-foreign import ccall "dynamic"
-               unwrapVkGetPhysicalDeviceImageFormatProperties2 ::
-               PFN_vkGetPhysicalDeviceImageFormatProperties2 ->
-                 HS_vkGetPhysicalDeviceImageFormatProperties2
-
-instance VulkanProc "vkGetPhysicalDeviceImageFormatProperties2"
-         where
-        type VkProcType "vkGetPhysicalDeviceImageFormatProperties2" =
-             HS_vkGetPhysicalDeviceImageFormatProperties2
-        vkProcSymbol = _VkGetPhysicalDeviceImageFormatProperties2
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkGetPhysicalDeviceImageFormatProperties2
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VkGetPhysicalDeviceQueueFamilyProperties2 :: CString
-
-pattern VkGetPhysicalDeviceQueueFamilyProperties2 <-
-        (is_VkGetPhysicalDeviceQueueFamilyProperties2 -> True)
-  where VkGetPhysicalDeviceQueueFamilyProperties2
-          = _VkGetPhysicalDeviceQueueFamilyProperties2
-
-{-# INLINE _VkGetPhysicalDeviceQueueFamilyProperties2 #-}
-
-_VkGetPhysicalDeviceQueueFamilyProperties2 :: CString
-_VkGetPhysicalDeviceQueueFamilyProperties2
-  = Ptr "vkGetPhysicalDeviceQueueFamilyProperties2\NUL"#
-
-{-# INLINE is_VkGetPhysicalDeviceQueueFamilyProperties2 #-}
-
-is_VkGetPhysicalDeviceQueueFamilyProperties2 :: CString -> Bool
-is_VkGetPhysicalDeviceQueueFamilyProperties2
-  = (EQ ==) . cmpCStrings _VkGetPhysicalDeviceQueueFamilyProperties2
-
-type VkGetPhysicalDeviceQueueFamilyProperties2 =
-     "vkGetPhysicalDeviceQueueFamilyProperties2"
-
-#ifdef NATIVE_FFI_VK_VERSION_1_1
--- |
--- > void vkGetPhysicalDeviceQueueFamilyProperties2
--- >     ( VkPhysicalDevice physicalDevice
--- >     , uint32_t* pQueueFamilyPropertyCount
--- >     , VkQueueFamilyProperties2* pQueueFamilyProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceQueueFamilyProperties2 vkGetPhysicalDeviceQueueFamilyProperties2 registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-1@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe
-               "vkGetPhysicalDeviceQueueFamilyProperties2"
-               vkGetPhysicalDeviceQueueFamilyProperties2 ::
-               VkPhysicalDevice -- ^ physicalDevice
-                                ->
-                 Ptr Word32 -- ^ pQueueFamilyPropertyCount
-                            -> Ptr VkQueueFamilyProperties2 -- ^ pQueueFamilyProperties
-                                                            -> IO ()
-
-#else
--- |
--- > void vkGetPhysicalDeviceQueueFamilyProperties2
--- >     ( VkPhysicalDevice physicalDevice
--- >     , uint32_t* pQueueFamilyPropertyCount
--- >     , VkQueueFamilyProperties2* pQueueFamilyProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceQueueFamilyProperties2 vkGetPhysicalDeviceQueueFamilyProperties2 registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-1@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkGetPhysicalDeviceQueueFamilyProperties2Safe@ and @vkGetPhysicalDeviceQueueFamilyProperties2@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetPhysicalDeviceQueueFamilyProperties2 <- vkGetInstanceProc @VkGetPhysicalDeviceQueueFamilyProperties2 vkInstance
---
--- or less efficient:
---
--- > myGetPhysicalDeviceQueueFamilyProperties2 <- vkGetProc @VkGetPhysicalDeviceQueueFamilyProperties2
---
-vkGetPhysicalDeviceQueueFamilyProperties2 ::
-                                          VkPhysicalDevice -- ^ physicalDevice
-                                                           ->
-                                            Ptr Word32 -- ^ pQueueFamilyPropertyCount
-                                                       -> Ptr VkQueueFamilyProperties2 -- ^ pQueueFamilyProperties
-                                                                                       -> IO ()
-vkGetPhysicalDeviceQueueFamilyProperties2
-  = unsafeDupablePerformIO
-      (vkGetProc @VkGetPhysicalDeviceQueueFamilyProperties2)
-
-{-# NOINLINE vkGetPhysicalDeviceQueueFamilyProperties2 #-}
-#endif
-
-#ifdef NATIVE_FFI_VK_VERSION_1_1
--- |
--- > void vkGetPhysicalDeviceQueueFamilyProperties2
--- >     ( VkPhysicalDevice physicalDevice
--- >     , uint32_t* pQueueFamilyPropertyCount
--- >     , VkQueueFamilyProperties2* pQueueFamilyProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceQueueFamilyProperties2 vkGetPhysicalDeviceQueueFamilyProperties2 registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-1@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe
-               "vkGetPhysicalDeviceQueueFamilyProperties2"
-               vkGetPhysicalDeviceQueueFamilyProperties2Safe ::
-               VkPhysicalDevice -- ^ physicalDevice
-                                ->
-                 Ptr Word32 -- ^ pQueueFamilyPropertyCount
-                            -> Ptr VkQueueFamilyProperties2 -- ^ pQueueFamilyProperties
-                                                            -> IO ()
-
-#else
--- |
--- > void vkGetPhysicalDeviceQueueFamilyProperties2
--- >     ( VkPhysicalDevice physicalDevice
--- >     , uint32_t* pQueueFamilyPropertyCount
--- >     , VkQueueFamilyProperties2* pQueueFamilyProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceQueueFamilyProperties2 vkGetPhysicalDeviceQueueFamilyProperties2 registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-1@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkGetPhysicalDeviceQueueFamilyProperties2Safe@ and @vkGetPhysicalDeviceQueueFamilyProperties2@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetPhysicalDeviceQueueFamilyProperties2 <- vkGetInstanceProc @VkGetPhysicalDeviceQueueFamilyProperties2 vkInstance
---
--- or less efficient:
---
--- > myGetPhysicalDeviceQueueFamilyProperties2 <- vkGetProc @VkGetPhysicalDeviceQueueFamilyProperties2
---
-vkGetPhysicalDeviceQueueFamilyProperties2Safe ::
-                                              VkPhysicalDevice -- ^ physicalDevice
-                                                               ->
-                                                Ptr Word32 -- ^ pQueueFamilyPropertyCount
-                                                           -> Ptr VkQueueFamilyProperties2 -- ^ pQueueFamilyProperties
-                                                                                           -> IO ()
-vkGetPhysicalDeviceQueueFamilyProperties2Safe
-  = vkGetPhysicalDeviceQueueFamilyProperties2
-
-{-# INLINE vkGetPhysicalDeviceQueueFamilyProperties2Safe #-}
-#endif
-
--- | > void vkGetPhysicalDeviceQueueFamilyProperties2
---   >     ( VkPhysicalDevice physicalDevice
---   >     , uint32_t* pQueueFamilyPropertyCount
---   >     , VkQueueFamilyProperties2* pQueueFamilyProperties
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceQueueFamilyProperties2 vkGetPhysicalDeviceQueueFamilyProperties2 registry at www.khronos.org>
-type HS_vkGetPhysicalDeviceQueueFamilyProperties2 =
-     VkPhysicalDevice -- ^ physicalDevice
-                      ->
-       Ptr Word32 -- ^ pQueueFamilyPropertyCount
-                  -> Ptr VkQueueFamilyProperties2 -- ^ pQueueFamilyProperties
-                                                  -> IO ()
-
-type PFN_vkGetPhysicalDeviceQueueFamilyProperties2 =
-     FunPtr HS_vkGetPhysicalDeviceQueueFamilyProperties2
-
-foreign import ccall "dynamic"
-               unwrapVkGetPhysicalDeviceQueueFamilyProperties2 ::
-               PFN_vkGetPhysicalDeviceQueueFamilyProperties2 ->
-                 HS_vkGetPhysicalDeviceQueueFamilyProperties2
-
-instance VulkanProc "vkGetPhysicalDeviceQueueFamilyProperties2"
-         where
-        type VkProcType "vkGetPhysicalDeviceQueueFamilyProperties2" =
-             HS_vkGetPhysicalDeviceQueueFamilyProperties2
-        vkProcSymbol = _VkGetPhysicalDeviceQueueFamilyProperties2
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkGetPhysicalDeviceQueueFamilyProperties2
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VkGetPhysicalDeviceMemoryProperties2 :: CString
-
-pattern VkGetPhysicalDeviceMemoryProperties2 <-
-        (is_VkGetPhysicalDeviceMemoryProperties2 -> True)
-  where VkGetPhysicalDeviceMemoryProperties2
-          = _VkGetPhysicalDeviceMemoryProperties2
-
-{-# INLINE _VkGetPhysicalDeviceMemoryProperties2 #-}
-
-_VkGetPhysicalDeviceMemoryProperties2 :: CString
-_VkGetPhysicalDeviceMemoryProperties2
-  = Ptr "vkGetPhysicalDeviceMemoryProperties2\NUL"#
-
-{-# INLINE is_VkGetPhysicalDeviceMemoryProperties2 #-}
-
-is_VkGetPhysicalDeviceMemoryProperties2 :: CString -> Bool
-is_VkGetPhysicalDeviceMemoryProperties2
-  = (EQ ==) . cmpCStrings _VkGetPhysicalDeviceMemoryProperties2
-
-type VkGetPhysicalDeviceMemoryProperties2 =
-     "vkGetPhysicalDeviceMemoryProperties2"
-
-#ifdef NATIVE_FFI_VK_VERSION_1_1
--- |
--- > void vkGetPhysicalDeviceMemoryProperties2
--- >     ( VkPhysicalDevice physicalDevice
--- >     , VkPhysicalDeviceMemoryProperties2* pMemoryProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceMemoryProperties2 vkGetPhysicalDeviceMemoryProperties2 registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-1@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkGetPhysicalDeviceMemoryProperties2"
-               vkGetPhysicalDeviceMemoryProperties2 ::
-               VkPhysicalDevice -- ^ physicalDevice
-                                -> Ptr VkPhysicalDeviceMemoryProperties2 -- ^ pMemoryProperties
-                                                                         -> IO ()
-
-#else
--- |
--- > void vkGetPhysicalDeviceMemoryProperties2
--- >     ( VkPhysicalDevice physicalDevice
--- >     , VkPhysicalDeviceMemoryProperties2* pMemoryProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceMemoryProperties2 vkGetPhysicalDeviceMemoryProperties2 registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-1@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkGetPhysicalDeviceMemoryProperties2Safe@ and @vkGetPhysicalDeviceMemoryProperties2@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetPhysicalDeviceMemoryProperties2 <- vkGetInstanceProc @VkGetPhysicalDeviceMemoryProperties2 vkInstance
---
--- or less efficient:
---
--- > myGetPhysicalDeviceMemoryProperties2 <- vkGetProc @VkGetPhysicalDeviceMemoryProperties2
---
-vkGetPhysicalDeviceMemoryProperties2 ::
-                                     VkPhysicalDevice -- ^ physicalDevice
-                                                      ->
-                                       Ptr VkPhysicalDeviceMemoryProperties2 -- ^ pMemoryProperties
-                                                                             -> IO ()
-vkGetPhysicalDeviceMemoryProperties2
-  = unsafeDupablePerformIO
-      (vkGetProc @VkGetPhysicalDeviceMemoryProperties2)
-
-{-# NOINLINE vkGetPhysicalDeviceMemoryProperties2 #-}
-#endif
-
-#ifdef NATIVE_FFI_VK_VERSION_1_1
--- |
--- > void vkGetPhysicalDeviceMemoryProperties2
--- >     ( VkPhysicalDevice physicalDevice
--- >     , VkPhysicalDeviceMemoryProperties2* pMemoryProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceMemoryProperties2 vkGetPhysicalDeviceMemoryProperties2 registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-1@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkGetPhysicalDeviceMemoryProperties2"
-               vkGetPhysicalDeviceMemoryProperties2Safe ::
-               VkPhysicalDevice -- ^ physicalDevice
-                                -> Ptr VkPhysicalDeviceMemoryProperties2 -- ^ pMemoryProperties
-                                                                         -> IO ()
-
-#else
--- |
--- > void vkGetPhysicalDeviceMemoryProperties2
--- >     ( VkPhysicalDevice physicalDevice
--- >     , VkPhysicalDeviceMemoryProperties2* pMemoryProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceMemoryProperties2 vkGetPhysicalDeviceMemoryProperties2 registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-1@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkGetPhysicalDeviceMemoryProperties2Safe@ and @vkGetPhysicalDeviceMemoryProperties2@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetPhysicalDeviceMemoryProperties2 <- vkGetInstanceProc @VkGetPhysicalDeviceMemoryProperties2 vkInstance
---
--- or less efficient:
---
--- > myGetPhysicalDeviceMemoryProperties2 <- vkGetProc @VkGetPhysicalDeviceMemoryProperties2
---
-vkGetPhysicalDeviceMemoryProperties2Safe ::
-                                         VkPhysicalDevice -- ^ physicalDevice
-                                                          ->
-                                           Ptr VkPhysicalDeviceMemoryProperties2 -- ^ pMemoryProperties
-                                                                                 -> IO ()
-vkGetPhysicalDeviceMemoryProperties2Safe
-  = vkGetPhysicalDeviceMemoryProperties2
-
-{-# INLINE vkGetPhysicalDeviceMemoryProperties2Safe #-}
-#endif
-
--- | > void vkGetPhysicalDeviceMemoryProperties2
---   >     ( VkPhysicalDevice physicalDevice
---   >     , VkPhysicalDeviceMemoryProperties2* pMemoryProperties
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceMemoryProperties2 vkGetPhysicalDeviceMemoryProperties2 registry at www.khronos.org>
-type HS_vkGetPhysicalDeviceMemoryProperties2 =
-     VkPhysicalDevice -- ^ physicalDevice
-                      -> Ptr VkPhysicalDeviceMemoryProperties2 -- ^ pMemoryProperties
-                                                               -> IO ()
-
-type PFN_vkGetPhysicalDeviceMemoryProperties2 =
-     FunPtr HS_vkGetPhysicalDeviceMemoryProperties2
-
-foreign import ccall "dynamic"
-               unwrapVkGetPhysicalDeviceMemoryProperties2 ::
-               PFN_vkGetPhysicalDeviceMemoryProperties2 ->
-                 HS_vkGetPhysicalDeviceMemoryProperties2
-
-instance VulkanProc "vkGetPhysicalDeviceMemoryProperties2" where
-        type VkProcType "vkGetPhysicalDeviceMemoryProperties2" =
-             HS_vkGetPhysicalDeviceMemoryProperties2
-        vkProcSymbol = _VkGetPhysicalDeviceMemoryProperties2
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkGetPhysicalDeviceMemoryProperties2
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VkGetPhysicalDeviceSparseImageFormatProperties2 :: CString
-
-pattern VkGetPhysicalDeviceSparseImageFormatProperties2 <-
-        (is_VkGetPhysicalDeviceSparseImageFormatProperties2 -> True)
-  where VkGetPhysicalDeviceSparseImageFormatProperties2
-          = _VkGetPhysicalDeviceSparseImageFormatProperties2
-
-{-# INLINE _VkGetPhysicalDeviceSparseImageFormatProperties2 #-}
-
-_VkGetPhysicalDeviceSparseImageFormatProperties2 :: CString
-_VkGetPhysicalDeviceSparseImageFormatProperties2
-  = Ptr "vkGetPhysicalDeviceSparseImageFormatProperties2\NUL"#
-
-{-# INLINE is_VkGetPhysicalDeviceSparseImageFormatProperties2 #-}
-
-is_VkGetPhysicalDeviceSparseImageFormatProperties2 ::
-                                                   CString -> Bool
-is_VkGetPhysicalDeviceSparseImageFormatProperties2
-  = (EQ ==) .
-      cmpCStrings _VkGetPhysicalDeviceSparseImageFormatProperties2
-
-type VkGetPhysicalDeviceSparseImageFormatProperties2 =
-     "vkGetPhysicalDeviceSparseImageFormatProperties2"
-
-#ifdef NATIVE_FFI_VK_VERSION_1_1
--- |
--- > void vkGetPhysicalDeviceSparseImageFormatProperties2
--- >     ( VkPhysicalDevice physicalDevice
--- >     , const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo
--- >     , uint32_t* pPropertyCount
--- >     , VkSparseImageFormatProperties2* pProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceSparseImageFormatProperties2 vkGetPhysicalDeviceSparseImageFormatProperties2 registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-1@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe
-               "vkGetPhysicalDeviceSparseImageFormatProperties2"
-               vkGetPhysicalDeviceSparseImageFormatProperties2 ::
-               VkPhysicalDevice -- ^ physicalDevice
-                                ->
-                 Ptr VkPhysicalDeviceSparseImageFormatInfo2 -- ^ pFormatInfo
-                                                            ->
-                   Ptr Word32 -- ^ pPropertyCount
-                              -> Ptr VkSparseImageFormatProperties2 -- ^ pProperties
-                                                                    -> IO ()
-
-#else
--- |
--- > void vkGetPhysicalDeviceSparseImageFormatProperties2
--- >     ( VkPhysicalDevice physicalDevice
--- >     , const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo
--- >     , uint32_t* pPropertyCount
--- >     , VkSparseImageFormatProperties2* pProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceSparseImageFormatProperties2 vkGetPhysicalDeviceSparseImageFormatProperties2 registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-1@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkGetPhysicalDeviceSparseImageFormatProperties2Safe@ and @vkGetPhysicalDeviceSparseImageFormatProperties2@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetPhysicalDeviceSparseImageFormatProperties2 <- vkGetInstanceProc @VkGetPhysicalDeviceSparseImageFormatProperties2 vkInstance
---
--- or less efficient:
---
--- > myGetPhysicalDeviceSparseImageFormatProperties2 <- vkGetProc @VkGetPhysicalDeviceSparseImageFormatProperties2
---
-vkGetPhysicalDeviceSparseImageFormatProperties2 ::
-                                                VkPhysicalDevice -- ^ physicalDevice
-                                                                 ->
-                                                  Ptr VkPhysicalDeviceSparseImageFormatInfo2 -- ^ pFormatInfo
-                                                                                             ->
-                                                    Ptr Word32 -- ^ pPropertyCount
-                                                               ->
-                                                      Ptr VkSparseImageFormatProperties2 -- ^ pProperties
-                                                                                         -> IO ()
-vkGetPhysicalDeviceSparseImageFormatProperties2
-  = unsafeDupablePerformIO
-      (vkGetProc @VkGetPhysicalDeviceSparseImageFormatProperties2)
-
-{-# NOINLINE vkGetPhysicalDeviceSparseImageFormatProperties2 #-}
-#endif
-
-#ifdef NATIVE_FFI_VK_VERSION_1_1
--- |
--- > void vkGetPhysicalDeviceSparseImageFormatProperties2
--- >     ( VkPhysicalDevice physicalDevice
--- >     , const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo
--- >     , uint32_t* pPropertyCount
--- >     , VkSparseImageFormatProperties2* pProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceSparseImageFormatProperties2 vkGetPhysicalDeviceSparseImageFormatProperties2 registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-1@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe
-               "vkGetPhysicalDeviceSparseImageFormatProperties2"
-               vkGetPhysicalDeviceSparseImageFormatProperties2Safe ::
-               VkPhysicalDevice -- ^ physicalDevice
-                                ->
-                 Ptr VkPhysicalDeviceSparseImageFormatInfo2 -- ^ pFormatInfo
-                                                            ->
-                   Ptr Word32 -- ^ pPropertyCount
-                              -> Ptr VkSparseImageFormatProperties2 -- ^ pProperties
-                                                                    -> IO ()
-
-#else
--- |
--- > void vkGetPhysicalDeviceSparseImageFormatProperties2
--- >     ( VkPhysicalDevice physicalDevice
--- >     , const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo
--- >     , uint32_t* pPropertyCount
--- >     , VkSparseImageFormatProperties2* pProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceSparseImageFormatProperties2 vkGetPhysicalDeviceSparseImageFormatProperties2 registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-1@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkGetPhysicalDeviceSparseImageFormatProperties2Safe@ and @vkGetPhysicalDeviceSparseImageFormatProperties2@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetPhysicalDeviceSparseImageFormatProperties2 <- vkGetInstanceProc @VkGetPhysicalDeviceSparseImageFormatProperties2 vkInstance
---
--- or less efficient:
---
--- > myGetPhysicalDeviceSparseImageFormatProperties2 <- vkGetProc @VkGetPhysicalDeviceSparseImageFormatProperties2
---
-vkGetPhysicalDeviceSparseImageFormatProperties2Safe ::
-                                                    VkPhysicalDevice -- ^ physicalDevice
-                                                                     ->
-                                                      Ptr VkPhysicalDeviceSparseImageFormatInfo2 -- ^ pFormatInfo
-                                                                                                 ->
-                                                        Ptr Word32 -- ^ pPropertyCount
-                                                                   ->
-                                                          Ptr VkSparseImageFormatProperties2 -- ^ pProperties
-                                                                                             ->
-                                                            IO ()
-vkGetPhysicalDeviceSparseImageFormatProperties2Safe
-  = vkGetPhysicalDeviceSparseImageFormatProperties2
-
-{-# INLINE vkGetPhysicalDeviceSparseImageFormatProperties2Safe #-}
-#endif
-
--- | > void vkGetPhysicalDeviceSparseImageFormatProperties2
---   >     ( VkPhysicalDevice physicalDevice
---   >     , const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo
---   >     , uint32_t* pPropertyCount
---   >     , VkSparseImageFormatProperties2* pProperties
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceSparseImageFormatProperties2 vkGetPhysicalDeviceSparseImageFormatProperties2 registry at www.khronos.org>
-type HS_vkGetPhysicalDeviceSparseImageFormatProperties2 =
-     VkPhysicalDevice -- ^ physicalDevice
-                      ->
-       Ptr VkPhysicalDeviceSparseImageFormatInfo2 -- ^ pFormatInfo
-                                                  ->
-         Ptr Word32 -- ^ pPropertyCount
-                    -> Ptr VkSparseImageFormatProperties2 -- ^ pProperties
-                                                          -> IO ()
-
-type PFN_vkGetPhysicalDeviceSparseImageFormatProperties2 =
-     FunPtr HS_vkGetPhysicalDeviceSparseImageFormatProperties2
-
-foreign import ccall "dynamic"
-               unwrapVkGetPhysicalDeviceSparseImageFormatProperties2 ::
-               PFN_vkGetPhysicalDeviceSparseImageFormatProperties2 ->
-                 HS_vkGetPhysicalDeviceSparseImageFormatProperties2
-
-instance VulkanProc
-           "vkGetPhysicalDeviceSparseImageFormatProperties2"
-         where
-        type VkProcType "vkGetPhysicalDeviceSparseImageFormatProperties2" =
-             HS_vkGetPhysicalDeviceSparseImageFormatProperties2
-        vkProcSymbol = _VkGetPhysicalDeviceSparseImageFormatProperties2
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr
-          = unwrapVkGetPhysicalDeviceSparseImageFormatProperties2
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2 ::
-        VkStructureType
-
-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2 =
-        VkStructureType 1000059000
-
-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2 ::
-        VkStructureType
-
-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2 =
-        VkStructureType 1000059001
-
-pattern VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2 :: VkStructureType
-
-pattern VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2 =
-        VkStructureType 1000059002
-
-pattern VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2 ::
-        VkStructureType
-
-pattern VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2 =
-        VkStructureType 1000059003
-
-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2 ::
-        VkStructureType
-
-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2 =
-        VkStructureType 1000059004
-
-pattern VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2 ::
-        VkStructureType
-
-pattern VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2 =
-        VkStructureType 1000059005
-
-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2 ::
-        VkStructureType
-
-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2 =
-        VkStructureType 1000059006
-
-pattern VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2 ::
-        VkStructureType
-
-pattern VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2 =
-        VkStructureType 1000059007
-
-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2
-        :: VkStructureType
-
-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2
-        = VkStructureType 1000059008
-
-pattern VkTrimCommandPool :: CString
-
-pattern VkTrimCommandPool <- (is_VkTrimCommandPool -> True)
-  where VkTrimCommandPool = _VkTrimCommandPool
-
-{-# INLINE _VkTrimCommandPool #-}
-
-_VkTrimCommandPool :: CString
-_VkTrimCommandPool = Ptr "vkTrimCommandPool\NUL"#
-
-{-# INLINE is_VkTrimCommandPool #-}
-
-is_VkTrimCommandPool :: CString -> Bool
-is_VkTrimCommandPool = (EQ ==) . cmpCStrings _VkTrimCommandPool
-
-type VkTrimCommandPool = "vkTrimCommandPool"
-
-#ifdef NATIVE_FFI_VK_VERSION_1_1
--- |
--- > void vkTrimCommandPool
--- >     ( VkDevice device
--- >     , VkCommandPool commandPool
--- >     , VkCommandPoolTrimFlags flags
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkTrimCommandPool vkTrimCommandPool registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-1@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkTrimCommandPool" vkTrimCommandPool
-               :: VkDevice -- ^ device
-                           -> VkCommandPool -- ^ commandPool
-                                            -> VkCommandPoolTrimFlags -- ^ flags
-                                                                      -> IO ()
-
-#else
--- |
--- > void vkTrimCommandPool
--- >     ( VkDevice device
--- >     , VkCommandPool commandPool
--- >     , VkCommandPoolTrimFlags flags
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkTrimCommandPool vkTrimCommandPool registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-1@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkTrimCommandPoolSafe@ and @vkTrimCommandPool@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myTrimCommandPool <- vkGetDeviceProc @VkTrimCommandPool vkDevice
---
--- or less efficient:
---
--- > myTrimCommandPool <- vkGetProc @VkTrimCommandPool
---
-vkTrimCommandPool ::
-                  VkDevice -- ^ device
-                           -> VkCommandPool -- ^ commandPool
-                                            -> VkCommandPoolTrimFlags -- ^ flags
-                                                                      -> IO ()
-vkTrimCommandPool
-  = unsafeDupablePerformIO (vkGetProc @VkTrimCommandPool)
-
-{-# NOINLINE vkTrimCommandPool #-}
-#endif
-
-#ifdef NATIVE_FFI_VK_VERSION_1_1
--- |
--- > void vkTrimCommandPool
--- >     ( VkDevice device
--- >     , VkCommandPool commandPool
--- >     , VkCommandPoolTrimFlags flags
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkTrimCommandPool vkTrimCommandPool registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-1@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkTrimCommandPool" vkTrimCommandPoolSafe
-               :: VkDevice -- ^ device
-                           -> VkCommandPool -- ^ commandPool
-                                            -> VkCommandPoolTrimFlags -- ^ flags
-                                                                      -> IO ()
-
-#else
--- |
--- > void vkTrimCommandPool
--- >     ( VkDevice device
--- >     , VkCommandPool commandPool
--- >     , VkCommandPoolTrimFlags flags
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkTrimCommandPool vkTrimCommandPool registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-1@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkTrimCommandPoolSafe@ and @vkTrimCommandPool@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myTrimCommandPool <- vkGetDeviceProc @VkTrimCommandPool vkDevice
---
--- or less efficient:
---
--- > myTrimCommandPool <- vkGetProc @VkTrimCommandPool
---
-vkTrimCommandPoolSafe ::
-                      VkDevice -- ^ device
-                               -> VkCommandPool -- ^ commandPool
-                                                -> VkCommandPoolTrimFlags -- ^ flags
-                                                                          -> IO ()
-vkTrimCommandPoolSafe = vkTrimCommandPool
-
-{-# INLINE vkTrimCommandPoolSafe #-}
-#endif
-
--- | > void vkTrimCommandPool
---   >     ( VkDevice device
---   >     , VkCommandPool commandPool
---   >     , VkCommandPoolTrimFlags flags
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkTrimCommandPool vkTrimCommandPool registry at www.khronos.org>
-type HS_vkTrimCommandPool =
-     VkDevice -- ^ device
-              -> VkCommandPool -- ^ commandPool
-                               -> VkCommandPoolTrimFlags -- ^ flags
-                                                         -> IO ()
-
-type PFN_vkTrimCommandPool = FunPtr HS_vkTrimCommandPool
-
-foreign import ccall "dynamic" unwrapVkTrimCommandPool ::
-               PFN_vkTrimCommandPool -> HS_vkTrimCommandPool
-
-instance VulkanProc "vkTrimCommandPool" where
-        type VkProcType "vkTrimCommandPool" = HS_vkTrimCommandPool
-        vkProcSymbol = _VkTrimCommandPool
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkTrimCommandPool
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VK_ERROR_OUT_OF_POOL_MEMORY :: VkResult
-
-pattern VK_ERROR_OUT_OF_POOL_MEMORY = VkResult (-1000069000)
-
--- | Format can be used as the source image of image transfer commands
---
---   bitpos = @14@
-pattern VK_FORMAT_FEATURE_TRANSFER_SRC_BIT ::
-        VkFormatFeatureFlagBits
-
-pattern VK_FORMAT_FEATURE_TRANSFER_SRC_BIT =
-        VkFormatFeatureFlagBits 16384
-
--- | Format can be used as the destination image of image transfer commands
---
---   bitpos = @15@
-pattern VK_FORMAT_FEATURE_TRANSFER_DST_BIT ::
-        VkFormatFeatureFlagBits
-
-pattern VK_FORMAT_FEATURE_TRANSFER_DST_BIT =
-        VkFormatFeatureFlagBits 32768
-
--- | The 3D image can be viewed as a 2D or 2D array image
---
---   bitpos = @5@
-pattern VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT ::
-        VkImageCreateFlagBits
-
-pattern VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT =
-        VkImageCreateFlagBits 32
-
--- | bitpos = @7@
-pattern VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT ::
-        VkImageCreateFlagBits
-
-pattern VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT =
-        VkImageCreateFlagBits 128
-
--- | bitpos = @8@
-pattern VK_IMAGE_CREATE_EXTENDED_USAGE_BIT :: VkImageCreateFlagBits
-
-pattern VK_IMAGE_CREATE_EXTENDED_USAGE_BIT =
-        VkImageCreateFlagBits 256
-
-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES
-        :: VkStructureType
-
-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES
-        = VkStructureType 1000117000
-
-pattern VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO
-        :: VkStructureType
-
-pattern VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO
-        = VkStructureType 1000117001
-
-pattern VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO ::
-        VkStructureType
-
-pattern VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO =
-        VkStructureType 1000117002
-
-pattern VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO
-        :: VkStructureType
-
-pattern VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO
-        = VkStructureType 1000117003
-
-pattern VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL
-        :: VkImageLayout
-
-pattern VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL
-        = VkImageLayout 1000117000
-
-pattern VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL
-        :: VkImageLayout
-
-pattern VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL
-        = VkImageLayout 1000117001
-
-pattern VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO ::
-        VkStructureType
-
-pattern VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO =
-        VkStructureType 1000053000
-
-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES ::
-        VkStructureType
-
-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES =
-        VkStructureType 1000053001
-
-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES ::
-        VkStructureType
-
-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES =
-        VkStructureType 1000053002
-
--- | bitpos = @1@
-pattern VK_DEPENDENCY_VIEW_LOCAL_BIT :: VkDependencyFlagBits
-
-pattern VK_DEPENDENCY_VIEW_LOCAL_BIT = VkDependencyFlagBits 2
-
-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES
-        :: VkStructureType
-
-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES
-        = VkStructureType 1000120000
-
-pattern VkGetDeviceQueue2 :: CString
-
-pattern VkGetDeviceQueue2 <- (is_VkGetDeviceQueue2 -> True)
-  where VkGetDeviceQueue2 = _VkGetDeviceQueue2
-
-{-# INLINE _VkGetDeviceQueue2 #-}
-
-_VkGetDeviceQueue2 :: CString
-_VkGetDeviceQueue2 = Ptr "vkGetDeviceQueue2\NUL"#
-
-{-# INLINE is_VkGetDeviceQueue2 #-}
-
-is_VkGetDeviceQueue2 :: CString -> Bool
-is_VkGetDeviceQueue2 = (EQ ==) . cmpCStrings _VkGetDeviceQueue2
-
-type VkGetDeviceQueue2 = "vkGetDeviceQueue2"
-
-#ifdef NATIVE_FFI_VK_VERSION_1_1
--- |
--- > void vkGetDeviceQueue2
--- >     ( VkDevice device
--- >     , const VkDeviceQueueInfo2* pQueueInfo
--- >     , VkQueue* pQueue
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDeviceQueue2 vkGetDeviceQueue2 registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-1@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkGetDeviceQueue2" vkGetDeviceQueue2
-               :: VkDevice -- ^ device
-                           -> Ptr VkDeviceQueueInfo2 -- ^ pQueueInfo
-                                                     -> Ptr VkQueue -- ^ pQueue
-                                                                    -> IO ()
-
-#else
--- |
--- > void vkGetDeviceQueue2
--- >     ( VkDevice device
--- >     , const VkDeviceQueueInfo2* pQueueInfo
--- >     , VkQueue* pQueue
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDeviceQueue2 vkGetDeviceQueue2 registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-1@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkGetDeviceQueue2Safe@ and @vkGetDeviceQueue2@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetDeviceQueue2 <- vkGetDeviceProc @VkGetDeviceQueue2 vkDevice
---
--- or less efficient:
---
--- > myGetDeviceQueue2 <- vkGetProc @VkGetDeviceQueue2
---
-vkGetDeviceQueue2 ::
-                  VkDevice -- ^ device
-                           -> Ptr VkDeviceQueueInfo2 -- ^ pQueueInfo
-                                                     -> Ptr VkQueue -- ^ pQueue
-                                                                    -> IO ()
-vkGetDeviceQueue2
-  = unsafeDupablePerformIO (vkGetProc @VkGetDeviceQueue2)
-
-{-# NOINLINE vkGetDeviceQueue2 #-}
-#endif
-
-#ifdef NATIVE_FFI_VK_VERSION_1_1
--- |
--- > void vkGetDeviceQueue2
--- >     ( VkDevice device
--- >     , const VkDeviceQueueInfo2* pQueueInfo
--- >     , VkQueue* pQueue
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDeviceQueue2 vkGetDeviceQueue2 registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-1@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkGetDeviceQueue2" vkGetDeviceQueue2Safe
-               :: VkDevice -- ^ device
-                           -> Ptr VkDeviceQueueInfo2 -- ^ pQueueInfo
-                                                     -> Ptr VkQueue -- ^ pQueue
-                                                                    -> IO ()
-
-#else
--- |
--- > void vkGetDeviceQueue2
--- >     ( VkDevice device
--- >     , const VkDeviceQueueInfo2* pQueueInfo
--- >     , VkQueue* pQueue
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDeviceQueue2 vkGetDeviceQueue2 registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-1@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkGetDeviceQueue2Safe@ and @vkGetDeviceQueue2@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetDeviceQueue2 <- vkGetDeviceProc @VkGetDeviceQueue2 vkDevice
---
--- or less efficient:
---
--- > myGetDeviceQueue2 <- vkGetProc @VkGetDeviceQueue2
---
-vkGetDeviceQueue2Safe ::
-                      VkDevice -- ^ device
-                               -> Ptr VkDeviceQueueInfo2 -- ^ pQueueInfo
-                                                         -> Ptr VkQueue -- ^ pQueue
-                                                                        -> IO ()
-vkGetDeviceQueue2Safe = vkGetDeviceQueue2
-
-{-# INLINE vkGetDeviceQueue2Safe #-}
-#endif
-
--- | > void vkGetDeviceQueue2
---   >     ( VkDevice device
---   >     , const VkDeviceQueueInfo2* pQueueInfo
---   >     , VkQueue* pQueue
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDeviceQueue2 vkGetDeviceQueue2 registry at www.khronos.org>
-type HS_vkGetDeviceQueue2 =
-     VkDevice -- ^ device
-              -> Ptr VkDeviceQueueInfo2 -- ^ pQueueInfo
-                                        -> Ptr VkQueue -- ^ pQueue
-                                                       -> IO ()
-
-type PFN_vkGetDeviceQueue2 = FunPtr HS_vkGetDeviceQueue2
-
-foreign import ccall "dynamic" unwrapVkGetDeviceQueue2 ::
-               PFN_vkGetDeviceQueue2 -> HS_vkGetDeviceQueue2
-
-instance VulkanProc "vkGetDeviceQueue2" where
-        type VkProcType "vkGetDeviceQueue2" = HS_vkGetDeviceQueue2
-        vkProcSymbol = _VkGetDeviceQueue2
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkGetDeviceQueue2
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO :: VkStructureType
-
-pattern VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO =
-        VkStructureType 1000145000
-
-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES
-        :: VkStructureType
-
-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES
-        = VkStructureType 1000145001
-
-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES
-        :: VkStructureType
-
-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES
-        = VkStructureType 1000145002
-
-pattern VK_STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2 :: VkStructureType
-
-pattern VK_STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2 =
-        VkStructureType 1000145003
-
--- | Queues may support protected operations
---
---   bitpos = @4@
-pattern VK_QUEUE_PROTECTED_BIT :: VkQueueFlagBits
-
-pattern VK_QUEUE_PROTECTED_BIT = VkQueueFlagBits 16
-
--- | Queue is a protected-capable device queue
---
---   bitpos = @0@
-pattern VK_DEVICE_QUEUE_CREATE_PROTECTED_BIT ::
-        VkDeviceQueueCreateFlagBits
-
-pattern VK_DEVICE_QUEUE_CREATE_PROTECTED_BIT =
-        VkDeviceQueueCreateFlagBits 1
-
--- | Memory is protected
---
---   bitpos = @5@
-pattern VK_MEMORY_PROPERTY_PROTECTED_BIT ::
-        VkMemoryPropertyFlagBits
-
-pattern VK_MEMORY_PROPERTY_PROTECTED_BIT =
-        VkMemoryPropertyFlagBits 32
-
--- | Buffer requires protected memory
---
---   bitpos = @3@
-pattern VK_BUFFER_CREATE_PROTECTED_BIT :: VkBufferCreateFlagBits
-
-pattern VK_BUFFER_CREATE_PROTECTED_BIT = VkBufferCreateFlagBits 8
-
--- | Image requires protected memory
---
---   bitpos = @11@
-pattern VK_IMAGE_CREATE_PROTECTED_BIT :: VkImageCreateFlagBits
-
-pattern VK_IMAGE_CREATE_PROTECTED_BIT = VkImageCreateFlagBits 2048
-
--- | Command buffers allocated from pool are protected command buffers
---
---   bitpos = @2@
-pattern VK_COMMAND_POOL_CREATE_PROTECTED_BIT ::
-        VkCommandPoolCreateFlagBits
-
-pattern VK_COMMAND_POOL_CREATE_PROTECTED_BIT =
-        VkCommandPoolCreateFlagBits 4
-
-pattern VkCreateSamplerYcbcrConversion :: CString
-
-pattern VkCreateSamplerYcbcrConversion <-
-        (is_VkCreateSamplerYcbcrConversion -> True)
-  where VkCreateSamplerYcbcrConversion
-          = _VkCreateSamplerYcbcrConversion
-
-{-# INLINE _VkCreateSamplerYcbcrConversion #-}
-
-_VkCreateSamplerYcbcrConversion :: CString
-_VkCreateSamplerYcbcrConversion
-  = Ptr "vkCreateSamplerYcbcrConversion\NUL"#
-
-{-# INLINE is_VkCreateSamplerYcbcrConversion #-}
-
-is_VkCreateSamplerYcbcrConversion :: CString -> Bool
-is_VkCreateSamplerYcbcrConversion
-  = (EQ ==) . cmpCStrings _VkCreateSamplerYcbcrConversion
-
-type VkCreateSamplerYcbcrConversion =
-     "vkCreateSamplerYcbcrConversion"
-
-#ifdef NATIVE_FFI_VK_VERSION_1_1
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkCreateSamplerYcbcrConversion
--- >     ( VkDevice device
--- >     , const VkSamplerYcbcrConversionCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkSamplerYcbcrConversion* pYcbcrConversion
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateSamplerYcbcrConversion vkCreateSamplerYcbcrConversion registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-1@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkCreateSamplerYcbcrConversion"
-               vkCreateSamplerYcbcrConversion ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkSamplerYcbcrConversionCreateInfo -- ^ pCreateInfo
-                                                        ->
-                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                             ->
-                     Ptr VkSamplerYcbcrConversion -- ^ pYcbcrConversion
-                                                  -> IO VkResult
-
-#else
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkCreateSamplerYcbcrConversion
--- >     ( VkDevice device
--- >     , const VkSamplerYcbcrConversionCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkSamplerYcbcrConversion* pYcbcrConversion
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateSamplerYcbcrConversion vkCreateSamplerYcbcrConversion registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-1@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCreateSamplerYcbcrConversionSafe@ and @vkCreateSamplerYcbcrConversion@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateSamplerYcbcrConversion <- vkGetDeviceProc @VkCreateSamplerYcbcrConversion vkDevice
---
--- or less efficient:
---
--- > myCreateSamplerYcbcrConversion <- vkGetProc @VkCreateSamplerYcbcrConversion
---
-vkCreateSamplerYcbcrConversion ::
-                               VkDevice -- ^ device
-                                        ->
-                                 Ptr VkSamplerYcbcrConversionCreateInfo -- ^ pCreateInfo
-                                                                        ->
-                                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                             ->
-                                     Ptr VkSamplerYcbcrConversion -- ^ pYcbcrConversion
-                                                                  -> IO VkResult
-vkCreateSamplerYcbcrConversion
-  = unsafeDupablePerformIO
-      (vkGetProc @VkCreateSamplerYcbcrConversion)
-
-{-# NOINLINE vkCreateSamplerYcbcrConversion #-}
-#endif
-
-#ifdef NATIVE_FFI_VK_VERSION_1_1
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkCreateSamplerYcbcrConversion
--- >     ( VkDevice device
--- >     , const VkSamplerYcbcrConversionCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkSamplerYcbcrConversion* pYcbcrConversion
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateSamplerYcbcrConversion vkCreateSamplerYcbcrConversion registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-1@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkCreateSamplerYcbcrConversion"
-               vkCreateSamplerYcbcrConversionSafe ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkSamplerYcbcrConversionCreateInfo -- ^ pCreateInfo
-                                                        ->
-                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                             ->
-                     Ptr VkSamplerYcbcrConversion -- ^ pYcbcrConversion
-                                                  -> IO VkResult
-
-#else
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkCreateSamplerYcbcrConversion
--- >     ( VkDevice device
--- >     , const VkSamplerYcbcrConversionCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkSamplerYcbcrConversion* pYcbcrConversion
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateSamplerYcbcrConversion vkCreateSamplerYcbcrConversion registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-1@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCreateSamplerYcbcrConversionSafe@ and @vkCreateSamplerYcbcrConversion@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateSamplerYcbcrConversion <- vkGetDeviceProc @VkCreateSamplerYcbcrConversion vkDevice
---
--- or less efficient:
---
--- > myCreateSamplerYcbcrConversion <- vkGetProc @VkCreateSamplerYcbcrConversion
---
-vkCreateSamplerYcbcrConversionSafe ::
-                                   VkDevice -- ^ device
-                                            ->
-                                     Ptr VkSamplerYcbcrConversionCreateInfo -- ^ pCreateInfo
-                                                                            ->
-                                       Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                 ->
-                                         Ptr VkSamplerYcbcrConversion -- ^ pYcbcrConversion
-                                                                      -> IO VkResult
-vkCreateSamplerYcbcrConversionSafe = vkCreateSamplerYcbcrConversion
-
-{-# INLINE vkCreateSamplerYcbcrConversionSafe #-}
-#endif
-
--- | Success codes: 'VK_SUCCESS'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
---   > VkResult vkCreateSamplerYcbcrConversion
---   >     ( VkDevice device
---   >     , const VkSamplerYcbcrConversionCreateInfo* pCreateInfo
---   >     , const VkAllocationCallbacks* pAllocator
---   >     , VkSamplerYcbcrConversion* pYcbcrConversion
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateSamplerYcbcrConversion vkCreateSamplerYcbcrConversion registry at www.khronos.org>
-type HS_vkCreateSamplerYcbcrConversion =
-     VkDevice -- ^ device
-              ->
-       Ptr VkSamplerYcbcrConversionCreateInfo -- ^ pCreateInfo
-                                              ->
-         Ptr VkAllocationCallbacks -- ^ pAllocator
-                                   ->
-           Ptr VkSamplerYcbcrConversion -- ^ pYcbcrConversion
-                                        -> IO VkResult
-
-type PFN_vkCreateSamplerYcbcrConversion =
-     FunPtr HS_vkCreateSamplerYcbcrConversion
-
-foreign import ccall "dynamic" unwrapVkCreateSamplerYcbcrConversion
-               ::
-               PFN_vkCreateSamplerYcbcrConversion ->
-                 HS_vkCreateSamplerYcbcrConversion
-
-instance VulkanProc "vkCreateSamplerYcbcrConversion" where
-        type VkProcType "vkCreateSamplerYcbcrConversion" =
-             HS_vkCreateSamplerYcbcrConversion
-        vkProcSymbol = _VkCreateSamplerYcbcrConversion
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCreateSamplerYcbcrConversion
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VkDestroySamplerYcbcrConversion :: CString
-
-pattern VkDestroySamplerYcbcrConversion <-
-        (is_VkDestroySamplerYcbcrConversion -> True)
-  where VkDestroySamplerYcbcrConversion
-          = _VkDestroySamplerYcbcrConversion
-
-{-# INLINE _VkDestroySamplerYcbcrConversion #-}
-
-_VkDestroySamplerYcbcrConversion :: CString
-_VkDestroySamplerYcbcrConversion
-  = Ptr "vkDestroySamplerYcbcrConversion\NUL"#
-
-{-# INLINE is_VkDestroySamplerYcbcrConversion #-}
-
-is_VkDestroySamplerYcbcrConversion :: CString -> Bool
-is_VkDestroySamplerYcbcrConversion
-  = (EQ ==) . cmpCStrings _VkDestroySamplerYcbcrConversion
-
-type VkDestroySamplerYcbcrConversion =
-     "vkDestroySamplerYcbcrConversion"
-
-#ifdef NATIVE_FFI_VK_VERSION_1_1
--- |
--- > void vkDestroySamplerYcbcrConversion
--- >     ( VkDevice device
--- >     , VkSamplerYcbcrConversion ycbcrConversion
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroySamplerYcbcrConversion vkDestroySamplerYcbcrConversion registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-1@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkDestroySamplerYcbcrConversion"
-               vkDestroySamplerYcbcrConversion ::
-               VkDevice -- ^ device
-                        ->
-                 VkSamplerYcbcrConversion -- ^ ycbcrConversion
-                                          -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                       -> IO ()
-
-#else
--- |
--- > void vkDestroySamplerYcbcrConversion
--- >     ( VkDevice device
--- >     , VkSamplerYcbcrConversion ycbcrConversion
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroySamplerYcbcrConversion vkDestroySamplerYcbcrConversion registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-1@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkDestroySamplerYcbcrConversionSafe@ and @vkDestroySamplerYcbcrConversion@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDestroySamplerYcbcrConversion <- vkGetDeviceProc @VkDestroySamplerYcbcrConversion vkDevice
---
--- or less efficient:
---
--- > myDestroySamplerYcbcrConversion <- vkGetProc @VkDestroySamplerYcbcrConversion
---
-vkDestroySamplerYcbcrConversion ::
-                                VkDevice -- ^ device
-                                         ->
-                                  VkSamplerYcbcrConversion -- ^ ycbcrConversion
-                                                           -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                                        -> IO ()
-vkDestroySamplerYcbcrConversion
-  = unsafeDupablePerformIO
-      (vkGetProc @VkDestroySamplerYcbcrConversion)
-
-{-# NOINLINE vkDestroySamplerYcbcrConversion #-}
-#endif
-
-#ifdef NATIVE_FFI_VK_VERSION_1_1
--- |
--- > void vkDestroySamplerYcbcrConversion
--- >     ( VkDevice device
--- >     , VkSamplerYcbcrConversion ycbcrConversion
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroySamplerYcbcrConversion vkDestroySamplerYcbcrConversion registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-1@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkDestroySamplerYcbcrConversion"
-               vkDestroySamplerYcbcrConversionSafe ::
-               VkDevice -- ^ device
-                        ->
-                 VkSamplerYcbcrConversion -- ^ ycbcrConversion
-                                          -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                       -> IO ()
-
-#else
--- |
--- > void vkDestroySamplerYcbcrConversion
--- >     ( VkDevice device
--- >     , VkSamplerYcbcrConversion ycbcrConversion
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroySamplerYcbcrConversion vkDestroySamplerYcbcrConversion registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-1@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkDestroySamplerYcbcrConversionSafe@ and @vkDestroySamplerYcbcrConversion@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDestroySamplerYcbcrConversion <- vkGetDeviceProc @VkDestroySamplerYcbcrConversion vkDevice
---
--- or less efficient:
---
--- > myDestroySamplerYcbcrConversion <- vkGetProc @VkDestroySamplerYcbcrConversion
---
-vkDestroySamplerYcbcrConversionSafe ::
-                                    VkDevice -- ^ device
-                                             ->
-                                      VkSamplerYcbcrConversion -- ^ ycbcrConversion
-                                                               -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                                            -> IO ()
-vkDestroySamplerYcbcrConversionSafe
-  = vkDestroySamplerYcbcrConversion
-
-{-# INLINE vkDestroySamplerYcbcrConversionSafe #-}
-#endif
-
--- | > void vkDestroySamplerYcbcrConversion
---   >     ( VkDevice device
---   >     , VkSamplerYcbcrConversion ycbcrConversion
---   >     , const VkAllocationCallbacks* pAllocator
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroySamplerYcbcrConversion vkDestroySamplerYcbcrConversion registry at www.khronos.org>
-type HS_vkDestroySamplerYcbcrConversion =
-     VkDevice -- ^ device
-              ->
-       VkSamplerYcbcrConversion -- ^ ycbcrConversion
-                                -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                             -> IO ()
-
-type PFN_vkDestroySamplerYcbcrConversion =
-     FunPtr HS_vkDestroySamplerYcbcrConversion
-
-foreign import ccall "dynamic"
-               unwrapVkDestroySamplerYcbcrConversion ::
-               PFN_vkDestroySamplerYcbcrConversion ->
-                 HS_vkDestroySamplerYcbcrConversion
-
-instance VulkanProc "vkDestroySamplerYcbcrConversion" where
-        type VkProcType "vkDestroySamplerYcbcrConversion" =
-             HS_vkDestroySamplerYcbcrConversion
-        vkProcSymbol = _VkDestroySamplerYcbcrConversion
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkDestroySamplerYcbcrConversion
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO ::
-        VkStructureType
-
-pattern VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO =
-        VkStructureType 1000156000
-
-pattern VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO ::
-        VkStructureType
-
-pattern VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO =
-        VkStructureType 1000156001
-
-pattern VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO ::
-        VkStructureType
-
-pattern VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO =
-        VkStructureType 1000156002
-
-pattern VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO ::
-        VkStructureType
-
-pattern VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO =
-        VkStructureType 1000156003
-
-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES
-        :: VkStructureType
-
-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES
-        = VkStructureType 1000156004
-
-pattern VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES
-        :: VkStructureType
-
-pattern VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES
-        = VkStructureType 1000156005
-
-pattern VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION :: VkObjectType
-
-pattern VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION =
-        VkObjectType 1000156000
-
-pattern VK_FORMAT_G8B8G8R8_422_UNORM :: VkFormat
-
-pattern VK_FORMAT_G8B8G8R8_422_UNORM = VkFormat 1000156000
-
-pattern VK_FORMAT_B8G8R8G8_422_UNORM :: VkFormat
-
-pattern VK_FORMAT_B8G8R8G8_422_UNORM = VkFormat 1000156001
-
-pattern VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM :: VkFormat
-
-pattern VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM = VkFormat 1000156002
-
-pattern VK_FORMAT_G8_B8R8_2PLANE_420_UNORM :: VkFormat
-
-pattern VK_FORMAT_G8_B8R8_2PLANE_420_UNORM = VkFormat 1000156003
-
-pattern VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM :: VkFormat
-
-pattern VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM = VkFormat 1000156004
-
-pattern VK_FORMAT_G8_B8R8_2PLANE_422_UNORM :: VkFormat
-
-pattern VK_FORMAT_G8_B8R8_2PLANE_422_UNORM = VkFormat 1000156005
-
-pattern VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM :: VkFormat
-
-pattern VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM = VkFormat 1000156006
-
-pattern VK_FORMAT_R10X6_UNORM_PACK16 :: VkFormat
-
-pattern VK_FORMAT_R10X6_UNORM_PACK16 = VkFormat 1000156007
-
-pattern VK_FORMAT_R10X6G10X6_UNORM_2PACK16 :: VkFormat
-
-pattern VK_FORMAT_R10X6G10X6_UNORM_2PACK16 = VkFormat 1000156008
-
-pattern VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16 :: VkFormat
-
-pattern VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16 =
-        VkFormat 1000156009
-
-pattern VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16 ::
-        VkFormat
-
-pattern VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16 =
-        VkFormat 1000156010
-
-pattern VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16 ::
-        VkFormat
-
-pattern VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16 =
-        VkFormat 1000156011
-
-pattern VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16 ::
-        VkFormat
-
-pattern VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16 =
-        VkFormat 1000156012
-
-pattern VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16 ::
-        VkFormat
-
-pattern VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16 =
-        VkFormat 1000156013
-
-pattern VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16 ::
-        VkFormat
-
-pattern VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16 =
-        VkFormat 1000156014
-
-pattern VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16 ::
-        VkFormat
-
-pattern VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16 =
-        VkFormat 1000156015
-
-pattern VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16 ::
-        VkFormat
-
-pattern VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16 =
-        VkFormat 1000156016
-
-pattern VK_FORMAT_R12X4_UNORM_PACK16 :: VkFormat
-
-pattern VK_FORMAT_R12X4_UNORM_PACK16 = VkFormat 1000156017
-
-pattern VK_FORMAT_R12X4G12X4_UNORM_2PACK16 :: VkFormat
-
-pattern VK_FORMAT_R12X4G12X4_UNORM_2PACK16 = VkFormat 1000156018
-
-pattern VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16 :: VkFormat
-
-pattern VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16 =
-        VkFormat 1000156019
-
-pattern VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16 ::
-        VkFormat
-
-pattern VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16 =
-        VkFormat 1000156020
-
-pattern VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16 ::
-        VkFormat
-
-pattern VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16 =
-        VkFormat 1000156021
-
-pattern VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16 ::
-        VkFormat
-
-pattern VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16 =
-        VkFormat 1000156022
-
-pattern VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16 ::
-        VkFormat
-
-pattern VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16 =
-        VkFormat 1000156023
-
-pattern VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16 ::
-        VkFormat
-
-pattern VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16 =
-        VkFormat 1000156024
-
-pattern VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16 ::
-        VkFormat
-
-pattern VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16 =
-        VkFormat 1000156025
-
-pattern VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16 ::
-        VkFormat
-
-pattern VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16 =
-        VkFormat 1000156026
-
-pattern VK_FORMAT_G16B16G16R16_422_UNORM :: VkFormat
-
-pattern VK_FORMAT_G16B16G16R16_422_UNORM = VkFormat 1000156027
-
-pattern VK_FORMAT_B16G16R16G16_422_UNORM :: VkFormat
-
-pattern VK_FORMAT_B16G16R16G16_422_UNORM = VkFormat 1000156028
-
-pattern VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM :: VkFormat
-
-pattern VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM =
-        VkFormat 1000156029
-
-pattern VK_FORMAT_G16_B16R16_2PLANE_420_UNORM :: VkFormat
-
-pattern VK_FORMAT_G16_B16R16_2PLANE_420_UNORM = VkFormat 1000156030
-
-pattern VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM :: VkFormat
-
-pattern VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM =
-        VkFormat 1000156031
-
-pattern VK_FORMAT_G16_B16R16_2PLANE_422_UNORM :: VkFormat
-
-pattern VK_FORMAT_G16_B16R16_2PLANE_422_UNORM = VkFormat 1000156032
-
-pattern VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM :: VkFormat
-
-pattern VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM =
-        VkFormat 1000156033
-
--- | bitpos = @4@
-pattern VK_IMAGE_ASPECT_PLANE_0_BIT :: VkImageAspectFlagBits
-
-pattern VK_IMAGE_ASPECT_PLANE_0_BIT = VkImageAspectFlagBits 16
-
--- | bitpos = @5@
-pattern VK_IMAGE_ASPECT_PLANE_1_BIT :: VkImageAspectFlagBits
-
-pattern VK_IMAGE_ASPECT_PLANE_1_BIT = VkImageAspectFlagBits 32
-
--- | bitpos = @6@
-pattern VK_IMAGE_ASPECT_PLANE_2_BIT :: VkImageAspectFlagBits
-
-pattern VK_IMAGE_ASPECT_PLANE_2_BIT = VkImageAspectFlagBits 64
-
--- | bitpos = @9@
-pattern VK_IMAGE_CREATE_DISJOINT_BIT :: VkImageCreateFlagBits
-
-pattern VK_IMAGE_CREATE_DISJOINT_BIT = VkImageCreateFlagBits 512
-
--- | Format can have midpoint rather than cosited chroma samples
---
---   bitpos = @17@
-pattern VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT ::
-        VkFormatFeatureFlagBits
-
-pattern VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT =
-        VkFormatFeatureFlagBits 131072
-
--- | Format can be used with linear filtering whilst color conversion is enabled
---
---   bitpos = @18@
-pattern VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT
-        :: VkFormatFeatureFlagBits
-
-pattern VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT
-        = VkFormatFeatureFlagBits 262144
-
--- | Format can have different chroma, min and mag filters
---
---   bitpos = @19@
-pattern VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT
-        :: VkFormatFeatureFlagBits
-
-pattern VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT
-        = VkFormatFeatureFlagBits 524288
-
--- | bitpos = @20@
-pattern VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT
-        :: VkFormatFeatureFlagBits
-
-pattern VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT
-        = VkFormatFeatureFlagBits 1048576
-
--- | bitpos = @21@
-pattern VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT
-        :: VkFormatFeatureFlagBits
-
-pattern VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT
-        = VkFormatFeatureFlagBits 2097152
-
--- | Format supports disjoint planes
---
---   bitpos = @22@
-pattern VK_FORMAT_FEATURE_DISJOINT_BIT :: VkFormatFeatureFlagBits
-
-pattern VK_FORMAT_FEATURE_DISJOINT_BIT =
-        VkFormatFeatureFlagBits 4194304
-
--- | Format can have cosited rather than midpoint chroma samples
---
---   bitpos = @23@
-pattern VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT ::
-        VkFormatFeatureFlagBits
-
-pattern VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT =
-        VkFormatFeatureFlagBits 8388608
-
-pattern VkCreateDescriptorUpdateTemplate :: CString
-
-pattern VkCreateDescriptorUpdateTemplate <-
-        (is_VkCreateDescriptorUpdateTemplate -> True)
-  where VkCreateDescriptorUpdateTemplate
-          = _VkCreateDescriptorUpdateTemplate
-
-{-# INLINE _VkCreateDescriptorUpdateTemplate #-}
-
-_VkCreateDescriptorUpdateTemplate :: CString
-_VkCreateDescriptorUpdateTemplate
-  = Ptr "vkCreateDescriptorUpdateTemplate\NUL"#
-
-{-# INLINE is_VkCreateDescriptorUpdateTemplate #-}
-
-is_VkCreateDescriptorUpdateTemplate :: CString -> Bool
-is_VkCreateDescriptorUpdateTemplate
-  = (EQ ==) . cmpCStrings _VkCreateDescriptorUpdateTemplate
-
-type VkCreateDescriptorUpdateTemplate =
-     "vkCreateDescriptorUpdateTemplate"
-
-#ifdef NATIVE_FFI_VK_VERSION_1_1
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkCreateDescriptorUpdateTemplate
--- >     ( VkDevice device
--- >     , const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateDescriptorUpdateTemplate vkCreateDescriptorUpdateTemplate registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-1@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkCreateDescriptorUpdateTemplate"
-               vkCreateDescriptorUpdateTemplate ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkDescriptorUpdateTemplateCreateInfo -- ^ pCreateInfo
-                                                          ->
-                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                             ->
-                     Ptr VkDescriptorUpdateTemplate -- ^ pDescriptorUpdateTemplate
-                                                    -> IO VkResult
-
-#else
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkCreateDescriptorUpdateTemplate
--- >     ( VkDevice device
--- >     , const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateDescriptorUpdateTemplate vkCreateDescriptorUpdateTemplate registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-1@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCreateDescriptorUpdateTemplateSafe@ and @vkCreateDescriptorUpdateTemplate@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateDescriptorUpdateTemplate <- vkGetDeviceProc @VkCreateDescriptorUpdateTemplate vkDevice
---
--- or less efficient:
---
--- > myCreateDescriptorUpdateTemplate <- vkGetProc @VkCreateDescriptorUpdateTemplate
---
-vkCreateDescriptorUpdateTemplate ::
-                                 VkDevice -- ^ device
-                                          ->
-                                   Ptr VkDescriptorUpdateTemplateCreateInfo -- ^ pCreateInfo
-                                                                            ->
-                                     Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                               ->
-                                       Ptr VkDescriptorUpdateTemplate -- ^ pDescriptorUpdateTemplate
-                                                                      -> IO VkResult
-vkCreateDescriptorUpdateTemplate
-  = unsafeDupablePerformIO
-      (vkGetProc @VkCreateDescriptorUpdateTemplate)
-
-{-# NOINLINE vkCreateDescriptorUpdateTemplate #-}
-#endif
-
-#ifdef NATIVE_FFI_VK_VERSION_1_1
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkCreateDescriptorUpdateTemplate
--- >     ( VkDevice device
--- >     , const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateDescriptorUpdateTemplate vkCreateDescriptorUpdateTemplate registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-1@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkCreateDescriptorUpdateTemplate"
-               vkCreateDescriptorUpdateTemplateSafe ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkDescriptorUpdateTemplateCreateInfo -- ^ pCreateInfo
-                                                          ->
-                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                             ->
-                     Ptr VkDescriptorUpdateTemplate -- ^ pDescriptorUpdateTemplate
-                                                    -> IO VkResult
-
-#else
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkCreateDescriptorUpdateTemplate
--- >     ( VkDevice device
--- >     , const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateDescriptorUpdateTemplate vkCreateDescriptorUpdateTemplate registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-1@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCreateDescriptorUpdateTemplateSafe@ and @vkCreateDescriptorUpdateTemplate@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateDescriptorUpdateTemplate <- vkGetDeviceProc @VkCreateDescriptorUpdateTemplate vkDevice
---
--- or less efficient:
---
--- > myCreateDescriptorUpdateTemplate <- vkGetProc @VkCreateDescriptorUpdateTemplate
---
-vkCreateDescriptorUpdateTemplateSafe ::
-                                     VkDevice -- ^ device
-                                              ->
-                                       Ptr VkDescriptorUpdateTemplateCreateInfo -- ^ pCreateInfo
-                                                                                ->
-                                         Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                   ->
-                                           Ptr VkDescriptorUpdateTemplate -- ^ pDescriptorUpdateTemplate
-                                                                          -> IO VkResult
-vkCreateDescriptorUpdateTemplateSafe
-  = vkCreateDescriptorUpdateTemplate
-
-{-# INLINE vkCreateDescriptorUpdateTemplateSafe #-}
-#endif
-
--- | Success codes: 'VK_SUCCESS'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
---   > VkResult vkCreateDescriptorUpdateTemplate
---   >     ( VkDevice device
---   >     , const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo
---   >     , const VkAllocationCallbacks* pAllocator
---   >     , VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateDescriptorUpdateTemplate vkCreateDescriptorUpdateTemplate registry at www.khronos.org>
-type HS_vkCreateDescriptorUpdateTemplate =
-     VkDevice -- ^ device
-              ->
-       Ptr VkDescriptorUpdateTemplateCreateInfo -- ^ pCreateInfo
-                                                ->
-         Ptr VkAllocationCallbacks -- ^ pAllocator
-                                   ->
-           Ptr VkDescriptorUpdateTemplate -- ^ pDescriptorUpdateTemplate
-                                          -> IO VkResult
-
-type PFN_vkCreateDescriptorUpdateTemplate =
-     FunPtr HS_vkCreateDescriptorUpdateTemplate
-
-foreign import ccall "dynamic"
-               unwrapVkCreateDescriptorUpdateTemplate ::
-               PFN_vkCreateDescriptorUpdateTemplate ->
-                 HS_vkCreateDescriptorUpdateTemplate
-
-instance VulkanProc "vkCreateDescriptorUpdateTemplate" where
-        type VkProcType "vkCreateDescriptorUpdateTemplate" =
-             HS_vkCreateDescriptorUpdateTemplate
-        vkProcSymbol = _VkCreateDescriptorUpdateTemplate
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkCreateDescriptorUpdateTemplate
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VkDestroyDescriptorUpdateTemplate :: CString
-
-pattern VkDestroyDescriptorUpdateTemplate <-
-        (is_VkDestroyDescriptorUpdateTemplate -> True)
-  where VkDestroyDescriptorUpdateTemplate
-          = _VkDestroyDescriptorUpdateTemplate
-
-{-# INLINE _VkDestroyDescriptorUpdateTemplate #-}
-
-_VkDestroyDescriptorUpdateTemplate :: CString
-_VkDestroyDescriptorUpdateTemplate
-  = Ptr "vkDestroyDescriptorUpdateTemplate\NUL"#
-
-{-# INLINE is_VkDestroyDescriptorUpdateTemplate #-}
-
-is_VkDestroyDescriptorUpdateTemplate :: CString -> Bool
-is_VkDestroyDescriptorUpdateTemplate
-  = (EQ ==) . cmpCStrings _VkDestroyDescriptorUpdateTemplate
-
-type VkDestroyDescriptorUpdateTemplate =
-     "vkDestroyDescriptorUpdateTemplate"
-
-#ifdef NATIVE_FFI_VK_VERSION_1_1
--- |
--- > void vkDestroyDescriptorUpdateTemplate
--- >     ( VkDevice device
--- >     , VkDescriptorUpdateTemplate descriptorUpdateTemplate
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyDescriptorUpdateTemplate vkDestroyDescriptorUpdateTemplate registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-1@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkDestroyDescriptorUpdateTemplate"
-               vkDestroyDescriptorUpdateTemplate ::
-               VkDevice -- ^ device
-                        ->
-                 VkDescriptorUpdateTemplate -- ^ descriptorUpdateTemplate
-                                            -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                         -> IO ()
-
-#else
--- |
--- > void vkDestroyDescriptorUpdateTemplate
--- >     ( VkDevice device
--- >     , VkDescriptorUpdateTemplate descriptorUpdateTemplate
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyDescriptorUpdateTemplate vkDestroyDescriptorUpdateTemplate registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-1@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkDestroyDescriptorUpdateTemplateSafe@ and @vkDestroyDescriptorUpdateTemplate@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDestroyDescriptorUpdateTemplate <- vkGetDeviceProc @VkDestroyDescriptorUpdateTemplate vkDevice
---
--- or less efficient:
---
--- > myDestroyDescriptorUpdateTemplate <- vkGetProc @VkDestroyDescriptorUpdateTemplate
---
-vkDestroyDescriptorUpdateTemplate ::
-                                  VkDevice -- ^ device
-                                           ->
-                                    VkDescriptorUpdateTemplate -- ^ descriptorUpdateTemplate
-                                                               -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                                            -> IO ()
-vkDestroyDescriptorUpdateTemplate
-  = unsafeDupablePerformIO
-      (vkGetProc @VkDestroyDescriptorUpdateTemplate)
-
-{-# NOINLINE vkDestroyDescriptorUpdateTemplate #-}
-#endif
-
-#ifdef NATIVE_FFI_VK_VERSION_1_1
--- |
--- > void vkDestroyDescriptorUpdateTemplate
--- >     ( VkDevice device
--- >     , VkDescriptorUpdateTemplate descriptorUpdateTemplate
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyDescriptorUpdateTemplate vkDestroyDescriptorUpdateTemplate registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-1@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkDestroyDescriptorUpdateTemplate"
-               vkDestroyDescriptorUpdateTemplateSafe ::
-               VkDevice -- ^ device
-                        ->
-                 VkDescriptorUpdateTemplate -- ^ descriptorUpdateTemplate
-                                            -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                         -> IO ()
-
-#else
--- |
--- > void vkDestroyDescriptorUpdateTemplate
--- >     ( VkDevice device
--- >     , VkDescriptorUpdateTemplate descriptorUpdateTemplate
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyDescriptorUpdateTemplate vkDestroyDescriptorUpdateTemplate registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-1@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkDestroyDescriptorUpdateTemplateSafe@ and @vkDestroyDescriptorUpdateTemplate@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDestroyDescriptorUpdateTemplate <- vkGetDeviceProc @VkDestroyDescriptorUpdateTemplate vkDevice
---
--- or less efficient:
---
--- > myDestroyDescriptorUpdateTemplate <- vkGetProc @VkDestroyDescriptorUpdateTemplate
---
-vkDestroyDescriptorUpdateTemplateSafe ::
-                                      VkDevice -- ^ device
-                                               ->
-                                        VkDescriptorUpdateTemplate -- ^ descriptorUpdateTemplate
-                                                                   ->
-                                          Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                    -> IO ()
-vkDestroyDescriptorUpdateTemplateSafe
-  = vkDestroyDescriptorUpdateTemplate
-
-{-# INLINE vkDestroyDescriptorUpdateTemplateSafe #-}
-#endif
-
--- | > void vkDestroyDescriptorUpdateTemplate
---   >     ( VkDevice device
---   >     , VkDescriptorUpdateTemplate descriptorUpdateTemplate
---   >     , const VkAllocationCallbacks* pAllocator
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyDescriptorUpdateTemplate vkDestroyDescriptorUpdateTemplate registry at www.khronos.org>
-type HS_vkDestroyDescriptorUpdateTemplate =
-     VkDevice -- ^ device
-              ->
-       VkDescriptorUpdateTemplate -- ^ descriptorUpdateTemplate
-                                  -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                               -> IO ()
-
-type PFN_vkDestroyDescriptorUpdateTemplate =
-     FunPtr HS_vkDestroyDescriptorUpdateTemplate
-
-foreign import ccall "dynamic"
-               unwrapVkDestroyDescriptorUpdateTemplate ::
-               PFN_vkDestroyDescriptorUpdateTemplate ->
-                 HS_vkDestroyDescriptorUpdateTemplate
-
-instance VulkanProc "vkDestroyDescriptorUpdateTemplate" where
-        type VkProcType "vkDestroyDescriptorUpdateTemplate" =
-             HS_vkDestroyDescriptorUpdateTemplate
-        vkProcSymbol = _VkDestroyDescriptorUpdateTemplate
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkDestroyDescriptorUpdateTemplate
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VkUpdateDescriptorSetWithTemplate :: CString
-
-pattern VkUpdateDescriptorSetWithTemplate <-
-        (is_VkUpdateDescriptorSetWithTemplate -> True)
-  where VkUpdateDescriptorSetWithTemplate
-          = _VkUpdateDescriptorSetWithTemplate
-
-{-# INLINE _VkUpdateDescriptorSetWithTemplate #-}
-
-_VkUpdateDescriptorSetWithTemplate :: CString
-_VkUpdateDescriptorSetWithTemplate
-  = Ptr "vkUpdateDescriptorSetWithTemplate\NUL"#
-
-{-# INLINE is_VkUpdateDescriptorSetWithTemplate #-}
-
-is_VkUpdateDescriptorSetWithTemplate :: CString -> Bool
-is_VkUpdateDescriptorSetWithTemplate
-  = (EQ ==) . cmpCStrings _VkUpdateDescriptorSetWithTemplate
-
-type VkUpdateDescriptorSetWithTemplate =
-     "vkUpdateDescriptorSetWithTemplate"
-
-#ifdef NATIVE_FFI_VK_VERSION_1_1
--- |
--- > void vkUpdateDescriptorSetWithTemplate
--- >     ( VkDevice device
--- >     , VkDescriptorSet descriptorSet
--- >     , VkDescriptorUpdateTemplate descriptorUpdateTemplate
--- >     , const void* pData
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkUpdateDescriptorSetWithTemplate vkUpdateDescriptorSetWithTemplate registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-1@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkUpdateDescriptorSetWithTemplate"
-               vkUpdateDescriptorSetWithTemplate ::
-               VkDevice -- ^ device
-                        ->
-                 VkDescriptorSet -- ^ descriptorSet
-                                 -> VkDescriptorUpdateTemplate -- ^ descriptorUpdateTemplate
-                                                               -> Ptr Void -- ^ pData
-                                                                           -> IO ()
-
-#else
--- |
--- > void vkUpdateDescriptorSetWithTemplate
--- >     ( VkDevice device
--- >     , VkDescriptorSet descriptorSet
--- >     , VkDescriptorUpdateTemplate descriptorUpdateTemplate
--- >     , const void* pData
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkUpdateDescriptorSetWithTemplate vkUpdateDescriptorSetWithTemplate registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-1@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkUpdateDescriptorSetWithTemplateSafe@ and @vkUpdateDescriptorSetWithTemplate@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myUpdateDescriptorSetWithTemplate <- vkGetDeviceProc @VkUpdateDescriptorSetWithTemplate vkDevice
---
--- or less efficient:
---
--- > myUpdateDescriptorSetWithTemplate <- vkGetProc @VkUpdateDescriptorSetWithTemplate
---
-vkUpdateDescriptorSetWithTemplate ::
-                                  VkDevice -- ^ device
-                                           ->
-                                    VkDescriptorSet -- ^ descriptorSet
-                                                    ->
-                                      VkDescriptorUpdateTemplate -- ^ descriptorUpdateTemplate
-                                                                 -> Ptr Void -- ^ pData
-                                                                             -> IO ()
-vkUpdateDescriptorSetWithTemplate
-  = unsafeDupablePerformIO
-      (vkGetProc @VkUpdateDescriptorSetWithTemplate)
-
-{-# NOINLINE vkUpdateDescriptorSetWithTemplate #-}
-#endif
-
-#ifdef NATIVE_FFI_VK_VERSION_1_1
--- |
--- > void vkUpdateDescriptorSetWithTemplate
--- >     ( VkDevice device
--- >     , VkDescriptorSet descriptorSet
--- >     , VkDescriptorUpdateTemplate descriptorUpdateTemplate
--- >     , const void* pData
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkUpdateDescriptorSetWithTemplate vkUpdateDescriptorSetWithTemplate registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-1@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkUpdateDescriptorSetWithTemplate"
-               vkUpdateDescriptorSetWithTemplateSafe ::
-               VkDevice -- ^ device
-                        ->
-                 VkDescriptorSet -- ^ descriptorSet
-                                 -> VkDescriptorUpdateTemplate -- ^ descriptorUpdateTemplate
-                                                               -> Ptr Void -- ^ pData
-                                                                           -> IO ()
-
-#else
--- |
--- > void vkUpdateDescriptorSetWithTemplate
--- >     ( VkDevice device
--- >     , VkDescriptorSet descriptorSet
--- >     , VkDescriptorUpdateTemplate descriptorUpdateTemplate
--- >     , const void* pData
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkUpdateDescriptorSetWithTemplate vkUpdateDescriptorSetWithTemplate registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-1@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkUpdateDescriptorSetWithTemplateSafe@ and @vkUpdateDescriptorSetWithTemplate@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myUpdateDescriptorSetWithTemplate <- vkGetDeviceProc @VkUpdateDescriptorSetWithTemplate vkDevice
---
--- or less efficient:
---
--- > myUpdateDescriptorSetWithTemplate <- vkGetProc @VkUpdateDescriptorSetWithTemplate
---
-vkUpdateDescriptorSetWithTemplateSafe ::
-                                      VkDevice -- ^ device
-                                               ->
-                                        VkDescriptorSet -- ^ descriptorSet
-                                                        ->
-                                          VkDescriptorUpdateTemplate -- ^ descriptorUpdateTemplate
-                                                                     -> Ptr Void -- ^ pData
-                                                                                 -> IO ()
-vkUpdateDescriptorSetWithTemplateSafe
-  = vkUpdateDescriptorSetWithTemplate
-
-{-# INLINE vkUpdateDescriptorSetWithTemplateSafe #-}
-#endif
-
--- | > void vkUpdateDescriptorSetWithTemplate
---   >     ( VkDevice device
---   >     , VkDescriptorSet descriptorSet
---   >     , VkDescriptorUpdateTemplate descriptorUpdateTemplate
---   >     , const void* pData
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkUpdateDescriptorSetWithTemplate vkUpdateDescriptorSetWithTemplate registry at www.khronos.org>
-type HS_vkUpdateDescriptorSetWithTemplate =
-     VkDevice -- ^ device
-              ->
-       VkDescriptorSet -- ^ descriptorSet
-                       -> VkDescriptorUpdateTemplate -- ^ descriptorUpdateTemplate
-                                                     -> Ptr Void -- ^ pData
-                                                                 -> IO ()
-
-type PFN_vkUpdateDescriptorSetWithTemplate =
-     FunPtr HS_vkUpdateDescriptorSetWithTemplate
-
-foreign import ccall "dynamic"
-               unwrapVkUpdateDescriptorSetWithTemplate ::
-               PFN_vkUpdateDescriptorSetWithTemplate ->
-                 HS_vkUpdateDescriptorSetWithTemplate
-
-instance VulkanProc "vkUpdateDescriptorSetWithTemplate" where
-        type VkProcType "vkUpdateDescriptorSetWithTemplate" =
-             HS_vkUpdateDescriptorSetWithTemplate
-        vkProcSymbol = _VkUpdateDescriptorSetWithTemplate
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkUpdateDescriptorSetWithTemplate
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO ::
-        VkStructureType
-
-pattern VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO =
-        VkStructureType 1000085000
-
-pattern VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE :: VkObjectType
-
-pattern VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE =
-        VkObjectType 1000085000
-
-pattern VkGetPhysicalDeviceExternalBufferProperties :: CString
-
-pattern VkGetPhysicalDeviceExternalBufferProperties <-
-        (is_VkGetPhysicalDeviceExternalBufferProperties -> True)
-  where VkGetPhysicalDeviceExternalBufferProperties
-          = _VkGetPhysicalDeviceExternalBufferProperties
-
-{-# INLINE _VkGetPhysicalDeviceExternalBufferProperties #-}
-
-_VkGetPhysicalDeviceExternalBufferProperties :: CString
-_VkGetPhysicalDeviceExternalBufferProperties
-  = Ptr "vkGetPhysicalDeviceExternalBufferProperties\NUL"#
-
-{-# INLINE is_VkGetPhysicalDeviceExternalBufferProperties #-}
-
-is_VkGetPhysicalDeviceExternalBufferProperties :: CString -> Bool
-is_VkGetPhysicalDeviceExternalBufferProperties
-  = (EQ ==) .
-      cmpCStrings _VkGetPhysicalDeviceExternalBufferProperties
-
-type VkGetPhysicalDeviceExternalBufferProperties =
-     "vkGetPhysicalDeviceExternalBufferProperties"
-
-#ifdef NATIVE_FFI_VK_VERSION_1_1
--- |
--- > void vkGetPhysicalDeviceExternalBufferProperties
--- >     ( VkPhysicalDevice physicalDevice
--- >     , const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo
--- >     , VkExternalBufferProperties* pExternalBufferProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceExternalBufferProperties vkGetPhysicalDeviceExternalBufferProperties registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-1@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe
-               "vkGetPhysicalDeviceExternalBufferProperties"
-               vkGetPhysicalDeviceExternalBufferProperties ::
-               VkPhysicalDevice -- ^ physicalDevice
-                                ->
-                 Ptr VkPhysicalDeviceExternalBufferInfo -- ^ pExternalBufferInfo
-                                                        ->
-                   Ptr VkExternalBufferProperties -- ^ pExternalBufferProperties
-                                                  -> IO ()
-
-#else
--- |
--- > void vkGetPhysicalDeviceExternalBufferProperties
--- >     ( VkPhysicalDevice physicalDevice
--- >     , const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo
--- >     , VkExternalBufferProperties* pExternalBufferProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceExternalBufferProperties vkGetPhysicalDeviceExternalBufferProperties registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-1@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkGetPhysicalDeviceExternalBufferPropertiesSafe@ and @vkGetPhysicalDeviceExternalBufferProperties@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetPhysicalDeviceExternalBufferProperties <- vkGetInstanceProc @VkGetPhysicalDeviceExternalBufferProperties vkInstance
---
--- or less efficient:
---
--- > myGetPhysicalDeviceExternalBufferProperties <- vkGetProc @VkGetPhysicalDeviceExternalBufferProperties
---
-vkGetPhysicalDeviceExternalBufferProperties ::
-                                            VkPhysicalDevice -- ^ physicalDevice
-                                                             ->
-                                              Ptr VkPhysicalDeviceExternalBufferInfo -- ^ pExternalBufferInfo
-                                                                                     ->
-                                                Ptr VkExternalBufferProperties -- ^ pExternalBufferProperties
-                                                                               -> IO ()
-vkGetPhysicalDeviceExternalBufferProperties
-  = unsafeDupablePerformIO
-      (vkGetProc @VkGetPhysicalDeviceExternalBufferProperties)
-
-{-# NOINLINE vkGetPhysicalDeviceExternalBufferProperties #-}
-#endif
-
-#ifdef NATIVE_FFI_VK_VERSION_1_1
--- |
--- > void vkGetPhysicalDeviceExternalBufferProperties
--- >     ( VkPhysicalDevice physicalDevice
--- >     , const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo
--- >     , VkExternalBufferProperties* pExternalBufferProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceExternalBufferProperties vkGetPhysicalDeviceExternalBufferProperties registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-1@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe
-               "vkGetPhysicalDeviceExternalBufferProperties"
-               vkGetPhysicalDeviceExternalBufferPropertiesSafe ::
-               VkPhysicalDevice -- ^ physicalDevice
-                                ->
-                 Ptr VkPhysicalDeviceExternalBufferInfo -- ^ pExternalBufferInfo
-                                                        ->
-                   Ptr VkExternalBufferProperties -- ^ pExternalBufferProperties
-                                                  -> IO ()
-
-#else
--- |
--- > void vkGetPhysicalDeviceExternalBufferProperties
--- >     ( VkPhysicalDevice physicalDevice
--- >     , const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo
--- >     , VkExternalBufferProperties* pExternalBufferProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceExternalBufferProperties vkGetPhysicalDeviceExternalBufferProperties registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-1@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkGetPhysicalDeviceExternalBufferPropertiesSafe@ and @vkGetPhysicalDeviceExternalBufferProperties@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetPhysicalDeviceExternalBufferProperties <- vkGetInstanceProc @VkGetPhysicalDeviceExternalBufferProperties vkInstance
---
--- or less efficient:
---
--- > myGetPhysicalDeviceExternalBufferProperties <- vkGetProc @VkGetPhysicalDeviceExternalBufferProperties
---
-vkGetPhysicalDeviceExternalBufferPropertiesSafe ::
-                                                VkPhysicalDevice -- ^ physicalDevice
-                                                                 ->
-                                                  Ptr VkPhysicalDeviceExternalBufferInfo -- ^ pExternalBufferInfo
-                                                                                         ->
-                                                    Ptr VkExternalBufferProperties -- ^ pExternalBufferProperties
-                                                                                   -> IO ()
-vkGetPhysicalDeviceExternalBufferPropertiesSafe
-  = vkGetPhysicalDeviceExternalBufferProperties
-
-{-# INLINE vkGetPhysicalDeviceExternalBufferPropertiesSafe #-}
-#endif
-
--- | > void vkGetPhysicalDeviceExternalBufferProperties
---   >     ( VkPhysicalDevice physicalDevice
---   >     , const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo
---   >     , VkExternalBufferProperties* pExternalBufferProperties
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceExternalBufferProperties vkGetPhysicalDeviceExternalBufferProperties registry at www.khronos.org>
-type HS_vkGetPhysicalDeviceExternalBufferProperties =
-     VkPhysicalDevice -- ^ physicalDevice
-                      ->
-       Ptr VkPhysicalDeviceExternalBufferInfo -- ^ pExternalBufferInfo
-                                              ->
-         Ptr VkExternalBufferProperties -- ^ pExternalBufferProperties
-                                        -> IO ()
-
-type PFN_vkGetPhysicalDeviceExternalBufferProperties =
-     FunPtr HS_vkGetPhysicalDeviceExternalBufferProperties
-
-foreign import ccall "dynamic"
-               unwrapVkGetPhysicalDeviceExternalBufferProperties ::
-               PFN_vkGetPhysicalDeviceExternalBufferProperties ->
-                 HS_vkGetPhysicalDeviceExternalBufferProperties
-
-instance VulkanProc "vkGetPhysicalDeviceExternalBufferProperties"
-         where
-        type VkProcType "vkGetPhysicalDeviceExternalBufferProperties" =
-             HS_vkGetPhysicalDeviceExternalBufferProperties
-        vkProcSymbol = _VkGetPhysicalDeviceExternalBufferProperties
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkGetPhysicalDeviceExternalBufferProperties
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO
-        :: VkStructureType
-
-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO
-        = VkStructureType 1000071000
-
-pattern VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES ::
-        VkStructureType
-
-pattern VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES =
-        VkStructureType 1000071001
-
-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO ::
-        VkStructureType
-
-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO =
-        VkStructureType 1000071002
-
-pattern VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES ::
-        VkStructureType
-
-pattern VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES =
-        VkStructureType 1000071003
-
-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES ::
-        VkStructureType
-
-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES =
-        VkStructureType 1000071004
-
-pattern VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO ::
-        VkStructureType
-
-pattern VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO =
-        VkStructureType 1000072000
-
-pattern VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO ::
-        VkStructureType
-
-pattern VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO =
-        VkStructureType 1000072001
-
-pattern VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO ::
-        VkStructureType
-
-pattern VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO =
-        VkStructureType 1000072002
-
-pattern VK_ERROR_INVALID_EXTERNAL_HANDLE :: VkResult
-
-pattern VK_ERROR_INVALID_EXTERNAL_HANDLE = VkResult (-1000072003)
-
-pattern VkGetPhysicalDeviceExternalFenceProperties :: CString
-
-pattern VkGetPhysicalDeviceExternalFenceProperties <-
-        (is_VkGetPhysicalDeviceExternalFenceProperties -> True)
-  where VkGetPhysicalDeviceExternalFenceProperties
-          = _VkGetPhysicalDeviceExternalFenceProperties
-
-{-# INLINE _VkGetPhysicalDeviceExternalFenceProperties #-}
-
-_VkGetPhysicalDeviceExternalFenceProperties :: CString
-_VkGetPhysicalDeviceExternalFenceProperties
-  = Ptr "vkGetPhysicalDeviceExternalFenceProperties\NUL"#
-
-{-# INLINE is_VkGetPhysicalDeviceExternalFenceProperties #-}
-
-is_VkGetPhysicalDeviceExternalFenceProperties :: CString -> Bool
-is_VkGetPhysicalDeviceExternalFenceProperties
-  = (EQ ==) . cmpCStrings _VkGetPhysicalDeviceExternalFenceProperties
-
-type VkGetPhysicalDeviceExternalFenceProperties =
-     "vkGetPhysicalDeviceExternalFenceProperties"
-
-#ifdef NATIVE_FFI_VK_VERSION_1_1
--- |
--- > void vkGetPhysicalDeviceExternalFenceProperties
--- >     ( VkPhysicalDevice physicalDevice
--- >     , const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo
--- >     , VkExternalFenceProperties* pExternalFenceProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceExternalFenceProperties vkGetPhysicalDeviceExternalFenceProperties registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-1@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe
-               "vkGetPhysicalDeviceExternalFenceProperties"
-               vkGetPhysicalDeviceExternalFenceProperties ::
-               VkPhysicalDevice -- ^ physicalDevice
-                                ->
-                 Ptr VkPhysicalDeviceExternalFenceInfo -- ^ pExternalFenceInfo
-                                                       ->
-                   Ptr VkExternalFenceProperties -- ^ pExternalFenceProperties
-                                                 -> IO ()
-
-#else
--- |
--- > void vkGetPhysicalDeviceExternalFenceProperties
--- >     ( VkPhysicalDevice physicalDevice
--- >     , const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo
--- >     , VkExternalFenceProperties* pExternalFenceProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceExternalFenceProperties vkGetPhysicalDeviceExternalFenceProperties registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-1@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkGetPhysicalDeviceExternalFencePropertiesSafe@ and @vkGetPhysicalDeviceExternalFenceProperties@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetPhysicalDeviceExternalFenceProperties <- vkGetInstanceProc @VkGetPhysicalDeviceExternalFenceProperties vkInstance
---
--- or less efficient:
---
--- > myGetPhysicalDeviceExternalFenceProperties <- vkGetProc @VkGetPhysicalDeviceExternalFenceProperties
---
-vkGetPhysicalDeviceExternalFenceProperties ::
-                                           VkPhysicalDevice -- ^ physicalDevice
-                                                            ->
-                                             Ptr VkPhysicalDeviceExternalFenceInfo -- ^ pExternalFenceInfo
-                                                                                   ->
-                                               Ptr VkExternalFenceProperties -- ^ pExternalFenceProperties
-                                                                             -> IO ()
-vkGetPhysicalDeviceExternalFenceProperties
-  = unsafeDupablePerformIO
-      (vkGetProc @VkGetPhysicalDeviceExternalFenceProperties)
-
-{-# NOINLINE vkGetPhysicalDeviceExternalFenceProperties #-}
-#endif
-
-#ifdef NATIVE_FFI_VK_VERSION_1_1
--- |
--- > void vkGetPhysicalDeviceExternalFenceProperties
--- >     ( VkPhysicalDevice physicalDevice
--- >     , const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo
--- >     , VkExternalFenceProperties* pExternalFenceProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceExternalFenceProperties vkGetPhysicalDeviceExternalFenceProperties registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-1@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe
-               "vkGetPhysicalDeviceExternalFenceProperties"
-               vkGetPhysicalDeviceExternalFencePropertiesSafe ::
-               VkPhysicalDevice -- ^ physicalDevice
-                                ->
-                 Ptr VkPhysicalDeviceExternalFenceInfo -- ^ pExternalFenceInfo
-                                                       ->
-                   Ptr VkExternalFenceProperties -- ^ pExternalFenceProperties
-                                                 -> IO ()
-
-#else
--- |
--- > void vkGetPhysicalDeviceExternalFenceProperties
--- >     ( VkPhysicalDevice physicalDevice
--- >     , const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo
--- >     , VkExternalFenceProperties* pExternalFenceProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceExternalFenceProperties vkGetPhysicalDeviceExternalFenceProperties registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-1@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkGetPhysicalDeviceExternalFencePropertiesSafe@ and @vkGetPhysicalDeviceExternalFenceProperties@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetPhysicalDeviceExternalFenceProperties <- vkGetInstanceProc @VkGetPhysicalDeviceExternalFenceProperties vkInstance
---
--- or less efficient:
---
--- > myGetPhysicalDeviceExternalFenceProperties <- vkGetProc @VkGetPhysicalDeviceExternalFenceProperties
---
-vkGetPhysicalDeviceExternalFencePropertiesSafe ::
-                                               VkPhysicalDevice -- ^ physicalDevice
-                                                                ->
-                                                 Ptr VkPhysicalDeviceExternalFenceInfo -- ^ pExternalFenceInfo
-                                                                                       ->
-                                                   Ptr VkExternalFenceProperties -- ^ pExternalFenceProperties
-                                                                                 -> IO ()
-vkGetPhysicalDeviceExternalFencePropertiesSafe
-  = vkGetPhysicalDeviceExternalFenceProperties
-
-{-# INLINE vkGetPhysicalDeviceExternalFencePropertiesSafe #-}
-#endif
-
--- | > void vkGetPhysicalDeviceExternalFenceProperties
---   >     ( VkPhysicalDevice physicalDevice
---   >     , const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo
---   >     , VkExternalFenceProperties* pExternalFenceProperties
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceExternalFenceProperties vkGetPhysicalDeviceExternalFenceProperties registry at www.khronos.org>
-type HS_vkGetPhysicalDeviceExternalFenceProperties =
-     VkPhysicalDevice -- ^ physicalDevice
-                      ->
-       Ptr VkPhysicalDeviceExternalFenceInfo -- ^ pExternalFenceInfo
-                                             ->
-         Ptr VkExternalFenceProperties -- ^ pExternalFenceProperties
-                                       -> IO ()
-
-type PFN_vkGetPhysicalDeviceExternalFenceProperties =
-     FunPtr HS_vkGetPhysicalDeviceExternalFenceProperties
-
-foreign import ccall "dynamic"
-               unwrapVkGetPhysicalDeviceExternalFenceProperties ::
-               PFN_vkGetPhysicalDeviceExternalFenceProperties ->
-                 HS_vkGetPhysicalDeviceExternalFenceProperties
-
-instance VulkanProc "vkGetPhysicalDeviceExternalFenceProperties"
-         where
-        type VkProcType "vkGetPhysicalDeviceExternalFenceProperties" =
-             HS_vkGetPhysicalDeviceExternalFenceProperties
-        vkProcSymbol = _VkGetPhysicalDeviceExternalFenceProperties
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkGetPhysicalDeviceExternalFenceProperties
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO ::
-        VkStructureType
-
-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO =
-        VkStructureType 1000112000
-
-pattern VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES ::
-        VkStructureType
-
-pattern VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES =
-        VkStructureType 1000112001
-
-pattern VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO ::
-        VkStructureType
-
-pattern VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO =
-        VkStructureType 1000113000
-
-pattern VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO ::
-        VkStructureType
-
-pattern VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO =
-        VkStructureType 1000077000
-
-pattern VkGetPhysicalDeviceExternalSemaphoreProperties :: CString
-
-pattern VkGetPhysicalDeviceExternalSemaphoreProperties <-
-        (is_VkGetPhysicalDeviceExternalSemaphoreProperties -> True)
-  where VkGetPhysicalDeviceExternalSemaphoreProperties
-          = _VkGetPhysicalDeviceExternalSemaphoreProperties
-
-{-# INLINE _VkGetPhysicalDeviceExternalSemaphoreProperties #-}
-
-_VkGetPhysicalDeviceExternalSemaphoreProperties :: CString
-_VkGetPhysicalDeviceExternalSemaphoreProperties
-  = Ptr "vkGetPhysicalDeviceExternalSemaphoreProperties\NUL"#
-
-{-# INLINE is_VkGetPhysicalDeviceExternalSemaphoreProperties #-}
-
-is_VkGetPhysicalDeviceExternalSemaphoreProperties ::
-                                                  CString -> Bool
-is_VkGetPhysicalDeviceExternalSemaphoreProperties
-  = (EQ ==) .
-      cmpCStrings _VkGetPhysicalDeviceExternalSemaphoreProperties
-
-type VkGetPhysicalDeviceExternalSemaphoreProperties =
-     "vkGetPhysicalDeviceExternalSemaphoreProperties"
-
-#ifdef NATIVE_FFI_VK_VERSION_1_1
--- |
--- > void vkGetPhysicalDeviceExternalSemaphoreProperties
--- >     ( VkPhysicalDevice physicalDevice
--- >     , const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo
--- >     , VkExternalSemaphoreProperties* pExternalSemaphoreProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceExternalSemaphoreProperties vkGetPhysicalDeviceExternalSemaphoreProperties registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-1@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe
-               "vkGetPhysicalDeviceExternalSemaphoreProperties"
-               vkGetPhysicalDeviceExternalSemaphoreProperties ::
-               VkPhysicalDevice -- ^ physicalDevice
-                                ->
-                 Ptr VkPhysicalDeviceExternalSemaphoreInfo -- ^ pExternalSemaphoreInfo
-                                                           ->
-                   Ptr VkExternalSemaphoreProperties -- ^ pExternalSemaphoreProperties
-                                                     -> IO ()
-
-#else
--- |
--- > void vkGetPhysicalDeviceExternalSemaphoreProperties
--- >     ( VkPhysicalDevice physicalDevice
--- >     , const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo
--- >     , VkExternalSemaphoreProperties* pExternalSemaphoreProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceExternalSemaphoreProperties vkGetPhysicalDeviceExternalSemaphoreProperties registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-1@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkGetPhysicalDeviceExternalSemaphorePropertiesSafe@ and @vkGetPhysicalDeviceExternalSemaphoreProperties@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetPhysicalDeviceExternalSemaphoreProperties <- vkGetInstanceProc @VkGetPhysicalDeviceExternalSemaphoreProperties vkInstance
---
--- or less efficient:
---
--- > myGetPhysicalDeviceExternalSemaphoreProperties <- vkGetProc @VkGetPhysicalDeviceExternalSemaphoreProperties
---
-vkGetPhysicalDeviceExternalSemaphoreProperties ::
-                                               VkPhysicalDevice -- ^ physicalDevice
-                                                                ->
-                                                 Ptr VkPhysicalDeviceExternalSemaphoreInfo -- ^ pExternalSemaphoreInfo
-                                                                                           ->
-                                                   Ptr VkExternalSemaphoreProperties -- ^ pExternalSemaphoreProperties
-                                                                                     -> IO ()
-vkGetPhysicalDeviceExternalSemaphoreProperties
-  = unsafeDupablePerformIO
-      (vkGetProc @VkGetPhysicalDeviceExternalSemaphoreProperties)
-
-{-# NOINLINE vkGetPhysicalDeviceExternalSemaphoreProperties #-}
-#endif
-
-#ifdef NATIVE_FFI_VK_VERSION_1_1
--- |
--- > void vkGetPhysicalDeviceExternalSemaphoreProperties
--- >     ( VkPhysicalDevice physicalDevice
--- >     , const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo
--- >     , VkExternalSemaphoreProperties* pExternalSemaphoreProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceExternalSemaphoreProperties vkGetPhysicalDeviceExternalSemaphoreProperties registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-1@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe
-               "vkGetPhysicalDeviceExternalSemaphoreProperties"
-               vkGetPhysicalDeviceExternalSemaphorePropertiesSafe ::
-               VkPhysicalDevice -- ^ physicalDevice
-                                ->
-                 Ptr VkPhysicalDeviceExternalSemaphoreInfo -- ^ pExternalSemaphoreInfo
-                                                           ->
-                   Ptr VkExternalSemaphoreProperties -- ^ pExternalSemaphoreProperties
-                                                     -> IO ()
-
-#else
--- |
--- > void vkGetPhysicalDeviceExternalSemaphoreProperties
--- >     ( VkPhysicalDevice physicalDevice
--- >     , const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo
--- >     , VkExternalSemaphoreProperties* pExternalSemaphoreProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceExternalSemaphoreProperties vkGetPhysicalDeviceExternalSemaphoreProperties registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-1@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkGetPhysicalDeviceExternalSemaphorePropertiesSafe@ and @vkGetPhysicalDeviceExternalSemaphoreProperties@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetPhysicalDeviceExternalSemaphoreProperties <- vkGetInstanceProc @VkGetPhysicalDeviceExternalSemaphoreProperties vkInstance
---
--- or less efficient:
---
--- > myGetPhysicalDeviceExternalSemaphoreProperties <- vkGetProc @VkGetPhysicalDeviceExternalSemaphoreProperties
---
-vkGetPhysicalDeviceExternalSemaphorePropertiesSafe ::
-                                                   VkPhysicalDevice -- ^ physicalDevice
-                                                                    ->
-                                                     Ptr VkPhysicalDeviceExternalSemaphoreInfo -- ^ pExternalSemaphoreInfo
-                                                                                               ->
-                                                       Ptr VkExternalSemaphoreProperties -- ^ pExternalSemaphoreProperties
-                                                                                         -> IO ()
-vkGetPhysicalDeviceExternalSemaphorePropertiesSafe
-  = vkGetPhysicalDeviceExternalSemaphoreProperties
-
-{-# INLINE vkGetPhysicalDeviceExternalSemaphorePropertiesSafe #-}
-#endif
-
--- | > void vkGetPhysicalDeviceExternalSemaphoreProperties
---   >     ( VkPhysicalDevice physicalDevice
---   >     , const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo
---   >     , VkExternalSemaphoreProperties* pExternalSemaphoreProperties
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceExternalSemaphoreProperties vkGetPhysicalDeviceExternalSemaphoreProperties registry at www.khronos.org>
-type HS_vkGetPhysicalDeviceExternalSemaphoreProperties =
-     VkPhysicalDevice -- ^ physicalDevice
-                      ->
-       Ptr VkPhysicalDeviceExternalSemaphoreInfo -- ^ pExternalSemaphoreInfo
-                                                 ->
-         Ptr VkExternalSemaphoreProperties -- ^ pExternalSemaphoreProperties
-                                           -> IO ()
-
-type PFN_vkGetPhysicalDeviceExternalSemaphoreProperties =
-     FunPtr HS_vkGetPhysicalDeviceExternalSemaphoreProperties
-
-foreign import ccall "dynamic"
-               unwrapVkGetPhysicalDeviceExternalSemaphoreProperties ::
-               PFN_vkGetPhysicalDeviceExternalSemaphoreProperties ->
-                 HS_vkGetPhysicalDeviceExternalSemaphoreProperties
-
-instance VulkanProc
-           "vkGetPhysicalDeviceExternalSemaphoreProperties"
-         where
-        type VkProcType "vkGetPhysicalDeviceExternalSemaphoreProperties" =
-             HS_vkGetPhysicalDeviceExternalSemaphoreProperties
-        vkProcSymbol = _VkGetPhysicalDeviceExternalSemaphoreProperties
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr
-          = unwrapVkGetPhysicalDeviceExternalSemaphoreProperties
-
-        {-# INLINE unwrapVkProcPtr #-}
-
-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO
-        :: VkStructureType
-
-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO =
-        VkStructureType 1000076000
-
-pattern VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES ::
-        VkStructureType
-
-pattern VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES =
-        VkStructureType 1000076001
-
-pattern VkGetDescriptorSetLayoutSupport :: CString
-
-pattern VkGetDescriptorSetLayoutSupport <-
-        (is_VkGetDescriptorSetLayoutSupport -> True)
-  where VkGetDescriptorSetLayoutSupport
-          = _VkGetDescriptorSetLayoutSupport
-
-{-# INLINE _VkGetDescriptorSetLayoutSupport #-}
-
-_VkGetDescriptorSetLayoutSupport :: CString
-_VkGetDescriptorSetLayoutSupport
-  = Ptr "vkGetDescriptorSetLayoutSupport\NUL"#
-
-{-# INLINE is_VkGetDescriptorSetLayoutSupport #-}
-
-is_VkGetDescriptorSetLayoutSupport :: CString -> Bool
-is_VkGetDescriptorSetLayoutSupport
-  = (EQ ==) . cmpCStrings _VkGetDescriptorSetLayoutSupport
-
-type VkGetDescriptorSetLayoutSupport =
-     "vkGetDescriptorSetLayoutSupport"
-
-#ifdef NATIVE_FFI_VK_VERSION_1_1
--- |
--- > void vkGetDescriptorSetLayoutSupport
--- >     ( VkDevice device
--- >     , const VkDescriptorSetLayoutCreateInfo* pCreateInfo
--- >     , VkDescriptorSetLayoutSupport* pSupport
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDescriptorSetLayoutSupport vkGetDescriptorSetLayoutSupport registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-1@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkGetDescriptorSetLayoutSupport"
-               vkGetDescriptorSetLayoutSupport ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkDescriptorSetLayoutCreateInfo -- ^ pCreateInfo
-                                                     ->
-                   Ptr VkDescriptorSetLayoutSupport -- ^ pSupport
-                                                    -> IO ()
-
-#else
--- |
--- > void vkGetDescriptorSetLayoutSupport
--- >     ( VkDevice device
--- >     , const VkDescriptorSetLayoutCreateInfo* pCreateInfo
--- >     , VkDescriptorSetLayoutSupport* pSupport
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDescriptorSetLayoutSupport vkGetDescriptorSetLayoutSupport registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-1@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkGetDescriptorSetLayoutSupportSafe@ and @vkGetDescriptorSetLayoutSupport@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetDescriptorSetLayoutSupport <- vkGetDeviceProc @VkGetDescriptorSetLayoutSupport vkDevice
---
--- or less efficient:
---
--- > myGetDescriptorSetLayoutSupport <- vkGetProc @VkGetDescriptorSetLayoutSupport
---
-vkGetDescriptorSetLayoutSupport ::
-                                VkDevice -- ^ device
-                                         ->
-                                  Ptr VkDescriptorSetLayoutCreateInfo -- ^ pCreateInfo
-                                                                      ->
-                                    Ptr VkDescriptorSetLayoutSupport -- ^ pSupport
-                                                                     -> IO ()
-vkGetDescriptorSetLayoutSupport
-  = unsafeDupablePerformIO
-      (vkGetProc @VkGetDescriptorSetLayoutSupport)
-
-{-# NOINLINE vkGetDescriptorSetLayoutSupport #-}
-#endif
-
-#ifdef NATIVE_FFI_VK_VERSION_1_1
--- |
--- > void vkGetDescriptorSetLayoutSupport
--- >     ( VkDevice device
--- >     , const VkDescriptorSetLayoutCreateInfo* pCreateInfo
--- >     , VkDescriptorSetLayoutSupport* pSupport
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDescriptorSetLayoutSupport vkGetDescriptorSetLayoutSupport registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-1@ is enabled, so this function is implemented
---           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkGetDescriptorSetLayoutSupport"
-               vkGetDescriptorSetLayoutSupportSafe ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkDescriptorSetLayoutCreateInfo -- ^ pCreateInfo
-                                                     ->
-                   Ptr VkDescriptorSetLayoutSupport -- ^ pSupport
-                                                    -> IO ()
-
-#else
--- |
--- > void vkGetDescriptorSetLayoutSupport
--- >     ( VkDevice device
--- >     , const VkDescriptorSetLayoutCreateInfo* pCreateInfo
--- >     , VkDescriptorSetLayoutSupport* pSupport
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDescriptorSetLayoutSupport vkGetDescriptorSetLayoutSupport registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-1@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkGetDescriptorSetLayoutSupportSafe@ and @vkGetDescriptorSetLayoutSupport@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetDescriptorSetLayoutSupport <- vkGetDeviceProc @VkGetDescriptorSetLayoutSupport vkDevice
---
--- or less efficient:
---
--- > myGetDescriptorSetLayoutSupport <- vkGetProc @VkGetDescriptorSetLayoutSupport
---
-vkGetDescriptorSetLayoutSupportSafe ::
-                                    VkDevice -- ^ device
-                                             ->
-                                      Ptr VkDescriptorSetLayoutCreateInfo -- ^ pCreateInfo
-                                                                          ->
-                                        Ptr VkDescriptorSetLayoutSupport -- ^ pSupport
-                                                                         -> IO ()
-vkGetDescriptorSetLayoutSupportSafe
-  = vkGetDescriptorSetLayoutSupport
-
-{-# INLINE vkGetDescriptorSetLayoutSupportSafe #-}
-#endif
-
--- | > void vkGetDescriptorSetLayoutSupport
---   >     ( VkDevice device
---   >     , const VkDescriptorSetLayoutCreateInfo* pCreateInfo
---   >     , VkDescriptorSetLayoutSupport* pSupport
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDescriptorSetLayoutSupport vkGetDescriptorSetLayoutSupport registry at www.khronos.org>
-type HS_vkGetDescriptorSetLayoutSupport =
-     VkDevice -- ^ device
-              ->
-       Ptr VkDescriptorSetLayoutCreateInfo -- ^ pCreateInfo
-                                           ->
-         Ptr VkDescriptorSetLayoutSupport -- ^ pSupport
-                                          -> IO ()
-
-type PFN_vkGetDescriptorSetLayoutSupport =
-     FunPtr HS_vkGetDescriptorSetLayoutSupport
-
-foreign import ccall "dynamic"
-               unwrapVkGetDescriptorSetLayoutSupport ::
-               PFN_vkGetDescriptorSetLayoutSupport ->
-                 HS_vkGetDescriptorSetLayoutSupport
-
-instance VulkanProc "vkGetDescriptorSetLayoutSupport" where
-        type VkProcType "vkGetDescriptorSetLayoutSupport" =
-             HS_vkGetDescriptorSetLayoutSupport
-        vkProcSymbol = _VkGetDescriptorSetLayoutSupport
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtr = unwrapVkGetDescriptorSetLayoutSupport
-
-        {-# INLINE unwrapVkProcPtr #-}
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- > VkResult vkEnumerateInstanceVersion
+-- >     ( uint32_t* pApiVersion
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumerateInstanceVersion vkEnumerateInstanceVersion registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myEnumerateInstanceVersion <- vkGetInstanceProc @VkEnumerateInstanceVersion vkInstance
+--
+-- or less efficient:
+--
+-- > myEnumerateInstanceVersion <- vkGetProc @VkEnumerateInstanceVersion
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall unsafe "vkEnumerateInstanceVersion"
+               vkEnumerateInstanceVersion :: Ptr Word32 -- ^ pApiVersion
+                                                        -> IO VkResult
+
+#else
+vkEnumerateInstanceVersion :: Ptr Word32 -- ^ pApiVersion
+                                         -> IO VkResult
+vkEnumerateInstanceVersion
+  = unsafeDupablePerformIO (vkGetProc @VkEnumerateInstanceVersion)
+
+{-# NOINLINE vkEnumerateInstanceVersion #-}
+#endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- > VkResult vkEnumerateInstanceVersion
+-- >     ( uint32_t* pApiVersion
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumerateInstanceVersion vkEnumerateInstanceVersion registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myEnumerateInstanceVersion <- vkGetInstanceProc @VkEnumerateInstanceVersion vkInstance
+--
+-- or less efficient:
+--
+-- > myEnumerateInstanceVersion <- vkGetProc @VkEnumerateInstanceVersion
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall safe "vkEnumerateInstanceVersion"
+               vkEnumerateInstanceVersionSafe :: Ptr Word32 -- ^ pApiVersion
+                                                            -> IO VkResult
+
+#else
+vkEnumerateInstanceVersionSafe :: Ptr Word32 -- ^ pApiVersion
+                                             -> IO VkResult
+vkEnumerateInstanceVersionSafe
+  = unsafeDupablePerformIO
+      (vkGetProcSafe @VkEnumerateInstanceVersion)
+
+{-# NOINLINE vkEnumerateInstanceVersionSafe #-}
+#endif
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   > VkResult vkEnumerateInstanceVersion
+--   >     ( uint32_t* pApiVersion
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumerateInstanceVersion vkEnumerateInstanceVersion registry at www.khronos.org>
+type HS_vkEnumerateInstanceVersion = Ptr Word32 -- ^ pApiVersion
+                                                -> IO VkResult
+
+type PFN_vkEnumerateInstanceVersion =
+     FunPtr HS_vkEnumerateInstanceVersion
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkEnumerateInstanceVersion ::
+               PFN_vkEnumerateInstanceVersion -> HS_vkEnumerateInstanceVersion
+
+foreign import ccall safe "dynamic"
+               unwrapVkEnumerateInstanceVersionSafe ::
+               PFN_vkEnumerateInstanceVersion -> HS_vkEnumerateInstanceVersion
+
+instance VulkanProc "vkEnumerateInstanceVersion" where
+        type VkProcType "vkEnumerateInstanceVersion" =
+             HS_vkEnumerateInstanceVersion
+        vkProcSymbol = _VkEnumerateInstanceVersion
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkEnumerateInstanceVersion
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkEnumerateInstanceVersionSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES ::
+        VkStructureType
+
+pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES =
+        VkStructureType 1000094000
+
+pattern VkBindBufferMemory2 :: CString
+
+pattern VkBindBufferMemory2 <- (is_VkBindBufferMemory2 -> True)
+  where VkBindBufferMemory2 = _VkBindBufferMemory2
+
+{-# INLINE _VkBindBufferMemory2 #-}
+
+_VkBindBufferMemory2 :: CString
+_VkBindBufferMemory2 = Ptr "vkBindBufferMemory2\NUL"#
+
+{-# INLINE is_VkBindBufferMemory2 #-}
+
+is_VkBindBufferMemory2 :: CString -> Bool
+is_VkBindBufferMemory2 = (EQ ==) . cmpCStrings _VkBindBufferMemory2
+
+type VkBindBufferMemory2 = "vkBindBufferMemory2"
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkBindBufferMemory2
+-- >     ( VkDevice device
+-- >     , uint32_t bindInfoCount
+-- >     , const VkBindBufferMemoryInfo* pBindInfos
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkBindBufferMemory2 vkBindBufferMemory2 registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myBindBufferMemory2 <- vkGetDeviceProc @VkBindBufferMemory2 vkDevice
+--
+-- or less efficient:
+--
+-- > myBindBufferMemory2 <- vkGetProc @VkBindBufferMemory2
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall unsafe "vkBindBufferMemory2"
+               vkBindBufferMemory2 ::
+               VkDevice -- ^ device
+                        -> Word32 -- ^ bindInfoCount
+                                  -> Ptr VkBindBufferMemoryInfo -- ^ pBindInfos
+                                                                -> IO VkResult
+
+#else
+vkBindBufferMemory2 ::
+                    VkDevice -- ^ device
+                             -> Word32 -- ^ bindInfoCount
+                                       -> Ptr VkBindBufferMemoryInfo -- ^ pBindInfos
+                                                                     -> IO VkResult
+vkBindBufferMemory2
+  = unsafeDupablePerformIO (vkGetProc @VkBindBufferMemory2)
+
+{-# NOINLINE vkBindBufferMemory2 #-}
+#endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkBindBufferMemory2
+-- >     ( VkDevice device
+-- >     , uint32_t bindInfoCount
+-- >     , const VkBindBufferMemoryInfo* pBindInfos
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkBindBufferMemory2 vkBindBufferMemory2 registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myBindBufferMemory2 <- vkGetDeviceProc @VkBindBufferMemory2 vkDevice
+--
+-- or less efficient:
+--
+-- > myBindBufferMemory2 <- vkGetProc @VkBindBufferMemory2
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall safe "vkBindBufferMemory2"
+               vkBindBufferMemory2Safe ::
+               VkDevice -- ^ device
+                        -> Word32 -- ^ bindInfoCount
+                                  -> Ptr VkBindBufferMemoryInfo -- ^ pBindInfos
+                                                                -> IO VkResult
+
+#else
+vkBindBufferMemory2Safe ::
+                        VkDevice -- ^ device
+                                 -> Word32 -- ^ bindInfoCount
+                                           -> Ptr VkBindBufferMemoryInfo -- ^ pBindInfos
+                                                                         -> IO VkResult
+vkBindBufferMemory2Safe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkBindBufferMemory2)
+
+{-# NOINLINE vkBindBufferMemory2Safe #-}
+#endif
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+--   > VkResult vkBindBufferMemory2
+--   >     ( VkDevice device
+--   >     , uint32_t bindInfoCount
+--   >     , const VkBindBufferMemoryInfo* pBindInfos
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkBindBufferMemory2 vkBindBufferMemory2 registry at www.khronos.org>
+type HS_vkBindBufferMemory2 =
+     VkDevice -- ^ device
+              -> Word32 -- ^ bindInfoCount
+                        -> Ptr VkBindBufferMemoryInfo -- ^ pBindInfos
+                                                      -> IO VkResult
+
+type PFN_vkBindBufferMemory2 = FunPtr HS_vkBindBufferMemory2
+
+foreign import ccall unsafe "dynamic" unwrapVkBindBufferMemory2 ::
+               PFN_vkBindBufferMemory2 -> HS_vkBindBufferMemory2
+
+foreign import ccall safe "dynamic" unwrapVkBindBufferMemory2Safe
+               :: PFN_vkBindBufferMemory2 -> HS_vkBindBufferMemory2
+
+instance VulkanProc "vkBindBufferMemory2" where
+        type VkProcType "vkBindBufferMemory2" = HS_vkBindBufferMemory2
+        vkProcSymbol = _VkBindBufferMemory2
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkBindBufferMemory2
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkBindBufferMemory2Safe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkBindImageMemory2 :: CString
+
+pattern VkBindImageMemory2 <- (is_VkBindImageMemory2 -> True)
+  where VkBindImageMemory2 = _VkBindImageMemory2
+
+{-# INLINE _VkBindImageMemory2 #-}
+
+_VkBindImageMemory2 :: CString
+_VkBindImageMemory2 = Ptr "vkBindImageMemory2\NUL"#
+
+{-# INLINE is_VkBindImageMemory2 #-}
+
+is_VkBindImageMemory2 :: CString -> Bool
+is_VkBindImageMemory2 = (EQ ==) . cmpCStrings _VkBindImageMemory2
+
+type VkBindImageMemory2 = "vkBindImageMemory2"
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkBindImageMemory2
+-- >     ( VkDevice device
+-- >     , uint32_t bindInfoCount
+-- >     , const VkBindImageMemoryInfo* pBindInfos
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkBindImageMemory2 vkBindImageMemory2 registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myBindImageMemory2 <- vkGetDeviceProc @VkBindImageMemory2 vkDevice
+--
+-- or less efficient:
+--
+-- > myBindImageMemory2 <- vkGetProc @VkBindImageMemory2
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall unsafe "vkBindImageMemory2" vkBindImageMemory2
+               :: VkDevice -- ^ device
+                           -> Word32 -- ^ bindInfoCount
+                                     -> Ptr VkBindImageMemoryInfo -- ^ pBindInfos
+                                                                  -> IO VkResult
+
+#else
+vkBindImageMemory2 ::
+                   VkDevice -- ^ device
+                            -> Word32 -- ^ bindInfoCount
+                                      -> Ptr VkBindImageMemoryInfo -- ^ pBindInfos
+                                                                   -> IO VkResult
+vkBindImageMemory2
+  = unsafeDupablePerformIO (vkGetProc @VkBindImageMemory2)
+
+{-# NOINLINE vkBindImageMemory2 #-}
+#endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkBindImageMemory2
+-- >     ( VkDevice device
+-- >     , uint32_t bindInfoCount
+-- >     , const VkBindImageMemoryInfo* pBindInfos
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkBindImageMemory2 vkBindImageMemory2 registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myBindImageMemory2 <- vkGetDeviceProc @VkBindImageMemory2 vkDevice
+--
+-- or less efficient:
+--
+-- > myBindImageMemory2 <- vkGetProc @VkBindImageMemory2
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall safe "vkBindImageMemory2"
+               vkBindImageMemory2Safe ::
+               VkDevice -- ^ device
+                        -> Word32 -- ^ bindInfoCount
+                                  -> Ptr VkBindImageMemoryInfo -- ^ pBindInfos
+                                                               -> IO VkResult
+
+#else
+vkBindImageMemory2Safe ::
+                       VkDevice -- ^ device
+                                -> Word32 -- ^ bindInfoCount
+                                          -> Ptr VkBindImageMemoryInfo -- ^ pBindInfos
+                                                                       -> IO VkResult
+vkBindImageMemory2Safe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkBindImageMemory2)
+
+{-# NOINLINE vkBindImageMemory2Safe #-}
+#endif
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+--   > VkResult vkBindImageMemory2
+--   >     ( VkDevice device
+--   >     , uint32_t bindInfoCount
+--   >     , const VkBindImageMemoryInfo* pBindInfos
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkBindImageMemory2 vkBindImageMemory2 registry at www.khronos.org>
+type HS_vkBindImageMemory2 =
+     VkDevice -- ^ device
+              -> Word32 -- ^ bindInfoCount
+                        -> Ptr VkBindImageMemoryInfo -- ^ pBindInfos
+                                                     -> IO VkResult
+
+type PFN_vkBindImageMemory2 = FunPtr HS_vkBindImageMemory2
+
+foreign import ccall unsafe "dynamic" unwrapVkBindImageMemory2 ::
+               PFN_vkBindImageMemory2 -> HS_vkBindImageMemory2
+
+foreign import ccall safe "dynamic" unwrapVkBindImageMemory2Safe ::
+               PFN_vkBindImageMemory2 -> HS_vkBindImageMemory2
+
+instance VulkanProc "vkBindImageMemory2" where
+        type VkProcType "vkBindImageMemory2" = HS_vkBindImageMemory2
+        vkProcSymbol = _VkBindImageMemory2
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkBindImageMemory2
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkBindImageMemory2Safe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO ::
+        VkStructureType
+
+pattern VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO =
+        VkStructureType 1000157000
+
+pattern VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO :: VkStructureType
+
+pattern VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO =
+        VkStructureType 1000157001
+
+-- | bitpos = @10@
+pattern VK_IMAGE_CREATE_ALIAS_BIT :: VkImageCreateFlagBits
+
+pattern VK_IMAGE_CREATE_ALIAS_BIT = VkImageCreateFlagBits 1024
+
+pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES ::
+        VkStructureType
+
+pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES =
+        VkStructureType 1000083000
+
+pattern VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS ::
+        VkStructureType
+
+pattern VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS =
+        VkStructureType 1000127000
+
+pattern VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO ::
+        VkStructureType
+
+pattern VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO =
+        VkStructureType 1000127001
+
+pattern VkGetDeviceGroupPeerMemoryFeatures :: CString
+
+pattern VkGetDeviceGroupPeerMemoryFeatures <-
+        (is_VkGetDeviceGroupPeerMemoryFeatures -> True)
+  where VkGetDeviceGroupPeerMemoryFeatures
+          = _VkGetDeviceGroupPeerMemoryFeatures
+
+{-# INLINE _VkGetDeviceGroupPeerMemoryFeatures #-}
+
+_VkGetDeviceGroupPeerMemoryFeatures :: CString
+_VkGetDeviceGroupPeerMemoryFeatures
+  = Ptr "vkGetDeviceGroupPeerMemoryFeatures\NUL"#
+
+{-# INLINE is_VkGetDeviceGroupPeerMemoryFeatures #-}
+
+is_VkGetDeviceGroupPeerMemoryFeatures :: CString -> Bool
+is_VkGetDeviceGroupPeerMemoryFeatures
+  = (EQ ==) . cmpCStrings _VkGetDeviceGroupPeerMemoryFeatures
+
+type VkGetDeviceGroupPeerMemoryFeatures =
+     "vkGetDeviceGroupPeerMemoryFeatures"
+
+-- |
+-- > void vkGetDeviceGroupPeerMemoryFeatures
+-- >     ( VkDevice device
+-- >     , uint32_t heapIndex
+-- >     , uint32_t localDeviceIndex
+-- >     , uint32_t remoteDeviceIndex
+-- >     , VkPeerMemoryFeatureFlags* pPeerMemoryFeatures
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDeviceGroupPeerMemoryFeatures vkGetDeviceGroupPeerMemoryFeatures registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetDeviceGroupPeerMemoryFeatures <- vkGetDeviceProc @VkGetDeviceGroupPeerMemoryFeatures vkDevice
+--
+-- or less efficient:
+--
+-- > myGetDeviceGroupPeerMemoryFeatures <- vkGetProc @VkGetDeviceGroupPeerMemoryFeatures
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall unsafe "vkGetDeviceGroupPeerMemoryFeatures"
+               vkGetDeviceGroupPeerMemoryFeatures ::
+               VkDevice -- ^ device
+                        ->
+                 Word32 -- ^ heapIndex
+                        -> Word32 -- ^ localDeviceIndex
+                                  -> Word32 -- ^ remoteDeviceIndex
+                                            -> Ptr VkPeerMemoryFeatureFlags -- ^ pPeerMemoryFeatures
+                                                                            -> IO ()
+
+#else
+vkGetDeviceGroupPeerMemoryFeatures ::
+                                   VkDevice -- ^ device
+                                            ->
+                                     Word32 -- ^ heapIndex
+                                            ->
+                                       Word32 -- ^ localDeviceIndex
+                                              -> Word32 -- ^ remoteDeviceIndex
+                                                        -> Ptr VkPeerMemoryFeatureFlags -- ^ pPeerMemoryFeatures
+                                                                                        -> IO ()
+vkGetDeviceGroupPeerMemoryFeatures
+  = unsafeDupablePerformIO
+      (vkGetProc @VkGetDeviceGroupPeerMemoryFeatures)
+
+{-# NOINLINE vkGetDeviceGroupPeerMemoryFeatures #-}
+#endif
+
+-- |
+-- > void vkGetDeviceGroupPeerMemoryFeatures
+-- >     ( VkDevice device
+-- >     , uint32_t heapIndex
+-- >     , uint32_t localDeviceIndex
+-- >     , uint32_t remoteDeviceIndex
+-- >     , VkPeerMemoryFeatureFlags* pPeerMemoryFeatures
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDeviceGroupPeerMemoryFeatures vkGetDeviceGroupPeerMemoryFeatures registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetDeviceGroupPeerMemoryFeatures <- vkGetDeviceProc @VkGetDeviceGroupPeerMemoryFeatures vkDevice
+--
+-- or less efficient:
+--
+-- > myGetDeviceGroupPeerMemoryFeatures <- vkGetProc @VkGetDeviceGroupPeerMemoryFeatures
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall safe "vkGetDeviceGroupPeerMemoryFeatures"
+               vkGetDeviceGroupPeerMemoryFeaturesSafe ::
+               VkDevice -- ^ device
+                        ->
+                 Word32 -- ^ heapIndex
+                        -> Word32 -- ^ localDeviceIndex
+                                  -> Word32 -- ^ remoteDeviceIndex
+                                            -> Ptr VkPeerMemoryFeatureFlags -- ^ pPeerMemoryFeatures
+                                                                            -> IO ()
+
+#else
+vkGetDeviceGroupPeerMemoryFeaturesSafe ::
+                                       VkDevice -- ^ device
+                                                ->
+                                         Word32 -- ^ heapIndex
+                                                ->
+                                           Word32 -- ^ localDeviceIndex
+                                                  -> Word32 -- ^ remoteDeviceIndex
+                                                            -> Ptr VkPeerMemoryFeatureFlags -- ^ pPeerMemoryFeatures
+                                                                                            -> IO ()
+vkGetDeviceGroupPeerMemoryFeaturesSafe
+  = unsafeDupablePerformIO
+      (vkGetProcSafe @VkGetDeviceGroupPeerMemoryFeatures)
+
+{-# NOINLINE vkGetDeviceGroupPeerMemoryFeaturesSafe #-}
+#endif
+
+-- | > void vkGetDeviceGroupPeerMemoryFeatures
+--   >     ( VkDevice device
+--   >     , uint32_t heapIndex
+--   >     , uint32_t localDeviceIndex
+--   >     , uint32_t remoteDeviceIndex
+--   >     , VkPeerMemoryFeatureFlags* pPeerMemoryFeatures
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDeviceGroupPeerMemoryFeatures vkGetDeviceGroupPeerMemoryFeatures registry at www.khronos.org>
+type HS_vkGetDeviceGroupPeerMemoryFeatures =
+     VkDevice -- ^ device
+              ->
+       Word32 -- ^ heapIndex
+              -> Word32 -- ^ localDeviceIndex
+                        -> Word32 -- ^ remoteDeviceIndex
+                                  -> Ptr VkPeerMemoryFeatureFlags -- ^ pPeerMemoryFeatures
+                                                                  -> IO ()
+
+type PFN_vkGetDeviceGroupPeerMemoryFeatures =
+     FunPtr HS_vkGetDeviceGroupPeerMemoryFeatures
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkGetDeviceGroupPeerMemoryFeatures ::
+               PFN_vkGetDeviceGroupPeerMemoryFeatures ->
+                 HS_vkGetDeviceGroupPeerMemoryFeatures
+
+foreign import ccall safe "dynamic"
+               unwrapVkGetDeviceGroupPeerMemoryFeaturesSafe ::
+               PFN_vkGetDeviceGroupPeerMemoryFeatures ->
+                 HS_vkGetDeviceGroupPeerMemoryFeatures
+
+instance VulkanProc "vkGetDeviceGroupPeerMemoryFeatures" where
+        type VkProcType "vkGetDeviceGroupPeerMemoryFeatures" =
+             HS_vkGetDeviceGroupPeerMemoryFeatures
+        vkProcSymbol = _VkGetDeviceGroupPeerMemoryFeatures
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkGetDeviceGroupPeerMemoryFeatures
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkGetDeviceGroupPeerMemoryFeaturesSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCmdSetDeviceMask :: CString
+
+pattern VkCmdSetDeviceMask <- (is_VkCmdSetDeviceMask -> True)
+  where VkCmdSetDeviceMask = _VkCmdSetDeviceMask
+
+{-# INLINE _VkCmdSetDeviceMask #-}
+
+_VkCmdSetDeviceMask :: CString
+_VkCmdSetDeviceMask = Ptr "vkCmdSetDeviceMask\NUL"#
+
+{-# INLINE is_VkCmdSetDeviceMask #-}
+
+is_VkCmdSetDeviceMask :: CString -> Bool
+is_VkCmdSetDeviceMask = (EQ ==) . cmpCStrings _VkCmdSetDeviceMask
+
+type VkCmdSetDeviceMask = "vkCmdSetDeviceMask"
+
+-- |
+-- Queues: 'graphics', 'compute', 'transfer'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdSetDeviceMask
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , uint32_t deviceMask
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetDeviceMask vkCmdSetDeviceMask registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdSetDeviceMask <- vkGetInstanceProc @VkCmdSetDeviceMask vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdSetDeviceMask <- vkGetProc @VkCmdSetDeviceMask
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall unsafe "vkCmdSetDeviceMask" vkCmdSetDeviceMask
+               :: VkCommandBuffer -- ^ commandBuffer
+                                  -> Word32 -- ^ deviceMask
+                                            -> IO ()
+
+#else
+vkCmdSetDeviceMask :: VkCommandBuffer -- ^ commandBuffer
+                                      -> Word32 -- ^ deviceMask
+                                                -> IO ()
+vkCmdSetDeviceMask
+  = unsafeDupablePerformIO (vkGetProc @VkCmdSetDeviceMask)
+
+{-# NOINLINE vkCmdSetDeviceMask #-}
+#endif
+
+-- |
+-- Queues: 'graphics', 'compute', 'transfer'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdSetDeviceMask
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , uint32_t deviceMask
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetDeviceMask vkCmdSetDeviceMask registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdSetDeviceMask <- vkGetInstanceProc @VkCmdSetDeviceMask vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdSetDeviceMask <- vkGetProc @VkCmdSetDeviceMask
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall safe "vkCmdSetDeviceMask"
+               vkCmdSetDeviceMaskSafe :: VkCommandBuffer -- ^ commandBuffer
+                                                         -> Word32 -- ^ deviceMask
+                                                                   -> IO ()
+
+#else
+vkCmdSetDeviceMaskSafe :: VkCommandBuffer -- ^ commandBuffer
+                                          -> Word32 -- ^ deviceMask
+                                                    -> IO ()
+vkCmdSetDeviceMaskSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdSetDeviceMask)
+
+{-# NOINLINE vkCmdSetDeviceMaskSafe #-}
+#endif
+
+-- | Queues: 'graphics', 'compute', 'transfer'.
+--
+--   Renderpass: @both@
+--
+--   > void vkCmdSetDeviceMask
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , uint32_t deviceMask
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetDeviceMask vkCmdSetDeviceMask registry at www.khronos.org>
+type HS_vkCmdSetDeviceMask = VkCommandBuffer -- ^ commandBuffer
+                                             -> Word32 -- ^ deviceMask
+                                                       -> IO ()
+
+type PFN_vkCmdSetDeviceMask = FunPtr HS_vkCmdSetDeviceMask
+
+foreign import ccall unsafe "dynamic" unwrapVkCmdSetDeviceMask ::
+               PFN_vkCmdSetDeviceMask -> HS_vkCmdSetDeviceMask
+
+foreign import ccall safe "dynamic" unwrapVkCmdSetDeviceMaskSafe ::
+               PFN_vkCmdSetDeviceMask -> HS_vkCmdSetDeviceMask
+
+instance VulkanProc "vkCmdSetDeviceMask" where
+        type VkProcType "vkCmdSetDeviceMask" = HS_vkCmdSetDeviceMask
+        vkProcSymbol = _VkCmdSetDeviceMask
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkCmdSetDeviceMask
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkCmdSetDeviceMaskSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCmdDispatchBase :: CString
+
+pattern VkCmdDispatchBase <- (is_VkCmdDispatchBase -> True)
+  where VkCmdDispatchBase = _VkCmdDispatchBase
+
+{-# INLINE _VkCmdDispatchBase #-}
+
+_VkCmdDispatchBase :: CString
+_VkCmdDispatchBase = Ptr "vkCmdDispatchBase\NUL"#
+
+{-# INLINE is_VkCmdDispatchBase #-}
+
+is_VkCmdDispatchBase :: CString -> Bool
+is_VkCmdDispatchBase = (EQ ==) . cmpCStrings _VkCmdDispatchBase
+
+type VkCmdDispatchBase = "vkCmdDispatchBase"
+
+-- |
+-- Queues: 'compute'.
+--
+-- Renderpass: @outside@
+--
+-- > void vkCmdDispatchBase
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , uint32_t baseGroupX
+-- >     , uint32_t baseGroupY
+-- >     , uint32_t baseGroupZ
+-- >     , uint32_t groupCountX
+-- >     , uint32_t groupCountY
+-- >     , uint32_t groupCountZ
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDispatchBase vkCmdDispatchBase registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdDispatchBase <- vkGetInstanceProc @VkCmdDispatchBase vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdDispatchBase <- vkGetProc @VkCmdDispatchBase
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall unsafe "vkCmdDispatchBase" vkCmdDispatchBase
+               ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 Word32 -- ^ baseGroupX
+                        -> Word32 -- ^ baseGroupY
+                                  -> Word32 -- ^ baseGroupZ
+                                            -> Word32 -- ^ groupCountX
+                                                      -> Word32 -- ^ groupCountY
+                                                                -> Word32 -- ^ groupCountZ
+                                                                          -> IO ()
+
+#else
+vkCmdDispatchBase ::
+                  VkCommandBuffer -- ^ commandBuffer
+                                  ->
+                    Word32 -- ^ baseGroupX
+                           -> Word32 -- ^ baseGroupY
+                                     -> Word32 -- ^ baseGroupZ
+                                               -> Word32 -- ^ groupCountX
+                                                         -> Word32 -- ^ groupCountY
+                                                                   -> Word32 -- ^ groupCountZ
+                                                                             -> IO ()
+vkCmdDispatchBase
+  = unsafeDupablePerformIO (vkGetProc @VkCmdDispatchBase)
+
+{-# NOINLINE vkCmdDispatchBase #-}
+#endif
+
+-- |
+-- Queues: 'compute'.
+--
+-- Renderpass: @outside@
+--
+-- > void vkCmdDispatchBase
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , uint32_t baseGroupX
+-- >     , uint32_t baseGroupY
+-- >     , uint32_t baseGroupZ
+-- >     , uint32_t groupCountX
+-- >     , uint32_t groupCountY
+-- >     , uint32_t groupCountZ
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDispatchBase vkCmdDispatchBase registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdDispatchBase <- vkGetInstanceProc @VkCmdDispatchBase vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdDispatchBase <- vkGetProc @VkCmdDispatchBase
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall safe "vkCmdDispatchBase" vkCmdDispatchBaseSafe
+               ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 Word32 -- ^ baseGroupX
+                        -> Word32 -- ^ baseGroupY
+                                  -> Word32 -- ^ baseGroupZ
+                                            -> Word32 -- ^ groupCountX
+                                                      -> Word32 -- ^ groupCountY
+                                                                -> Word32 -- ^ groupCountZ
+                                                                          -> IO ()
+
+#else
+vkCmdDispatchBaseSafe ::
+                      VkCommandBuffer -- ^ commandBuffer
+                                      ->
+                        Word32 -- ^ baseGroupX
+                               -> Word32 -- ^ baseGroupY
+                                         -> Word32 -- ^ baseGroupZ
+                                                   -> Word32 -- ^ groupCountX
+                                                             -> Word32 -- ^ groupCountY
+                                                                       -> Word32 -- ^ groupCountZ
+                                                                                 -> IO ()
+vkCmdDispatchBaseSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdDispatchBase)
+
+{-# NOINLINE vkCmdDispatchBaseSafe #-}
+#endif
+
+-- | Queues: 'compute'.
+--
+--   Renderpass: @outside@
+--
+--   > void vkCmdDispatchBase
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , uint32_t baseGroupX
+--   >     , uint32_t baseGroupY
+--   >     , uint32_t baseGroupZ
+--   >     , uint32_t groupCountX
+--   >     , uint32_t groupCountY
+--   >     , uint32_t groupCountZ
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDispatchBase vkCmdDispatchBase registry at www.khronos.org>
+type HS_vkCmdDispatchBase =
+     VkCommandBuffer -- ^ commandBuffer
+                     ->
+       Word32 -- ^ baseGroupX
+              -> Word32 -- ^ baseGroupY
+                        -> Word32 -- ^ baseGroupZ
+                                  -> Word32 -- ^ groupCountX
+                                            -> Word32 -- ^ groupCountY
+                                                      -> Word32 -- ^ groupCountZ
+                                                                -> IO ()
+
+type PFN_vkCmdDispatchBase = FunPtr HS_vkCmdDispatchBase
+
+foreign import ccall unsafe "dynamic" unwrapVkCmdDispatchBase ::
+               PFN_vkCmdDispatchBase -> HS_vkCmdDispatchBase
+
+foreign import ccall safe "dynamic" unwrapVkCmdDispatchBaseSafe ::
+               PFN_vkCmdDispatchBase -> HS_vkCmdDispatchBase
+
+instance VulkanProc "vkCmdDispatchBase" where
+        type VkProcType "vkCmdDispatchBase" = HS_vkCmdDispatchBase
+        vkProcSymbol = _VkCmdDispatchBase
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkCmdDispatchBase
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkCmdDispatchBaseSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO ::
+        VkStructureType
+
+pattern VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO =
+        VkStructureType 1000060000
+
+pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO ::
+        VkStructureType
+
+pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO =
+        VkStructureType 1000060003
+
+pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO ::
+        VkStructureType
+
+pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO =
+        VkStructureType 1000060004
+
+pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO ::
+        VkStructureType
+
+pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO =
+        VkStructureType 1000060005
+
+pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO ::
+        VkStructureType
+
+pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO =
+        VkStructureType 1000060006
+
+-- | bitpos = @3@
+pattern VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT ::
+        VkPipelineCreateFlagBits
+
+pattern VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT =
+        VkPipelineCreateFlagBits 8
+
+-- | bitpos = @4@
+pattern VK_PIPELINE_CREATE_DISPATCH_BASE ::
+        VkPipelineCreateFlagBits
+
+pattern VK_PIPELINE_CREATE_DISPATCH_BASE =
+        VkPipelineCreateFlagBits 16
+
+-- | Dependency is across devices
+--
+--   bitpos = @2@
+pattern VK_DEPENDENCY_DEVICE_GROUP_BIT :: VkDependencyFlagBits
+
+pattern VK_DEPENDENCY_DEVICE_GROUP_BIT = VkDependencyFlagBits 4
+
+pattern VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO ::
+        VkStructureType
+
+pattern VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO =
+        VkStructureType 1000060013
+
+pattern VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO ::
+        VkStructureType
+
+pattern VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO =
+        VkStructureType 1000060014
+
+-- | Allows using VkBindImageMemoryDeviceGroupInfo::pSplitInstanceBindRegions when binding memory to the image
+--
+--   bitpos = @6@
+pattern VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT ::
+        VkImageCreateFlagBits
+
+pattern VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT =
+        VkImageCreateFlagBits 64
+
+pattern VkEnumeratePhysicalDeviceGroups :: CString
+
+pattern VkEnumeratePhysicalDeviceGroups <-
+        (is_VkEnumeratePhysicalDeviceGroups -> True)
+  where VkEnumeratePhysicalDeviceGroups
+          = _VkEnumeratePhysicalDeviceGroups
+
+{-# INLINE _VkEnumeratePhysicalDeviceGroups #-}
+
+_VkEnumeratePhysicalDeviceGroups :: CString
+_VkEnumeratePhysicalDeviceGroups
+  = Ptr "vkEnumeratePhysicalDeviceGroups\NUL"#
+
+{-# INLINE is_VkEnumeratePhysicalDeviceGroups #-}
+
+is_VkEnumeratePhysicalDeviceGroups :: CString -> Bool
+is_VkEnumeratePhysicalDeviceGroups
+  = (EQ ==) . cmpCStrings _VkEnumeratePhysicalDeviceGroups
+
+type VkEnumeratePhysicalDeviceGroups =
+     "vkEnumeratePhysicalDeviceGroups"
+
+-- |
+-- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INITIALIZATION_FAILED'.
+--
+-- > VkResult vkEnumeratePhysicalDeviceGroups
+-- >     ( VkInstance instance
+-- >     , uint32_t* pPhysicalDeviceGroupCount
+-- >     , VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumeratePhysicalDeviceGroups vkEnumeratePhysicalDeviceGroups registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myEnumeratePhysicalDeviceGroups <- vkGetInstanceProc @VkEnumeratePhysicalDeviceGroups vkInstance
+--
+-- or less efficient:
+--
+-- > myEnumeratePhysicalDeviceGroups <- vkGetProc @VkEnumeratePhysicalDeviceGroups
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall unsafe "vkEnumeratePhysicalDeviceGroups"
+               vkEnumeratePhysicalDeviceGroups ::
+               VkInstance -- ^ instance
+                          ->
+                 Ptr Word32 -- ^ pPhysicalDeviceGroupCount
+                            -> Ptr VkPhysicalDeviceGroupProperties -- ^ pPhysicalDeviceGroupProperties
+                                                                   -> IO VkResult
+
+#else
+vkEnumeratePhysicalDeviceGroups ::
+                                VkInstance -- ^ instance
+                                           ->
+                                  Ptr Word32 -- ^ pPhysicalDeviceGroupCount
+                                             -> Ptr VkPhysicalDeviceGroupProperties -- ^ pPhysicalDeviceGroupProperties
+                                                                                    -> IO VkResult
+vkEnumeratePhysicalDeviceGroups
+  = unsafeDupablePerformIO
+      (vkGetProc @VkEnumeratePhysicalDeviceGroups)
+
+{-# NOINLINE vkEnumeratePhysicalDeviceGroups #-}
+#endif
+
+-- |
+-- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INITIALIZATION_FAILED'.
+--
+-- > VkResult vkEnumeratePhysicalDeviceGroups
+-- >     ( VkInstance instance
+-- >     , uint32_t* pPhysicalDeviceGroupCount
+-- >     , VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumeratePhysicalDeviceGroups vkEnumeratePhysicalDeviceGroups registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myEnumeratePhysicalDeviceGroups <- vkGetInstanceProc @VkEnumeratePhysicalDeviceGroups vkInstance
+--
+-- or less efficient:
+--
+-- > myEnumeratePhysicalDeviceGroups <- vkGetProc @VkEnumeratePhysicalDeviceGroups
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall safe "vkEnumeratePhysicalDeviceGroups"
+               vkEnumeratePhysicalDeviceGroupsSafe ::
+               VkInstance -- ^ instance
+                          ->
+                 Ptr Word32 -- ^ pPhysicalDeviceGroupCount
+                            -> Ptr VkPhysicalDeviceGroupProperties -- ^ pPhysicalDeviceGroupProperties
+                                                                   -> IO VkResult
+
+#else
+vkEnumeratePhysicalDeviceGroupsSafe ::
+                                    VkInstance -- ^ instance
+                                               ->
+                                      Ptr Word32 -- ^ pPhysicalDeviceGroupCount
+                                                 ->
+                                        Ptr VkPhysicalDeviceGroupProperties -- ^ pPhysicalDeviceGroupProperties
+                                                                            -> IO VkResult
+vkEnumeratePhysicalDeviceGroupsSafe
+  = unsafeDupablePerformIO
+      (vkGetProcSafe @VkEnumeratePhysicalDeviceGroups)
+
+{-# NOINLINE vkEnumeratePhysicalDeviceGroupsSafe #-}
+#endif
+
+-- | Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INITIALIZATION_FAILED'.
+--
+--   > VkResult vkEnumeratePhysicalDeviceGroups
+--   >     ( VkInstance instance
+--   >     , uint32_t* pPhysicalDeviceGroupCount
+--   >     , VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumeratePhysicalDeviceGroups vkEnumeratePhysicalDeviceGroups registry at www.khronos.org>
+type HS_vkEnumeratePhysicalDeviceGroups =
+     VkInstance -- ^ instance
+                ->
+       Ptr Word32 -- ^ pPhysicalDeviceGroupCount
+                  -> Ptr VkPhysicalDeviceGroupProperties -- ^ pPhysicalDeviceGroupProperties
+                                                         -> IO VkResult
+
+type PFN_vkEnumeratePhysicalDeviceGroups =
+     FunPtr HS_vkEnumeratePhysicalDeviceGroups
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkEnumeratePhysicalDeviceGroups ::
+               PFN_vkEnumeratePhysicalDeviceGroups ->
+                 HS_vkEnumeratePhysicalDeviceGroups
+
+foreign import ccall safe "dynamic"
+               unwrapVkEnumeratePhysicalDeviceGroupsSafe ::
+               PFN_vkEnumeratePhysicalDeviceGroups ->
+                 HS_vkEnumeratePhysicalDeviceGroups
+
+instance VulkanProc "vkEnumeratePhysicalDeviceGroups" where
+        type VkProcType "vkEnumeratePhysicalDeviceGroups" =
+             HS_vkEnumeratePhysicalDeviceGroups
+        vkProcSymbol = _VkEnumeratePhysicalDeviceGroups
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkEnumeratePhysicalDeviceGroups
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkEnumeratePhysicalDeviceGroupsSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES ::
+        VkStructureType
+
+pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES =
+        VkStructureType 1000070000
+
+pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO ::
+        VkStructureType
+
+pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO =
+        VkStructureType 1000070001
+
+-- | If set, heap allocations allocate multiple instances by default
+--
+--   bitpos = @1@
+pattern VK_MEMORY_HEAP_MULTI_INSTANCE_BIT :: VkMemoryHeapFlagBits
+
+pattern VK_MEMORY_HEAP_MULTI_INSTANCE_BIT = VkMemoryHeapFlagBits 2
+
+pattern VkGetImageMemoryRequirements2 :: CString
+
+pattern VkGetImageMemoryRequirements2 <-
+        (is_VkGetImageMemoryRequirements2 -> True)
+  where VkGetImageMemoryRequirements2
+          = _VkGetImageMemoryRequirements2
+
+{-# INLINE _VkGetImageMemoryRequirements2 #-}
+
+_VkGetImageMemoryRequirements2 :: CString
+_VkGetImageMemoryRequirements2
+  = Ptr "vkGetImageMemoryRequirements2\NUL"#
+
+{-# INLINE is_VkGetImageMemoryRequirements2 #-}
+
+is_VkGetImageMemoryRequirements2 :: CString -> Bool
+is_VkGetImageMemoryRequirements2
+  = (EQ ==) . cmpCStrings _VkGetImageMemoryRequirements2
+
+type VkGetImageMemoryRequirements2 =
+     "vkGetImageMemoryRequirements2"
+
+-- |
+-- > void vkGetImageMemoryRequirements2
+-- >     ( VkDevice device
+-- >     , const VkImageMemoryRequirementsInfo2* pInfo
+-- >     , VkMemoryRequirements2* pMemoryRequirements
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetImageMemoryRequirements2 vkGetImageMemoryRequirements2 registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetImageMemoryRequirements2 <- vkGetDeviceProc @VkGetImageMemoryRequirements2 vkDevice
+--
+-- or less efficient:
+--
+-- > myGetImageMemoryRequirements2 <- vkGetProc @VkGetImageMemoryRequirements2
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall unsafe "vkGetImageMemoryRequirements2"
+               vkGetImageMemoryRequirements2 ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkImageMemoryRequirementsInfo2 -- ^ pInfo
+                                                    ->
+                   Ptr VkMemoryRequirements2 -- ^ pMemoryRequirements
+                                             -> IO ()
+
+#else
+vkGetImageMemoryRequirements2 ::
+                              VkDevice -- ^ device
+                                       ->
+                                Ptr VkImageMemoryRequirementsInfo2 -- ^ pInfo
+                                                                   ->
+                                  Ptr VkMemoryRequirements2 -- ^ pMemoryRequirements
+                                                            -> IO ()
+vkGetImageMemoryRequirements2
+  = unsafeDupablePerformIO (vkGetProc @VkGetImageMemoryRequirements2)
+
+{-# NOINLINE vkGetImageMemoryRequirements2 #-}
+#endif
+
+-- |
+-- > void vkGetImageMemoryRequirements2
+-- >     ( VkDevice device
+-- >     , const VkImageMemoryRequirementsInfo2* pInfo
+-- >     , VkMemoryRequirements2* pMemoryRequirements
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetImageMemoryRequirements2 vkGetImageMemoryRequirements2 registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetImageMemoryRequirements2 <- vkGetDeviceProc @VkGetImageMemoryRequirements2 vkDevice
+--
+-- or less efficient:
+--
+-- > myGetImageMemoryRequirements2 <- vkGetProc @VkGetImageMemoryRequirements2
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall safe "vkGetImageMemoryRequirements2"
+               vkGetImageMemoryRequirements2Safe ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkImageMemoryRequirementsInfo2 -- ^ pInfo
+                                                    ->
+                   Ptr VkMemoryRequirements2 -- ^ pMemoryRequirements
+                                             -> IO ()
+
+#else
+vkGetImageMemoryRequirements2Safe ::
+                                  VkDevice -- ^ device
+                                           ->
+                                    Ptr VkImageMemoryRequirementsInfo2 -- ^ pInfo
+                                                                       ->
+                                      Ptr VkMemoryRequirements2 -- ^ pMemoryRequirements
+                                                                -> IO ()
+vkGetImageMemoryRequirements2Safe
+  = unsafeDupablePerformIO
+      (vkGetProcSafe @VkGetImageMemoryRequirements2)
+
+{-# NOINLINE vkGetImageMemoryRequirements2Safe #-}
+#endif
+
+-- | > void vkGetImageMemoryRequirements2
+--   >     ( VkDevice device
+--   >     , const VkImageMemoryRequirementsInfo2* pInfo
+--   >     , VkMemoryRequirements2* pMemoryRequirements
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetImageMemoryRequirements2 vkGetImageMemoryRequirements2 registry at www.khronos.org>
+type HS_vkGetImageMemoryRequirements2 =
+     VkDevice -- ^ device
+              ->
+       Ptr VkImageMemoryRequirementsInfo2 -- ^ pInfo
+                                          ->
+         Ptr VkMemoryRequirements2 -- ^ pMemoryRequirements
+                                   -> IO ()
+
+type PFN_vkGetImageMemoryRequirements2 =
+     FunPtr HS_vkGetImageMemoryRequirements2
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkGetImageMemoryRequirements2 ::
+               PFN_vkGetImageMemoryRequirements2 ->
+                 HS_vkGetImageMemoryRequirements2
+
+foreign import ccall safe "dynamic"
+               unwrapVkGetImageMemoryRequirements2Safe ::
+               PFN_vkGetImageMemoryRequirements2 ->
+                 HS_vkGetImageMemoryRequirements2
+
+instance VulkanProc "vkGetImageMemoryRequirements2" where
+        type VkProcType "vkGetImageMemoryRequirements2" =
+             HS_vkGetImageMemoryRequirements2
+        vkProcSymbol = _VkGetImageMemoryRequirements2
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkGetImageMemoryRequirements2
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkGetImageMemoryRequirements2Safe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkGetBufferMemoryRequirements2 :: CString
+
+pattern VkGetBufferMemoryRequirements2 <-
+        (is_VkGetBufferMemoryRequirements2 -> True)
+  where VkGetBufferMemoryRequirements2
+          = _VkGetBufferMemoryRequirements2
+
+{-# INLINE _VkGetBufferMemoryRequirements2 #-}
+
+_VkGetBufferMemoryRequirements2 :: CString
+_VkGetBufferMemoryRequirements2
+  = Ptr "vkGetBufferMemoryRequirements2\NUL"#
+
+{-# INLINE is_VkGetBufferMemoryRequirements2 #-}
+
+is_VkGetBufferMemoryRequirements2 :: CString -> Bool
+is_VkGetBufferMemoryRequirements2
+  = (EQ ==) . cmpCStrings _VkGetBufferMemoryRequirements2
+
+type VkGetBufferMemoryRequirements2 =
+     "vkGetBufferMemoryRequirements2"
+
+-- |
+-- > void vkGetBufferMemoryRequirements2
+-- >     ( VkDevice device
+-- >     , const VkBufferMemoryRequirementsInfo2* pInfo
+-- >     , VkMemoryRequirements2* pMemoryRequirements
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetBufferMemoryRequirements2 vkGetBufferMemoryRequirements2 registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetBufferMemoryRequirements2 <- vkGetDeviceProc @VkGetBufferMemoryRequirements2 vkDevice
+--
+-- or less efficient:
+--
+-- > myGetBufferMemoryRequirements2 <- vkGetProc @VkGetBufferMemoryRequirements2
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall unsafe "vkGetBufferMemoryRequirements2"
+               vkGetBufferMemoryRequirements2 ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkBufferMemoryRequirementsInfo2 -- ^ pInfo
+                                                     ->
+                   Ptr VkMemoryRequirements2 -- ^ pMemoryRequirements
+                                             -> IO ()
+
+#else
+vkGetBufferMemoryRequirements2 ::
+                               VkDevice -- ^ device
+                                        ->
+                                 Ptr VkBufferMemoryRequirementsInfo2 -- ^ pInfo
+                                                                     ->
+                                   Ptr VkMemoryRequirements2 -- ^ pMemoryRequirements
+                                                             -> IO ()
+vkGetBufferMemoryRequirements2
+  = unsafeDupablePerformIO
+      (vkGetProc @VkGetBufferMemoryRequirements2)
+
+{-# NOINLINE vkGetBufferMemoryRequirements2 #-}
+#endif
+
+-- |
+-- > void vkGetBufferMemoryRequirements2
+-- >     ( VkDevice device
+-- >     , const VkBufferMemoryRequirementsInfo2* pInfo
+-- >     , VkMemoryRequirements2* pMemoryRequirements
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetBufferMemoryRequirements2 vkGetBufferMemoryRequirements2 registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetBufferMemoryRequirements2 <- vkGetDeviceProc @VkGetBufferMemoryRequirements2 vkDevice
+--
+-- or less efficient:
+--
+-- > myGetBufferMemoryRequirements2 <- vkGetProc @VkGetBufferMemoryRequirements2
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall safe "vkGetBufferMemoryRequirements2"
+               vkGetBufferMemoryRequirements2Safe ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkBufferMemoryRequirementsInfo2 -- ^ pInfo
+                                                     ->
+                   Ptr VkMemoryRequirements2 -- ^ pMemoryRequirements
+                                             -> IO ()
+
+#else
+vkGetBufferMemoryRequirements2Safe ::
+                                   VkDevice -- ^ device
+                                            ->
+                                     Ptr VkBufferMemoryRequirementsInfo2 -- ^ pInfo
+                                                                         ->
+                                       Ptr VkMemoryRequirements2 -- ^ pMemoryRequirements
+                                                                 -> IO ()
+vkGetBufferMemoryRequirements2Safe
+  = unsafeDupablePerformIO
+      (vkGetProcSafe @VkGetBufferMemoryRequirements2)
+
+{-# NOINLINE vkGetBufferMemoryRequirements2Safe #-}
+#endif
+
+-- | > void vkGetBufferMemoryRequirements2
+--   >     ( VkDevice device
+--   >     , const VkBufferMemoryRequirementsInfo2* pInfo
+--   >     , VkMemoryRequirements2* pMemoryRequirements
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetBufferMemoryRequirements2 vkGetBufferMemoryRequirements2 registry at www.khronos.org>
+type HS_vkGetBufferMemoryRequirements2 =
+     VkDevice -- ^ device
+              ->
+       Ptr VkBufferMemoryRequirementsInfo2 -- ^ pInfo
+                                           ->
+         Ptr VkMemoryRequirements2 -- ^ pMemoryRequirements
+                                   -> IO ()
+
+type PFN_vkGetBufferMemoryRequirements2 =
+     FunPtr HS_vkGetBufferMemoryRequirements2
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkGetBufferMemoryRequirements2 ::
+               PFN_vkGetBufferMemoryRequirements2 ->
+                 HS_vkGetBufferMemoryRequirements2
+
+foreign import ccall safe "dynamic"
+               unwrapVkGetBufferMemoryRequirements2Safe ::
+               PFN_vkGetBufferMemoryRequirements2 ->
+                 HS_vkGetBufferMemoryRequirements2
+
+instance VulkanProc "vkGetBufferMemoryRequirements2" where
+        type VkProcType "vkGetBufferMemoryRequirements2" =
+             HS_vkGetBufferMemoryRequirements2
+        vkProcSymbol = _VkGetBufferMemoryRequirements2
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkGetBufferMemoryRequirements2
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkGetBufferMemoryRequirements2Safe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkGetImageSparseMemoryRequirements2 :: CString
+
+pattern VkGetImageSparseMemoryRequirements2 <-
+        (is_VkGetImageSparseMemoryRequirements2 -> True)
+  where VkGetImageSparseMemoryRequirements2
+          = _VkGetImageSparseMemoryRequirements2
+
+{-# INLINE _VkGetImageSparseMemoryRequirements2 #-}
+
+_VkGetImageSparseMemoryRequirements2 :: CString
+_VkGetImageSparseMemoryRequirements2
+  = Ptr "vkGetImageSparseMemoryRequirements2\NUL"#
+
+{-# INLINE is_VkGetImageSparseMemoryRequirements2 #-}
+
+is_VkGetImageSparseMemoryRequirements2 :: CString -> Bool
+is_VkGetImageSparseMemoryRequirements2
+  = (EQ ==) . cmpCStrings _VkGetImageSparseMemoryRequirements2
+
+type VkGetImageSparseMemoryRequirements2 =
+     "vkGetImageSparseMemoryRequirements2"
+
+-- |
+-- > void vkGetImageSparseMemoryRequirements2
+-- >     ( VkDevice device
+-- >     , const VkImageSparseMemoryRequirementsInfo2* pInfo
+-- >     , uint32_t* pSparseMemoryRequirementCount
+-- >     , VkSparseImageMemoryRequirements2* pSparseMemoryRequirements
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetImageSparseMemoryRequirements2 vkGetImageSparseMemoryRequirements2 registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetImageSparseMemoryRequirements2 <- vkGetDeviceProc @VkGetImageSparseMemoryRequirements2 vkDevice
+--
+-- or less efficient:
+--
+-- > myGetImageSparseMemoryRequirements2 <- vkGetProc @VkGetImageSparseMemoryRequirements2
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall unsafe "vkGetImageSparseMemoryRequirements2"
+               vkGetImageSparseMemoryRequirements2 ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkImageSparseMemoryRequirementsInfo2 -- ^ pInfo
+                                                          ->
+                   Ptr Word32 -- ^ pSparseMemoryRequirementCount
+                              -> Ptr VkSparseImageMemoryRequirements2 -- ^ pSparseMemoryRequirements
+                                                                      -> IO ()
+
+#else
+vkGetImageSparseMemoryRequirements2 ::
+                                    VkDevice -- ^ device
+                                             ->
+                                      Ptr VkImageSparseMemoryRequirementsInfo2 -- ^ pInfo
+                                                                               ->
+                                        Ptr Word32 -- ^ pSparseMemoryRequirementCount
+                                                   -> Ptr VkSparseImageMemoryRequirements2 -- ^ pSparseMemoryRequirements
+                                                                                           -> IO ()
+vkGetImageSparseMemoryRequirements2
+  = unsafeDupablePerformIO
+      (vkGetProc @VkGetImageSparseMemoryRequirements2)
+
+{-# NOINLINE vkGetImageSparseMemoryRequirements2 #-}
+#endif
+
+-- |
+-- > void vkGetImageSparseMemoryRequirements2
+-- >     ( VkDevice device
+-- >     , const VkImageSparseMemoryRequirementsInfo2* pInfo
+-- >     , uint32_t* pSparseMemoryRequirementCount
+-- >     , VkSparseImageMemoryRequirements2* pSparseMemoryRequirements
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetImageSparseMemoryRequirements2 vkGetImageSparseMemoryRequirements2 registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetImageSparseMemoryRequirements2 <- vkGetDeviceProc @VkGetImageSparseMemoryRequirements2 vkDevice
+--
+-- or less efficient:
+--
+-- > myGetImageSparseMemoryRequirements2 <- vkGetProc @VkGetImageSparseMemoryRequirements2
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall safe "vkGetImageSparseMemoryRequirements2"
+               vkGetImageSparseMemoryRequirements2Safe ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkImageSparseMemoryRequirementsInfo2 -- ^ pInfo
+                                                          ->
+                   Ptr Word32 -- ^ pSparseMemoryRequirementCount
+                              -> Ptr VkSparseImageMemoryRequirements2 -- ^ pSparseMemoryRequirements
+                                                                      -> IO ()
+
+#else
+vkGetImageSparseMemoryRequirements2Safe ::
+                                        VkDevice -- ^ device
+                                                 ->
+                                          Ptr VkImageSparseMemoryRequirementsInfo2 -- ^ pInfo
+                                                                                   ->
+                                            Ptr Word32 -- ^ pSparseMemoryRequirementCount
+                                                       ->
+                                              Ptr VkSparseImageMemoryRequirements2 -- ^ pSparseMemoryRequirements
+                                                                                   -> IO ()
+vkGetImageSparseMemoryRequirements2Safe
+  = unsafeDupablePerformIO
+      (vkGetProcSafe @VkGetImageSparseMemoryRequirements2)
+
+{-# NOINLINE vkGetImageSparseMemoryRequirements2Safe #-}
+#endif
+
+-- | > void vkGetImageSparseMemoryRequirements2
+--   >     ( VkDevice device
+--   >     , const VkImageSparseMemoryRequirementsInfo2* pInfo
+--   >     , uint32_t* pSparseMemoryRequirementCount
+--   >     , VkSparseImageMemoryRequirements2* pSparseMemoryRequirements
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetImageSparseMemoryRequirements2 vkGetImageSparseMemoryRequirements2 registry at www.khronos.org>
+type HS_vkGetImageSparseMemoryRequirements2 =
+     VkDevice -- ^ device
+              ->
+       Ptr VkImageSparseMemoryRequirementsInfo2 -- ^ pInfo
+                                                ->
+         Ptr Word32 -- ^ pSparseMemoryRequirementCount
+                    -> Ptr VkSparseImageMemoryRequirements2 -- ^ pSparseMemoryRequirements
+                                                            -> IO ()
+
+type PFN_vkGetImageSparseMemoryRequirements2 =
+     FunPtr HS_vkGetImageSparseMemoryRequirements2
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkGetImageSparseMemoryRequirements2 ::
+               PFN_vkGetImageSparseMemoryRequirements2 ->
+                 HS_vkGetImageSparseMemoryRequirements2
+
+foreign import ccall safe "dynamic"
+               unwrapVkGetImageSparseMemoryRequirements2Safe ::
+               PFN_vkGetImageSparseMemoryRequirements2 ->
+                 HS_vkGetImageSparseMemoryRequirements2
+
+instance VulkanProc "vkGetImageSparseMemoryRequirements2" where
+        type VkProcType "vkGetImageSparseMemoryRequirements2" =
+             HS_vkGetImageSparseMemoryRequirements2
+        vkProcSymbol = _VkGetImageSparseMemoryRequirements2
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkGetImageSparseMemoryRequirements2
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkGetImageSparseMemoryRequirements2Safe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2 ::
+        VkStructureType
+
+pattern VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2 =
+        VkStructureType 1000146000
+
+pattern VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2 ::
+        VkStructureType
+
+pattern VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2 =
+        VkStructureType 1000146001
+
+pattern VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2
+        :: VkStructureType
+
+pattern VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2 =
+        VkStructureType 1000146002
+
+pattern VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2 :: VkStructureType
+
+pattern VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2 =
+        VkStructureType 1000146003
+
+pattern VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2 ::
+        VkStructureType
+
+pattern VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2 =
+        VkStructureType 1000146004
+
+pattern VkGetPhysicalDeviceFeatures2 :: CString
+
+pattern VkGetPhysicalDeviceFeatures2 <-
+        (is_VkGetPhysicalDeviceFeatures2 -> True)
+  where VkGetPhysicalDeviceFeatures2 = _VkGetPhysicalDeviceFeatures2
+
+{-# INLINE _VkGetPhysicalDeviceFeatures2 #-}
+
+_VkGetPhysicalDeviceFeatures2 :: CString
+_VkGetPhysicalDeviceFeatures2
+  = Ptr "vkGetPhysicalDeviceFeatures2\NUL"#
+
+{-# INLINE is_VkGetPhysicalDeviceFeatures2 #-}
+
+is_VkGetPhysicalDeviceFeatures2 :: CString -> Bool
+is_VkGetPhysicalDeviceFeatures2
+  = (EQ ==) . cmpCStrings _VkGetPhysicalDeviceFeatures2
+
+type VkGetPhysicalDeviceFeatures2 = "vkGetPhysicalDeviceFeatures2"
+
+-- |
+-- > void vkGetPhysicalDeviceFeatures2
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , VkPhysicalDeviceFeatures2* pFeatures
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceFeatures2 vkGetPhysicalDeviceFeatures2 registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceFeatures2 <- vkGetInstanceProc @VkGetPhysicalDeviceFeatures2 vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceFeatures2 <- vkGetProc @VkGetPhysicalDeviceFeatures2
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall unsafe "vkGetPhysicalDeviceFeatures2"
+               vkGetPhysicalDeviceFeatures2 ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                -> Ptr VkPhysicalDeviceFeatures2 -- ^ pFeatures
+                                                                 -> IO ()
+
+#else
+vkGetPhysicalDeviceFeatures2 ::
+                             VkPhysicalDevice -- ^ physicalDevice
+                                              -> Ptr VkPhysicalDeviceFeatures2 -- ^ pFeatures
+                                                                               -> IO ()
+vkGetPhysicalDeviceFeatures2
+  = unsafeDupablePerformIO (vkGetProc @VkGetPhysicalDeviceFeatures2)
+
+{-# NOINLINE vkGetPhysicalDeviceFeatures2 #-}
+#endif
+
+-- |
+-- > void vkGetPhysicalDeviceFeatures2
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , VkPhysicalDeviceFeatures2* pFeatures
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceFeatures2 vkGetPhysicalDeviceFeatures2 registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceFeatures2 <- vkGetInstanceProc @VkGetPhysicalDeviceFeatures2 vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceFeatures2 <- vkGetProc @VkGetPhysicalDeviceFeatures2
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall safe "vkGetPhysicalDeviceFeatures2"
+               vkGetPhysicalDeviceFeatures2Safe ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                -> Ptr VkPhysicalDeviceFeatures2 -- ^ pFeatures
+                                                                 -> IO ()
+
+#else
+vkGetPhysicalDeviceFeatures2Safe ::
+                                 VkPhysicalDevice -- ^ physicalDevice
+                                                  -> Ptr VkPhysicalDeviceFeatures2 -- ^ pFeatures
+                                                                                   -> IO ()
+vkGetPhysicalDeviceFeatures2Safe
+  = unsafeDupablePerformIO
+      (vkGetProcSafe @VkGetPhysicalDeviceFeatures2)
+
+{-# NOINLINE vkGetPhysicalDeviceFeatures2Safe #-}
+#endif
+
+-- | > void vkGetPhysicalDeviceFeatures2
+--   >     ( VkPhysicalDevice physicalDevice
+--   >     , VkPhysicalDeviceFeatures2* pFeatures
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceFeatures2 vkGetPhysicalDeviceFeatures2 registry at www.khronos.org>
+type HS_vkGetPhysicalDeviceFeatures2 =
+     VkPhysicalDevice -- ^ physicalDevice
+                      -> Ptr VkPhysicalDeviceFeatures2 -- ^ pFeatures
+                                                       -> IO ()
+
+type PFN_vkGetPhysicalDeviceFeatures2 =
+     FunPtr HS_vkGetPhysicalDeviceFeatures2
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkGetPhysicalDeviceFeatures2 ::
+               PFN_vkGetPhysicalDeviceFeatures2 -> HS_vkGetPhysicalDeviceFeatures2
+
+foreign import ccall safe "dynamic"
+               unwrapVkGetPhysicalDeviceFeatures2Safe ::
+               PFN_vkGetPhysicalDeviceFeatures2 -> HS_vkGetPhysicalDeviceFeatures2
+
+instance VulkanProc "vkGetPhysicalDeviceFeatures2" where
+        type VkProcType "vkGetPhysicalDeviceFeatures2" =
+             HS_vkGetPhysicalDeviceFeatures2
+        vkProcSymbol = _VkGetPhysicalDeviceFeatures2
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkGetPhysicalDeviceFeatures2
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkGetPhysicalDeviceFeatures2Safe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkGetPhysicalDeviceProperties2 :: CString
+
+pattern VkGetPhysicalDeviceProperties2 <-
+        (is_VkGetPhysicalDeviceProperties2 -> True)
+  where VkGetPhysicalDeviceProperties2
+          = _VkGetPhysicalDeviceProperties2
+
+{-# INLINE _VkGetPhysicalDeviceProperties2 #-}
+
+_VkGetPhysicalDeviceProperties2 :: CString
+_VkGetPhysicalDeviceProperties2
+  = Ptr "vkGetPhysicalDeviceProperties2\NUL"#
+
+{-# INLINE is_VkGetPhysicalDeviceProperties2 #-}
+
+is_VkGetPhysicalDeviceProperties2 :: CString -> Bool
+is_VkGetPhysicalDeviceProperties2
+  = (EQ ==) . cmpCStrings _VkGetPhysicalDeviceProperties2
+
+type VkGetPhysicalDeviceProperties2 =
+     "vkGetPhysicalDeviceProperties2"
+
+-- |
+-- > void vkGetPhysicalDeviceProperties2
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , VkPhysicalDeviceProperties2* pProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceProperties2 vkGetPhysicalDeviceProperties2 registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceProperties2 <- vkGetInstanceProc @VkGetPhysicalDeviceProperties2 vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceProperties2 <- vkGetProc @VkGetPhysicalDeviceProperties2
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall unsafe "vkGetPhysicalDeviceProperties2"
+               vkGetPhysicalDeviceProperties2 ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                -> Ptr VkPhysicalDeviceProperties2 -- ^ pProperties
+                                                                   -> IO ()
+
+#else
+vkGetPhysicalDeviceProperties2 ::
+                               VkPhysicalDevice -- ^ physicalDevice
+                                                -> Ptr VkPhysicalDeviceProperties2 -- ^ pProperties
+                                                                                   -> IO ()
+vkGetPhysicalDeviceProperties2
+  = unsafeDupablePerformIO
+      (vkGetProc @VkGetPhysicalDeviceProperties2)
+
+{-# NOINLINE vkGetPhysicalDeviceProperties2 #-}
+#endif
+
+-- |
+-- > void vkGetPhysicalDeviceProperties2
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , VkPhysicalDeviceProperties2* pProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceProperties2 vkGetPhysicalDeviceProperties2 registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceProperties2 <- vkGetInstanceProc @VkGetPhysicalDeviceProperties2 vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceProperties2 <- vkGetProc @VkGetPhysicalDeviceProperties2
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall safe "vkGetPhysicalDeviceProperties2"
+               vkGetPhysicalDeviceProperties2Safe ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                -> Ptr VkPhysicalDeviceProperties2 -- ^ pProperties
+                                                                   -> IO ()
+
+#else
+vkGetPhysicalDeviceProperties2Safe ::
+                                   VkPhysicalDevice -- ^ physicalDevice
+                                                    -> Ptr VkPhysicalDeviceProperties2 -- ^ pProperties
+                                                                                       -> IO ()
+vkGetPhysicalDeviceProperties2Safe
+  = unsafeDupablePerformIO
+      (vkGetProcSafe @VkGetPhysicalDeviceProperties2)
+
+{-# NOINLINE vkGetPhysicalDeviceProperties2Safe #-}
+#endif
+
+-- | > void vkGetPhysicalDeviceProperties2
+--   >     ( VkPhysicalDevice physicalDevice
+--   >     , VkPhysicalDeviceProperties2* pProperties
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceProperties2 vkGetPhysicalDeviceProperties2 registry at www.khronos.org>
+type HS_vkGetPhysicalDeviceProperties2 =
+     VkPhysicalDevice -- ^ physicalDevice
+                      -> Ptr VkPhysicalDeviceProperties2 -- ^ pProperties
+                                                         -> IO ()
+
+type PFN_vkGetPhysicalDeviceProperties2 =
+     FunPtr HS_vkGetPhysicalDeviceProperties2
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkGetPhysicalDeviceProperties2 ::
+               PFN_vkGetPhysicalDeviceProperties2 ->
+                 HS_vkGetPhysicalDeviceProperties2
+
+foreign import ccall safe "dynamic"
+               unwrapVkGetPhysicalDeviceProperties2Safe ::
+               PFN_vkGetPhysicalDeviceProperties2 ->
+                 HS_vkGetPhysicalDeviceProperties2
+
+instance VulkanProc "vkGetPhysicalDeviceProperties2" where
+        type VkProcType "vkGetPhysicalDeviceProperties2" =
+             HS_vkGetPhysicalDeviceProperties2
+        vkProcSymbol = _VkGetPhysicalDeviceProperties2
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkGetPhysicalDeviceProperties2
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkGetPhysicalDeviceProperties2Safe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkGetPhysicalDeviceFormatProperties2 :: CString
+
+pattern VkGetPhysicalDeviceFormatProperties2 <-
+        (is_VkGetPhysicalDeviceFormatProperties2 -> True)
+  where VkGetPhysicalDeviceFormatProperties2
+          = _VkGetPhysicalDeviceFormatProperties2
+
+{-# INLINE _VkGetPhysicalDeviceFormatProperties2 #-}
+
+_VkGetPhysicalDeviceFormatProperties2 :: CString
+_VkGetPhysicalDeviceFormatProperties2
+  = Ptr "vkGetPhysicalDeviceFormatProperties2\NUL"#
+
+{-# INLINE is_VkGetPhysicalDeviceFormatProperties2 #-}
+
+is_VkGetPhysicalDeviceFormatProperties2 :: CString -> Bool
+is_VkGetPhysicalDeviceFormatProperties2
+  = (EQ ==) . cmpCStrings _VkGetPhysicalDeviceFormatProperties2
+
+type VkGetPhysicalDeviceFormatProperties2 =
+     "vkGetPhysicalDeviceFormatProperties2"
+
+-- |
+-- > void vkGetPhysicalDeviceFormatProperties2
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , VkFormat format
+-- >     , VkFormatProperties2* pFormatProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceFormatProperties2 vkGetPhysicalDeviceFormatProperties2 registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceFormatProperties2 <- vkGetInstanceProc @VkGetPhysicalDeviceFormatProperties2 vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceFormatProperties2 <- vkGetProc @VkGetPhysicalDeviceFormatProperties2
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall unsafe "vkGetPhysicalDeviceFormatProperties2"
+               vkGetPhysicalDeviceFormatProperties2 ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                -> VkFormat -- ^ format
+                                            -> Ptr VkFormatProperties2 -- ^ pFormatProperties
+                                                                       -> IO ()
+
+#else
+vkGetPhysicalDeviceFormatProperties2 ::
+                                     VkPhysicalDevice -- ^ physicalDevice
+                                                      ->
+                                       VkFormat -- ^ format
+                                                -> Ptr VkFormatProperties2 -- ^ pFormatProperties
+                                                                           -> IO ()
+vkGetPhysicalDeviceFormatProperties2
+  = unsafeDupablePerformIO
+      (vkGetProc @VkGetPhysicalDeviceFormatProperties2)
+
+{-# NOINLINE vkGetPhysicalDeviceFormatProperties2 #-}
+#endif
+
+-- |
+-- > void vkGetPhysicalDeviceFormatProperties2
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , VkFormat format
+-- >     , VkFormatProperties2* pFormatProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceFormatProperties2 vkGetPhysicalDeviceFormatProperties2 registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceFormatProperties2 <- vkGetInstanceProc @VkGetPhysicalDeviceFormatProperties2 vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceFormatProperties2 <- vkGetProc @VkGetPhysicalDeviceFormatProperties2
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall safe "vkGetPhysicalDeviceFormatProperties2"
+               vkGetPhysicalDeviceFormatProperties2Safe ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                -> VkFormat -- ^ format
+                                            -> Ptr VkFormatProperties2 -- ^ pFormatProperties
+                                                                       -> IO ()
+
+#else
+vkGetPhysicalDeviceFormatProperties2Safe ::
+                                         VkPhysicalDevice -- ^ physicalDevice
+                                                          ->
+                                           VkFormat -- ^ format
+                                                    -> Ptr VkFormatProperties2 -- ^ pFormatProperties
+                                                                               -> IO ()
+vkGetPhysicalDeviceFormatProperties2Safe
+  = unsafeDupablePerformIO
+      (vkGetProcSafe @VkGetPhysicalDeviceFormatProperties2)
+
+{-# NOINLINE vkGetPhysicalDeviceFormatProperties2Safe #-}
+#endif
+
+-- | > void vkGetPhysicalDeviceFormatProperties2
+--   >     ( VkPhysicalDevice physicalDevice
+--   >     , VkFormat format
+--   >     , VkFormatProperties2* pFormatProperties
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceFormatProperties2 vkGetPhysicalDeviceFormatProperties2 registry at www.khronos.org>
+type HS_vkGetPhysicalDeviceFormatProperties2 =
+     VkPhysicalDevice -- ^ physicalDevice
+                      -> VkFormat -- ^ format
+                                  -> Ptr VkFormatProperties2 -- ^ pFormatProperties
+                                                             -> IO ()
+
+type PFN_vkGetPhysicalDeviceFormatProperties2 =
+     FunPtr HS_vkGetPhysicalDeviceFormatProperties2
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkGetPhysicalDeviceFormatProperties2 ::
+               PFN_vkGetPhysicalDeviceFormatProperties2 ->
+                 HS_vkGetPhysicalDeviceFormatProperties2
+
+foreign import ccall safe "dynamic"
+               unwrapVkGetPhysicalDeviceFormatProperties2Safe ::
+               PFN_vkGetPhysicalDeviceFormatProperties2 ->
+                 HS_vkGetPhysicalDeviceFormatProperties2
+
+instance VulkanProc "vkGetPhysicalDeviceFormatProperties2" where
+        type VkProcType "vkGetPhysicalDeviceFormatProperties2" =
+             HS_vkGetPhysicalDeviceFormatProperties2
+        vkProcSymbol = _VkGetPhysicalDeviceFormatProperties2
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkGetPhysicalDeviceFormatProperties2
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe
+          = unwrapVkGetPhysicalDeviceFormatProperties2Safe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkGetPhysicalDeviceImageFormatProperties2 :: CString
+
+pattern VkGetPhysicalDeviceImageFormatProperties2 <-
+        (is_VkGetPhysicalDeviceImageFormatProperties2 -> True)
+  where VkGetPhysicalDeviceImageFormatProperties2
+          = _VkGetPhysicalDeviceImageFormatProperties2
+
+{-# INLINE _VkGetPhysicalDeviceImageFormatProperties2 #-}
+
+_VkGetPhysicalDeviceImageFormatProperties2 :: CString
+_VkGetPhysicalDeviceImageFormatProperties2
+  = Ptr "vkGetPhysicalDeviceImageFormatProperties2\NUL"#
+
+{-# INLINE is_VkGetPhysicalDeviceImageFormatProperties2 #-}
+
+is_VkGetPhysicalDeviceImageFormatProperties2 :: CString -> Bool
+is_VkGetPhysicalDeviceImageFormatProperties2
+  = (EQ ==) . cmpCStrings _VkGetPhysicalDeviceImageFormatProperties2
+
+type VkGetPhysicalDeviceImageFormatProperties2 =
+     "vkGetPhysicalDeviceImageFormatProperties2"
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_FORMAT_NOT_SUPPORTED'.
+--
+-- > VkResult vkGetPhysicalDeviceImageFormatProperties2
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo
+-- >     , VkImageFormatProperties2* pImageFormatProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceImageFormatProperties2 vkGetPhysicalDeviceImageFormatProperties2 registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceImageFormatProperties2 <- vkGetInstanceProc @VkGetPhysicalDeviceImageFormatProperties2 vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceImageFormatProperties2 <- vkGetProc @VkGetPhysicalDeviceImageFormatProperties2
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall unsafe
+               "vkGetPhysicalDeviceImageFormatProperties2"
+               vkGetPhysicalDeviceImageFormatProperties2 ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                ->
+                 Ptr VkPhysicalDeviceImageFormatInfo2 -- ^ pImageFormatInfo
+                                                      ->
+                   Ptr VkImageFormatProperties2 -- ^ pImageFormatProperties
+                                                -> IO VkResult
+
+#else
+vkGetPhysicalDeviceImageFormatProperties2 ::
+                                          VkPhysicalDevice -- ^ physicalDevice
+                                                           ->
+                                            Ptr VkPhysicalDeviceImageFormatInfo2 -- ^ pImageFormatInfo
+                                                                                 ->
+                                              Ptr VkImageFormatProperties2 -- ^ pImageFormatProperties
+                                                                           -> IO VkResult
+vkGetPhysicalDeviceImageFormatProperties2
+  = unsafeDupablePerformIO
+      (vkGetProc @VkGetPhysicalDeviceImageFormatProperties2)
+
+{-# NOINLINE vkGetPhysicalDeviceImageFormatProperties2 #-}
+#endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_FORMAT_NOT_SUPPORTED'.
+--
+-- > VkResult vkGetPhysicalDeviceImageFormatProperties2
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo
+-- >     , VkImageFormatProperties2* pImageFormatProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceImageFormatProperties2 vkGetPhysicalDeviceImageFormatProperties2 registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceImageFormatProperties2 <- vkGetInstanceProc @VkGetPhysicalDeviceImageFormatProperties2 vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceImageFormatProperties2 <- vkGetProc @VkGetPhysicalDeviceImageFormatProperties2
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall safe
+               "vkGetPhysicalDeviceImageFormatProperties2"
+               vkGetPhysicalDeviceImageFormatProperties2Safe ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                ->
+                 Ptr VkPhysicalDeviceImageFormatInfo2 -- ^ pImageFormatInfo
+                                                      ->
+                   Ptr VkImageFormatProperties2 -- ^ pImageFormatProperties
+                                                -> IO VkResult
+
+#else
+vkGetPhysicalDeviceImageFormatProperties2Safe ::
+                                              VkPhysicalDevice -- ^ physicalDevice
+                                                               ->
+                                                Ptr VkPhysicalDeviceImageFormatInfo2 -- ^ pImageFormatInfo
+                                                                                     ->
+                                                  Ptr VkImageFormatProperties2 -- ^ pImageFormatProperties
+                                                                               -> IO VkResult
+vkGetPhysicalDeviceImageFormatProperties2Safe
+  = unsafeDupablePerformIO
+      (vkGetProcSafe @VkGetPhysicalDeviceImageFormatProperties2)
+
+{-# NOINLINE vkGetPhysicalDeviceImageFormatProperties2Safe #-}
+#endif
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_FORMAT_NOT_SUPPORTED'.
+--
+--   > VkResult vkGetPhysicalDeviceImageFormatProperties2
+--   >     ( VkPhysicalDevice physicalDevice
+--   >     , const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo
+--   >     , VkImageFormatProperties2* pImageFormatProperties
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceImageFormatProperties2 vkGetPhysicalDeviceImageFormatProperties2 registry at www.khronos.org>
+type HS_vkGetPhysicalDeviceImageFormatProperties2 =
+     VkPhysicalDevice -- ^ physicalDevice
+                      ->
+       Ptr VkPhysicalDeviceImageFormatInfo2 -- ^ pImageFormatInfo
+                                            ->
+         Ptr VkImageFormatProperties2 -- ^ pImageFormatProperties
+                                      -> IO VkResult
+
+type PFN_vkGetPhysicalDeviceImageFormatProperties2 =
+     FunPtr HS_vkGetPhysicalDeviceImageFormatProperties2
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkGetPhysicalDeviceImageFormatProperties2 ::
+               PFN_vkGetPhysicalDeviceImageFormatProperties2 ->
+                 HS_vkGetPhysicalDeviceImageFormatProperties2
+
+foreign import ccall safe "dynamic"
+               unwrapVkGetPhysicalDeviceImageFormatProperties2Safe ::
+               PFN_vkGetPhysicalDeviceImageFormatProperties2 ->
+                 HS_vkGetPhysicalDeviceImageFormatProperties2
+
+instance VulkanProc "vkGetPhysicalDeviceImageFormatProperties2"
+         where
+        type VkProcType "vkGetPhysicalDeviceImageFormatProperties2" =
+             HS_vkGetPhysicalDeviceImageFormatProperties2
+        vkProcSymbol = _VkGetPhysicalDeviceImageFormatProperties2
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkGetPhysicalDeviceImageFormatProperties2
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe
+          = unwrapVkGetPhysicalDeviceImageFormatProperties2Safe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkGetPhysicalDeviceQueueFamilyProperties2 :: CString
+
+pattern VkGetPhysicalDeviceQueueFamilyProperties2 <-
+        (is_VkGetPhysicalDeviceQueueFamilyProperties2 -> True)
+  where VkGetPhysicalDeviceQueueFamilyProperties2
+          = _VkGetPhysicalDeviceQueueFamilyProperties2
+
+{-# INLINE _VkGetPhysicalDeviceQueueFamilyProperties2 #-}
+
+_VkGetPhysicalDeviceQueueFamilyProperties2 :: CString
+_VkGetPhysicalDeviceQueueFamilyProperties2
+  = Ptr "vkGetPhysicalDeviceQueueFamilyProperties2\NUL"#
+
+{-# INLINE is_VkGetPhysicalDeviceQueueFamilyProperties2 #-}
+
+is_VkGetPhysicalDeviceQueueFamilyProperties2 :: CString -> Bool
+is_VkGetPhysicalDeviceQueueFamilyProperties2
+  = (EQ ==) . cmpCStrings _VkGetPhysicalDeviceQueueFamilyProperties2
+
+type VkGetPhysicalDeviceQueueFamilyProperties2 =
+     "vkGetPhysicalDeviceQueueFamilyProperties2"
+
+-- |
+-- > void vkGetPhysicalDeviceQueueFamilyProperties2
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , uint32_t* pQueueFamilyPropertyCount
+-- >     , VkQueueFamilyProperties2* pQueueFamilyProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceQueueFamilyProperties2 vkGetPhysicalDeviceQueueFamilyProperties2 registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceQueueFamilyProperties2 <- vkGetInstanceProc @VkGetPhysicalDeviceQueueFamilyProperties2 vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceQueueFamilyProperties2 <- vkGetProc @VkGetPhysicalDeviceQueueFamilyProperties2
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall unsafe
+               "vkGetPhysicalDeviceQueueFamilyProperties2"
+               vkGetPhysicalDeviceQueueFamilyProperties2 ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                ->
+                 Ptr Word32 -- ^ pQueueFamilyPropertyCount
+                            -> Ptr VkQueueFamilyProperties2 -- ^ pQueueFamilyProperties
+                                                            -> IO ()
+
+#else
+vkGetPhysicalDeviceQueueFamilyProperties2 ::
+                                          VkPhysicalDevice -- ^ physicalDevice
+                                                           ->
+                                            Ptr Word32 -- ^ pQueueFamilyPropertyCount
+                                                       -> Ptr VkQueueFamilyProperties2 -- ^ pQueueFamilyProperties
+                                                                                       -> IO ()
+vkGetPhysicalDeviceQueueFamilyProperties2
+  = unsafeDupablePerformIO
+      (vkGetProc @VkGetPhysicalDeviceQueueFamilyProperties2)
+
+{-# NOINLINE vkGetPhysicalDeviceQueueFamilyProperties2 #-}
+#endif
+
+-- |
+-- > void vkGetPhysicalDeviceQueueFamilyProperties2
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , uint32_t* pQueueFamilyPropertyCount
+-- >     , VkQueueFamilyProperties2* pQueueFamilyProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceQueueFamilyProperties2 vkGetPhysicalDeviceQueueFamilyProperties2 registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceQueueFamilyProperties2 <- vkGetInstanceProc @VkGetPhysicalDeviceQueueFamilyProperties2 vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceQueueFamilyProperties2 <- vkGetProc @VkGetPhysicalDeviceQueueFamilyProperties2
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall safe
+               "vkGetPhysicalDeviceQueueFamilyProperties2"
+               vkGetPhysicalDeviceQueueFamilyProperties2Safe ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                ->
+                 Ptr Word32 -- ^ pQueueFamilyPropertyCount
+                            -> Ptr VkQueueFamilyProperties2 -- ^ pQueueFamilyProperties
+                                                            -> IO ()
+
+#else
+vkGetPhysicalDeviceQueueFamilyProperties2Safe ::
+                                              VkPhysicalDevice -- ^ physicalDevice
+                                                               ->
+                                                Ptr Word32 -- ^ pQueueFamilyPropertyCount
+                                                           -> Ptr VkQueueFamilyProperties2 -- ^ pQueueFamilyProperties
+                                                                                           -> IO ()
+vkGetPhysicalDeviceQueueFamilyProperties2Safe
+  = unsafeDupablePerformIO
+      (vkGetProcSafe @VkGetPhysicalDeviceQueueFamilyProperties2)
+
+{-# NOINLINE vkGetPhysicalDeviceQueueFamilyProperties2Safe #-}
+#endif
+
+-- | > void vkGetPhysicalDeviceQueueFamilyProperties2
+--   >     ( VkPhysicalDevice physicalDevice
+--   >     , uint32_t* pQueueFamilyPropertyCount
+--   >     , VkQueueFamilyProperties2* pQueueFamilyProperties
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceQueueFamilyProperties2 vkGetPhysicalDeviceQueueFamilyProperties2 registry at www.khronos.org>
+type HS_vkGetPhysicalDeviceQueueFamilyProperties2 =
+     VkPhysicalDevice -- ^ physicalDevice
+                      ->
+       Ptr Word32 -- ^ pQueueFamilyPropertyCount
+                  -> Ptr VkQueueFamilyProperties2 -- ^ pQueueFamilyProperties
+                                                  -> IO ()
+
+type PFN_vkGetPhysicalDeviceQueueFamilyProperties2 =
+     FunPtr HS_vkGetPhysicalDeviceQueueFamilyProperties2
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkGetPhysicalDeviceQueueFamilyProperties2 ::
+               PFN_vkGetPhysicalDeviceQueueFamilyProperties2 ->
+                 HS_vkGetPhysicalDeviceQueueFamilyProperties2
+
+foreign import ccall safe "dynamic"
+               unwrapVkGetPhysicalDeviceQueueFamilyProperties2Safe ::
+               PFN_vkGetPhysicalDeviceQueueFamilyProperties2 ->
+                 HS_vkGetPhysicalDeviceQueueFamilyProperties2
+
+instance VulkanProc "vkGetPhysicalDeviceQueueFamilyProperties2"
+         where
+        type VkProcType "vkGetPhysicalDeviceQueueFamilyProperties2" =
+             HS_vkGetPhysicalDeviceQueueFamilyProperties2
+        vkProcSymbol = _VkGetPhysicalDeviceQueueFamilyProperties2
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkGetPhysicalDeviceQueueFamilyProperties2
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe
+          = unwrapVkGetPhysicalDeviceQueueFamilyProperties2Safe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkGetPhysicalDeviceMemoryProperties2 :: CString
+
+pattern VkGetPhysicalDeviceMemoryProperties2 <-
+        (is_VkGetPhysicalDeviceMemoryProperties2 -> True)
+  where VkGetPhysicalDeviceMemoryProperties2
+          = _VkGetPhysicalDeviceMemoryProperties2
+
+{-# INLINE _VkGetPhysicalDeviceMemoryProperties2 #-}
+
+_VkGetPhysicalDeviceMemoryProperties2 :: CString
+_VkGetPhysicalDeviceMemoryProperties2
+  = Ptr "vkGetPhysicalDeviceMemoryProperties2\NUL"#
+
+{-# INLINE is_VkGetPhysicalDeviceMemoryProperties2 #-}
+
+is_VkGetPhysicalDeviceMemoryProperties2 :: CString -> Bool
+is_VkGetPhysicalDeviceMemoryProperties2
+  = (EQ ==) . cmpCStrings _VkGetPhysicalDeviceMemoryProperties2
+
+type VkGetPhysicalDeviceMemoryProperties2 =
+     "vkGetPhysicalDeviceMemoryProperties2"
+
+-- |
+-- > void vkGetPhysicalDeviceMemoryProperties2
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , VkPhysicalDeviceMemoryProperties2* pMemoryProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceMemoryProperties2 vkGetPhysicalDeviceMemoryProperties2 registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceMemoryProperties2 <- vkGetInstanceProc @VkGetPhysicalDeviceMemoryProperties2 vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceMemoryProperties2 <- vkGetProc @VkGetPhysicalDeviceMemoryProperties2
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall unsafe "vkGetPhysicalDeviceMemoryProperties2"
+               vkGetPhysicalDeviceMemoryProperties2 ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                -> Ptr VkPhysicalDeviceMemoryProperties2 -- ^ pMemoryProperties
+                                                                         -> IO ()
+
+#else
+vkGetPhysicalDeviceMemoryProperties2 ::
+                                     VkPhysicalDevice -- ^ physicalDevice
+                                                      ->
+                                       Ptr VkPhysicalDeviceMemoryProperties2 -- ^ pMemoryProperties
+                                                                             -> IO ()
+vkGetPhysicalDeviceMemoryProperties2
+  = unsafeDupablePerformIO
+      (vkGetProc @VkGetPhysicalDeviceMemoryProperties2)
+
+{-# NOINLINE vkGetPhysicalDeviceMemoryProperties2 #-}
+#endif
+
+-- |
+-- > void vkGetPhysicalDeviceMemoryProperties2
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , VkPhysicalDeviceMemoryProperties2* pMemoryProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceMemoryProperties2 vkGetPhysicalDeviceMemoryProperties2 registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceMemoryProperties2 <- vkGetInstanceProc @VkGetPhysicalDeviceMemoryProperties2 vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceMemoryProperties2 <- vkGetProc @VkGetPhysicalDeviceMemoryProperties2
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall safe "vkGetPhysicalDeviceMemoryProperties2"
+               vkGetPhysicalDeviceMemoryProperties2Safe ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                -> Ptr VkPhysicalDeviceMemoryProperties2 -- ^ pMemoryProperties
+                                                                         -> IO ()
+
+#else
+vkGetPhysicalDeviceMemoryProperties2Safe ::
+                                         VkPhysicalDevice -- ^ physicalDevice
+                                                          ->
+                                           Ptr VkPhysicalDeviceMemoryProperties2 -- ^ pMemoryProperties
+                                                                                 -> IO ()
+vkGetPhysicalDeviceMemoryProperties2Safe
+  = unsafeDupablePerformIO
+      (vkGetProcSafe @VkGetPhysicalDeviceMemoryProperties2)
+
+{-# NOINLINE vkGetPhysicalDeviceMemoryProperties2Safe #-}
+#endif
+
+-- | > void vkGetPhysicalDeviceMemoryProperties2
+--   >     ( VkPhysicalDevice physicalDevice
+--   >     , VkPhysicalDeviceMemoryProperties2* pMemoryProperties
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceMemoryProperties2 vkGetPhysicalDeviceMemoryProperties2 registry at www.khronos.org>
+type HS_vkGetPhysicalDeviceMemoryProperties2 =
+     VkPhysicalDevice -- ^ physicalDevice
+                      -> Ptr VkPhysicalDeviceMemoryProperties2 -- ^ pMemoryProperties
+                                                               -> IO ()
+
+type PFN_vkGetPhysicalDeviceMemoryProperties2 =
+     FunPtr HS_vkGetPhysicalDeviceMemoryProperties2
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkGetPhysicalDeviceMemoryProperties2 ::
+               PFN_vkGetPhysicalDeviceMemoryProperties2 ->
+                 HS_vkGetPhysicalDeviceMemoryProperties2
+
+foreign import ccall safe "dynamic"
+               unwrapVkGetPhysicalDeviceMemoryProperties2Safe ::
+               PFN_vkGetPhysicalDeviceMemoryProperties2 ->
+                 HS_vkGetPhysicalDeviceMemoryProperties2
+
+instance VulkanProc "vkGetPhysicalDeviceMemoryProperties2" where
+        type VkProcType "vkGetPhysicalDeviceMemoryProperties2" =
+             HS_vkGetPhysicalDeviceMemoryProperties2
+        vkProcSymbol = _VkGetPhysicalDeviceMemoryProperties2
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkGetPhysicalDeviceMemoryProperties2
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe
+          = unwrapVkGetPhysicalDeviceMemoryProperties2Safe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkGetPhysicalDeviceSparseImageFormatProperties2 :: CString
+
+pattern VkGetPhysicalDeviceSparseImageFormatProperties2 <-
+        (is_VkGetPhysicalDeviceSparseImageFormatProperties2 -> True)
+  where VkGetPhysicalDeviceSparseImageFormatProperties2
+          = _VkGetPhysicalDeviceSparseImageFormatProperties2
+
+{-# INLINE _VkGetPhysicalDeviceSparseImageFormatProperties2 #-}
+
+_VkGetPhysicalDeviceSparseImageFormatProperties2 :: CString
+_VkGetPhysicalDeviceSparseImageFormatProperties2
+  = Ptr "vkGetPhysicalDeviceSparseImageFormatProperties2\NUL"#
+
+{-# INLINE is_VkGetPhysicalDeviceSparseImageFormatProperties2 #-}
+
+is_VkGetPhysicalDeviceSparseImageFormatProperties2 ::
+                                                   CString -> Bool
+is_VkGetPhysicalDeviceSparseImageFormatProperties2
+  = (EQ ==) .
+      cmpCStrings _VkGetPhysicalDeviceSparseImageFormatProperties2
+
+type VkGetPhysicalDeviceSparseImageFormatProperties2 =
+     "vkGetPhysicalDeviceSparseImageFormatProperties2"
+
+-- |
+-- > void vkGetPhysicalDeviceSparseImageFormatProperties2
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo
+-- >     , uint32_t* pPropertyCount
+-- >     , VkSparseImageFormatProperties2* pProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceSparseImageFormatProperties2 vkGetPhysicalDeviceSparseImageFormatProperties2 registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceSparseImageFormatProperties2 <- vkGetInstanceProc @VkGetPhysicalDeviceSparseImageFormatProperties2 vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceSparseImageFormatProperties2 <- vkGetProc @VkGetPhysicalDeviceSparseImageFormatProperties2
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall unsafe
+               "vkGetPhysicalDeviceSparseImageFormatProperties2"
+               vkGetPhysicalDeviceSparseImageFormatProperties2 ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                ->
+                 Ptr VkPhysicalDeviceSparseImageFormatInfo2 -- ^ pFormatInfo
+                                                            ->
+                   Ptr Word32 -- ^ pPropertyCount
+                              -> Ptr VkSparseImageFormatProperties2 -- ^ pProperties
+                                                                    -> IO ()
+
+#else
+vkGetPhysicalDeviceSparseImageFormatProperties2 ::
+                                                VkPhysicalDevice -- ^ physicalDevice
+                                                                 ->
+                                                  Ptr VkPhysicalDeviceSparseImageFormatInfo2 -- ^ pFormatInfo
+                                                                                             ->
+                                                    Ptr Word32 -- ^ pPropertyCount
+                                                               ->
+                                                      Ptr VkSparseImageFormatProperties2 -- ^ pProperties
+                                                                                         -> IO ()
+vkGetPhysicalDeviceSparseImageFormatProperties2
+  = unsafeDupablePerformIO
+      (vkGetProc @VkGetPhysicalDeviceSparseImageFormatProperties2)
+
+{-# NOINLINE vkGetPhysicalDeviceSparseImageFormatProperties2 #-}
+#endif
+
+-- |
+-- > void vkGetPhysicalDeviceSparseImageFormatProperties2
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo
+-- >     , uint32_t* pPropertyCount
+-- >     , VkSparseImageFormatProperties2* pProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceSparseImageFormatProperties2 vkGetPhysicalDeviceSparseImageFormatProperties2 registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceSparseImageFormatProperties2 <- vkGetInstanceProc @VkGetPhysicalDeviceSparseImageFormatProperties2 vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceSparseImageFormatProperties2 <- vkGetProc @VkGetPhysicalDeviceSparseImageFormatProperties2
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall safe
+               "vkGetPhysicalDeviceSparseImageFormatProperties2"
+               vkGetPhysicalDeviceSparseImageFormatProperties2Safe ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                ->
+                 Ptr VkPhysicalDeviceSparseImageFormatInfo2 -- ^ pFormatInfo
+                                                            ->
+                   Ptr Word32 -- ^ pPropertyCount
+                              -> Ptr VkSparseImageFormatProperties2 -- ^ pProperties
+                                                                    -> IO ()
+
+#else
+vkGetPhysicalDeviceSparseImageFormatProperties2Safe ::
+                                                    VkPhysicalDevice -- ^ physicalDevice
+                                                                     ->
+                                                      Ptr VkPhysicalDeviceSparseImageFormatInfo2 -- ^ pFormatInfo
+                                                                                                 ->
+                                                        Ptr Word32 -- ^ pPropertyCount
+                                                                   ->
+                                                          Ptr VkSparseImageFormatProperties2 -- ^ pProperties
+                                                                                             ->
+                                                            IO ()
+vkGetPhysicalDeviceSparseImageFormatProperties2Safe
+  = unsafeDupablePerformIO
+      (vkGetProcSafe @VkGetPhysicalDeviceSparseImageFormatProperties2)
+
+{-# NOINLINE vkGetPhysicalDeviceSparseImageFormatProperties2Safe
+             #-}
+#endif
+
+-- | > void vkGetPhysicalDeviceSparseImageFormatProperties2
+--   >     ( VkPhysicalDevice physicalDevice
+--   >     , const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo
+--   >     , uint32_t* pPropertyCount
+--   >     , VkSparseImageFormatProperties2* pProperties
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceSparseImageFormatProperties2 vkGetPhysicalDeviceSparseImageFormatProperties2 registry at www.khronos.org>
+type HS_vkGetPhysicalDeviceSparseImageFormatProperties2 =
+     VkPhysicalDevice -- ^ physicalDevice
+                      ->
+       Ptr VkPhysicalDeviceSparseImageFormatInfo2 -- ^ pFormatInfo
+                                                  ->
+         Ptr Word32 -- ^ pPropertyCount
+                    -> Ptr VkSparseImageFormatProperties2 -- ^ pProperties
+                                                          -> IO ()
+
+type PFN_vkGetPhysicalDeviceSparseImageFormatProperties2 =
+     FunPtr HS_vkGetPhysicalDeviceSparseImageFormatProperties2
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkGetPhysicalDeviceSparseImageFormatProperties2 ::
+               PFN_vkGetPhysicalDeviceSparseImageFormatProperties2 ->
+                 HS_vkGetPhysicalDeviceSparseImageFormatProperties2
+
+foreign import ccall safe "dynamic"
+               unwrapVkGetPhysicalDeviceSparseImageFormatProperties2Safe ::
+               PFN_vkGetPhysicalDeviceSparseImageFormatProperties2 ->
+                 HS_vkGetPhysicalDeviceSparseImageFormatProperties2
+
+instance VulkanProc
+           "vkGetPhysicalDeviceSparseImageFormatProperties2"
+         where
+        type VkProcType "vkGetPhysicalDeviceSparseImageFormatProperties2" =
+             HS_vkGetPhysicalDeviceSparseImageFormatProperties2
+        vkProcSymbol = _VkGetPhysicalDeviceSparseImageFormatProperties2
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr
+          = unwrapVkGetPhysicalDeviceSparseImageFormatProperties2
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe
+          = unwrapVkGetPhysicalDeviceSparseImageFormatProperties2Safe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2 ::
+        VkStructureType
+
+pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2 =
+        VkStructureType 1000059000
+
+pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2 ::
+        VkStructureType
+
+pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2 =
+        VkStructureType 1000059001
+
+pattern VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2 :: VkStructureType
+
+pattern VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2 =
+        VkStructureType 1000059002
+
+pattern VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2 ::
+        VkStructureType
+
+pattern VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2 =
+        VkStructureType 1000059003
+
+pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2 ::
+        VkStructureType
+
+pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2 =
+        VkStructureType 1000059004
+
+pattern VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2 ::
+        VkStructureType
+
+pattern VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2 =
+        VkStructureType 1000059005
+
+pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2 ::
+        VkStructureType
+
+pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2 =
+        VkStructureType 1000059006
+
+pattern VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2 ::
+        VkStructureType
+
+pattern VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2 =
+        VkStructureType 1000059007
+
+pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2
+        :: VkStructureType
+
+pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2
+        = VkStructureType 1000059008
+
+pattern VkTrimCommandPool :: CString
+
+pattern VkTrimCommandPool <- (is_VkTrimCommandPool -> True)
+  where VkTrimCommandPool = _VkTrimCommandPool
+
+{-# INLINE _VkTrimCommandPool #-}
+
+_VkTrimCommandPool :: CString
+_VkTrimCommandPool = Ptr "vkTrimCommandPool\NUL"#
+
+{-# INLINE is_VkTrimCommandPool #-}
+
+is_VkTrimCommandPool :: CString -> Bool
+is_VkTrimCommandPool = (EQ ==) . cmpCStrings _VkTrimCommandPool
+
+type VkTrimCommandPool = "vkTrimCommandPool"
+
+-- |
+-- > void vkTrimCommandPool
+-- >     ( VkDevice device
+-- >     , VkCommandPool commandPool
+-- >     , VkCommandPoolTrimFlags flags
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkTrimCommandPool vkTrimCommandPool registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myTrimCommandPool <- vkGetDeviceProc @VkTrimCommandPool vkDevice
+--
+-- or less efficient:
+--
+-- > myTrimCommandPool <- vkGetProc @VkTrimCommandPool
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall unsafe "vkTrimCommandPool" vkTrimCommandPool
+               :: VkDevice -- ^ device
+                           -> VkCommandPool -- ^ commandPool
+                                            -> VkCommandPoolTrimFlags -- ^ flags
+                                                                      -> IO ()
+
+#else
+vkTrimCommandPool ::
+                  VkDevice -- ^ device
+                           -> VkCommandPool -- ^ commandPool
+                                            -> VkCommandPoolTrimFlags -- ^ flags
+                                                                      -> IO ()
+vkTrimCommandPool
+  = unsafeDupablePerformIO (vkGetProc @VkTrimCommandPool)
+
+{-# NOINLINE vkTrimCommandPool #-}
+#endif
+
+-- |
+-- > void vkTrimCommandPool
+-- >     ( VkDevice device
+-- >     , VkCommandPool commandPool
+-- >     , VkCommandPoolTrimFlags flags
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkTrimCommandPool vkTrimCommandPool registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myTrimCommandPool <- vkGetDeviceProc @VkTrimCommandPool vkDevice
+--
+-- or less efficient:
+--
+-- > myTrimCommandPool <- vkGetProc @VkTrimCommandPool
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall safe "vkTrimCommandPool" vkTrimCommandPoolSafe
+               :: VkDevice -- ^ device
+                           -> VkCommandPool -- ^ commandPool
+                                            -> VkCommandPoolTrimFlags -- ^ flags
+                                                                      -> IO ()
+
+#else
+vkTrimCommandPoolSafe ::
+                      VkDevice -- ^ device
+                               -> VkCommandPool -- ^ commandPool
+                                                -> VkCommandPoolTrimFlags -- ^ flags
+                                                                          -> IO ()
+vkTrimCommandPoolSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkTrimCommandPool)
+
+{-# NOINLINE vkTrimCommandPoolSafe #-}
+#endif
+
+-- | > void vkTrimCommandPool
+--   >     ( VkDevice device
+--   >     , VkCommandPool commandPool
+--   >     , VkCommandPoolTrimFlags flags
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkTrimCommandPool vkTrimCommandPool registry at www.khronos.org>
+type HS_vkTrimCommandPool =
+     VkDevice -- ^ device
+              -> VkCommandPool -- ^ commandPool
+                               -> VkCommandPoolTrimFlags -- ^ flags
+                                                         -> IO ()
+
+type PFN_vkTrimCommandPool = FunPtr HS_vkTrimCommandPool
+
+foreign import ccall unsafe "dynamic" unwrapVkTrimCommandPool ::
+               PFN_vkTrimCommandPool -> HS_vkTrimCommandPool
+
+foreign import ccall safe "dynamic" unwrapVkTrimCommandPoolSafe ::
+               PFN_vkTrimCommandPool -> HS_vkTrimCommandPool
+
+instance VulkanProc "vkTrimCommandPool" where
+        type VkProcType "vkTrimCommandPool" = HS_vkTrimCommandPool
+        vkProcSymbol = _VkTrimCommandPool
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkTrimCommandPool
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkTrimCommandPoolSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VK_ERROR_OUT_OF_POOL_MEMORY :: VkResult
+
+pattern VK_ERROR_OUT_OF_POOL_MEMORY = VkResult (-1000069000)
+
+-- | Format can be used as the source image of image transfer commands
+--
+--   bitpos = @14@
+pattern VK_FORMAT_FEATURE_TRANSFER_SRC_BIT ::
+        VkFormatFeatureFlagBits
+
+pattern VK_FORMAT_FEATURE_TRANSFER_SRC_BIT =
+        VkFormatFeatureFlagBits 16384
+
+-- | Format can be used as the destination image of image transfer commands
+--
+--   bitpos = @15@
+pattern VK_FORMAT_FEATURE_TRANSFER_DST_BIT ::
+        VkFormatFeatureFlagBits
+
+pattern VK_FORMAT_FEATURE_TRANSFER_DST_BIT =
+        VkFormatFeatureFlagBits 32768
+
+-- | The 3D image can be viewed as a 2D or 2D array image
+--
+--   bitpos = @5@
+pattern VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT ::
+        VkImageCreateFlagBits
+
+pattern VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT =
+        VkImageCreateFlagBits 32
+
+-- | bitpos = @7@
+pattern VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT ::
+        VkImageCreateFlagBits
+
+pattern VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT =
+        VkImageCreateFlagBits 128
+
+-- | bitpos = @8@
+pattern VK_IMAGE_CREATE_EXTENDED_USAGE_BIT :: VkImageCreateFlagBits
+
+pattern VK_IMAGE_CREATE_EXTENDED_USAGE_BIT =
+        VkImageCreateFlagBits 256
+
+pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES
+        :: VkStructureType
+
+pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES
+        = VkStructureType 1000117000
+
+pattern VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO
+        :: VkStructureType
+
+pattern VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO
+        = VkStructureType 1000117001
+
+pattern VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO ::
+        VkStructureType
+
+pattern VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO =
+        VkStructureType 1000117002
+
+pattern VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO
+        :: VkStructureType
+
+pattern VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO
+        = VkStructureType 1000117003
+
+pattern VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL
+        :: VkImageLayout
+
+pattern VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL
+        = VkImageLayout 1000117000
+
+pattern VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL
+        :: VkImageLayout
+
+pattern VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL
+        = VkImageLayout 1000117001
+
+pattern VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO ::
+        VkStructureType
+
+pattern VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO =
+        VkStructureType 1000053000
+
+pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES ::
+        VkStructureType
+
+pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES =
+        VkStructureType 1000053001
+
+pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES ::
+        VkStructureType
+
+pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES =
+        VkStructureType 1000053002
+
+-- | bitpos = @1@
+pattern VK_DEPENDENCY_VIEW_LOCAL_BIT :: VkDependencyFlagBits
+
+pattern VK_DEPENDENCY_VIEW_LOCAL_BIT = VkDependencyFlagBits 2
+
+pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES
+        :: VkStructureType
+
+pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES
+        = VkStructureType 1000120000
+
+pattern VkGetDeviceQueue2 :: CString
+
+pattern VkGetDeviceQueue2 <- (is_VkGetDeviceQueue2 -> True)
+  where VkGetDeviceQueue2 = _VkGetDeviceQueue2
+
+{-# INLINE _VkGetDeviceQueue2 #-}
+
+_VkGetDeviceQueue2 :: CString
+_VkGetDeviceQueue2 = Ptr "vkGetDeviceQueue2\NUL"#
+
+{-# INLINE is_VkGetDeviceQueue2 #-}
+
+is_VkGetDeviceQueue2 :: CString -> Bool
+is_VkGetDeviceQueue2 = (EQ ==) . cmpCStrings _VkGetDeviceQueue2
+
+type VkGetDeviceQueue2 = "vkGetDeviceQueue2"
+
+-- |
+-- > void vkGetDeviceQueue2
+-- >     ( VkDevice device
+-- >     , const VkDeviceQueueInfo2* pQueueInfo
+-- >     , VkQueue* pQueue
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDeviceQueue2 vkGetDeviceQueue2 registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetDeviceQueue2 <- vkGetDeviceProc @VkGetDeviceQueue2 vkDevice
+--
+-- or less efficient:
+--
+-- > myGetDeviceQueue2 <- vkGetProc @VkGetDeviceQueue2
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall unsafe "vkGetDeviceQueue2" vkGetDeviceQueue2
+               :: VkDevice -- ^ device
+                           -> Ptr VkDeviceQueueInfo2 -- ^ pQueueInfo
+                                                     -> Ptr VkQueue -- ^ pQueue
+                                                                    -> IO ()
+
+#else
+vkGetDeviceQueue2 ::
+                  VkDevice -- ^ device
+                           -> Ptr VkDeviceQueueInfo2 -- ^ pQueueInfo
+                                                     -> Ptr VkQueue -- ^ pQueue
+                                                                    -> IO ()
+vkGetDeviceQueue2
+  = unsafeDupablePerformIO (vkGetProc @VkGetDeviceQueue2)
+
+{-# NOINLINE vkGetDeviceQueue2 #-}
+#endif
+
+-- |
+-- > void vkGetDeviceQueue2
+-- >     ( VkDevice device
+-- >     , const VkDeviceQueueInfo2* pQueueInfo
+-- >     , VkQueue* pQueue
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDeviceQueue2 vkGetDeviceQueue2 registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetDeviceQueue2 <- vkGetDeviceProc @VkGetDeviceQueue2 vkDevice
+--
+-- or less efficient:
+--
+-- > myGetDeviceQueue2 <- vkGetProc @VkGetDeviceQueue2
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall safe "vkGetDeviceQueue2" vkGetDeviceQueue2Safe
+               :: VkDevice -- ^ device
+                           -> Ptr VkDeviceQueueInfo2 -- ^ pQueueInfo
+                                                     -> Ptr VkQueue -- ^ pQueue
+                                                                    -> IO ()
+
+#else
+vkGetDeviceQueue2Safe ::
+                      VkDevice -- ^ device
+                               -> Ptr VkDeviceQueueInfo2 -- ^ pQueueInfo
+                                                         -> Ptr VkQueue -- ^ pQueue
+                                                                        -> IO ()
+vkGetDeviceQueue2Safe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkGetDeviceQueue2)
+
+{-# NOINLINE vkGetDeviceQueue2Safe #-}
+#endif
+
+-- | > void vkGetDeviceQueue2
+--   >     ( VkDevice device
+--   >     , const VkDeviceQueueInfo2* pQueueInfo
+--   >     , VkQueue* pQueue
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDeviceQueue2 vkGetDeviceQueue2 registry at www.khronos.org>
+type HS_vkGetDeviceQueue2 =
+     VkDevice -- ^ device
+              -> Ptr VkDeviceQueueInfo2 -- ^ pQueueInfo
+                                        -> Ptr VkQueue -- ^ pQueue
+                                                       -> IO ()
+
+type PFN_vkGetDeviceQueue2 = FunPtr HS_vkGetDeviceQueue2
+
+foreign import ccall unsafe "dynamic" unwrapVkGetDeviceQueue2 ::
+               PFN_vkGetDeviceQueue2 -> HS_vkGetDeviceQueue2
+
+foreign import ccall safe "dynamic" unwrapVkGetDeviceQueue2Safe ::
+               PFN_vkGetDeviceQueue2 -> HS_vkGetDeviceQueue2
+
+instance VulkanProc "vkGetDeviceQueue2" where
+        type VkProcType "vkGetDeviceQueue2" = HS_vkGetDeviceQueue2
+        vkProcSymbol = _VkGetDeviceQueue2
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkGetDeviceQueue2
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkGetDeviceQueue2Safe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO :: VkStructureType
+
+pattern VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO =
+        VkStructureType 1000145000
+
+pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES
+        :: VkStructureType
+
+pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES
+        = VkStructureType 1000145001
+
+pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES
+        :: VkStructureType
+
+pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES
+        = VkStructureType 1000145002
+
+pattern VK_STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2 :: VkStructureType
+
+pattern VK_STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2 =
+        VkStructureType 1000145003
+
+-- | Queues may support protected operations
+--
+--   bitpos = @4@
+pattern VK_QUEUE_PROTECTED_BIT :: VkQueueFlagBits
+
+pattern VK_QUEUE_PROTECTED_BIT = VkQueueFlagBits 16
+
+-- | Queue is a protected-capable device queue
+--
+--   bitpos = @0@
+pattern VK_DEVICE_QUEUE_CREATE_PROTECTED_BIT ::
+        VkDeviceQueueCreateFlagBits
+
+pattern VK_DEVICE_QUEUE_CREATE_PROTECTED_BIT =
+        VkDeviceQueueCreateFlagBits 1
+
+-- | Memory is protected
+--
+--   bitpos = @5@
+pattern VK_MEMORY_PROPERTY_PROTECTED_BIT ::
+        VkMemoryPropertyFlagBits
+
+pattern VK_MEMORY_PROPERTY_PROTECTED_BIT =
+        VkMemoryPropertyFlagBits 32
+
+-- | Buffer requires protected memory
+--
+--   bitpos = @3@
+pattern VK_BUFFER_CREATE_PROTECTED_BIT :: VkBufferCreateFlagBits
+
+pattern VK_BUFFER_CREATE_PROTECTED_BIT = VkBufferCreateFlagBits 8
+
+-- | Image requires protected memory
+--
+--   bitpos = @11@
+pattern VK_IMAGE_CREATE_PROTECTED_BIT :: VkImageCreateFlagBits
+
+pattern VK_IMAGE_CREATE_PROTECTED_BIT = VkImageCreateFlagBits 2048
+
+-- | Command buffers allocated from pool are protected command buffers
+--
+--   bitpos = @2@
+pattern VK_COMMAND_POOL_CREATE_PROTECTED_BIT ::
+        VkCommandPoolCreateFlagBits
+
+pattern VK_COMMAND_POOL_CREATE_PROTECTED_BIT =
+        VkCommandPoolCreateFlagBits 4
+
+pattern VkCreateSamplerYcbcrConversion :: CString
+
+pattern VkCreateSamplerYcbcrConversion <-
+        (is_VkCreateSamplerYcbcrConversion -> True)
+  where VkCreateSamplerYcbcrConversion
+          = _VkCreateSamplerYcbcrConversion
+
+{-# INLINE _VkCreateSamplerYcbcrConversion #-}
+
+_VkCreateSamplerYcbcrConversion :: CString
+_VkCreateSamplerYcbcrConversion
+  = Ptr "vkCreateSamplerYcbcrConversion\NUL"#
+
+{-# INLINE is_VkCreateSamplerYcbcrConversion #-}
+
+is_VkCreateSamplerYcbcrConversion :: CString -> Bool
+is_VkCreateSamplerYcbcrConversion
+  = (EQ ==) . cmpCStrings _VkCreateSamplerYcbcrConversion
+
+type VkCreateSamplerYcbcrConversion =
+     "vkCreateSamplerYcbcrConversion"
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkCreateSamplerYcbcrConversion
+-- >     ( VkDevice device
+-- >     , const VkSamplerYcbcrConversionCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkSamplerYcbcrConversion* pYcbcrConversion
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateSamplerYcbcrConversion vkCreateSamplerYcbcrConversion registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateSamplerYcbcrConversion <- vkGetDeviceProc @VkCreateSamplerYcbcrConversion vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateSamplerYcbcrConversion <- vkGetProc @VkCreateSamplerYcbcrConversion
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall unsafe "vkCreateSamplerYcbcrConversion"
+               vkCreateSamplerYcbcrConversion ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkSamplerYcbcrConversionCreateInfo -- ^ pCreateInfo
+                                                        ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             ->
+                     Ptr VkSamplerYcbcrConversion -- ^ pYcbcrConversion
+                                                  -> IO VkResult
+
+#else
+vkCreateSamplerYcbcrConversion ::
+                               VkDevice -- ^ device
+                                        ->
+                                 Ptr VkSamplerYcbcrConversionCreateInfo -- ^ pCreateInfo
+                                                                        ->
+                                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                             ->
+                                     Ptr VkSamplerYcbcrConversion -- ^ pYcbcrConversion
+                                                                  -> IO VkResult
+vkCreateSamplerYcbcrConversion
+  = unsafeDupablePerformIO
+      (vkGetProc @VkCreateSamplerYcbcrConversion)
+
+{-# NOINLINE vkCreateSamplerYcbcrConversion #-}
+#endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkCreateSamplerYcbcrConversion
+-- >     ( VkDevice device
+-- >     , const VkSamplerYcbcrConversionCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkSamplerYcbcrConversion* pYcbcrConversion
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateSamplerYcbcrConversion vkCreateSamplerYcbcrConversion registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateSamplerYcbcrConversion <- vkGetDeviceProc @VkCreateSamplerYcbcrConversion vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateSamplerYcbcrConversion <- vkGetProc @VkCreateSamplerYcbcrConversion
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall safe "vkCreateSamplerYcbcrConversion"
+               vkCreateSamplerYcbcrConversionSafe ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkSamplerYcbcrConversionCreateInfo -- ^ pCreateInfo
+                                                        ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             ->
+                     Ptr VkSamplerYcbcrConversion -- ^ pYcbcrConversion
+                                                  -> IO VkResult
+
+#else
+vkCreateSamplerYcbcrConversionSafe ::
+                                   VkDevice -- ^ device
+                                            ->
+                                     Ptr VkSamplerYcbcrConversionCreateInfo -- ^ pCreateInfo
+                                                                            ->
+                                       Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                 ->
+                                         Ptr VkSamplerYcbcrConversion -- ^ pYcbcrConversion
+                                                                      -> IO VkResult
+vkCreateSamplerYcbcrConversionSafe
+  = unsafeDupablePerformIO
+      (vkGetProcSafe @VkCreateSamplerYcbcrConversion)
+
+{-# NOINLINE vkCreateSamplerYcbcrConversionSafe #-}
+#endif
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+--   > VkResult vkCreateSamplerYcbcrConversion
+--   >     ( VkDevice device
+--   >     , const VkSamplerYcbcrConversionCreateInfo* pCreateInfo
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     , VkSamplerYcbcrConversion* pYcbcrConversion
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateSamplerYcbcrConversion vkCreateSamplerYcbcrConversion registry at www.khronos.org>
+type HS_vkCreateSamplerYcbcrConversion =
+     VkDevice -- ^ device
+              ->
+       Ptr VkSamplerYcbcrConversionCreateInfo -- ^ pCreateInfo
+                                              ->
+         Ptr VkAllocationCallbacks -- ^ pAllocator
+                                   ->
+           Ptr VkSamplerYcbcrConversion -- ^ pYcbcrConversion
+                                        -> IO VkResult
+
+type PFN_vkCreateSamplerYcbcrConversion =
+     FunPtr HS_vkCreateSamplerYcbcrConversion
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkCreateSamplerYcbcrConversion ::
+               PFN_vkCreateSamplerYcbcrConversion ->
+                 HS_vkCreateSamplerYcbcrConversion
+
+foreign import ccall safe "dynamic"
+               unwrapVkCreateSamplerYcbcrConversionSafe ::
+               PFN_vkCreateSamplerYcbcrConversion ->
+                 HS_vkCreateSamplerYcbcrConversion
+
+instance VulkanProc "vkCreateSamplerYcbcrConversion" where
+        type VkProcType "vkCreateSamplerYcbcrConversion" =
+             HS_vkCreateSamplerYcbcrConversion
+        vkProcSymbol = _VkCreateSamplerYcbcrConversion
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkCreateSamplerYcbcrConversion
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkCreateSamplerYcbcrConversionSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkDestroySamplerYcbcrConversion :: CString
+
+pattern VkDestroySamplerYcbcrConversion <-
+        (is_VkDestroySamplerYcbcrConversion -> True)
+  where VkDestroySamplerYcbcrConversion
+          = _VkDestroySamplerYcbcrConversion
+
+{-# INLINE _VkDestroySamplerYcbcrConversion #-}
+
+_VkDestroySamplerYcbcrConversion :: CString
+_VkDestroySamplerYcbcrConversion
+  = Ptr "vkDestroySamplerYcbcrConversion\NUL"#
+
+{-# INLINE is_VkDestroySamplerYcbcrConversion #-}
+
+is_VkDestroySamplerYcbcrConversion :: CString -> Bool
+is_VkDestroySamplerYcbcrConversion
+  = (EQ ==) . cmpCStrings _VkDestroySamplerYcbcrConversion
+
+type VkDestroySamplerYcbcrConversion =
+     "vkDestroySamplerYcbcrConversion"
+
+-- |
+-- > void vkDestroySamplerYcbcrConversion
+-- >     ( VkDevice device
+-- >     , VkSamplerYcbcrConversion ycbcrConversion
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroySamplerYcbcrConversion vkDestroySamplerYcbcrConversion registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroySamplerYcbcrConversion <- vkGetDeviceProc @VkDestroySamplerYcbcrConversion vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroySamplerYcbcrConversion <- vkGetProc @VkDestroySamplerYcbcrConversion
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall unsafe "vkDestroySamplerYcbcrConversion"
+               vkDestroySamplerYcbcrConversion ::
+               VkDevice -- ^ device
+                        ->
+                 VkSamplerYcbcrConversion -- ^ ycbcrConversion
+                                          -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                       -> IO ()
+
+#else
+vkDestroySamplerYcbcrConversion ::
+                                VkDevice -- ^ device
+                                         ->
+                                  VkSamplerYcbcrConversion -- ^ ycbcrConversion
+                                                           -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                                        -> IO ()
+vkDestroySamplerYcbcrConversion
+  = unsafeDupablePerformIO
+      (vkGetProc @VkDestroySamplerYcbcrConversion)
+
+{-# NOINLINE vkDestroySamplerYcbcrConversion #-}
+#endif
+
+-- |
+-- > void vkDestroySamplerYcbcrConversion
+-- >     ( VkDevice device
+-- >     , VkSamplerYcbcrConversion ycbcrConversion
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroySamplerYcbcrConversion vkDestroySamplerYcbcrConversion registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroySamplerYcbcrConversion <- vkGetDeviceProc @VkDestroySamplerYcbcrConversion vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroySamplerYcbcrConversion <- vkGetProc @VkDestroySamplerYcbcrConversion
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall safe "vkDestroySamplerYcbcrConversion"
+               vkDestroySamplerYcbcrConversionSafe ::
+               VkDevice -- ^ device
+                        ->
+                 VkSamplerYcbcrConversion -- ^ ycbcrConversion
+                                          -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                       -> IO ()
+
+#else
+vkDestroySamplerYcbcrConversionSafe ::
+                                    VkDevice -- ^ device
+                                             ->
+                                      VkSamplerYcbcrConversion -- ^ ycbcrConversion
+                                                               -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                                            -> IO ()
+vkDestroySamplerYcbcrConversionSafe
+  = unsafeDupablePerformIO
+      (vkGetProcSafe @VkDestroySamplerYcbcrConversion)
+
+{-# NOINLINE vkDestroySamplerYcbcrConversionSafe #-}
+#endif
+
+-- | > void vkDestroySamplerYcbcrConversion
+--   >     ( VkDevice device
+--   >     , VkSamplerYcbcrConversion ycbcrConversion
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroySamplerYcbcrConversion vkDestroySamplerYcbcrConversion registry at www.khronos.org>
+type HS_vkDestroySamplerYcbcrConversion =
+     VkDevice -- ^ device
+              ->
+       VkSamplerYcbcrConversion -- ^ ycbcrConversion
+                                -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                             -> IO ()
+
+type PFN_vkDestroySamplerYcbcrConversion =
+     FunPtr HS_vkDestroySamplerYcbcrConversion
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkDestroySamplerYcbcrConversion ::
+               PFN_vkDestroySamplerYcbcrConversion ->
+                 HS_vkDestroySamplerYcbcrConversion
+
+foreign import ccall safe "dynamic"
+               unwrapVkDestroySamplerYcbcrConversionSafe ::
+               PFN_vkDestroySamplerYcbcrConversion ->
+                 HS_vkDestroySamplerYcbcrConversion
+
+instance VulkanProc "vkDestroySamplerYcbcrConversion" where
+        type VkProcType "vkDestroySamplerYcbcrConversion" =
+             HS_vkDestroySamplerYcbcrConversion
+        vkProcSymbol = _VkDestroySamplerYcbcrConversion
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkDestroySamplerYcbcrConversion
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkDestroySamplerYcbcrConversionSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO ::
+        VkStructureType
+
+pattern VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO =
+        VkStructureType 1000156000
+
+pattern VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO ::
+        VkStructureType
+
+pattern VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO =
+        VkStructureType 1000156001
+
+pattern VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO ::
+        VkStructureType
+
+pattern VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO =
+        VkStructureType 1000156002
+
+pattern VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO ::
+        VkStructureType
+
+pattern VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO =
+        VkStructureType 1000156003
+
+pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES
+        :: VkStructureType
+
+pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES
+        = VkStructureType 1000156004
+
+pattern VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES
+        :: VkStructureType
+
+pattern VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES
+        = VkStructureType 1000156005
+
+pattern VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION :: VkObjectType
+
+pattern VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION =
+        VkObjectType 1000156000
+
+pattern VK_FORMAT_G8B8G8R8_422_UNORM :: VkFormat
+
+pattern VK_FORMAT_G8B8G8R8_422_UNORM = VkFormat 1000156000
+
+pattern VK_FORMAT_B8G8R8G8_422_UNORM :: VkFormat
+
+pattern VK_FORMAT_B8G8R8G8_422_UNORM = VkFormat 1000156001
+
+pattern VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM :: VkFormat
+
+pattern VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM = VkFormat 1000156002
+
+pattern VK_FORMAT_G8_B8R8_2PLANE_420_UNORM :: VkFormat
+
+pattern VK_FORMAT_G8_B8R8_2PLANE_420_UNORM = VkFormat 1000156003
+
+pattern VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM :: VkFormat
+
+pattern VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM = VkFormat 1000156004
+
+pattern VK_FORMAT_G8_B8R8_2PLANE_422_UNORM :: VkFormat
+
+pattern VK_FORMAT_G8_B8R8_2PLANE_422_UNORM = VkFormat 1000156005
+
+pattern VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM :: VkFormat
+
+pattern VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM = VkFormat 1000156006
+
+pattern VK_FORMAT_R10X6_UNORM_PACK16 :: VkFormat
+
+pattern VK_FORMAT_R10X6_UNORM_PACK16 = VkFormat 1000156007
+
+pattern VK_FORMAT_R10X6G10X6_UNORM_2PACK16 :: VkFormat
+
+pattern VK_FORMAT_R10X6G10X6_UNORM_2PACK16 = VkFormat 1000156008
+
+pattern VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16 :: VkFormat
+
+pattern VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16 =
+        VkFormat 1000156009
+
+pattern VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16 ::
+        VkFormat
+
+pattern VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16 =
+        VkFormat 1000156010
+
+pattern VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16 ::
+        VkFormat
+
+pattern VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16 =
+        VkFormat 1000156011
+
+pattern VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16 ::
+        VkFormat
+
+pattern VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16 =
+        VkFormat 1000156012
+
+pattern VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16 ::
+        VkFormat
+
+pattern VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16 =
+        VkFormat 1000156013
+
+pattern VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16 ::
+        VkFormat
+
+pattern VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16 =
+        VkFormat 1000156014
+
+pattern VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16 ::
+        VkFormat
+
+pattern VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16 =
+        VkFormat 1000156015
+
+pattern VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16 ::
+        VkFormat
+
+pattern VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16 =
+        VkFormat 1000156016
+
+pattern VK_FORMAT_R12X4_UNORM_PACK16 :: VkFormat
+
+pattern VK_FORMAT_R12X4_UNORM_PACK16 = VkFormat 1000156017
+
+pattern VK_FORMAT_R12X4G12X4_UNORM_2PACK16 :: VkFormat
+
+pattern VK_FORMAT_R12X4G12X4_UNORM_2PACK16 = VkFormat 1000156018
+
+pattern VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16 :: VkFormat
+
+pattern VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16 =
+        VkFormat 1000156019
+
+pattern VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16 ::
+        VkFormat
+
+pattern VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16 =
+        VkFormat 1000156020
+
+pattern VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16 ::
+        VkFormat
+
+pattern VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16 =
+        VkFormat 1000156021
+
+pattern VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16 ::
+        VkFormat
+
+pattern VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16 =
+        VkFormat 1000156022
+
+pattern VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16 ::
+        VkFormat
+
+pattern VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16 =
+        VkFormat 1000156023
+
+pattern VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16 ::
+        VkFormat
+
+pattern VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16 =
+        VkFormat 1000156024
+
+pattern VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16 ::
+        VkFormat
+
+pattern VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16 =
+        VkFormat 1000156025
+
+pattern VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16 ::
+        VkFormat
+
+pattern VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16 =
+        VkFormat 1000156026
+
+pattern VK_FORMAT_G16B16G16R16_422_UNORM :: VkFormat
+
+pattern VK_FORMAT_G16B16G16R16_422_UNORM = VkFormat 1000156027
+
+pattern VK_FORMAT_B16G16R16G16_422_UNORM :: VkFormat
+
+pattern VK_FORMAT_B16G16R16G16_422_UNORM = VkFormat 1000156028
+
+pattern VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM :: VkFormat
+
+pattern VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM =
+        VkFormat 1000156029
+
+pattern VK_FORMAT_G16_B16R16_2PLANE_420_UNORM :: VkFormat
+
+pattern VK_FORMAT_G16_B16R16_2PLANE_420_UNORM = VkFormat 1000156030
+
+pattern VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM :: VkFormat
+
+pattern VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM =
+        VkFormat 1000156031
+
+pattern VK_FORMAT_G16_B16R16_2PLANE_422_UNORM :: VkFormat
+
+pattern VK_FORMAT_G16_B16R16_2PLANE_422_UNORM = VkFormat 1000156032
+
+pattern VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM :: VkFormat
+
+pattern VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM =
+        VkFormat 1000156033
+
+-- | bitpos = @4@
+pattern VK_IMAGE_ASPECT_PLANE_0_BIT :: VkImageAspectFlagBits
+
+pattern VK_IMAGE_ASPECT_PLANE_0_BIT = VkImageAspectFlagBits 16
+
+-- | bitpos = @5@
+pattern VK_IMAGE_ASPECT_PLANE_1_BIT :: VkImageAspectFlagBits
+
+pattern VK_IMAGE_ASPECT_PLANE_1_BIT = VkImageAspectFlagBits 32
+
+-- | bitpos = @6@
+pattern VK_IMAGE_ASPECT_PLANE_2_BIT :: VkImageAspectFlagBits
+
+pattern VK_IMAGE_ASPECT_PLANE_2_BIT = VkImageAspectFlagBits 64
+
+-- | bitpos = @9@
+pattern VK_IMAGE_CREATE_DISJOINT_BIT :: VkImageCreateFlagBits
+
+pattern VK_IMAGE_CREATE_DISJOINT_BIT = VkImageCreateFlagBits 512
+
+-- | Format can have midpoint rather than cosited chroma samples
+--
+--   bitpos = @17@
+pattern VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT ::
+        VkFormatFeatureFlagBits
+
+pattern VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT =
+        VkFormatFeatureFlagBits 131072
+
+-- | Format can be used with linear filtering whilst color conversion is enabled
+--
+--   bitpos = @18@
+pattern VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT
+        :: VkFormatFeatureFlagBits
+
+pattern VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT
+        = VkFormatFeatureFlagBits 262144
+
+-- | Format can have different chroma, min and mag filters
+--
+--   bitpos = @19@
+pattern VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT
+        :: VkFormatFeatureFlagBits
+
+pattern VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT
+        = VkFormatFeatureFlagBits 524288
+
+-- | bitpos = @20@
+pattern VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT
+        :: VkFormatFeatureFlagBits
+
+pattern VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT
+        = VkFormatFeatureFlagBits 1048576
+
+-- | bitpos = @21@
+pattern VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT
+        :: VkFormatFeatureFlagBits
+
+pattern VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT
+        = VkFormatFeatureFlagBits 2097152
+
+-- | Format supports disjoint planes
+--
+--   bitpos = @22@
+pattern VK_FORMAT_FEATURE_DISJOINT_BIT :: VkFormatFeatureFlagBits
+
+pattern VK_FORMAT_FEATURE_DISJOINT_BIT =
+        VkFormatFeatureFlagBits 4194304
+
+-- | Format can have cosited rather than midpoint chroma samples
+--
+--   bitpos = @23@
+pattern VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT ::
+        VkFormatFeatureFlagBits
+
+pattern VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT =
+        VkFormatFeatureFlagBits 8388608
+
+pattern VkCreateDescriptorUpdateTemplate :: CString
+
+pattern VkCreateDescriptorUpdateTemplate <-
+        (is_VkCreateDescriptorUpdateTemplate -> True)
+  where VkCreateDescriptorUpdateTemplate
+          = _VkCreateDescriptorUpdateTemplate
+
+{-# INLINE _VkCreateDescriptorUpdateTemplate #-}
+
+_VkCreateDescriptorUpdateTemplate :: CString
+_VkCreateDescriptorUpdateTemplate
+  = Ptr "vkCreateDescriptorUpdateTemplate\NUL"#
+
+{-# INLINE is_VkCreateDescriptorUpdateTemplate #-}
+
+is_VkCreateDescriptorUpdateTemplate :: CString -> Bool
+is_VkCreateDescriptorUpdateTemplate
+  = (EQ ==) . cmpCStrings _VkCreateDescriptorUpdateTemplate
+
+type VkCreateDescriptorUpdateTemplate =
+     "vkCreateDescriptorUpdateTemplate"
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkCreateDescriptorUpdateTemplate
+-- >     ( VkDevice device
+-- >     , const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateDescriptorUpdateTemplate vkCreateDescriptorUpdateTemplate registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateDescriptorUpdateTemplate <- vkGetDeviceProc @VkCreateDescriptorUpdateTemplate vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateDescriptorUpdateTemplate <- vkGetProc @VkCreateDescriptorUpdateTemplate
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall unsafe "vkCreateDescriptorUpdateTemplate"
+               vkCreateDescriptorUpdateTemplate ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkDescriptorUpdateTemplateCreateInfo -- ^ pCreateInfo
+                                                          ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             ->
+                     Ptr VkDescriptorUpdateTemplate -- ^ pDescriptorUpdateTemplate
+                                                    -> IO VkResult
+
+#else
+vkCreateDescriptorUpdateTemplate ::
+                                 VkDevice -- ^ device
+                                          ->
+                                   Ptr VkDescriptorUpdateTemplateCreateInfo -- ^ pCreateInfo
+                                                                            ->
+                                     Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                               ->
+                                       Ptr VkDescriptorUpdateTemplate -- ^ pDescriptorUpdateTemplate
+                                                                      -> IO VkResult
+vkCreateDescriptorUpdateTemplate
+  = unsafeDupablePerformIO
+      (vkGetProc @VkCreateDescriptorUpdateTemplate)
+
+{-# NOINLINE vkCreateDescriptorUpdateTemplate #-}
+#endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkCreateDescriptorUpdateTemplate
+-- >     ( VkDevice device
+-- >     , const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateDescriptorUpdateTemplate vkCreateDescriptorUpdateTemplate registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateDescriptorUpdateTemplate <- vkGetDeviceProc @VkCreateDescriptorUpdateTemplate vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateDescriptorUpdateTemplate <- vkGetProc @VkCreateDescriptorUpdateTemplate
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall safe "vkCreateDescriptorUpdateTemplate"
+               vkCreateDescriptorUpdateTemplateSafe ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkDescriptorUpdateTemplateCreateInfo -- ^ pCreateInfo
+                                                          ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             ->
+                     Ptr VkDescriptorUpdateTemplate -- ^ pDescriptorUpdateTemplate
+                                                    -> IO VkResult
+
+#else
+vkCreateDescriptorUpdateTemplateSafe ::
+                                     VkDevice -- ^ device
+                                              ->
+                                       Ptr VkDescriptorUpdateTemplateCreateInfo -- ^ pCreateInfo
+                                                                                ->
+                                         Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                   ->
+                                           Ptr VkDescriptorUpdateTemplate -- ^ pDescriptorUpdateTemplate
+                                                                          -> IO VkResult
+vkCreateDescriptorUpdateTemplateSafe
+  = unsafeDupablePerformIO
+      (vkGetProcSafe @VkCreateDescriptorUpdateTemplate)
+
+{-# NOINLINE vkCreateDescriptorUpdateTemplateSafe #-}
+#endif
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+--   > VkResult vkCreateDescriptorUpdateTemplate
+--   >     ( VkDevice device
+--   >     , const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     , VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateDescriptorUpdateTemplate vkCreateDescriptorUpdateTemplate registry at www.khronos.org>
+type HS_vkCreateDescriptorUpdateTemplate =
+     VkDevice -- ^ device
+              ->
+       Ptr VkDescriptorUpdateTemplateCreateInfo -- ^ pCreateInfo
+                                                ->
+         Ptr VkAllocationCallbacks -- ^ pAllocator
+                                   ->
+           Ptr VkDescriptorUpdateTemplate -- ^ pDescriptorUpdateTemplate
+                                          -> IO VkResult
+
+type PFN_vkCreateDescriptorUpdateTemplate =
+     FunPtr HS_vkCreateDescriptorUpdateTemplate
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkCreateDescriptorUpdateTemplate ::
+               PFN_vkCreateDescriptorUpdateTemplate ->
+                 HS_vkCreateDescriptorUpdateTemplate
+
+foreign import ccall safe "dynamic"
+               unwrapVkCreateDescriptorUpdateTemplateSafe ::
+               PFN_vkCreateDescriptorUpdateTemplate ->
+                 HS_vkCreateDescriptorUpdateTemplate
+
+instance VulkanProc "vkCreateDescriptorUpdateTemplate" where
+        type VkProcType "vkCreateDescriptorUpdateTemplate" =
+             HS_vkCreateDescriptorUpdateTemplate
+        vkProcSymbol = _VkCreateDescriptorUpdateTemplate
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkCreateDescriptorUpdateTemplate
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkCreateDescriptorUpdateTemplateSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkDestroyDescriptorUpdateTemplate :: CString
+
+pattern VkDestroyDescriptorUpdateTemplate <-
+        (is_VkDestroyDescriptorUpdateTemplate -> True)
+  where VkDestroyDescriptorUpdateTemplate
+          = _VkDestroyDescriptorUpdateTemplate
+
+{-# INLINE _VkDestroyDescriptorUpdateTemplate #-}
+
+_VkDestroyDescriptorUpdateTemplate :: CString
+_VkDestroyDescriptorUpdateTemplate
+  = Ptr "vkDestroyDescriptorUpdateTemplate\NUL"#
+
+{-# INLINE is_VkDestroyDescriptorUpdateTemplate #-}
+
+is_VkDestroyDescriptorUpdateTemplate :: CString -> Bool
+is_VkDestroyDescriptorUpdateTemplate
+  = (EQ ==) . cmpCStrings _VkDestroyDescriptorUpdateTemplate
+
+type VkDestroyDescriptorUpdateTemplate =
+     "vkDestroyDescriptorUpdateTemplate"
+
+-- |
+-- > void vkDestroyDescriptorUpdateTemplate
+-- >     ( VkDevice device
+-- >     , VkDescriptorUpdateTemplate descriptorUpdateTemplate
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyDescriptorUpdateTemplate vkDestroyDescriptorUpdateTemplate registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroyDescriptorUpdateTemplate <- vkGetDeviceProc @VkDestroyDescriptorUpdateTemplate vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroyDescriptorUpdateTemplate <- vkGetProc @VkDestroyDescriptorUpdateTemplate
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall unsafe "vkDestroyDescriptorUpdateTemplate"
+               vkDestroyDescriptorUpdateTemplate ::
+               VkDevice -- ^ device
+                        ->
+                 VkDescriptorUpdateTemplate -- ^ descriptorUpdateTemplate
+                                            -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                         -> IO ()
+
+#else
+vkDestroyDescriptorUpdateTemplate ::
+                                  VkDevice -- ^ device
+                                           ->
+                                    VkDescriptorUpdateTemplate -- ^ descriptorUpdateTemplate
+                                                               -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                                            -> IO ()
+vkDestroyDescriptorUpdateTemplate
+  = unsafeDupablePerformIO
+      (vkGetProc @VkDestroyDescriptorUpdateTemplate)
+
+{-# NOINLINE vkDestroyDescriptorUpdateTemplate #-}
+#endif
+
+-- |
+-- > void vkDestroyDescriptorUpdateTemplate
+-- >     ( VkDevice device
+-- >     , VkDescriptorUpdateTemplate descriptorUpdateTemplate
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyDescriptorUpdateTemplate vkDestroyDescriptorUpdateTemplate registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroyDescriptorUpdateTemplate <- vkGetDeviceProc @VkDestroyDescriptorUpdateTemplate vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroyDescriptorUpdateTemplate <- vkGetProc @VkDestroyDescriptorUpdateTemplate
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall safe "vkDestroyDescriptorUpdateTemplate"
+               vkDestroyDescriptorUpdateTemplateSafe ::
+               VkDevice -- ^ device
+                        ->
+                 VkDescriptorUpdateTemplate -- ^ descriptorUpdateTemplate
+                                            -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                         -> IO ()
+
+#else
+vkDestroyDescriptorUpdateTemplateSafe ::
+                                      VkDevice -- ^ device
+                                               ->
+                                        VkDescriptorUpdateTemplate -- ^ descriptorUpdateTemplate
+                                                                   ->
+                                          Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                    -> IO ()
+vkDestroyDescriptorUpdateTemplateSafe
+  = unsafeDupablePerformIO
+      (vkGetProcSafe @VkDestroyDescriptorUpdateTemplate)
+
+{-# NOINLINE vkDestroyDescriptorUpdateTemplateSafe #-}
+#endif
+
+-- | > void vkDestroyDescriptorUpdateTemplate
+--   >     ( VkDevice device
+--   >     , VkDescriptorUpdateTemplate descriptorUpdateTemplate
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyDescriptorUpdateTemplate vkDestroyDescriptorUpdateTemplate registry at www.khronos.org>
+type HS_vkDestroyDescriptorUpdateTemplate =
+     VkDevice -- ^ device
+              ->
+       VkDescriptorUpdateTemplate -- ^ descriptorUpdateTemplate
+                                  -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                               -> IO ()
+
+type PFN_vkDestroyDescriptorUpdateTemplate =
+     FunPtr HS_vkDestroyDescriptorUpdateTemplate
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkDestroyDescriptorUpdateTemplate ::
+               PFN_vkDestroyDescriptorUpdateTemplate ->
+                 HS_vkDestroyDescriptorUpdateTemplate
+
+foreign import ccall safe "dynamic"
+               unwrapVkDestroyDescriptorUpdateTemplateSafe ::
+               PFN_vkDestroyDescriptorUpdateTemplate ->
+                 HS_vkDestroyDescriptorUpdateTemplate
+
+instance VulkanProc "vkDestroyDescriptorUpdateTemplate" where
+        type VkProcType "vkDestroyDescriptorUpdateTemplate" =
+             HS_vkDestroyDescriptorUpdateTemplate
+        vkProcSymbol = _VkDestroyDescriptorUpdateTemplate
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkDestroyDescriptorUpdateTemplate
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkDestroyDescriptorUpdateTemplateSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkUpdateDescriptorSetWithTemplate :: CString
+
+pattern VkUpdateDescriptorSetWithTemplate <-
+        (is_VkUpdateDescriptorSetWithTemplate -> True)
+  where VkUpdateDescriptorSetWithTemplate
+          = _VkUpdateDescriptorSetWithTemplate
+
+{-# INLINE _VkUpdateDescriptorSetWithTemplate #-}
+
+_VkUpdateDescriptorSetWithTemplate :: CString
+_VkUpdateDescriptorSetWithTemplate
+  = Ptr "vkUpdateDescriptorSetWithTemplate\NUL"#
+
+{-# INLINE is_VkUpdateDescriptorSetWithTemplate #-}
+
+is_VkUpdateDescriptorSetWithTemplate :: CString -> Bool
+is_VkUpdateDescriptorSetWithTemplate
+  = (EQ ==) . cmpCStrings _VkUpdateDescriptorSetWithTemplate
+
+type VkUpdateDescriptorSetWithTemplate =
+     "vkUpdateDescriptorSetWithTemplate"
+
+-- |
+-- > void vkUpdateDescriptorSetWithTemplate
+-- >     ( VkDevice device
+-- >     , VkDescriptorSet descriptorSet
+-- >     , VkDescriptorUpdateTemplate descriptorUpdateTemplate
+-- >     , const void* pData
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkUpdateDescriptorSetWithTemplate vkUpdateDescriptorSetWithTemplate registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myUpdateDescriptorSetWithTemplate <- vkGetDeviceProc @VkUpdateDescriptorSetWithTemplate vkDevice
+--
+-- or less efficient:
+--
+-- > myUpdateDescriptorSetWithTemplate <- vkGetProc @VkUpdateDescriptorSetWithTemplate
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall unsafe "vkUpdateDescriptorSetWithTemplate"
+               vkUpdateDescriptorSetWithTemplate ::
+               VkDevice -- ^ device
+                        ->
+                 VkDescriptorSet -- ^ descriptorSet
+                                 -> VkDescriptorUpdateTemplate -- ^ descriptorUpdateTemplate
+                                                               -> Ptr Void -- ^ pData
+                                                                           -> IO ()
+
+#else
+vkUpdateDescriptorSetWithTemplate ::
+                                  VkDevice -- ^ device
+                                           ->
+                                    VkDescriptorSet -- ^ descriptorSet
+                                                    ->
+                                      VkDescriptorUpdateTemplate -- ^ descriptorUpdateTemplate
+                                                                 -> Ptr Void -- ^ pData
+                                                                             -> IO ()
+vkUpdateDescriptorSetWithTemplate
+  = unsafeDupablePerformIO
+      (vkGetProc @VkUpdateDescriptorSetWithTemplate)
+
+{-# NOINLINE vkUpdateDescriptorSetWithTemplate #-}
+#endif
+
+-- |
+-- > void vkUpdateDescriptorSetWithTemplate
+-- >     ( VkDevice device
+-- >     , VkDescriptorSet descriptorSet
+-- >     , VkDescriptorUpdateTemplate descriptorUpdateTemplate
+-- >     , const void* pData
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkUpdateDescriptorSetWithTemplate vkUpdateDescriptorSetWithTemplate registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myUpdateDescriptorSetWithTemplate <- vkGetDeviceProc @VkUpdateDescriptorSetWithTemplate vkDevice
+--
+-- or less efficient:
+--
+-- > myUpdateDescriptorSetWithTemplate <- vkGetProc @VkUpdateDescriptorSetWithTemplate
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall safe "vkUpdateDescriptorSetWithTemplate"
+               vkUpdateDescriptorSetWithTemplateSafe ::
+               VkDevice -- ^ device
+                        ->
+                 VkDescriptorSet -- ^ descriptorSet
+                                 -> VkDescriptorUpdateTemplate -- ^ descriptorUpdateTemplate
+                                                               -> Ptr Void -- ^ pData
+                                                                           -> IO ()
+
+#else
+vkUpdateDescriptorSetWithTemplateSafe ::
+                                      VkDevice -- ^ device
+                                               ->
+                                        VkDescriptorSet -- ^ descriptorSet
+                                                        ->
+                                          VkDescriptorUpdateTemplate -- ^ descriptorUpdateTemplate
+                                                                     -> Ptr Void -- ^ pData
+                                                                                 -> IO ()
+vkUpdateDescriptorSetWithTemplateSafe
+  = unsafeDupablePerformIO
+      (vkGetProcSafe @VkUpdateDescriptorSetWithTemplate)
+
+{-# NOINLINE vkUpdateDescriptorSetWithTemplateSafe #-}
+#endif
+
+-- | > void vkUpdateDescriptorSetWithTemplate
+--   >     ( VkDevice device
+--   >     , VkDescriptorSet descriptorSet
+--   >     , VkDescriptorUpdateTemplate descriptorUpdateTemplate
+--   >     , const void* pData
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkUpdateDescriptorSetWithTemplate vkUpdateDescriptorSetWithTemplate registry at www.khronos.org>
+type HS_vkUpdateDescriptorSetWithTemplate =
+     VkDevice -- ^ device
+              ->
+       VkDescriptorSet -- ^ descriptorSet
+                       -> VkDescriptorUpdateTemplate -- ^ descriptorUpdateTemplate
+                                                     -> Ptr Void -- ^ pData
+                                                                 -> IO ()
+
+type PFN_vkUpdateDescriptorSetWithTemplate =
+     FunPtr HS_vkUpdateDescriptorSetWithTemplate
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkUpdateDescriptorSetWithTemplate ::
+               PFN_vkUpdateDescriptorSetWithTemplate ->
+                 HS_vkUpdateDescriptorSetWithTemplate
+
+foreign import ccall safe "dynamic"
+               unwrapVkUpdateDescriptorSetWithTemplateSafe ::
+               PFN_vkUpdateDescriptorSetWithTemplate ->
+                 HS_vkUpdateDescriptorSetWithTemplate
+
+instance VulkanProc "vkUpdateDescriptorSetWithTemplate" where
+        type VkProcType "vkUpdateDescriptorSetWithTemplate" =
+             HS_vkUpdateDescriptorSetWithTemplate
+        vkProcSymbol = _VkUpdateDescriptorSetWithTemplate
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkUpdateDescriptorSetWithTemplate
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkUpdateDescriptorSetWithTemplateSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO ::
+        VkStructureType
+
+pattern VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO =
+        VkStructureType 1000085000
+
+pattern VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE :: VkObjectType
+
+pattern VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE =
+        VkObjectType 1000085000
+
+pattern VkGetPhysicalDeviceExternalBufferProperties :: CString
+
+pattern VkGetPhysicalDeviceExternalBufferProperties <-
+        (is_VkGetPhysicalDeviceExternalBufferProperties -> True)
+  where VkGetPhysicalDeviceExternalBufferProperties
+          = _VkGetPhysicalDeviceExternalBufferProperties
+
+{-# INLINE _VkGetPhysicalDeviceExternalBufferProperties #-}
+
+_VkGetPhysicalDeviceExternalBufferProperties :: CString
+_VkGetPhysicalDeviceExternalBufferProperties
+  = Ptr "vkGetPhysicalDeviceExternalBufferProperties\NUL"#
+
+{-# INLINE is_VkGetPhysicalDeviceExternalBufferProperties #-}
+
+is_VkGetPhysicalDeviceExternalBufferProperties :: CString -> Bool
+is_VkGetPhysicalDeviceExternalBufferProperties
+  = (EQ ==) .
+      cmpCStrings _VkGetPhysicalDeviceExternalBufferProperties
+
+type VkGetPhysicalDeviceExternalBufferProperties =
+     "vkGetPhysicalDeviceExternalBufferProperties"
+
+-- |
+-- > void vkGetPhysicalDeviceExternalBufferProperties
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo
+-- >     , VkExternalBufferProperties* pExternalBufferProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceExternalBufferProperties vkGetPhysicalDeviceExternalBufferProperties registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceExternalBufferProperties <- vkGetInstanceProc @VkGetPhysicalDeviceExternalBufferProperties vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceExternalBufferProperties <- vkGetProc @VkGetPhysicalDeviceExternalBufferProperties
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall unsafe
+               "vkGetPhysicalDeviceExternalBufferProperties"
+               vkGetPhysicalDeviceExternalBufferProperties ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                ->
+                 Ptr VkPhysicalDeviceExternalBufferInfo -- ^ pExternalBufferInfo
+                                                        ->
+                   Ptr VkExternalBufferProperties -- ^ pExternalBufferProperties
+                                                  -> IO ()
+
+#else
+vkGetPhysicalDeviceExternalBufferProperties ::
+                                            VkPhysicalDevice -- ^ physicalDevice
+                                                             ->
+                                              Ptr VkPhysicalDeviceExternalBufferInfo -- ^ pExternalBufferInfo
+                                                                                     ->
+                                                Ptr VkExternalBufferProperties -- ^ pExternalBufferProperties
+                                                                               -> IO ()
+vkGetPhysicalDeviceExternalBufferProperties
+  = unsafeDupablePerformIO
+      (vkGetProc @VkGetPhysicalDeviceExternalBufferProperties)
+
+{-# NOINLINE vkGetPhysicalDeviceExternalBufferProperties #-}
+#endif
+
+-- |
+-- > void vkGetPhysicalDeviceExternalBufferProperties
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo
+-- >     , VkExternalBufferProperties* pExternalBufferProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceExternalBufferProperties vkGetPhysicalDeviceExternalBufferProperties registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceExternalBufferProperties <- vkGetInstanceProc @VkGetPhysicalDeviceExternalBufferProperties vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceExternalBufferProperties <- vkGetProc @VkGetPhysicalDeviceExternalBufferProperties
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall safe
+               "vkGetPhysicalDeviceExternalBufferProperties"
+               vkGetPhysicalDeviceExternalBufferPropertiesSafe ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                ->
+                 Ptr VkPhysicalDeviceExternalBufferInfo -- ^ pExternalBufferInfo
+                                                        ->
+                   Ptr VkExternalBufferProperties -- ^ pExternalBufferProperties
+                                                  -> IO ()
+
+#else
+vkGetPhysicalDeviceExternalBufferPropertiesSafe ::
+                                                VkPhysicalDevice -- ^ physicalDevice
+                                                                 ->
+                                                  Ptr VkPhysicalDeviceExternalBufferInfo -- ^ pExternalBufferInfo
+                                                                                         ->
+                                                    Ptr VkExternalBufferProperties -- ^ pExternalBufferProperties
+                                                                                   -> IO ()
+vkGetPhysicalDeviceExternalBufferPropertiesSafe
+  = unsafeDupablePerformIO
+      (vkGetProcSafe @VkGetPhysicalDeviceExternalBufferProperties)
+
+{-# NOINLINE vkGetPhysicalDeviceExternalBufferPropertiesSafe #-}
+#endif
+
+-- | > void vkGetPhysicalDeviceExternalBufferProperties
+--   >     ( VkPhysicalDevice physicalDevice
+--   >     , const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo
+--   >     , VkExternalBufferProperties* pExternalBufferProperties
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceExternalBufferProperties vkGetPhysicalDeviceExternalBufferProperties registry at www.khronos.org>
+type HS_vkGetPhysicalDeviceExternalBufferProperties =
+     VkPhysicalDevice -- ^ physicalDevice
+                      ->
+       Ptr VkPhysicalDeviceExternalBufferInfo -- ^ pExternalBufferInfo
+                                              ->
+         Ptr VkExternalBufferProperties -- ^ pExternalBufferProperties
+                                        -> IO ()
+
+type PFN_vkGetPhysicalDeviceExternalBufferProperties =
+     FunPtr HS_vkGetPhysicalDeviceExternalBufferProperties
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkGetPhysicalDeviceExternalBufferProperties ::
+               PFN_vkGetPhysicalDeviceExternalBufferProperties ->
+                 HS_vkGetPhysicalDeviceExternalBufferProperties
+
+foreign import ccall safe "dynamic"
+               unwrapVkGetPhysicalDeviceExternalBufferPropertiesSafe ::
+               PFN_vkGetPhysicalDeviceExternalBufferProperties ->
+                 HS_vkGetPhysicalDeviceExternalBufferProperties
+
+instance VulkanProc "vkGetPhysicalDeviceExternalBufferProperties"
+         where
+        type VkProcType "vkGetPhysicalDeviceExternalBufferProperties" =
+             HS_vkGetPhysicalDeviceExternalBufferProperties
+        vkProcSymbol = _VkGetPhysicalDeviceExternalBufferProperties
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkGetPhysicalDeviceExternalBufferProperties
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe
+          = unwrapVkGetPhysicalDeviceExternalBufferPropertiesSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO
+        :: VkStructureType
+
+pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO
+        = VkStructureType 1000071000
+
+pattern VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES ::
+        VkStructureType
+
+pattern VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES =
+        VkStructureType 1000071001
+
+pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO ::
+        VkStructureType
+
+pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO =
+        VkStructureType 1000071002
+
+pattern VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES ::
+        VkStructureType
+
+pattern VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES =
+        VkStructureType 1000071003
+
+pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES ::
+        VkStructureType
+
+pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES =
+        VkStructureType 1000071004
+
+pattern VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO ::
+        VkStructureType
+
+pattern VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO =
+        VkStructureType 1000072000
+
+pattern VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO ::
+        VkStructureType
+
+pattern VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO =
+        VkStructureType 1000072001
+
+pattern VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO ::
+        VkStructureType
+
+pattern VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO =
+        VkStructureType 1000072002
+
+pattern VK_ERROR_INVALID_EXTERNAL_HANDLE :: VkResult
+
+pattern VK_ERROR_INVALID_EXTERNAL_HANDLE = VkResult (-1000072003)
+
+pattern VkGetPhysicalDeviceExternalFenceProperties :: CString
+
+pattern VkGetPhysicalDeviceExternalFenceProperties <-
+        (is_VkGetPhysicalDeviceExternalFenceProperties -> True)
+  where VkGetPhysicalDeviceExternalFenceProperties
+          = _VkGetPhysicalDeviceExternalFenceProperties
+
+{-# INLINE _VkGetPhysicalDeviceExternalFenceProperties #-}
+
+_VkGetPhysicalDeviceExternalFenceProperties :: CString
+_VkGetPhysicalDeviceExternalFenceProperties
+  = Ptr "vkGetPhysicalDeviceExternalFenceProperties\NUL"#
+
+{-# INLINE is_VkGetPhysicalDeviceExternalFenceProperties #-}
+
+is_VkGetPhysicalDeviceExternalFenceProperties :: CString -> Bool
+is_VkGetPhysicalDeviceExternalFenceProperties
+  = (EQ ==) . cmpCStrings _VkGetPhysicalDeviceExternalFenceProperties
+
+type VkGetPhysicalDeviceExternalFenceProperties =
+     "vkGetPhysicalDeviceExternalFenceProperties"
+
+-- |
+-- > void vkGetPhysicalDeviceExternalFenceProperties
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo
+-- >     , VkExternalFenceProperties* pExternalFenceProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceExternalFenceProperties vkGetPhysicalDeviceExternalFenceProperties registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceExternalFenceProperties <- vkGetInstanceProc @VkGetPhysicalDeviceExternalFenceProperties vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceExternalFenceProperties <- vkGetProc @VkGetPhysicalDeviceExternalFenceProperties
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall unsafe
+               "vkGetPhysicalDeviceExternalFenceProperties"
+               vkGetPhysicalDeviceExternalFenceProperties ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                ->
+                 Ptr VkPhysicalDeviceExternalFenceInfo -- ^ pExternalFenceInfo
+                                                       ->
+                   Ptr VkExternalFenceProperties -- ^ pExternalFenceProperties
+                                                 -> IO ()
+
+#else
+vkGetPhysicalDeviceExternalFenceProperties ::
+                                           VkPhysicalDevice -- ^ physicalDevice
+                                                            ->
+                                             Ptr VkPhysicalDeviceExternalFenceInfo -- ^ pExternalFenceInfo
+                                                                                   ->
+                                               Ptr VkExternalFenceProperties -- ^ pExternalFenceProperties
+                                                                             -> IO ()
+vkGetPhysicalDeviceExternalFenceProperties
+  = unsafeDupablePerformIO
+      (vkGetProc @VkGetPhysicalDeviceExternalFenceProperties)
+
+{-# NOINLINE vkGetPhysicalDeviceExternalFenceProperties #-}
+#endif
+
+-- |
+-- > void vkGetPhysicalDeviceExternalFenceProperties
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo
+-- >     , VkExternalFenceProperties* pExternalFenceProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceExternalFenceProperties vkGetPhysicalDeviceExternalFenceProperties registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceExternalFenceProperties <- vkGetInstanceProc @VkGetPhysicalDeviceExternalFenceProperties vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceExternalFenceProperties <- vkGetProc @VkGetPhysicalDeviceExternalFenceProperties
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall safe
+               "vkGetPhysicalDeviceExternalFenceProperties"
+               vkGetPhysicalDeviceExternalFencePropertiesSafe ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                ->
+                 Ptr VkPhysicalDeviceExternalFenceInfo -- ^ pExternalFenceInfo
+                                                       ->
+                   Ptr VkExternalFenceProperties -- ^ pExternalFenceProperties
+                                                 -> IO ()
+
+#else
+vkGetPhysicalDeviceExternalFencePropertiesSafe ::
+                                               VkPhysicalDevice -- ^ physicalDevice
+                                                                ->
+                                                 Ptr VkPhysicalDeviceExternalFenceInfo -- ^ pExternalFenceInfo
+                                                                                       ->
+                                                   Ptr VkExternalFenceProperties -- ^ pExternalFenceProperties
+                                                                                 -> IO ()
+vkGetPhysicalDeviceExternalFencePropertiesSafe
+  = unsafeDupablePerformIO
+      (vkGetProcSafe @VkGetPhysicalDeviceExternalFenceProperties)
+
+{-# NOINLINE vkGetPhysicalDeviceExternalFencePropertiesSafe #-}
+#endif
+
+-- | > void vkGetPhysicalDeviceExternalFenceProperties
+--   >     ( VkPhysicalDevice physicalDevice
+--   >     , const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo
+--   >     , VkExternalFenceProperties* pExternalFenceProperties
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceExternalFenceProperties vkGetPhysicalDeviceExternalFenceProperties registry at www.khronos.org>
+type HS_vkGetPhysicalDeviceExternalFenceProperties =
+     VkPhysicalDevice -- ^ physicalDevice
+                      ->
+       Ptr VkPhysicalDeviceExternalFenceInfo -- ^ pExternalFenceInfo
+                                             ->
+         Ptr VkExternalFenceProperties -- ^ pExternalFenceProperties
+                                       -> IO ()
+
+type PFN_vkGetPhysicalDeviceExternalFenceProperties =
+     FunPtr HS_vkGetPhysicalDeviceExternalFenceProperties
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkGetPhysicalDeviceExternalFenceProperties ::
+               PFN_vkGetPhysicalDeviceExternalFenceProperties ->
+                 HS_vkGetPhysicalDeviceExternalFenceProperties
+
+foreign import ccall safe "dynamic"
+               unwrapVkGetPhysicalDeviceExternalFencePropertiesSafe ::
+               PFN_vkGetPhysicalDeviceExternalFenceProperties ->
+                 HS_vkGetPhysicalDeviceExternalFenceProperties
+
+instance VulkanProc "vkGetPhysicalDeviceExternalFenceProperties"
+         where
+        type VkProcType "vkGetPhysicalDeviceExternalFenceProperties" =
+             HS_vkGetPhysicalDeviceExternalFenceProperties
+        vkProcSymbol = _VkGetPhysicalDeviceExternalFenceProperties
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkGetPhysicalDeviceExternalFenceProperties
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe
+          = unwrapVkGetPhysicalDeviceExternalFencePropertiesSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO ::
+        VkStructureType
+
+pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO =
+        VkStructureType 1000112000
+
+pattern VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES ::
+        VkStructureType
+
+pattern VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES =
+        VkStructureType 1000112001
+
+pattern VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO ::
+        VkStructureType
+
+pattern VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO =
+        VkStructureType 1000113000
+
+pattern VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO ::
+        VkStructureType
+
+pattern VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO =
+        VkStructureType 1000077000
+
+pattern VkGetPhysicalDeviceExternalSemaphoreProperties :: CString
+
+pattern VkGetPhysicalDeviceExternalSemaphoreProperties <-
+        (is_VkGetPhysicalDeviceExternalSemaphoreProperties -> True)
+  where VkGetPhysicalDeviceExternalSemaphoreProperties
+          = _VkGetPhysicalDeviceExternalSemaphoreProperties
+
+{-# INLINE _VkGetPhysicalDeviceExternalSemaphoreProperties #-}
+
+_VkGetPhysicalDeviceExternalSemaphoreProperties :: CString
+_VkGetPhysicalDeviceExternalSemaphoreProperties
+  = Ptr "vkGetPhysicalDeviceExternalSemaphoreProperties\NUL"#
+
+{-# INLINE is_VkGetPhysicalDeviceExternalSemaphoreProperties #-}
+
+is_VkGetPhysicalDeviceExternalSemaphoreProperties ::
+                                                  CString -> Bool
+is_VkGetPhysicalDeviceExternalSemaphoreProperties
+  = (EQ ==) .
+      cmpCStrings _VkGetPhysicalDeviceExternalSemaphoreProperties
+
+type VkGetPhysicalDeviceExternalSemaphoreProperties =
+     "vkGetPhysicalDeviceExternalSemaphoreProperties"
+
+-- |
+-- > void vkGetPhysicalDeviceExternalSemaphoreProperties
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo
+-- >     , VkExternalSemaphoreProperties* pExternalSemaphoreProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceExternalSemaphoreProperties vkGetPhysicalDeviceExternalSemaphoreProperties registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceExternalSemaphoreProperties <- vkGetInstanceProc @VkGetPhysicalDeviceExternalSemaphoreProperties vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceExternalSemaphoreProperties <- vkGetProc @VkGetPhysicalDeviceExternalSemaphoreProperties
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall unsafe
+               "vkGetPhysicalDeviceExternalSemaphoreProperties"
+               vkGetPhysicalDeviceExternalSemaphoreProperties ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                ->
+                 Ptr VkPhysicalDeviceExternalSemaphoreInfo -- ^ pExternalSemaphoreInfo
+                                                           ->
+                   Ptr VkExternalSemaphoreProperties -- ^ pExternalSemaphoreProperties
+                                                     -> IO ()
+
+#else
+vkGetPhysicalDeviceExternalSemaphoreProperties ::
+                                               VkPhysicalDevice -- ^ physicalDevice
+                                                                ->
+                                                 Ptr VkPhysicalDeviceExternalSemaphoreInfo -- ^ pExternalSemaphoreInfo
+                                                                                           ->
+                                                   Ptr VkExternalSemaphoreProperties -- ^ pExternalSemaphoreProperties
+                                                                                     -> IO ()
+vkGetPhysicalDeviceExternalSemaphoreProperties
+  = unsafeDupablePerformIO
+      (vkGetProc @VkGetPhysicalDeviceExternalSemaphoreProperties)
+
+{-# NOINLINE vkGetPhysicalDeviceExternalSemaphoreProperties #-}
+#endif
+
+-- |
+-- > void vkGetPhysicalDeviceExternalSemaphoreProperties
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo
+-- >     , VkExternalSemaphoreProperties* pExternalSemaphoreProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceExternalSemaphoreProperties vkGetPhysicalDeviceExternalSemaphoreProperties registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceExternalSemaphoreProperties <- vkGetInstanceProc @VkGetPhysicalDeviceExternalSemaphoreProperties vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceExternalSemaphoreProperties <- vkGetProc @VkGetPhysicalDeviceExternalSemaphoreProperties
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall safe
+               "vkGetPhysicalDeviceExternalSemaphoreProperties"
+               vkGetPhysicalDeviceExternalSemaphorePropertiesSafe ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                ->
+                 Ptr VkPhysicalDeviceExternalSemaphoreInfo -- ^ pExternalSemaphoreInfo
+                                                           ->
+                   Ptr VkExternalSemaphoreProperties -- ^ pExternalSemaphoreProperties
+                                                     -> IO ()
+
+#else
+vkGetPhysicalDeviceExternalSemaphorePropertiesSafe ::
+                                                   VkPhysicalDevice -- ^ physicalDevice
+                                                                    ->
+                                                     Ptr VkPhysicalDeviceExternalSemaphoreInfo -- ^ pExternalSemaphoreInfo
+                                                                                               ->
+                                                       Ptr VkExternalSemaphoreProperties -- ^ pExternalSemaphoreProperties
+                                                                                         -> IO ()
+vkGetPhysicalDeviceExternalSemaphorePropertiesSafe
+  = unsafeDupablePerformIO
+      (vkGetProcSafe @VkGetPhysicalDeviceExternalSemaphoreProperties)
+
+{-# NOINLINE vkGetPhysicalDeviceExternalSemaphorePropertiesSafe #-}
+#endif
+
+-- | > void vkGetPhysicalDeviceExternalSemaphoreProperties
+--   >     ( VkPhysicalDevice physicalDevice
+--   >     , const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo
+--   >     , VkExternalSemaphoreProperties* pExternalSemaphoreProperties
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceExternalSemaphoreProperties vkGetPhysicalDeviceExternalSemaphoreProperties registry at www.khronos.org>
+type HS_vkGetPhysicalDeviceExternalSemaphoreProperties =
+     VkPhysicalDevice -- ^ physicalDevice
+                      ->
+       Ptr VkPhysicalDeviceExternalSemaphoreInfo -- ^ pExternalSemaphoreInfo
+                                                 ->
+         Ptr VkExternalSemaphoreProperties -- ^ pExternalSemaphoreProperties
+                                           -> IO ()
+
+type PFN_vkGetPhysicalDeviceExternalSemaphoreProperties =
+     FunPtr HS_vkGetPhysicalDeviceExternalSemaphoreProperties
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkGetPhysicalDeviceExternalSemaphoreProperties ::
+               PFN_vkGetPhysicalDeviceExternalSemaphoreProperties ->
+                 HS_vkGetPhysicalDeviceExternalSemaphoreProperties
+
+foreign import ccall safe "dynamic"
+               unwrapVkGetPhysicalDeviceExternalSemaphorePropertiesSafe ::
+               PFN_vkGetPhysicalDeviceExternalSemaphoreProperties ->
+                 HS_vkGetPhysicalDeviceExternalSemaphoreProperties
+
+instance VulkanProc
+           "vkGetPhysicalDeviceExternalSemaphoreProperties"
+         where
+        type VkProcType "vkGetPhysicalDeviceExternalSemaphoreProperties" =
+             HS_vkGetPhysicalDeviceExternalSemaphoreProperties
+        vkProcSymbol = _VkGetPhysicalDeviceExternalSemaphoreProperties
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr
+          = unwrapVkGetPhysicalDeviceExternalSemaphoreProperties
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe
+          = unwrapVkGetPhysicalDeviceExternalSemaphorePropertiesSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO
+        :: VkStructureType
+
+pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO =
+        VkStructureType 1000076000
+
+pattern VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES ::
+        VkStructureType
+
+pattern VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES =
+        VkStructureType 1000076001
+
+pattern VkGetDescriptorSetLayoutSupport :: CString
+
+pattern VkGetDescriptorSetLayoutSupport <-
+        (is_VkGetDescriptorSetLayoutSupport -> True)
+  where VkGetDescriptorSetLayoutSupport
+          = _VkGetDescriptorSetLayoutSupport
+
+{-# INLINE _VkGetDescriptorSetLayoutSupport #-}
+
+_VkGetDescriptorSetLayoutSupport :: CString
+_VkGetDescriptorSetLayoutSupport
+  = Ptr "vkGetDescriptorSetLayoutSupport\NUL"#
+
+{-# INLINE is_VkGetDescriptorSetLayoutSupport #-}
+
+is_VkGetDescriptorSetLayoutSupport :: CString -> Bool
+is_VkGetDescriptorSetLayoutSupport
+  = (EQ ==) . cmpCStrings _VkGetDescriptorSetLayoutSupport
+
+type VkGetDescriptorSetLayoutSupport =
+     "vkGetDescriptorSetLayoutSupport"
+
+-- |
+-- > void vkGetDescriptorSetLayoutSupport
+-- >     ( VkDevice device
+-- >     , const VkDescriptorSetLayoutCreateInfo* pCreateInfo
+-- >     , VkDescriptorSetLayoutSupport* pSupport
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDescriptorSetLayoutSupport vkGetDescriptorSetLayoutSupport registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetDescriptorSetLayoutSupport <- vkGetDeviceProc @VkGetDescriptorSetLayoutSupport vkDevice
+--
+-- or less efficient:
+--
+-- > myGetDescriptorSetLayoutSupport <- vkGetProc @VkGetDescriptorSetLayoutSupport
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall unsafe "vkGetDescriptorSetLayoutSupport"
+               vkGetDescriptorSetLayoutSupport ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkDescriptorSetLayoutCreateInfo -- ^ pCreateInfo
+                                                     ->
+                   Ptr VkDescriptorSetLayoutSupport -- ^ pSupport
+                                                    -> IO ()
+
+#else
+vkGetDescriptorSetLayoutSupport ::
+                                VkDevice -- ^ device
+                                         ->
+                                  Ptr VkDescriptorSetLayoutCreateInfo -- ^ pCreateInfo
+                                                                      ->
+                                    Ptr VkDescriptorSetLayoutSupport -- ^ pSupport
+                                                                     -> IO ()
+vkGetDescriptorSetLayoutSupport
+  = unsafeDupablePerformIO
+      (vkGetProc @VkGetDescriptorSetLayoutSupport)
+
+{-# NOINLINE vkGetDescriptorSetLayoutSupport #-}
+#endif
+
+-- |
+-- > void vkGetDescriptorSetLayoutSupport
+-- >     ( VkDevice device
+-- >     , const VkDescriptorSetLayoutCreateInfo* pCreateInfo
+-- >     , VkDescriptorSetLayoutSupport* pSupport
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDescriptorSetLayoutSupport vkGetDescriptorSetLayoutSupport registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetDescriptorSetLayoutSupport <- vkGetDeviceProc @VkGetDescriptorSetLayoutSupport vkDevice
+--
+-- or less efficient:
+--
+-- > myGetDescriptorSetLayoutSupport <- vkGetProc @VkGetDescriptorSetLayoutSupport
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall safe "vkGetDescriptorSetLayoutSupport"
+               vkGetDescriptorSetLayoutSupportSafe ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkDescriptorSetLayoutCreateInfo -- ^ pCreateInfo
+                                                     ->
+                   Ptr VkDescriptorSetLayoutSupport -- ^ pSupport
+                                                    -> IO ()
+
+#else
+vkGetDescriptorSetLayoutSupportSafe ::
+                                    VkDevice -- ^ device
+                                             ->
+                                      Ptr VkDescriptorSetLayoutCreateInfo -- ^ pCreateInfo
+                                                                          ->
+                                        Ptr VkDescriptorSetLayoutSupport -- ^ pSupport
+                                                                         -> IO ()
+vkGetDescriptorSetLayoutSupportSafe
+  = unsafeDupablePerformIO
+      (vkGetProcSafe @VkGetDescriptorSetLayoutSupport)
+
+{-# NOINLINE vkGetDescriptorSetLayoutSupportSafe #-}
+#endif
+
+-- | > void vkGetDescriptorSetLayoutSupport
+--   >     ( VkDevice device
+--   >     , const VkDescriptorSetLayoutCreateInfo* pCreateInfo
+--   >     , VkDescriptorSetLayoutSupport* pSupport
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDescriptorSetLayoutSupport vkGetDescriptorSetLayoutSupport registry at www.khronos.org>
+type HS_vkGetDescriptorSetLayoutSupport =
+     VkDevice -- ^ device
+              ->
+       Ptr VkDescriptorSetLayoutCreateInfo -- ^ pCreateInfo
+                                           ->
+         Ptr VkDescriptorSetLayoutSupport -- ^ pSupport
+                                          -> IO ()
+
+type PFN_vkGetDescriptorSetLayoutSupport =
+     FunPtr HS_vkGetDescriptorSetLayoutSupport
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkGetDescriptorSetLayoutSupport ::
+               PFN_vkGetDescriptorSetLayoutSupport ->
+                 HS_vkGetDescriptorSetLayoutSupport
+
+foreign import ccall safe "dynamic"
+               unwrapVkGetDescriptorSetLayoutSupportSafe ::
+               PFN_vkGetDescriptorSetLayoutSupport ->
+                 HS_vkGetDescriptorSetLayoutSupport
+
+instance VulkanProc "vkGetDescriptorSetLayoutSupport" where
+        type VkProcType "vkGetDescriptorSetLayoutSupport" =
+             HS_vkGetDescriptorSetLayoutSupport
+        vkProcSymbol = _VkGetDescriptorSetLayoutSupport
+
+        {-# INLINE vkProcSymbol #-}
+        unwrapVkProcPtr = unwrapVkGetDescriptorSetLayoutSupport
+
+        {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkGetDescriptorSetLayoutSupportSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES
         :: VkStructureType
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_AMD_buffer_marker.hs b/src-gen/Graphics/Vulkan/Ext/VK_AMD_buffer_marker.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_AMD_buffer_marker.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_AMD_buffer_marker.hs
@@ -87,9 +87,14 @@
 type PFN_vkCmdWriteBufferMarkerAMD =
      FunPtr HS_vkCmdWriteBufferMarkerAMD
 
-foreign import ccall "dynamic" unwrapVkCmdWriteBufferMarkerAMD ::
+foreign import ccall unsafe "dynamic"
+               unwrapVkCmdWriteBufferMarkerAMD ::
                PFN_vkCmdWriteBufferMarkerAMD -> HS_vkCmdWriteBufferMarkerAMD
 
+foreign import ccall safe "dynamic"
+               unwrapVkCmdWriteBufferMarkerAMDSafe ::
+               PFN_vkCmdWriteBufferMarkerAMD -> HS_vkCmdWriteBufferMarkerAMD
+
 instance VulkanProc "vkCmdWriteBufferMarkerAMD" where
         type VkProcType "vkCmdWriteBufferMarkerAMD" =
              HS_vkCmdWriteBufferMarkerAMD
@@ -99,6 +104,9 @@
         unwrapVkProcPtr = unwrapVkCmdWriteBufferMarkerAMD
 
         {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkCmdWriteBufferMarkerAMDSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VK_AMD_BUFFER_MARKER_SPEC_VERSION :: (Num a, Eq a) => a
 
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_AMD_draw_indirect_count.hs b/src-gen/Graphics/Vulkan/Ext/VK_AMD_draw_indirect_count.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_AMD_draw_indirect_count.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_AMD_draw_indirect_count.hs
@@ -93,9 +93,14 @@
 type PFN_vkCmdDrawIndirectCountAMD =
      FunPtr HS_vkCmdDrawIndirectCountAMD
 
-foreign import ccall "dynamic" unwrapVkCmdDrawIndirectCountAMD ::
+foreign import ccall unsafe "dynamic"
+               unwrapVkCmdDrawIndirectCountAMD ::
                PFN_vkCmdDrawIndirectCountAMD -> HS_vkCmdDrawIndirectCountAMD
 
+foreign import ccall safe "dynamic"
+               unwrapVkCmdDrawIndirectCountAMDSafe ::
+               PFN_vkCmdDrawIndirectCountAMD -> HS_vkCmdDrawIndirectCountAMD
+
 instance VulkanProc "vkCmdDrawIndirectCountAMD" where
         type VkProcType "vkCmdDrawIndirectCountAMD" =
              HS_vkCmdDrawIndirectCountAMD
@@ -105,7 +110,10 @@
         unwrapVkProcPtr = unwrapVkCmdDrawIndirectCountAMD
 
         {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkCmdDrawIndirectCountAMDSafe
 
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
 pattern VkCmdDrawIndexedIndirectCountAMD :: CString
 
 pattern VkCmdDrawIndexedIndirectCountAMD <-
@@ -161,11 +169,16 @@
 type PFN_vkCmdDrawIndexedIndirectCountAMD =
      FunPtr HS_vkCmdDrawIndexedIndirectCountAMD
 
-foreign import ccall "dynamic"
+foreign import ccall unsafe "dynamic"
                unwrapVkCmdDrawIndexedIndirectCountAMD ::
                PFN_vkCmdDrawIndexedIndirectCountAMD ->
                  HS_vkCmdDrawIndexedIndirectCountAMD
 
+foreign import ccall safe "dynamic"
+               unwrapVkCmdDrawIndexedIndirectCountAMDSafe ::
+               PFN_vkCmdDrawIndexedIndirectCountAMD ->
+                 HS_vkCmdDrawIndexedIndirectCountAMD
+
 instance VulkanProc "vkCmdDrawIndexedIndirectCountAMD" where
         type VkProcType "vkCmdDrawIndexedIndirectCountAMD" =
              HS_vkCmdDrawIndexedIndirectCountAMD
@@ -175,6 +188,9 @@
         unwrapVkProcPtr = unwrapVkCmdDrawIndexedIndirectCountAMD
 
         {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkCmdDrawIndexedIndirectCountAMDSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VK_AMD_DRAW_INDIRECT_COUNT_SPEC_VERSION :: (Num a, Eq a) =>
         a
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_AMD_shader_info.hs b/src-gen/Graphics/Vulkan/Ext/VK_AMD_shader_info.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_AMD_shader_info.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_AMD_shader_info.hs
@@ -89,9 +89,12 @@
 
 type PFN_vkGetShaderInfoAMD = FunPtr HS_vkGetShaderInfoAMD
 
-foreign import ccall "dynamic" unwrapVkGetShaderInfoAMD ::
+foreign import ccall unsafe "dynamic" unwrapVkGetShaderInfoAMD ::
                PFN_vkGetShaderInfoAMD -> HS_vkGetShaderInfoAMD
 
+foreign import ccall safe "dynamic" unwrapVkGetShaderInfoAMDSafe ::
+               PFN_vkGetShaderInfoAMD -> HS_vkGetShaderInfoAMD
+
 instance VulkanProc "vkGetShaderInfoAMD" where
         type VkProcType "vkGetShaderInfoAMD" = HS_vkGetShaderInfoAMD
         vkProcSymbol = _VkGetShaderInfoAMD
@@ -100,6 +103,9 @@
         unwrapVkProcPtr = unwrapVkGetShaderInfoAMD
 
         {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkGetShaderInfoAMDSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VK_AMD_SHADER_INFO_SPEC_VERSION :: (Num a, Eq a) => a
 
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_ANDROID_external_memory_android_hardware_buffer.hs b/src-gen/Graphics/Vulkan/Ext/VK_ANDROID_external_memory_android_hardware_buffer.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_ANDROID_external_memory_android_hardware_buffer.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_ANDROID_external_memory_android_hardware_buffer.hs
@@ -138,11 +138,16 @@
 type PFN_vkGetAndroidHardwareBufferPropertiesANDROID =
      FunPtr HS_vkGetAndroidHardwareBufferPropertiesANDROID
 
-foreign import ccall "dynamic"
+foreign import ccall unsafe "dynamic"
                unwrapVkGetAndroidHardwareBufferPropertiesANDROID ::
                PFN_vkGetAndroidHardwareBufferPropertiesANDROID ->
                  HS_vkGetAndroidHardwareBufferPropertiesANDROID
 
+foreign import ccall safe "dynamic"
+               unwrapVkGetAndroidHardwareBufferPropertiesANDROIDSafe ::
+               PFN_vkGetAndroidHardwareBufferPropertiesANDROID ->
+                 HS_vkGetAndroidHardwareBufferPropertiesANDROID
+
 instance VulkanProc "vkGetAndroidHardwareBufferPropertiesANDROID"
          where
         type VkProcType "vkGetAndroidHardwareBufferPropertiesANDROID" =
@@ -153,7 +158,11 @@
         unwrapVkProcPtr = unwrapVkGetAndroidHardwareBufferPropertiesANDROID
 
         {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe
+          = unwrapVkGetAndroidHardwareBufferPropertiesANDROIDSafe
 
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
 pattern VkGetMemoryAndroidHardwareBufferANDROID :: CString
 
 pattern VkGetMemoryAndroidHardwareBufferANDROID <-
@@ -198,11 +207,16 @@
 type PFN_vkGetMemoryAndroidHardwareBufferANDROID =
      FunPtr HS_vkGetMemoryAndroidHardwareBufferANDROID
 
-foreign import ccall "dynamic"
+foreign import ccall unsafe "dynamic"
                unwrapVkGetMemoryAndroidHardwareBufferANDROID ::
                PFN_vkGetMemoryAndroidHardwareBufferANDROID ->
                  HS_vkGetMemoryAndroidHardwareBufferANDROID
 
+foreign import ccall safe "dynamic"
+               unwrapVkGetMemoryAndroidHardwareBufferANDROIDSafe ::
+               PFN_vkGetMemoryAndroidHardwareBufferANDROID ->
+                 HS_vkGetMemoryAndroidHardwareBufferANDROID
+
 instance VulkanProc "vkGetMemoryAndroidHardwareBufferANDROID" where
         type VkProcType "vkGetMemoryAndroidHardwareBufferANDROID" =
              HS_vkGetMemoryAndroidHardwareBufferANDROID
@@ -212,6 +226,10 @@
         unwrapVkProcPtr = unwrapVkGetMemoryAndroidHardwareBufferANDROID
 
         {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe
+          = unwrapVkGetMemoryAndroidHardwareBufferANDROIDSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VK_ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_SPEC_VERSION
         :: (Num a, Eq a) => a
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_EXT_acquire_xlib_display.hs b/src-gen/Graphics/Vulkan/Ext/VK_EXT_acquire_xlib_display.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_EXT_acquire_xlib_display.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_EXT_acquire_xlib_display.hs
@@ -85,7 +85,11 @@
 type PFN_vkAcquireXlibDisplayEXT =
      FunPtr HS_vkAcquireXlibDisplayEXT
 
-foreign import ccall "dynamic" unwrapVkAcquireXlibDisplayEXT ::
+foreign import ccall unsafe "dynamic" unwrapVkAcquireXlibDisplayEXT
+               :: PFN_vkAcquireXlibDisplayEXT -> HS_vkAcquireXlibDisplayEXT
+
+foreign import ccall safe "dynamic"
+               unwrapVkAcquireXlibDisplayEXTSafe ::
                PFN_vkAcquireXlibDisplayEXT -> HS_vkAcquireXlibDisplayEXT
 
 instance VulkanProc "vkAcquireXlibDisplayEXT" where
@@ -97,7 +101,10 @@
         unwrapVkProcPtr = unwrapVkAcquireXlibDisplayEXT
 
         {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkAcquireXlibDisplayEXTSafe
 
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
 pattern VkGetRandROutputDisplayEXT :: CString
 
 pattern VkGetRandROutputDisplayEXT <-
@@ -138,9 +145,14 @@
 type PFN_vkGetRandROutputDisplayEXT =
      FunPtr HS_vkGetRandROutputDisplayEXT
 
-foreign import ccall "dynamic" unwrapVkGetRandROutputDisplayEXT ::
+foreign import ccall unsafe "dynamic"
+               unwrapVkGetRandROutputDisplayEXT ::
                PFN_vkGetRandROutputDisplayEXT -> HS_vkGetRandROutputDisplayEXT
 
+foreign import ccall safe "dynamic"
+               unwrapVkGetRandROutputDisplayEXTSafe ::
+               PFN_vkGetRandROutputDisplayEXT -> HS_vkGetRandROutputDisplayEXT
+
 instance VulkanProc "vkGetRandROutputDisplayEXT" where
         type VkProcType "vkGetRandROutputDisplayEXT" =
              HS_vkGetRandROutputDisplayEXT
@@ -150,6 +162,9 @@
         unwrapVkProcPtr = unwrapVkGetRandROutputDisplayEXT
 
         {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkGetRandROutputDisplayEXTSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VK_EXT_ACQUIRE_XLIB_DISPLAY_SPEC_VERSION ::
         (Num a, Eq a) => a
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_EXT_debug_marker.hs b/src-gen/Graphics/Vulkan/Ext/VK_EXT_debug_marker.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_EXT_debug_marker.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_EXT_debug_marker.hs
@@ -100,10 +100,14 @@
 type PFN_vkDebugMarkerSetObjectTagEXT =
      FunPtr HS_vkDebugMarkerSetObjectTagEXT
 
-foreign import ccall "dynamic" unwrapVkDebugMarkerSetObjectTagEXT
-               ::
+foreign import ccall unsafe "dynamic"
+               unwrapVkDebugMarkerSetObjectTagEXT ::
                PFN_vkDebugMarkerSetObjectTagEXT -> HS_vkDebugMarkerSetObjectTagEXT
 
+foreign import ccall safe "dynamic"
+               unwrapVkDebugMarkerSetObjectTagEXTSafe ::
+               PFN_vkDebugMarkerSetObjectTagEXT -> HS_vkDebugMarkerSetObjectTagEXT
+
 instance VulkanProc "vkDebugMarkerSetObjectTagEXT" where
         type VkProcType "vkDebugMarkerSetObjectTagEXT" =
              HS_vkDebugMarkerSetObjectTagEXT
@@ -113,7 +117,10 @@
         unwrapVkProcPtr = unwrapVkDebugMarkerSetObjectTagEXT
 
         {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkDebugMarkerSetObjectTagEXTSafe
 
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
 pattern VkDebugMarkerSetObjectNameEXT :: CString
 
 pattern VkDebugMarkerSetObjectNameEXT <-
@@ -154,11 +161,16 @@
 type PFN_vkDebugMarkerSetObjectNameEXT =
      FunPtr HS_vkDebugMarkerSetObjectNameEXT
 
-foreign import ccall "dynamic" unwrapVkDebugMarkerSetObjectNameEXT
-               ::
+foreign import ccall unsafe "dynamic"
+               unwrapVkDebugMarkerSetObjectNameEXT ::
                PFN_vkDebugMarkerSetObjectNameEXT ->
                  HS_vkDebugMarkerSetObjectNameEXT
 
+foreign import ccall safe "dynamic"
+               unwrapVkDebugMarkerSetObjectNameEXTSafe ::
+               PFN_vkDebugMarkerSetObjectNameEXT ->
+                 HS_vkDebugMarkerSetObjectNameEXT
+
 instance VulkanProc "vkDebugMarkerSetObjectNameEXT" where
         type VkProcType "vkDebugMarkerSetObjectNameEXT" =
              HS_vkDebugMarkerSetObjectNameEXT
@@ -168,7 +180,10 @@
         unwrapVkProcPtr = unwrapVkDebugMarkerSetObjectNameEXT
 
         {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkDebugMarkerSetObjectNameEXTSafe
 
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
 pattern VkCmdDebugMarkerBeginEXT :: CString
 
 pattern VkCmdDebugMarkerBeginEXT <-
@@ -206,9 +221,14 @@
 type PFN_vkCmdDebugMarkerBeginEXT =
      FunPtr HS_vkCmdDebugMarkerBeginEXT
 
-foreign import ccall "dynamic" unwrapVkCmdDebugMarkerBeginEXT ::
+foreign import ccall unsafe "dynamic"
+               unwrapVkCmdDebugMarkerBeginEXT ::
                PFN_vkCmdDebugMarkerBeginEXT -> HS_vkCmdDebugMarkerBeginEXT
 
+foreign import ccall safe "dynamic"
+               unwrapVkCmdDebugMarkerBeginEXTSafe ::
+               PFN_vkCmdDebugMarkerBeginEXT -> HS_vkCmdDebugMarkerBeginEXT
+
 instance VulkanProc "vkCmdDebugMarkerBeginEXT" where
         type VkProcType "vkCmdDebugMarkerBeginEXT" =
              HS_vkCmdDebugMarkerBeginEXT
@@ -218,7 +238,10 @@
         unwrapVkProcPtr = unwrapVkCmdDebugMarkerBeginEXT
 
         {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkCmdDebugMarkerBeginEXTSafe
 
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
 pattern VkCmdDebugMarkerEndEXT :: CString
 
 pattern VkCmdDebugMarkerEndEXT <-
@@ -252,7 +275,11 @@
 
 type PFN_vkCmdDebugMarkerEndEXT = FunPtr HS_vkCmdDebugMarkerEndEXT
 
-foreign import ccall "dynamic" unwrapVkCmdDebugMarkerEndEXT ::
+foreign import ccall unsafe "dynamic" unwrapVkCmdDebugMarkerEndEXT
+               :: PFN_vkCmdDebugMarkerEndEXT -> HS_vkCmdDebugMarkerEndEXT
+
+foreign import ccall safe "dynamic"
+               unwrapVkCmdDebugMarkerEndEXTSafe ::
                PFN_vkCmdDebugMarkerEndEXT -> HS_vkCmdDebugMarkerEndEXT
 
 instance VulkanProc "vkCmdDebugMarkerEndEXT" where
@@ -264,7 +291,10 @@
         unwrapVkProcPtr = unwrapVkCmdDebugMarkerEndEXT
 
         {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkCmdDebugMarkerEndEXTSafe
 
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
 pattern VkCmdDebugMarkerInsertEXT :: CString
 
 pattern VkCmdDebugMarkerInsertEXT <-
@@ -302,9 +332,14 @@
 type PFN_vkCmdDebugMarkerInsertEXT =
      FunPtr HS_vkCmdDebugMarkerInsertEXT
 
-foreign import ccall "dynamic" unwrapVkCmdDebugMarkerInsertEXT ::
+foreign import ccall unsafe "dynamic"
+               unwrapVkCmdDebugMarkerInsertEXT ::
                PFN_vkCmdDebugMarkerInsertEXT -> HS_vkCmdDebugMarkerInsertEXT
 
+foreign import ccall safe "dynamic"
+               unwrapVkCmdDebugMarkerInsertEXTSafe ::
+               PFN_vkCmdDebugMarkerInsertEXT -> HS_vkCmdDebugMarkerInsertEXT
+
 instance VulkanProc "vkCmdDebugMarkerInsertEXT" where
         type VkProcType "vkCmdDebugMarkerInsertEXT" =
              HS_vkCmdDebugMarkerInsertEXT
@@ -314,6 +349,9 @@
         unwrapVkProcPtr = unwrapVkCmdDebugMarkerInsertEXT
 
         {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkCmdDebugMarkerInsertEXTSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VK_EXT_DEBUG_MARKER_SPEC_VERSION :: (Num a, Eq a) => a
 
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_EXT_debug_report.hs b/src-gen/Graphics/Vulkan/Ext/VK_EXT_debug_report.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_EXT_debug_report.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_EXT_debug_report.hs
@@ -125,11 +125,16 @@
 type PFN_vkCreateDebugReportCallbackEXT =
      FunPtr HS_vkCreateDebugReportCallbackEXT
 
-foreign import ccall "dynamic" unwrapVkCreateDebugReportCallbackEXT
-               ::
+foreign import ccall unsafe "dynamic"
+               unwrapVkCreateDebugReportCallbackEXT ::
                PFN_vkCreateDebugReportCallbackEXT ->
                  HS_vkCreateDebugReportCallbackEXT
 
+foreign import ccall safe "dynamic"
+               unwrapVkCreateDebugReportCallbackEXTSafe ::
+               PFN_vkCreateDebugReportCallbackEXT ->
+                 HS_vkCreateDebugReportCallbackEXT
+
 instance VulkanProc "vkCreateDebugReportCallbackEXT" where
         type VkProcType "vkCreateDebugReportCallbackEXT" =
              HS_vkCreateDebugReportCallbackEXT
@@ -139,7 +144,10 @@
         unwrapVkProcPtr = unwrapVkCreateDebugReportCallbackEXT
 
         {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkCreateDebugReportCallbackEXTSafe
 
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
 pattern VkDestroyDebugReportCallbackEXT :: CString
 
 pattern VkDestroyDebugReportCallbackEXT <-
@@ -179,11 +187,16 @@
 type PFN_vkDestroyDebugReportCallbackEXT =
      FunPtr HS_vkDestroyDebugReportCallbackEXT
 
-foreign import ccall "dynamic"
+foreign import ccall unsafe "dynamic"
                unwrapVkDestroyDebugReportCallbackEXT ::
                PFN_vkDestroyDebugReportCallbackEXT ->
                  HS_vkDestroyDebugReportCallbackEXT
 
+foreign import ccall safe "dynamic"
+               unwrapVkDestroyDebugReportCallbackEXTSafe ::
+               PFN_vkDestroyDebugReportCallbackEXT ->
+                 HS_vkDestroyDebugReportCallbackEXT
+
 instance VulkanProc "vkDestroyDebugReportCallbackEXT" where
         type VkProcType "vkDestroyDebugReportCallbackEXT" =
              HS_vkDestroyDebugReportCallbackEXT
@@ -193,7 +206,10 @@
         unwrapVkProcPtr = unwrapVkDestroyDebugReportCallbackEXT
 
         {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkDestroyDebugReportCallbackEXTSafe
 
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
 pattern VkDebugReportMessageEXT :: CString
 
 pattern VkDebugReportMessageEXT <-
@@ -242,7 +258,11 @@
 type PFN_vkDebugReportMessageEXT =
      FunPtr HS_vkDebugReportMessageEXT
 
-foreign import ccall "dynamic" unwrapVkDebugReportMessageEXT ::
+foreign import ccall unsafe "dynamic" unwrapVkDebugReportMessageEXT
+               :: PFN_vkDebugReportMessageEXT -> HS_vkDebugReportMessageEXT
+
+foreign import ccall safe "dynamic"
+               unwrapVkDebugReportMessageEXTSafe ::
                PFN_vkDebugReportMessageEXT -> HS_vkDebugReportMessageEXT
 
 instance VulkanProc "vkDebugReportMessageEXT" where
@@ -254,6 +274,9 @@
         unwrapVkProcPtr = unwrapVkDebugReportMessageEXT
 
         {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkDebugReportMessageEXTSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VK_EXT_DEBUG_REPORT_SPEC_VERSION :: (Num a, Eq a) => a
 
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_EXT_debug_utils.hs b/src-gen/Graphics/Vulkan/Ext/VK_EXT_debug_utils.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_EXT_debug_utils.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_EXT_debug_utils.hs
@@ -144,10 +144,14 @@
 type PFN_vkSetDebugUtilsObjectNameEXT =
      FunPtr HS_vkSetDebugUtilsObjectNameEXT
 
-foreign import ccall "dynamic" unwrapVkSetDebugUtilsObjectNameEXT
-               ::
+foreign import ccall unsafe "dynamic"
+               unwrapVkSetDebugUtilsObjectNameEXT ::
                PFN_vkSetDebugUtilsObjectNameEXT -> HS_vkSetDebugUtilsObjectNameEXT
 
+foreign import ccall safe "dynamic"
+               unwrapVkSetDebugUtilsObjectNameEXTSafe ::
+               PFN_vkSetDebugUtilsObjectNameEXT -> HS_vkSetDebugUtilsObjectNameEXT
+
 instance VulkanProc "vkSetDebugUtilsObjectNameEXT" where
         type VkProcType "vkSetDebugUtilsObjectNameEXT" =
              HS_vkSetDebugUtilsObjectNameEXT
@@ -157,7 +161,10 @@
         unwrapVkProcPtr = unwrapVkSetDebugUtilsObjectNameEXT
 
         {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkSetDebugUtilsObjectNameEXTSafe
 
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
 pattern VkSetDebugUtilsObjectTagEXT :: CString
 
 pattern VkSetDebugUtilsObjectTagEXT <-
@@ -196,9 +203,14 @@
 type PFN_vkSetDebugUtilsObjectTagEXT =
      FunPtr HS_vkSetDebugUtilsObjectTagEXT
 
-foreign import ccall "dynamic" unwrapVkSetDebugUtilsObjectTagEXT ::
+foreign import ccall unsafe "dynamic"
+               unwrapVkSetDebugUtilsObjectTagEXT ::
                PFN_vkSetDebugUtilsObjectTagEXT -> HS_vkSetDebugUtilsObjectTagEXT
 
+foreign import ccall safe "dynamic"
+               unwrapVkSetDebugUtilsObjectTagEXTSafe ::
+               PFN_vkSetDebugUtilsObjectTagEXT -> HS_vkSetDebugUtilsObjectTagEXT
+
 instance VulkanProc "vkSetDebugUtilsObjectTagEXT" where
         type VkProcType "vkSetDebugUtilsObjectTagEXT" =
              HS_vkSetDebugUtilsObjectTagEXT
@@ -208,7 +220,10 @@
         unwrapVkProcPtr = unwrapVkSetDebugUtilsObjectTagEXT
 
         {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkSetDebugUtilsObjectTagEXTSafe
 
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
 pattern VkQueueBeginDebugUtilsLabelEXT :: CString
 
 pattern VkQueueBeginDebugUtilsLabelEXT <-
@@ -245,11 +260,16 @@
 type PFN_vkQueueBeginDebugUtilsLabelEXT =
      FunPtr HS_vkQueueBeginDebugUtilsLabelEXT
 
-foreign import ccall "dynamic" unwrapVkQueueBeginDebugUtilsLabelEXT
-               ::
+foreign import ccall unsafe "dynamic"
+               unwrapVkQueueBeginDebugUtilsLabelEXT ::
                PFN_vkQueueBeginDebugUtilsLabelEXT ->
                  HS_vkQueueBeginDebugUtilsLabelEXT
 
+foreign import ccall safe "dynamic"
+               unwrapVkQueueBeginDebugUtilsLabelEXTSafe ::
+               PFN_vkQueueBeginDebugUtilsLabelEXT ->
+                 HS_vkQueueBeginDebugUtilsLabelEXT
+
 instance VulkanProc "vkQueueBeginDebugUtilsLabelEXT" where
         type VkProcType "vkQueueBeginDebugUtilsLabelEXT" =
              HS_vkQueueBeginDebugUtilsLabelEXT
@@ -259,7 +279,10 @@
         unwrapVkProcPtr = unwrapVkQueueBeginDebugUtilsLabelEXT
 
         {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkQueueBeginDebugUtilsLabelEXTSafe
 
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
 pattern VkQueueEndDebugUtilsLabelEXT :: CString
 
 pattern VkQueueEndDebugUtilsLabelEXT <-
@@ -291,10 +314,14 @@
 type PFN_vkQueueEndDebugUtilsLabelEXT =
      FunPtr HS_vkQueueEndDebugUtilsLabelEXT
 
-foreign import ccall "dynamic" unwrapVkQueueEndDebugUtilsLabelEXT
-               ::
+foreign import ccall unsafe "dynamic"
+               unwrapVkQueueEndDebugUtilsLabelEXT ::
                PFN_vkQueueEndDebugUtilsLabelEXT -> HS_vkQueueEndDebugUtilsLabelEXT
 
+foreign import ccall safe "dynamic"
+               unwrapVkQueueEndDebugUtilsLabelEXTSafe ::
+               PFN_vkQueueEndDebugUtilsLabelEXT -> HS_vkQueueEndDebugUtilsLabelEXT
+
 instance VulkanProc "vkQueueEndDebugUtilsLabelEXT" where
         type VkProcType "vkQueueEndDebugUtilsLabelEXT" =
              HS_vkQueueEndDebugUtilsLabelEXT
@@ -304,7 +331,10 @@
         unwrapVkProcPtr = unwrapVkQueueEndDebugUtilsLabelEXT
 
         {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkQueueEndDebugUtilsLabelEXTSafe
 
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
 pattern VkQueueInsertDebugUtilsLabelEXT :: CString
 
 pattern VkQueueInsertDebugUtilsLabelEXT <-
@@ -341,11 +371,16 @@
 type PFN_vkQueueInsertDebugUtilsLabelEXT =
      FunPtr HS_vkQueueInsertDebugUtilsLabelEXT
 
-foreign import ccall "dynamic"
+foreign import ccall unsafe "dynamic"
                unwrapVkQueueInsertDebugUtilsLabelEXT ::
                PFN_vkQueueInsertDebugUtilsLabelEXT ->
                  HS_vkQueueInsertDebugUtilsLabelEXT
 
+foreign import ccall safe "dynamic"
+               unwrapVkQueueInsertDebugUtilsLabelEXTSafe ::
+               PFN_vkQueueInsertDebugUtilsLabelEXT ->
+                 HS_vkQueueInsertDebugUtilsLabelEXT
+
 instance VulkanProc "vkQueueInsertDebugUtilsLabelEXT" where
         type VkProcType "vkQueueInsertDebugUtilsLabelEXT" =
              HS_vkQueueInsertDebugUtilsLabelEXT
@@ -355,7 +390,10 @@
         unwrapVkProcPtr = unwrapVkQueueInsertDebugUtilsLabelEXT
 
         {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkQueueInsertDebugUtilsLabelEXTSafe
 
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
 pattern VkCmdBeginDebugUtilsLabelEXT :: CString
 
 pattern VkCmdBeginDebugUtilsLabelEXT <-
@@ -394,10 +432,14 @@
 type PFN_vkCmdBeginDebugUtilsLabelEXT =
      FunPtr HS_vkCmdBeginDebugUtilsLabelEXT
 
-foreign import ccall "dynamic" unwrapVkCmdBeginDebugUtilsLabelEXT
-               ::
+foreign import ccall unsafe "dynamic"
+               unwrapVkCmdBeginDebugUtilsLabelEXT ::
                PFN_vkCmdBeginDebugUtilsLabelEXT -> HS_vkCmdBeginDebugUtilsLabelEXT
 
+foreign import ccall safe "dynamic"
+               unwrapVkCmdBeginDebugUtilsLabelEXTSafe ::
+               PFN_vkCmdBeginDebugUtilsLabelEXT -> HS_vkCmdBeginDebugUtilsLabelEXT
+
 instance VulkanProc "vkCmdBeginDebugUtilsLabelEXT" where
         type VkProcType "vkCmdBeginDebugUtilsLabelEXT" =
              HS_vkCmdBeginDebugUtilsLabelEXT
@@ -407,7 +449,10 @@
         unwrapVkProcPtr = unwrapVkCmdBeginDebugUtilsLabelEXT
 
         {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkCmdBeginDebugUtilsLabelEXTSafe
 
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
 pattern VkCmdEndDebugUtilsLabelEXT :: CString
 
 pattern VkCmdEndDebugUtilsLabelEXT <-
@@ -442,9 +487,14 @@
 type PFN_vkCmdEndDebugUtilsLabelEXT =
      FunPtr HS_vkCmdEndDebugUtilsLabelEXT
 
-foreign import ccall "dynamic" unwrapVkCmdEndDebugUtilsLabelEXT ::
+foreign import ccall unsafe "dynamic"
+               unwrapVkCmdEndDebugUtilsLabelEXT ::
                PFN_vkCmdEndDebugUtilsLabelEXT -> HS_vkCmdEndDebugUtilsLabelEXT
 
+foreign import ccall safe "dynamic"
+               unwrapVkCmdEndDebugUtilsLabelEXTSafe ::
+               PFN_vkCmdEndDebugUtilsLabelEXT -> HS_vkCmdEndDebugUtilsLabelEXT
+
 instance VulkanProc "vkCmdEndDebugUtilsLabelEXT" where
         type VkProcType "vkCmdEndDebugUtilsLabelEXT" =
              HS_vkCmdEndDebugUtilsLabelEXT
@@ -454,7 +504,10 @@
         unwrapVkProcPtr = unwrapVkCmdEndDebugUtilsLabelEXT
 
         {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkCmdEndDebugUtilsLabelEXTSafe
 
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
 pattern VkCmdInsertDebugUtilsLabelEXT :: CString
 
 pattern VkCmdInsertDebugUtilsLabelEXT <-
@@ -495,11 +548,16 @@
 type PFN_vkCmdInsertDebugUtilsLabelEXT =
      FunPtr HS_vkCmdInsertDebugUtilsLabelEXT
 
-foreign import ccall "dynamic" unwrapVkCmdInsertDebugUtilsLabelEXT
-               ::
+foreign import ccall unsafe "dynamic"
+               unwrapVkCmdInsertDebugUtilsLabelEXT ::
                PFN_vkCmdInsertDebugUtilsLabelEXT ->
                  HS_vkCmdInsertDebugUtilsLabelEXT
 
+foreign import ccall safe "dynamic"
+               unwrapVkCmdInsertDebugUtilsLabelEXTSafe ::
+               PFN_vkCmdInsertDebugUtilsLabelEXT ->
+                 HS_vkCmdInsertDebugUtilsLabelEXT
+
 instance VulkanProc "vkCmdInsertDebugUtilsLabelEXT" where
         type VkProcType "vkCmdInsertDebugUtilsLabelEXT" =
              HS_vkCmdInsertDebugUtilsLabelEXT
@@ -509,7 +567,10 @@
         unwrapVkProcPtr = unwrapVkCmdInsertDebugUtilsLabelEXT
 
         {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkCmdInsertDebugUtilsLabelEXTSafe
 
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
 pattern VkCreateDebugUtilsMessengerEXT :: CString
 
 pattern VkCreateDebugUtilsMessengerEXT <-
@@ -557,11 +618,16 @@
 type PFN_vkCreateDebugUtilsMessengerEXT =
      FunPtr HS_vkCreateDebugUtilsMessengerEXT
 
-foreign import ccall "dynamic" unwrapVkCreateDebugUtilsMessengerEXT
-               ::
+foreign import ccall unsafe "dynamic"
+               unwrapVkCreateDebugUtilsMessengerEXT ::
                PFN_vkCreateDebugUtilsMessengerEXT ->
                  HS_vkCreateDebugUtilsMessengerEXT
 
+foreign import ccall safe "dynamic"
+               unwrapVkCreateDebugUtilsMessengerEXTSafe ::
+               PFN_vkCreateDebugUtilsMessengerEXT ->
+                 HS_vkCreateDebugUtilsMessengerEXT
+
 instance VulkanProc "vkCreateDebugUtilsMessengerEXT" where
         type VkProcType "vkCreateDebugUtilsMessengerEXT" =
              HS_vkCreateDebugUtilsMessengerEXT
@@ -571,7 +637,10 @@
         unwrapVkProcPtr = unwrapVkCreateDebugUtilsMessengerEXT
 
         {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkCreateDebugUtilsMessengerEXTSafe
 
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
 pattern VkDestroyDebugUtilsMessengerEXT :: CString
 
 pattern VkDestroyDebugUtilsMessengerEXT <-
@@ -611,11 +680,16 @@
 type PFN_vkDestroyDebugUtilsMessengerEXT =
      FunPtr HS_vkDestroyDebugUtilsMessengerEXT
 
-foreign import ccall "dynamic"
+foreign import ccall unsafe "dynamic"
                unwrapVkDestroyDebugUtilsMessengerEXT ::
                PFN_vkDestroyDebugUtilsMessengerEXT ->
                  HS_vkDestroyDebugUtilsMessengerEXT
 
+foreign import ccall safe "dynamic"
+               unwrapVkDestroyDebugUtilsMessengerEXTSafe ::
+               PFN_vkDestroyDebugUtilsMessengerEXT ->
+                 HS_vkDestroyDebugUtilsMessengerEXT
+
 instance VulkanProc "vkDestroyDebugUtilsMessengerEXT" where
         type VkProcType "vkDestroyDebugUtilsMessengerEXT" =
              HS_vkDestroyDebugUtilsMessengerEXT
@@ -625,7 +699,10 @@
         unwrapVkProcPtr = unwrapVkDestroyDebugUtilsMessengerEXT
 
         {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkDestroyDebugUtilsMessengerEXTSafe
 
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
 pattern VkSubmitDebugUtilsMessageEXT :: CString
 
 pattern VkSubmitDebugUtilsMessageEXT <-
@@ -667,10 +744,14 @@
 type PFN_vkSubmitDebugUtilsMessageEXT =
      FunPtr HS_vkSubmitDebugUtilsMessageEXT
 
-foreign import ccall "dynamic" unwrapVkSubmitDebugUtilsMessageEXT
-               ::
+foreign import ccall unsafe "dynamic"
+               unwrapVkSubmitDebugUtilsMessageEXT ::
                PFN_vkSubmitDebugUtilsMessageEXT -> HS_vkSubmitDebugUtilsMessageEXT
 
+foreign import ccall safe "dynamic"
+               unwrapVkSubmitDebugUtilsMessageEXTSafe ::
+               PFN_vkSubmitDebugUtilsMessageEXT -> HS_vkSubmitDebugUtilsMessageEXT
+
 instance VulkanProc "vkSubmitDebugUtilsMessageEXT" where
         type VkProcType "vkSubmitDebugUtilsMessageEXT" =
              HS_vkSubmitDebugUtilsMessageEXT
@@ -680,6 +761,9 @@
         unwrapVkProcPtr = unwrapVkSubmitDebugUtilsMessageEXT
 
         {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkSubmitDebugUtilsMessageEXTSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VK_EXT_DEBUG_UTILS_SPEC_VERSION :: (Num a, Eq a) => a
 
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_EXT_descriptor_indexing.hs b/src-gen/Graphics/Vulkan/Ext/VK_EXT_descriptor_indexing.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_EXT_descriptor_indexing.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_EXT_descriptor_indexing.hs
@@ -31,6 +31,8 @@
         module Graphics.Vulkan.Types.Enum.Device,
         module Graphics.Vulkan.Types.Struct.PhysicalDevice,
         module Graphics.Vulkan.Types.Struct.PhysicalDeviceFeatures,
+        module Graphics.Vulkan.Types.Enum.PhysicalDeviceType,
+        module Graphics.Vulkan.Types.Enum.SampleCountFlags,
         module Graphics.Vulkan.Types.Enum.Shader,
         module Graphics.Vulkan.Types.Enum.StructureType,
         -- > #include "vk_platform.h"
@@ -53,7 +55,9 @@
 import           Graphics.Vulkan.Types.Bitmasks
 import           Graphics.Vulkan.Types.Enum.Descriptor
 import           Graphics.Vulkan.Types.Enum.Device
+import           Graphics.Vulkan.Types.Enum.PhysicalDeviceType
 import           Graphics.Vulkan.Types.Enum.Result                   (VkResult (..))
+import           Graphics.Vulkan.Types.Enum.SampleCountFlags
 import           Graphics.Vulkan.Types.Enum.Shader
 import           Graphics.Vulkan.Types.Enum.StructureType
 import           Graphics.Vulkan.Types.Struct.Descriptor
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_EXT_direct_mode_display.hs b/src-gen/Graphics/Vulkan/Ext/VK_EXT_direct_mode_display.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_EXT_direct_mode_display.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_EXT_direct_mode_display.hs
@@ -73,9 +73,12 @@
 
 type PFN_vkReleaseDisplayEXT = FunPtr HS_vkReleaseDisplayEXT
 
-foreign import ccall "dynamic" unwrapVkReleaseDisplayEXT ::
+foreign import ccall unsafe "dynamic" unwrapVkReleaseDisplayEXT ::
                PFN_vkReleaseDisplayEXT -> HS_vkReleaseDisplayEXT
 
+foreign import ccall safe "dynamic" unwrapVkReleaseDisplayEXTSafe
+               :: PFN_vkReleaseDisplayEXT -> HS_vkReleaseDisplayEXT
+
 instance VulkanProc "vkReleaseDisplayEXT" where
         type VkProcType "vkReleaseDisplayEXT" = HS_vkReleaseDisplayEXT
         vkProcSymbol = _VkReleaseDisplayEXT
@@ -84,6 +87,9 @@
         unwrapVkProcPtr = unwrapVkReleaseDisplayEXT
 
         {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkReleaseDisplayEXTSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VK_EXT_DIRECT_MODE_DISPLAY_SPEC_VERSION :: (Num a, Eq a) =>
         a
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_EXT_discard_rectangles.hs b/src-gen/Graphics/Vulkan/Ext/VK_EXT_discard_rectangles.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_EXT_discard_rectangles.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_EXT_discard_rectangles.hs
@@ -144,9 +144,14 @@
 type PFN_vkCmdSetDiscardRectangleEXT =
      FunPtr HS_vkCmdSetDiscardRectangleEXT
 
-foreign import ccall "dynamic" unwrapVkCmdSetDiscardRectangleEXT ::
+foreign import ccall unsafe "dynamic"
+               unwrapVkCmdSetDiscardRectangleEXT ::
                PFN_vkCmdSetDiscardRectangleEXT -> HS_vkCmdSetDiscardRectangleEXT
 
+foreign import ccall safe "dynamic"
+               unwrapVkCmdSetDiscardRectangleEXTSafe ::
+               PFN_vkCmdSetDiscardRectangleEXT -> HS_vkCmdSetDiscardRectangleEXT
+
 instance VulkanProc "vkCmdSetDiscardRectangleEXT" where
         type VkProcType "vkCmdSetDiscardRectangleEXT" =
              HS_vkCmdSetDiscardRectangleEXT
@@ -156,6 +161,9 @@
         unwrapVkProcPtr = unwrapVkCmdSetDiscardRectangleEXT
 
         {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkCmdSetDiscardRectangleEXTSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VK_EXT_DISCARD_RECTANGLES_SPEC_VERSION :: (Num a, Eq a) =>
         a
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_EXT_display_control.hs b/src-gen/Graphics/Vulkan/Ext/VK_EXT_display_control.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_EXT_display_control.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_EXT_display_control.hs
@@ -132,9 +132,14 @@
 type PFN_vkDisplayPowerControlEXT =
      FunPtr HS_vkDisplayPowerControlEXT
 
-foreign import ccall "dynamic" unwrapVkDisplayPowerControlEXT ::
+foreign import ccall unsafe "dynamic"
+               unwrapVkDisplayPowerControlEXT ::
                PFN_vkDisplayPowerControlEXT -> HS_vkDisplayPowerControlEXT
 
+foreign import ccall safe "dynamic"
+               unwrapVkDisplayPowerControlEXTSafe ::
+               PFN_vkDisplayPowerControlEXT -> HS_vkDisplayPowerControlEXT
+
 instance VulkanProc "vkDisplayPowerControlEXT" where
         type VkProcType "vkDisplayPowerControlEXT" =
              HS_vkDisplayPowerControlEXT
@@ -144,7 +149,10 @@
         unwrapVkProcPtr = unwrapVkDisplayPowerControlEXT
 
         {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkDisplayPowerControlEXTSafe
 
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
 pattern VkRegisterDeviceEventEXT :: CString
 
 pattern VkRegisterDeviceEventEXT <-
@@ -186,9 +194,14 @@
 type PFN_vkRegisterDeviceEventEXT =
      FunPtr HS_vkRegisterDeviceEventEXT
 
-foreign import ccall "dynamic" unwrapVkRegisterDeviceEventEXT ::
+foreign import ccall unsafe "dynamic"
+               unwrapVkRegisterDeviceEventEXT ::
                PFN_vkRegisterDeviceEventEXT -> HS_vkRegisterDeviceEventEXT
 
+foreign import ccall safe "dynamic"
+               unwrapVkRegisterDeviceEventEXTSafe ::
+               PFN_vkRegisterDeviceEventEXT -> HS_vkRegisterDeviceEventEXT
+
 instance VulkanProc "vkRegisterDeviceEventEXT" where
         type VkProcType "vkRegisterDeviceEventEXT" =
              HS_vkRegisterDeviceEventEXT
@@ -198,7 +211,10 @@
         unwrapVkProcPtr = unwrapVkRegisterDeviceEventEXT
 
         {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkRegisterDeviceEventEXTSafe
 
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
 pattern VkRegisterDisplayEventEXT :: CString
 
 pattern VkRegisterDisplayEventEXT <-
@@ -243,9 +259,14 @@
 type PFN_vkRegisterDisplayEventEXT =
      FunPtr HS_vkRegisterDisplayEventEXT
 
-foreign import ccall "dynamic" unwrapVkRegisterDisplayEventEXT ::
+foreign import ccall unsafe "dynamic"
+               unwrapVkRegisterDisplayEventEXT ::
                PFN_vkRegisterDisplayEventEXT -> HS_vkRegisterDisplayEventEXT
 
+foreign import ccall safe "dynamic"
+               unwrapVkRegisterDisplayEventEXTSafe ::
+               PFN_vkRegisterDisplayEventEXT -> HS_vkRegisterDisplayEventEXT
+
 instance VulkanProc "vkRegisterDisplayEventEXT" where
         type VkProcType "vkRegisterDisplayEventEXT" =
              HS_vkRegisterDisplayEventEXT
@@ -255,7 +276,10 @@
         unwrapVkProcPtr = unwrapVkRegisterDisplayEventEXT
 
         {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkRegisterDisplayEventEXTSafe
 
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
 pattern VkGetSwapchainCounterEXT :: CString
 
 pattern VkGetSwapchainCounterEXT <-
@@ -299,9 +323,14 @@
 type PFN_vkGetSwapchainCounterEXT =
      FunPtr HS_vkGetSwapchainCounterEXT
 
-foreign import ccall "dynamic" unwrapVkGetSwapchainCounterEXT ::
+foreign import ccall unsafe "dynamic"
+               unwrapVkGetSwapchainCounterEXT ::
                PFN_vkGetSwapchainCounterEXT -> HS_vkGetSwapchainCounterEXT
 
+foreign import ccall safe "dynamic"
+               unwrapVkGetSwapchainCounterEXTSafe ::
+               PFN_vkGetSwapchainCounterEXT -> HS_vkGetSwapchainCounterEXT
+
 instance VulkanProc "vkGetSwapchainCounterEXT" where
         type VkProcType "vkGetSwapchainCounterEXT" =
              HS_vkGetSwapchainCounterEXT
@@ -311,6 +340,9 @@
         unwrapVkProcPtr = unwrapVkGetSwapchainCounterEXT
 
         {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkGetSwapchainCounterEXTSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VK_EXT_DISPLAY_CONTROL_SPEC_VERSION :: (Num a, Eq a) => a
 
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_EXT_display_surface_counter.hs b/src-gen/Graphics/Vulkan/Ext/VK_EXT_display_surface_counter.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_EXT_display_surface_counter.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_EXT_display_surface_counter.hs
@@ -105,11 +105,16 @@
 type PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT =
      FunPtr HS_vkGetPhysicalDeviceSurfaceCapabilities2EXT
 
-foreign import ccall "dynamic"
+foreign import ccall unsafe "dynamic"
                unwrapVkGetPhysicalDeviceSurfaceCapabilities2EXT ::
                PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT ->
                  HS_vkGetPhysicalDeviceSurfaceCapabilities2EXT
 
+foreign import ccall safe "dynamic"
+               unwrapVkGetPhysicalDeviceSurfaceCapabilities2EXTSafe ::
+               PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT ->
+                 HS_vkGetPhysicalDeviceSurfaceCapabilities2EXT
+
 instance VulkanProc "vkGetPhysicalDeviceSurfaceCapabilities2EXT"
          where
         type VkProcType "vkGetPhysicalDeviceSurfaceCapabilities2EXT" =
@@ -120,6 +125,10 @@
         unwrapVkProcPtr = unwrapVkGetPhysicalDeviceSurfaceCapabilities2EXT
 
         {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe
+          = unwrapVkGetPhysicalDeviceSurfaceCapabilities2EXTSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VK_EXT_DISPLAY_SURFACE_COUNTER_SPEC_VERSION ::
         (Num a, Eq a) => a
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_EXT_external_memory_host.hs b/src-gen/Graphics/Vulkan/Ext/VK_EXT_external_memory_host.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_EXT_external_memory_host.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_EXT_external_memory_host.hs
@@ -115,11 +115,16 @@
 type PFN_vkGetMemoryHostPointerPropertiesEXT =
      FunPtr HS_vkGetMemoryHostPointerPropertiesEXT
 
-foreign import ccall "dynamic"
+foreign import ccall unsafe "dynamic"
                unwrapVkGetMemoryHostPointerPropertiesEXT ::
                PFN_vkGetMemoryHostPointerPropertiesEXT ->
                  HS_vkGetMemoryHostPointerPropertiesEXT
 
+foreign import ccall safe "dynamic"
+               unwrapVkGetMemoryHostPointerPropertiesEXTSafe ::
+               PFN_vkGetMemoryHostPointerPropertiesEXT ->
+                 HS_vkGetMemoryHostPointerPropertiesEXT
+
 instance VulkanProc "vkGetMemoryHostPointerPropertiesEXT" where
         type VkProcType "vkGetMemoryHostPointerPropertiesEXT" =
              HS_vkGetMemoryHostPointerPropertiesEXT
@@ -129,6 +134,9 @@
         unwrapVkProcPtr = unwrapVkGetMemoryHostPointerPropertiesEXT
 
         {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkGetMemoryHostPointerPropertiesEXTSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VK_EXT_EXTERNAL_MEMORY_HOST_SPEC_VERSION ::
         (Num a, Eq a) => a
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_EXT_hdr_metadata.hs b/src-gen/Graphics/Vulkan/Ext/VK_EXT_hdr_metadata.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_EXT_hdr_metadata.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_EXT_hdr_metadata.hs
@@ -82,9 +82,12 @@
 
 type PFN_vkSetHdrMetadataEXT = FunPtr HS_vkSetHdrMetadataEXT
 
-foreign import ccall "dynamic" unwrapVkSetHdrMetadataEXT ::
+foreign import ccall unsafe "dynamic" unwrapVkSetHdrMetadataEXT ::
                PFN_vkSetHdrMetadataEXT -> HS_vkSetHdrMetadataEXT
 
+foreign import ccall safe "dynamic" unwrapVkSetHdrMetadataEXTSafe
+               :: PFN_vkSetHdrMetadataEXT -> HS_vkSetHdrMetadataEXT
+
 instance VulkanProc "vkSetHdrMetadataEXT" where
         type VkProcType "vkSetHdrMetadataEXT" = HS_vkSetHdrMetadataEXT
         vkProcSymbol = _VkSetHdrMetadataEXT
@@ -93,6 +96,9 @@
         unwrapVkProcPtr = unwrapVkSetHdrMetadataEXT
 
         {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkSetHdrMetadataEXTSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VK_EXT_HDR_METADATA_SPEC_VERSION :: (Num a, Eq a) => a
 
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_EXT_sample_locations.hs b/src-gen/Graphics/Vulkan/Ext/VK_EXT_sample_locations.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_EXT_sample_locations.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_EXT_sample_locations.hs
@@ -124,9 +124,14 @@
 type PFN_vkCmdSetSampleLocationsEXT =
      FunPtr HS_vkCmdSetSampleLocationsEXT
 
-foreign import ccall "dynamic" unwrapVkCmdSetSampleLocationsEXT ::
+foreign import ccall unsafe "dynamic"
+               unwrapVkCmdSetSampleLocationsEXT ::
                PFN_vkCmdSetSampleLocationsEXT -> HS_vkCmdSetSampleLocationsEXT
 
+foreign import ccall safe "dynamic"
+               unwrapVkCmdSetSampleLocationsEXTSafe ::
+               PFN_vkCmdSetSampleLocationsEXT -> HS_vkCmdSetSampleLocationsEXT
+
 instance VulkanProc "vkCmdSetSampleLocationsEXT" where
         type VkProcType "vkCmdSetSampleLocationsEXT" =
              HS_vkCmdSetSampleLocationsEXT
@@ -136,7 +141,10 @@
         unwrapVkProcPtr = unwrapVkCmdSetSampleLocationsEXT
 
         {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkCmdSetSampleLocationsEXTSafe
 
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
 pattern VkGetPhysicalDeviceMultisamplePropertiesEXT :: CString
 
 pattern VkGetPhysicalDeviceMultisamplePropertiesEXT <-
@@ -177,11 +185,16 @@
 type PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT =
      FunPtr HS_vkGetPhysicalDeviceMultisamplePropertiesEXT
 
-foreign import ccall "dynamic"
+foreign import ccall unsafe "dynamic"
                unwrapVkGetPhysicalDeviceMultisamplePropertiesEXT ::
                PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT ->
                  HS_vkGetPhysicalDeviceMultisamplePropertiesEXT
 
+foreign import ccall safe "dynamic"
+               unwrapVkGetPhysicalDeviceMultisamplePropertiesEXTSafe ::
+               PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT ->
+                 HS_vkGetPhysicalDeviceMultisamplePropertiesEXT
+
 instance VulkanProc "vkGetPhysicalDeviceMultisamplePropertiesEXT"
          where
         type VkProcType "vkGetPhysicalDeviceMultisamplePropertiesEXT" =
@@ -192,6 +205,10 @@
         unwrapVkProcPtr = unwrapVkGetPhysicalDeviceMultisamplePropertiesEXT
 
         {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe
+          = unwrapVkGetPhysicalDeviceMultisamplePropertiesEXTSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VK_EXT_SAMPLE_LOCATIONS_SPEC_VERSION :: (Num a, Eq a) => a
 
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_EXT_validation_cache.hs b/src-gen/Graphics/Vulkan/Ext/VK_EXT_validation_cache.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_EXT_validation_cache.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_EXT_validation_cache.hs
@@ -115,9 +115,14 @@
 type PFN_vkCreateValidationCacheEXT =
      FunPtr HS_vkCreateValidationCacheEXT
 
-foreign import ccall "dynamic" unwrapVkCreateValidationCacheEXT ::
+foreign import ccall unsafe "dynamic"
+               unwrapVkCreateValidationCacheEXT ::
                PFN_vkCreateValidationCacheEXT -> HS_vkCreateValidationCacheEXT
 
+foreign import ccall safe "dynamic"
+               unwrapVkCreateValidationCacheEXTSafe ::
+               PFN_vkCreateValidationCacheEXT -> HS_vkCreateValidationCacheEXT
+
 instance VulkanProc "vkCreateValidationCacheEXT" where
         type VkProcType "vkCreateValidationCacheEXT" =
              HS_vkCreateValidationCacheEXT
@@ -127,7 +132,10 @@
         unwrapVkProcPtr = unwrapVkCreateValidationCacheEXT
 
         {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkCreateValidationCacheEXTSafe
 
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
 pattern VkDestroyValidationCacheEXT :: CString
 
 pattern VkDestroyValidationCacheEXT <-
@@ -165,9 +173,14 @@
 type PFN_vkDestroyValidationCacheEXT =
      FunPtr HS_vkDestroyValidationCacheEXT
 
-foreign import ccall "dynamic" unwrapVkDestroyValidationCacheEXT ::
+foreign import ccall unsafe "dynamic"
+               unwrapVkDestroyValidationCacheEXT ::
                PFN_vkDestroyValidationCacheEXT -> HS_vkDestroyValidationCacheEXT
 
+foreign import ccall safe "dynamic"
+               unwrapVkDestroyValidationCacheEXTSafe ::
+               PFN_vkDestroyValidationCacheEXT -> HS_vkDestroyValidationCacheEXT
+
 instance VulkanProc "vkDestroyValidationCacheEXT" where
         type VkProcType "vkDestroyValidationCacheEXT" =
              HS_vkDestroyValidationCacheEXT
@@ -177,7 +190,10 @@
         unwrapVkProcPtr = unwrapVkDestroyValidationCacheEXT
 
         {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkDestroyValidationCacheEXTSafe
 
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
 pattern VkMergeValidationCachesEXT :: CString
 
 pattern VkMergeValidationCachesEXT <-
@@ -221,9 +237,14 @@
 type PFN_vkMergeValidationCachesEXT =
      FunPtr HS_vkMergeValidationCachesEXT
 
-foreign import ccall "dynamic" unwrapVkMergeValidationCachesEXT ::
+foreign import ccall unsafe "dynamic"
+               unwrapVkMergeValidationCachesEXT ::
                PFN_vkMergeValidationCachesEXT -> HS_vkMergeValidationCachesEXT
 
+foreign import ccall safe "dynamic"
+               unwrapVkMergeValidationCachesEXTSafe ::
+               PFN_vkMergeValidationCachesEXT -> HS_vkMergeValidationCachesEXT
+
 instance VulkanProc "vkMergeValidationCachesEXT" where
         type VkProcType "vkMergeValidationCachesEXT" =
              HS_vkMergeValidationCachesEXT
@@ -233,7 +254,10 @@
         unwrapVkProcPtr = unwrapVkMergeValidationCachesEXT
 
         {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkMergeValidationCachesEXTSafe
 
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
 pattern VkGetValidationCacheDataEXT :: CString
 
 pattern VkGetValidationCacheDataEXT <-
@@ -277,9 +301,14 @@
 type PFN_vkGetValidationCacheDataEXT =
      FunPtr HS_vkGetValidationCacheDataEXT
 
-foreign import ccall "dynamic" unwrapVkGetValidationCacheDataEXT ::
+foreign import ccall unsafe "dynamic"
+               unwrapVkGetValidationCacheDataEXT ::
                PFN_vkGetValidationCacheDataEXT -> HS_vkGetValidationCacheDataEXT
 
+foreign import ccall safe "dynamic"
+               unwrapVkGetValidationCacheDataEXTSafe ::
+               PFN_vkGetValidationCacheDataEXT -> HS_vkGetValidationCacheDataEXT
+
 instance VulkanProc "vkGetValidationCacheDataEXT" where
         type VkProcType "vkGetValidationCacheDataEXT" =
              HS_vkGetValidationCacheDataEXT
@@ -289,6 +318,9 @@
         unwrapVkProcPtr = unwrapVkGetValidationCacheDataEXT
 
         {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkGetValidationCacheDataEXTSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VK_EXT_VALIDATION_CACHE_SPEC_VERSION :: (Num a, Eq a) => a
 
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_GOOGLE_display_timing.hs b/src-gen/Graphics/Vulkan/Ext/VK_GOOGLE_display_timing.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_GOOGLE_display_timing.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_GOOGLE_display_timing.hs
@@ -101,11 +101,16 @@
 type PFN_vkGetRefreshCycleDurationGOOGLE =
      FunPtr HS_vkGetRefreshCycleDurationGOOGLE
 
-foreign import ccall "dynamic"
+foreign import ccall unsafe "dynamic"
                unwrapVkGetRefreshCycleDurationGOOGLE ::
                PFN_vkGetRefreshCycleDurationGOOGLE ->
                  HS_vkGetRefreshCycleDurationGOOGLE
 
+foreign import ccall safe "dynamic"
+               unwrapVkGetRefreshCycleDurationGOOGLESafe ::
+               PFN_vkGetRefreshCycleDurationGOOGLE ->
+                 HS_vkGetRefreshCycleDurationGOOGLE
+
 instance VulkanProc "vkGetRefreshCycleDurationGOOGLE" where
         type VkProcType "vkGetRefreshCycleDurationGOOGLE" =
              HS_vkGetRefreshCycleDurationGOOGLE
@@ -115,7 +120,10 @@
         unwrapVkProcPtr = unwrapVkGetRefreshCycleDurationGOOGLE
 
         {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkGetRefreshCycleDurationGOOGLESafe
 
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
 pattern VkGetPastPresentationTimingGOOGLE :: CString
 
 pattern VkGetPastPresentationTimingGOOGLE <-
@@ -162,11 +170,16 @@
 type PFN_vkGetPastPresentationTimingGOOGLE =
      FunPtr HS_vkGetPastPresentationTimingGOOGLE
 
-foreign import ccall "dynamic"
+foreign import ccall unsafe "dynamic"
                unwrapVkGetPastPresentationTimingGOOGLE ::
                PFN_vkGetPastPresentationTimingGOOGLE ->
                  HS_vkGetPastPresentationTimingGOOGLE
 
+foreign import ccall safe "dynamic"
+               unwrapVkGetPastPresentationTimingGOOGLESafe ::
+               PFN_vkGetPastPresentationTimingGOOGLE ->
+                 HS_vkGetPastPresentationTimingGOOGLE
+
 instance VulkanProc "vkGetPastPresentationTimingGOOGLE" where
         type VkProcType "vkGetPastPresentationTimingGOOGLE" =
              HS_vkGetPastPresentationTimingGOOGLE
@@ -176,6 +189,9 @@
         unwrapVkProcPtr = unwrapVkGetPastPresentationTimingGOOGLE
 
         {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkGetPastPresentationTimingGOOGLESafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VK_GOOGLE_DISPLAY_TIMING_SPEC_VERSION :: (Num a, Eq a) => a
 
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_KHR_android_surface.hs b/src-gen/Graphics/Vulkan/Ext/VK_KHR_android_surface.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_KHR_android_surface.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_KHR_android_surface.hs
@@ -88,7 +88,6 @@
 
 type VkCreateAndroidSurfaceKHR = "vkCreateAndroidSurfaceKHR"
 
-#ifdef NATIVE_FFI_VK_VERSION_1_0
 -- |
 -- Success codes: 'VK_SUCCESS'.
 --
@@ -103,9 +102,22 @@
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateAndroidSurfaceKHR vkCreateAndroidSurfaceKHR registry at www.khronos.org>
 --
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
 --           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
 --
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateAndroidSurfaceKHR <- vkGetInstanceProc @VkCreateAndroidSurfaceKHR vkInstance
+--
+-- or less efficient:
+--
+-- > myCreateAndroidSurfaceKHR <- vkGetProc @VkCreateAndroidSurfaceKHR
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_0
 foreign import ccall unsafe "vkCreateAndroidSurfaceKHR"
                vkCreateAndroidSurfaceKHR ::
                VkInstance -- ^ instance
@@ -117,32 +129,6 @@
                                                                  -> IO VkResult
 
 #else
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_NATIVE_WINDOW_IN_USE_KHR'.
---
--- > VkResult vkCreateAndroidSurfaceKHR
--- >     ( VkInstance instance
--- >     , const VkAndroidSurfaceCreateInfoKHR* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkSurfaceKHR* pSurface
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateAndroidSurfaceKHR vkCreateAndroidSurfaceKHR registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCreateAndroidSurfaceKHRSafe@ and @vkCreateAndroidSurfaceKHR@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateAndroidSurfaceKHR <- vkGetInstanceProc @VkCreateAndroidSurfaceKHR vkInstance
---
--- or less efficient:
---
--- > myCreateAndroidSurfaceKHR <- vkGetProc @VkCreateAndroidSurfaceKHR
---
 vkCreateAndroidSurfaceKHR ::
                           VkInstance -- ^ instance
                                      ->
@@ -157,7 +143,6 @@
 {-# NOINLINE vkCreateAndroidSurfaceKHR #-}
 #endif
 
-#ifdef NATIVE_FFI_VK_VERSION_1_0
 -- |
 -- Success codes: 'VK_SUCCESS'.
 --
@@ -172,9 +157,22 @@
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateAndroidSurfaceKHR vkCreateAndroidSurfaceKHR registry at www.khronos.org>
 --
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
 --           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
 --
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateAndroidSurfaceKHR <- vkGetInstanceProc @VkCreateAndroidSurfaceKHR vkInstance
+--
+-- or less efficient:
+--
+-- > myCreateAndroidSurfaceKHR <- vkGetProc @VkCreateAndroidSurfaceKHR
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_0
 foreign import ccall safe "vkCreateAndroidSurfaceKHR"
                vkCreateAndroidSurfaceKHRSafe ::
                VkInstance -- ^ instance
@@ -186,32 +184,6 @@
                                                                  -> IO VkResult
 
 #else
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_NATIVE_WINDOW_IN_USE_KHR'.
---
--- > VkResult vkCreateAndroidSurfaceKHR
--- >     ( VkInstance instance
--- >     , const VkAndroidSurfaceCreateInfoKHR* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkSurfaceKHR* pSurface
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateAndroidSurfaceKHR vkCreateAndroidSurfaceKHR registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCreateAndroidSurfaceKHRSafe@ and @vkCreateAndroidSurfaceKHR@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateAndroidSurfaceKHR <- vkGetInstanceProc @VkCreateAndroidSurfaceKHR vkInstance
---
--- or less efficient:
---
--- > myCreateAndroidSurfaceKHR <- vkGetProc @VkCreateAndroidSurfaceKHR
---
 vkCreateAndroidSurfaceKHRSafe ::
                               VkInstance -- ^ instance
                                          ->
@@ -220,9 +192,10 @@
                                   Ptr VkAllocationCallbacks -- ^ pAllocator
                                                             -> Ptr VkSurfaceKHR -- ^ pSurface
                                                                                 -> IO VkResult
-vkCreateAndroidSurfaceKHRSafe = vkCreateAndroidSurfaceKHR
+vkCreateAndroidSurfaceKHRSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCreateAndroidSurfaceKHR)
 
-{-# INLINE vkCreateAndroidSurfaceKHRSafe #-}
+{-# NOINLINE vkCreateAndroidSurfaceKHRSafe #-}
 #endif
 
 -- | Success codes: 'VK_SUCCESS'.
@@ -249,9 +222,14 @@
 type PFN_vkCreateAndroidSurfaceKHR =
      FunPtr HS_vkCreateAndroidSurfaceKHR
 
-foreign import ccall "dynamic" unwrapVkCreateAndroidSurfaceKHR ::
+foreign import ccall unsafe "dynamic"
+               unwrapVkCreateAndroidSurfaceKHR ::
                PFN_vkCreateAndroidSurfaceKHR -> HS_vkCreateAndroidSurfaceKHR
 
+foreign import ccall safe "dynamic"
+               unwrapVkCreateAndroidSurfaceKHRSafe ::
+               PFN_vkCreateAndroidSurfaceKHR -> HS_vkCreateAndroidSurfaceKHR
+
 instance VulkanProc "vkCreateAndroidSurfaceKHR" where
         type VkProcType "vkCreateAndroidSurfaceKHR" =
              HS_vkCreateAndroidSurfaceKHR
@@ -261,6 +239,9 @@
         unwrapVkProcPtr = unwrapVkCreateAndroidSurfaceKHR
 
         {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkCreateAndroidSurfaceKHRSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VK_KHR_ANDROID_SURFACE_SPEC_VERSION :: (Num a, Eq a) => a
 
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_KHR_bind_memory2.hs b/src-gen/Graphics/Vulkan/Ext/VK_KHR_bind_memory2.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_KHR_bind_memory2.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_KHR_bind_memory2.hs
@@ -91,7 +91,11 @@
 
 type PFN_vkBindBufferMemory2KHR = FunPtr HS_vkBindBufferMemory2KHR
 
-foreign import ccall "dynamic" unwrapVkBindBufferMemory2KHR ::
+foreign import ccall unsafe "dynamic" unwrapVkBindBufferMemory2KHR
+               :: PFN_vkBindBufferMemory2KHR -> HS_vkBindBufferMemory2KHR
+
+foreign import ccall safe "dynamic"
+               unwrapVkBindBufferMemory2KHRSafe ::
                PFN_vkBindBufferMemory2KHR -> HS_vkBindBufferMemory2KHR
 
 instance VulkanProc "vkBindBufferMemory2KHR" where
@@ -103,7 +107,10 @@
         unwrapVkProcPtr = unwrapVkBindBufferMemory2KHR
 
         {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkBindBufferMemory2KHRSafe
 
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
 pattern VkBindImageMemory2KHR :: CString
 
 pattern VkBindImageMemory2KHR <- (is_VkBindImageMemory2KHR -> True)
@@ -143,9 +150,12 @@
 
 type PFN_vkBindImageMemory2KHR = FunPtr HS_vkBindImageMemory2KHR
 
-foreign import ccall "dynamic" unwrapVkBindImageMemory2KHR ::
-               PFN_vkBindImageMemory2KHR -> HS_vkBindImageMemory2KHR
+foreign import ccall unsafe "dynamic" unwrapVkBindImageMemory2KHR
+               :: PFN_vkBindImageMemory2KHR -> HS_vkBindImageMemory2KHR
 
+foreign import ccall safe "dynamic" unwrapVkBindImageMemory2KHRSafe
+               :: PFN_vkBindImageMemory2KHR -> HS_vkBindImageMemory2KHR
+
 instance VulkanProc "vkBindImageMemory2KHR" where
         type VkProcType "vkBindImageMemory2KHR" = HS_vkBindImageMemory2KHR
         vkProcSymbol = _VkBindImageMemory2KHR
@@ -154,6 +164,9 @@
         unwrapVkProcPtr = unwrapVkBindImageMemory2KHR
 
         {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkBindImageMemory2KHRSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VK_KHR_BIND_MEMORY_2_SPEC_VERSION :: (Num a, Eq a) => a
 
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_KHR_descriptor_update_template.hs b/src-gen/Graphics/Vulkan/Ext/VK_KHR_descriptor_update_template.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_KHR_descriptor_update_template.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_KHR_descriptor_update_template.hs
@@ -134,11 +134,16 @@
 type PFN_vkCreateDescriptorUpdateTemplateKHR =
      FunPtr HS_vkCreateDescriptorUpdateTemplateKHR
 
-foreign import ccall "dynamic"
+foreign import ccall unsafe "dynamic"
                unwrapVkCreateDescriptorUpdateTemplateKHR ::
                PFN_vkCreateDescriptorUpdateTemplateKHR ->
                  HS_vkCreateDescriptorUpdateTemplateKHR
 
+foreign import ccall safe "dynamic"
+               unwrapVkCreateDescriptorUpdateTemplateKHRSafe ::
+               PFN_vkCreateDescriptorUpdateTemplateKHR ->
+                 HS_vkCreateDescriptorUpdateTemplateKHR
+
 instance VulkanProc "vkCreateDescriptorUpdateTemplateKHR" where
         type VkProcType "vkCreateDescriptorUpdateTemplateKHR" =
              HS_vkCreateDescriptorUpdateTemplateKHR
@@ -148,7 +153,10 @@
         unwrapVkProcPtr = unwrapVkCreateDescriptorUpdateTemplateKHR
 
         {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkCreateDescriptorUpdateTemplateKHRSafe
 
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
 pattern VkDestroyDescriptorUpdateTemplateKHR :: CString
 
 pattern VkDestroyDescriptorUpdateTemplateKHR <-
@@ -190,11 +198,16 @@
 type PFN_vkDestroyDescriptorUpdateTemplateKHR =
      FunPtr HS_vkDestroyDescriptorUpdateTemplateKHR
 
-foreign import ccall "dynamic"
+foreign import ccall unsafe "dynamic"
                unwrapVkDestroyDescriptorUpdateTemplateKHR ::
                PFN_vkDestroyDescriptorUpdateTemplateKHR ->
                  HS_vkDestroyDescriptorUpdateTemplateKHR
 
+foreign import ccall safe "dynamic"
+               unwrapVkDestroyDescriptorUpdateTemplateKHRSafe ::
+               PFN_vkDestroyDescriptorUpdateTemplateKHR ->
+                 HS_vkDestroyDescriptorUpdateTemplateKHR
+
 instance VulkanProc "vkDestroyDescriptorUpdateTemplateKHR" where
         type VkProcType "vkDestroyDescriptorUpdateTemplateKHR" =
              HS_vkDestroyDescriptorUpdateTemplateKHR
@@ -204,7 +217,11 @@
         unwrapVkProcPtr = unwrapVkDestroyDescriptorUpdateTemplateKHR
 
         {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe
+          = unwrapVkDestroyDescriptorUpdateTemplateKHRSafe
 
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
 pattern VkUpdateDescriptorSetWithTemplateKHR :: CString
 
 pattern VkUpdateDescriptorSetWithTemplateKHR <-
@@ -248,11 +265,16 @@
 type PFN_vkUpdateDescriptorSetWithTemplateKHR =
      FunPtr HS_vkUpdateDescriptorSetWithTemplateKHR
 
-foreign import ccall "dynamic"
+foreign import ccall unsafe "dynamic"
                unwrapVkUpdateDescriptorSetWithTemplateKHR ::
                PFN_vkUpdateDescriptorSetWithTemplateKHR ->
                  HS_vkUpdateDescriptorSetWithTemplateKHR
 
+foreign import ccall safe "dynamic"
+               unwrapVkUpdateDescriptorSetWithTemplateKHRSafe ::
+               PFN_vkUpdateDescriptorSetWithTemplateKHR ->
+                 HS_vkUpdateDescriptorSetWithTemplateKHR
+
 instance VulkanProc "vkUpdateDescriptorSetWithTemplateKHR" where
         type VkProcType "vkUpdateDescriptorSetWithTemplateKHR" =
              HS_vkUpdateDescriptorSetWithTemplateKHR
@@ -262,6 +284,10 @@
         unwrapVkProcPtr = unwrapVkUpdateDescriptorSetWithTemplateKHR
 
         {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe
+          = unwrapVkUpdateDescriptorSetWithTemplateKHRSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_SPEC_VERSION ::
         (Num a, Eq a) => a
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_KHR_device_group.hs b/src-gen/Graphics/Vulkan/Ext/VK_KHR_device_group.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_KHR_device_group.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_KHR_device_group.hs
@@ -209,11 +209,16 @@
 type PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR =
      FunPtr HS_vkGetDeviceGroupPeerMemoryFeaturesKHR
 
-foreign import ccall "dynamic"
+foreign import ccall unsafe "dynamic"
                unwrapVkGetDeviceGroupPeerMemoryFeaturesKHR ::
                PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR ->
                  HS_vkGetDeviceGroupPeerMemoryFeaturesKHR
 
+foreign import ccall safe "dynamic"
+               unwrapVkGetDeviceGroupPeerMemoryFeaturesKHRSafe ::
+               PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR ->
+                 HS_vkGetDeviceGroupPeerMemoryFeaturesKHR
+
 instance VulkanProc "vkGetDeviceGroupPeerMemoryFeaturesKHR" where
         type VkProcType "vkGetDeviceGroupPeerMemoryFeaturesKHR" =
              HS_vkGetDeviceGroupPeerMemoryFeaturesKHR
@@ -223,7 +228,11 @@
         unwrapVkProcPtr = unwrapVkGetDeviceGroupPeerMemoryFeaturesKHR
 
         {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe
+          = unwrapVkGetDeviceGroupPeerMemoryFeaturesKHRSafe
 
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
 pattern VkCmdSetDeviceMaskKHR :: CString
 
 pattern VkCmdSetDeviceMaskKHR <- (is_VkCmdSetDeviceMaskKHR -> True)
@@ -260,9 +269,12 @@
 
 type PFN_vkCmdSetDeviceMaskKHR = FunPtr HS_vkCmdSetDeviceMaskKHR
 
-foreign import ccall "dynamic" unwrapVkCmdSetDeviceMaskKHR ::
-               PFN_vkCmdSetDeviceMaskKHR -> HS_vkCmdSetDeviceMaskKHR
+foreign import ccall unsafe "dynamic" unwrapVkCmdSetDeviceMaskKHR
+               :: PFN_vkCmdSetDeviceMaskKHR -> HS_vkCmdSetDeviceMaskKHR
 
+foreign import ccall safe "dynamic" unwrapVkCmdSetDeviceMaskKHRSafe
+               :: PFN_vkCmdSetDeviceMaskKHR -> HS_vkCmdSetDeviceMaskKHR
+
 instance VulkanProc "vkCmdSetDeviceMaskKHR" where
         type VkProcType "vkCmdSetDeviceMaskKHR" = HS_vkCmdSetDeviceMaskKHR
         vkProcSymbol = _VkCmdSetDeviceMaskKHR
@@ -271,7 +283,10 @@
         unwrapVkProcPtr = unwrapVkCmdSetDeviceMaskKHR
 
         {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkCmdSetDeviceMaskKHRSafe
 
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
 pattern VkCmdDispatchBaseKHR :: CString
 
 pattern VkCmdDispatchBaseKHR <- (is_VkCmdDispatchBaseKHR -> True)
@@ -320,9 +335,12 @@
 
 type PFN_vkCmdDispatchBaseKHR = FunPtr HS_vkCmdDispatchBaseKHR
 
-foreign import ccall "dynamic" unwrapVkCmdDispatchBaseKHR ::
+foreign import ccall unsafe "dynamic" unwrapVkCmdDispatchBaseKHR ::
                PFN_vkCmdDispatchBaseKHR -> HS_vkCmdDispatchBaseKHR
 
+foreign import ccall safe "dynamic" unwrapVkCmdDispatchBaseKHRSafe
+               :: PFN_vkCmdDispatchBaseKHR -> HS_vkCmdDispatchBaseKHR
+
 instance VulkanProc "vkCmdDispatchBaseKHR" where
         type VkProcType "vkCmdDispatchBaseKHR" = HS_vkCmdDispatchBaseKHR
         vkProcSymbol = _VkCmdDispatchBaseKHR
@@ -331,6 +349,9 @@
         unwrapVkProcPtr = unwrapVkCmdDispatchBaseKHR
 
         {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkCmdDispatchBaseKHRSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VK_KHR_DEVICE_GROUP_SPEC_VERSION :: (Num a, Eq a) => a
 
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_KHR_device_group_creation.hs b/src-gen/Graphics/Vulkan/Ext/VK_KHR_device_group_creation.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_KHR_device_group_creation.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_KHR_device_group_creation.hs
@@ -101,11 +101,16 @@
 type PFN_vkEnumeratePhysicalDeviceGroupsKHR =
      FunPtr HS_vkEnumeratePhysicalDeviceGroupsKHR
 
-foreign import ccall "dynamic"
+foreign import ccall unsafe "dynamic"
                unwrapVkEnumeratePhysicalDeviceGroupsKHR ::
                PFN_vkEnumeratePhysicalDeviceGroupsKHR ->
                  HS_vkEnumeratePhysicalDeviceGroupsKHR
 
+foreign import ccall safe "dynamic"
+               unwrapVkEnumeratePhysicalDeviceGroupsKHRSafe ::
+               PFN_vkEnumeratePhysicalDeviceGroupsKHR ->
+                 HS_vkEnumeratePhysicalDeviceGroupsKHR
+
 instance VulkanProc "vkEnumeratePhysicalDeviceGroupsKHR" where
         type VkProcType "vkEnumeratePhysicalDeviceGroupsKHR" =
              HS_vkEnumeratePhysicalDeviceGroupsKHR
@@ -115,6 +120,9 @@
         unwrapVkProcPtr = unwrapVkEnumeratePhysicalDeviceGroupsKHR
 
         {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkEnumeratePhysicalDeviceGroupsKHRSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VK_KHR_DEVICE_GROUP_CREATION_SPEC_VERSION ::
         (Num a, Eq a) => a
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_KHR_display.hs b/src-gen/Graphics/Vulkan/Ext/VK_KHR_display.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_KHR_display.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_KHR_display.hs
@@ -131,7 +131,6 @@
 type VkGetPhysicalDeviceDisplayPropertiesKHR =
      "vkGetPhysicalDeviceDisplayPropertiesKHR"
 
-#ifdef NATIVE_FFI_VK_VERSION_1_0
 -- |
 -- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
 --
@@ -145,9 +144,22 @@
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceDisplayPropertiesKHR vkGetPhysicalDeviceDisplayPropertiesKHR registry at www.khronos.org>
 --
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
 --           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
 --
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceDisplayPropertiesKHR <- vkGetInstanceProc @VkGetPhysicalDeviceDisplayPropertiesKHR vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceDisplayPropertiesKHR <- vkGetProc @VkGetPhysicalDeviceDisplayPropertiesKHR
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_0
 foreign import ccall unsafe
                "vkGetPhysicalDeviceDisplayPropertiesKHR"
                vkGetPhysicalDeviceDisplayPropertiesKHR ::
@@ -158,31 +170,6 @@
                                                           -> IO VkResult
 
 #else
--- |
--- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkGetPhysicalDeviceDisplayPropertiesKHR
--- >     ( VkPhysicalDevice physicalDevice
--- >     , uint32_t* pPropertyCount
--- >     , VkDisplayPropertiesKHR* pProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceDisplayPropertiesKHR vkGetPhysicalDeviceDisplayPropertiesKHR registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkGetPhysicalDeviceDisplayPropertiesKHRSafe@ and @vkGetPhysicalDeviceDisplayPropertiesKHR@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetPhysicalDeviceDisplayPropertiesKHR <- vkGetInstanceProc @VkGetPhysicalDeviceDisplayPropertiesKHR vkInstance
---
--- or less efficient:
---
--- > myGetPhysicalDeviceDisplayPropertiesKHR <- vkGetProc @VkGetPhysicalDeviceDisplayPropertiesKHR
---
 vkGetPhysicalDeviceDisplayPropertiesKHR ::
                                         VkPhysicalDevice -- ^ physicalDevice
                                                          ->
@@ -196,7 +183,6 @@
 {-# NOINLINE vkGetPhysicalDeviceDisplayPropertiesKHR #-}
 #endif
 
-#ifdef NATIVE_FFI_VK_VERSION_1_0
 -- |
 -- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
 --
@@ -210,9 +196,22 @@
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceDisplayPropertiesKHR vkGetPhysicalDeviceDisplayPropertiesKHR registry at www.khronos.org>
 --
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
 --           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
 --
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceDisplayPropertiesKHR <- vkGetInstanceProc @VkGetPhysicalDeviceDisplayPropertiesKHR vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceDisplayPropertiesKHR <- vkGetProc @VkGetPhysicalDeviceDisplayPropertiesKHR
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_0
 foreign import ccall safe "vkGetPhysicalDeviceDisplayPropertiesKHR"
                vkGetPhysicalDeviceDisplayPropertiesKHRSafe ::
                VkPhysicalDevice -- ^ physicalDevice
@@ -222,31 +221,6 @@
                                                           -> IO VkResult
 
 #else
--- |
--- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkGetPhysicalDeviceDisplayPropertiesKHR
--- >     ( VkPhysicalDevice physicalDevice
--- >     , uint32_t* pPropertyCount
--- >     , VkDisplayPropertiesKHR* pProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceDisplayPropertiesKHR vkGetPhysicalDeviceDisplayPropertiesKHR registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkGetPhysicalDeviceDisplayPropertiesKHRSafe@ and @vkGetPhysicalDeviceDisplayPropertiesKHR@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetPhysicalDeviceDisplayPropertiesKHR <- vkGetInstanceProc @VkGetPhysicalDeviceDisplayPropertiesKHR vkInstance
---
--- or less efficient:
---
--- > myGetPhysicalDeviceDisplayPropertiesKHR <- vkGetProc @VkGetPhysicalDeviceDisplayPropertiesKHR
---
 vkGetPhysicalDeviceDisplayPropertiesKHRSafe ::
                                             VkPhysicalDevice -- ^ physicalDevice
                                                              ->
@@ -255,9 +229,10 @@
                                                 Ptr VkDisplayPropertiesKHR -- ^ pProperties
                                                                            -> IO VkResult
 vkGetPhysicalDeviceDisplayPropertiesKHRSafe
-  = vkGetPhysicalDeviceDisplayPropertiesKHR
+  = unsafeDupablePerformIO
+      (vkGetProcSafe @VkGetPhysicalDeviceDisplayPropertiesKHR)
 
-{-# INLINE vkGetPhysicalDeviceDisplayPropertiesKHRSafe #-}
+{-# NOINLINE vkGetPhysicalDeviceDisplayPropertiesKHRSafe #-}
 #endif
 
 -- | Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
@@ -281,11 +256,16 @@
 type PFN_vkGetPhysicalDeviceDisplayPropertiesKHR =
      FunPtr HS_vkGetPhysicalDeviceDisplayPropertiesKHR
 
-foreign import ccall "dynamic"
+foreign import ccall unsafe "dynamic"
                unwrapVkGetPhysicalDeviceDisplayPropertiesKHR ::
                PFN_vkGetPhysicalDeviceDisplayPropertiesKHR ->
                  HS_vkGetPhysicalDeviceDisplayPropertiesKHR
 
+foreign import ccall safe "dynamic"
+               unwrapVkGetPhysicalDeviceDisplayPropertiesKHRSafe ::
+               PFN_vkGetPhysicalDeviceDisplayPropertiesKHR ->
+                 HS_vkGetPhysicalDeviceDisplayPropertiesKHR
+
 instance VulkanProc "vkGetPhysicalDeviceDisplayPropertiesKHR" where
         type VkProcType "vkGetPhysicalDeviceDisplayPropertiesKHR" =
              HS_vkGetPhysicalDeviceDisplayPropertiesKHR
@@ -295,7 +275,11 @@
         unwrapVkProcPtr = unwrapVkGetPhysicalDeviceDisplayPropertiesKHR
 
         {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe
+          = unwrapVkGetPhysicalDeviceDisplayPropertiesKHRSafe
 
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
 pattern VkGetPhysicalDeviceDisplayPlanePropertiesKHR :: CString
 
 pattern VkGetPhysicalDeviceDisplayPlanePropertiesKHR <-
@@ -319,7 +303,6 @@
 type VkGetPhysicalDeviceDisplayPlanePropertiesKHR =
      "vkGetPhysicalDeviceDisplayPlanePropertiesKHR"
 
-#ifdef NATIVE_FFI_VK_VERSION_1_0
 -- |
 -- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
 --
@@ -333,9 +316,22 @@
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceDisplayPlanePropertiesKHR vkGetPhysicalDeviceDisplayPlanePropertiesKHR registry at www.khronos.org>
 --
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
 --           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
 --
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceDisplayPlanePropertiesKHR <- vkGetInstanceProc @VkGetPhysicalDeviceDisplayPlanePropertiesKHR vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceDisplayPlanePropertiesKHR <- vkGetProc @VkGetPhysicalDeviceDisplayPlanePropertiesKHR
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_0
 foreign import ccall unsafe
                "vkGetPhysicalDeviceDisplayPlanePropertiesKHR"
                vkGetPhysicalDeviceDisplayPlanePropertiesKHR ::
@@ -346,31 +342,6 @@
                                                                -> IO VkResult
 
 #else
--- |
--- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkGetPhysicalDeviceDisplayPlanePropertiesKHR
--- >     ( VkPhysicalDevice physicalDevice
--- >     , uint32_t* pPropertyCount
--- >     , VkDisplayPlanePropertiesKHR* pProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceDisplayPlanePropertiesKHR vkGetPhysicalDeviceDisplayPlanePropertiesKHR registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkGetPhysicalDeviceDisplayPlanePropertiesKHRSafe@ and @vkGetPhysicalDeviceDisplayPlanePropertiesKHR@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetPhysicalDeviceDisplayPlanePropertiesKHR <- vkGetInstanceProc @VkGetPhysicalDeviceDisplayPlanePropertiesKHR vkInstance
---
--- or less efficient:
---
--- > myGetPhysicalDeviceDisplayPlanePropertiesKHR <- vkGetProc @VkGetPhysicalDeviceDisplayPlanePropertiesKHR
---
 vkGetPhysicalDeviceDisplayPlanePropertiesKHR ::
                                              VkPhysicalDevice -- ^ physicalDevice
                                                               ->
@@ -385,7 +356,6 @@
 {-# NOINLINE vkGetPhysicalDeviceDisplayPlanePropertiesKHR #-}
 #endif
 
-#ifdef NATIVE_FFI_VK_VERSION_1_0
 -- |
 -- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
 --
@@ -399,9 +369,22 @@
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceDisplayPlanePropertiesKHR vkGetPhysicalDeviceDisplayPlanePropertiesKHR registry at www.khronos.org>
 --
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
 --           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
 --
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceDisplayPlanePropertiesKHR <- vkGetInstanceProc @VkGetPhysicalDeviceDisplayPlanePropertiesKHR vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceDisplayPlanePropertiesKHR <- vkGetProc @VkGetPhysicalDeviceDisplayPlanePropertiesKHR
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_0
 foreign import ccall safe
                "vkGetPhysicalDeviceDisplayPlanePropertiesKHR"
                vkGetPhysicalDeviceDisplayPlanePropertiesKHRSafe ::
@@ -412,31 +395,6 @@
                                                                -> IO VkResult
 
 #else
--- |
--- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkGetPhysicalDeviceDisplayPlanePropertiesKHR
--- >     ( VkPhysicalDevice physicalDevice
--- >     , uint32_t* pPropertyCount
--- >     , VkDisplayPlanePropertiesKHR* pProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceDisplayPlanePropertiesKHR vkGetPhysicalDeviceDisplayPlanePropertiesKHR registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkGetPhysicalDeviceDisplayPlanePropertiesKHRSafe@ and @vkGetPhysicalDeviceDisplayPlanePropertiesKHR@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetPhysicalDeviceDisplayPlanePropertiesKHR <- vkGetInstanceProc @VkGetPhysicalDeviceDisplayPlanePropertiesKHR vkInstance
---
--- or less efficient:
---
--- > myGetPhysicalDeviceDisplayPlanePropertiesKHR <- vkGetProc @VkGetPhysicalDeviceDisplayPlanePropertiesKHR
---
 vkGetPhysicalDeviceDisplayPlanePropertiesKHRSafe ::
                                                  VkPhysicalDevice -- ^ physicalDevice
                                                                   ->
@@ -445,9 +403,10 @@
                                                      Ptr VkDisplayPlanePropertiesKHR -- ^ pProperties
                                                                                      -> IO VkResult
 vkGetPhysicalDeviceDisplayPlanePropertiesKHRSafe
-  = vkGetPhysicalDeviceDisplayPlanePropertiesKHR
+  = unsafeDupablePerformIO
+      (vkGetProcSafe @VkGetPhysicalDeviceDisplayPlanePropertiesKHR)
 
-{-# INLINE vkGetPhysicalDeviceDisplayPlanePropertiesKHRSafe #-}
+{-# NOINLINE vkGetPhysicalDeviceDisplayPlanePropertiesKHRSafe #-}
 #endif
 
 -- | Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
@@ -471,11 +430,16 @@
 type PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR =
      FunPtr HS_vkGetPhysicalDeviceDisplayPlanePropertiesKHR
 
-foreign import ccall "dynamic"
+foreign import ccall unsafe "dynamic"
                unwrapVkGetPhysicalDeviceDisplayPlanePropertiesKHR ::
                PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR ->
                  HS_vkGetPhysicalDeviceDisplayPlanePropertiesKHR
 
+foreign import ccall safe "dynamic"
+               unwrapVkGetPhysicalDeviceDisplayPlanePropertiesKHRSafe ::
+               PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR ->
+                 HS_vkGetPhysicalDeviceDisplayPlanePropertiesKHR
+
 instance VulkanProc "vkGetPhysicalDeviceDisplayPlanePropertiesKHR"
          where
         type VkProcType "vkGetPhysicalDeviceDisplayPlanePropertiesKHR" =
@@ -487,7 +451,11 @@
           = unwrapVkGetPhysicalDeviceDisplayPlanePropertiesKHR
 
         {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe
+          = unwrapVkGetPhysicalDeviceDisplayPlanePropertiesKHRSafe
 
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
 pattern VkGetDisplayPlaneSupportedDisplaysKHR :: CString
 
 pattern VkGetDisplayPlaneSupportedDisplaysKHR <-
@@ -510,7 +478,6 @@
 type VkGetDisplayPlaneSupportedDisplaysKHR =
      "vkGetDisplayPlaneSupportedDisplaysKHR"
 
-#ifdef NATIVE_FFI_VK_VERSION_1_0
 -- |
 -- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
 --
@@ -525,9 +492,22 @@
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDisplayPlaneSupportedDisplaysKHR vkGetDisplayPlaneSupportedDisplaysKHR registry at www.khronos.org>
 --
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
 --           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
 --
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetDisplayPlaneSupportedDisplaysKHR <- vkGetInstanceProc @VkGetDisplayPlaneSupportedDisplaysKHR vkInstance
+--
+-- or less efficient:
+--
+-- > myGetDisplayPlaneSupportedDisplaysKHR <- vkGetProc @VkGetDisplayPlaneSupportedDisplaysKHR
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_0
 foreign import ccall unsafe "vkGetDisplayPlaneSupportedDisplaysKHR"
                vkGetDisplayPlaneSupportedDisplaysKHR ::
                VkPhysicalDevice -- ^ physicalDevice
@@ -538,32 +518,6 @@
                                                           -> IO VkResult
 
 #else
--- |
--- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkGetDisplayPlaneSupportedDisplaysKHR
--- >     ( VkPhysicalDevice physicalDevice
--- >     , uint32_t planeIndex
--- >     , uint32_t* pDisplayCount
--- >     , VkDisplayKHR* pDisplays
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDisplayPlaneSupportedDisplaysKHR vkGetDisplayPlaneSupportedDisplaysKHR registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkGetDisplayPlaneSupportedDisplaysKHRSafe@ and @vkGetDisplayPlaneSupportedDisplaysKHR@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetDisplayPlaneSupportedDisplaysKHR <- vkGetInstanceProc @VkGetDisplayPlaneSupportedDisplaysKHR vkInstance
---
--- or less efficient:
---
--- > myGetDisplayPlaneSupportedDisplaysKHR <- vkGetProc @VkGetDisplayPlaneSupportedDisplaysKHR
---
 vkGetDisplayPlaneSupportedDisplaysKHR ::
                                       VkPhysicalDevice -- ^ physicalDevice
                                                        ->
@@ -578,7 +532,6 @@
 {-# NOINLINE vkGetDisplayPlaneSupportedDisplaysKHR #-}
 #endif
 
-#ifdef NATIVE_FFI_VK_VERSION_1_0
 -- |
 -- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
 --
@@ -593,9 +546,22 @@
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDisplayPlaneSupportedDisplaysKHR vkGetDisplayPlaneSupportedDisplaysKHR registry at www.khronos.org>
 --
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
 --           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
 --
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetDisplayPlaneSupportedDisplaysKHR <- vkGetInstanceProc @VkGetDisplayPlaneSupportedDisplaysKHR vkInstance
+--
+-- or less efficient:
+--
+-- > myGetDisplayPlaneSupportedDisplaysKHR <- vkGetProc @VkGetDisplayPlaneSupportedDisplaysKHR
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_0
 foreign import ccall safe "vkGetDisplayPlaneSupportedDisplaysKHR"
                vkGetDisplayPlaneSupportedDisplaysKHRSafe ::
                VkPhysicalDevice -- ^ physicalDevice
@@ -606,32 +572,6 @@
                                                           -> IO VkResult
 
 #else
--- |
--- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkGetDisplayPlaneSupportedDisplaysKHR
--- >     ( VkPhysicalDevice physicalDevice
--- >     , uint32_t planeIndex
--- >     , uint32_t* pDisplayCount
--- >     , VkDisplayKHR* pDisplays
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDisplayPlaneSupportedDisplaysKHR vkGetDisplayPlaneSupportedDisplaysKHR registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkGetDisplayPlaneSupportedDisplaysKHRSafe@ and @vkGetDisplayPlaneSupportedDisplaysKHR@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetDisplayPlaneSupportedDisplaysKHR <- vkGetInstanceProc @VkGetDisplayPlaneSupportedDisplaysKHR vkInstance
---
--- or less efficient:
---
--- > myGetDisplayPlaneSupportedDisplaysKHR <- vkGetProc @VkGetDisplayPlaneSupportedDisplaysKHR
---
 vkGetDisplayPlaneSupportedDisplaysKHRSafe ::
                                           VkPhysicalDevice -- ^ physicalDevice
                                                            ->
@@ -640,9 +580,10 @@
                                                                  -> Ptr VkDisplayKHR -- ^ pDisplays
                                                                                      -> IO VkResult
 vkGetDisplayPlaneSupportedDisplaysKHRSafe
-  = vkGetDisplayPlaneSupportedDisplaysKHR
+  = unsafeDupablePerformIO
+      (vkGetProcSafe @VkGetDisplayPlaneSupportedDisplaysKHR)
 
-{-# INLINE vkGetDisplayPlaneSupportedDisplaysKHRSafe #-}
+{-# NOINLINE vkGetDisplayPlaneSupportedDisplaysKHRSafe #-}
 #endif
 
 -- | Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
@@ -668,11 +609,16 @@
 type PFN_vkGetDisplayPlaneSupportedDisplaysKHR =
      FunPtr HS_vkGetDisplayPlaneSupportedDisplaysKHR
 
-foreign import ccall "dynamic"
+foreign import ccall unsafe "dynamic"
                unwrapVkGetDisplayPlaneSupportedDisplaysKHR ::
                PFN_vkGetDisplayPlaneSupportedDisplaysKHR ->
                  HS_vkGetDisplayPlaneSupportedDisplaysKHR
 
+foreign import ccall safe "dynamic"
+               unwrapVkGetDisplayPlaneSupportedDisplaysKHRSafe ::
+               PFN_vkGetDisplayPlaneSupportedDisplaysKHR ->
+                 HS_vkGetDisplayPlaneSupportedDisplaysKHR
+
 instance VulkanProc "vkGetDisplayPlaneSupportedDisplaysKHR" where
         type VkProcType "vkGetDisplayPlaneSupportedDisplaysKHR" =
              HS_vkGetDisplayPlaneSupportedDisplaysKHR
@@ -682,7 +628,11 @@
         unwrapVkProcPtr = unwrapVkGetDisplayPlaneSupportedDisplaysKHR
 
         {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe
+          = unwrapVkGetDisplayPlaneSupportedDisplaysKHRSafe
 
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
 pattern VkGetDisplayModePropertiesKHR :: CString
 
 pattern VkGetDisplayModePropertiesKHR <-
@@ -705,7 +655,6 @@
 type VkGetDisplayModePropertiesKHR =
      "vkGetDisplayModePropertiesKHR"
 
-#ifdef NATIVE_FFI_VK_VERSION_1_0
 -- |
 -- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
 --
@@ -720,9 +669,22 @@
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDisplayModePropertiesKHR vkGetDisplayModePropertiesKHR registry at www.khronos.org>
 --
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
 --           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
 --
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetDisplayModePropertiesKHR <- vkGetInstanceProc @VkGetDisplayModePropertiesKHR vkInstance
+--
+-- or less efficient:
+--
+-- > myGetDisplayModePropertiesKHR <- vkGetProc @VkGetDisplayModePropertiesKHR
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_0
 foreign import ccall unsafe "vkGetDisplayModePropertiesKHR"
                vkGetDisplayModePropertiesKHR ::
                VkPhysicalDevice -- ^ physicalDevice
@@ -734,32 +696,6 @@
                                                                 -> IO VkResult
 
 #else
--- |
--- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkGetDisplayModePropertiesKHR
--- >     ( VkPhysicalDevice physicalDevice
--- >     , VkDisplayKHR display
--- >     , uint32_t* pPropertyCount
--- >     , VkDisplayModePropertiesKHR* pProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDisplayModePropertiesKHR vkGetDisplayModePropertiesKHR registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkGetDisplayModePropertiesKHRSafe@ and @vkGetDisplayModePropertiesKHR@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetDisplayModePropertiesKHR <- vkGetInstanceProc @VkGetDisplayModePropertiesKHR vkInstance
---
--- or less efficient:
---
--- > myGetDisplayModePropertiesKHR <- vkGetProc @VkGetDisplayModePropertiesKHR
---
 vkGetDisplayModePropertiesKHR ::
                               VkPhysicalDevice -- ^ physicalDevice
                                                ->
@@ -774,7 +710,6 @@
 {-# NOINLINE vkGetDisplayModePropertiesKHR #-}
 #endif
 
-#ifdef NATIVE_FFI_VK_VERSION_1_0
 -- |
 -- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
 --
@@ -789,9 +724,22 @@
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDisplayModePropertiesKHR vkGetDisplayModePropertiesKHR registry at www.khronos.org>
 --
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
 --           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
 --
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetDisplayModePropertiesKHR <- vkGetInstanceProc @VkGetDisplayModePropertiesKHR vkInstance
+--
+-- or less efficient:
+--
+-- > myGetDisplayModePropertiesKHR <- vkGetProc @VkGetDisplayModePropertiesKHR
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_0
 foreign import ccall safe "vkGetDisplayModePropertiesKHR"
                vkGetDisplayModePropertiesKHRSafe ::
                VkPhysicalDevice -- ^ physicalDevice
@@ -803,32 +751,6 @@
                                                                 -> IO VkResult
 
 #else
--- |
--- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkGetDisplayModePropertiesKHR
--- >     ( VkPhysicalDevice physicalDevice
--- >     , VkDisplayKHR display
--- >     , uint32_t* pPropertyCount
--- >     , VkDisplayModePropertiesKHR* pProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDisplayModePropertiesKHR vkGetDisplayModePropertiesKHR registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkGetDisplayModePropertiesKHRSafe@ and @vkGetDisplayModePropertiesKHR@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetDisplayModePropertiesKHR <- vkGetInstanceProc @VkGetDisplayModePropertiesKHR vkInstance
---
--- or less efficient:
---
--- > myGetDisplayModePropertiesKHR <- vkGetProc @VkGetDisplayModePropertiesKHR
---
 vkGetDisplayModePropertiesKHRSafe ::
                                   VkPhysicalDevice -- ^ physicalDevice
                                                    ->
@@ -837,9 +759,11 @@
                                       Ptr Word32 -- ^ pPropertyCount
                                                  -> Ptr VkDisplayModePropertiesKHR -- ^ pProperties
                                                                                    -> IO VkResult
-vkGetDisplayModePropertiesKHRSafe = vkGetDisplayModePropertiesKHR
+vkGetDisplayModePropertiesKHRSafe
+  = unsafeDupablePerformIO
+      (vkGetProcSafe @VkGetDisplayModePropertiesKHR)
 
-{-# INLINE vkGetDisplayModePropertiesKHRSafe #-}
+{-# NOINLINE vkGetDisplayModePropertiesKHRSafe #-}
 #endif
 
 -- | Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
@@ -866,11 +790,16 @@
 type PFN_vkGetDisplayModePropertiesKHR =
      FunPtr HS_vkGetDisplayModePropertiesKHR
 
-foreign import ccall "dynamic" unwrapVkGetDisplayModePropertiesKHR
-               ::
+foreign import ccall unsafe "dynamic"
+               unwrapVkGetDisplayModePropertiesKHR ::
                PFN_vkGetDisplayModePropertiesKHR ->
                  HS_vkGetDisplayModePropertiesKHR
 
+foreign import ccall safe "dynamic"
+               unwrapVkGetDisplayModePropertiesKHRSafe ::
+               PFN_vkGetDisplayModePropertiesKHR ->
+                 HS_vkGetDisplayModePropertiesKHR
+
 instance VulkanProc "vkGetDisplayModePropertiesKHR" where
         type VkProcType "vkGetDisplayModePropertiesKHR" =
              HS_vkGetDisplayModePropertiesKHR
@@ -880,7 +809,10 @@
         unwrapVkProcPtr = unwrapVkGetDisplayModePropertiesKHR
 
         {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkGetDisplayModePropertiesKHRSafe
 
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
 pattern VkCreateDisplayModeKHR :: CString
 
 pattern VkCreateDisplayModeKHR <-
@@ -900,7 +832,6 @@
 
 type VkCreateDisplayModeKHR = "vkCreateDisplayModeKHR"
 
-#ifdef NATIVE_FFI_VK_VERSION_1_0
 -- |
 -- Success codes: 'VK_SUCCESS'.
 --
@@ -916,9 +847,22 @@
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateDisplayModeKHR vkCreateDisplayModeKHR registry at www.khronos.org>
 --
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
 --           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
 --
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateDisplayModeKHR <- vkGetInstanceProc @VkCreateDisplayModeKHR vkInstance
+--
+-- or less efficient:
+--
+-- > myCreateDisplayModeKHR <- vkGetProc @VkCreateDisplayModeKHR
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_0
 foreign import ccall unsafe "vkCreateDisplayModeKHR"
                vkCreateDisplayModeKHR ::
                VkPhysicalDevice -- ^ physicalDevice
@@ -932,33 +876,6 @@
                                                                        -> IO VkResult
 
 #else
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INITIALIZATION_FAILED'.
---
--- > VkResult vkCreateDisplayModeKHR
--- >     ( VkPhysicalDevice physicalDevice
--- >     , VkDisplayKHR display
--- >     , const VkDisplayModeCreateInfoKHR* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkDisplayModeKHR* pMode
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateDisplayModeKHR vkCreateDisplayModeKHR registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCreateDisplayModeKHRSafe@ and @vkCreateDisplayModeKHR@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateDisplayModeKHR <- vkGetInstanceProc @VkCreateDisplayModeKHR vkInstance
---
--- or less efficient:
---
--- > myCreateDisplayModeKHR <- vkGetProc @VkCreateDisplayModeKHR
---
 vkCreateDisplayModeKHR ::
                        VkPhysicalDevice -- ^ physicalDevice
                                         ->
@@ -975,7 +892,6 @@
 {-# NOINLINE vkCreateDisplayModeKHR #-}
 #endif
 
-#ifdef NATIVE_FFI_VK_VERSION_1_0
 -- |
 -- Success codes: 'VK_SUCCESS'.
 --
@@ -991,9 +907,22 @@
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateDisplayModeKHR vkCreateDisplayModeKHR registry at www.khronos.org>
 --
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
 --           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
 --
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateDisplayModeKHR <- vkGetInstanceProc @VkCreateDisplayModeKHR vkInstance
+--
+-- or less efficient:
+--
+-- > myCreateDisplayModeKHR <- vkGetProc @VkCreateDisplayModeKHR
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_0
 foreign import ccall safe "vkCreateDisplayModeKHR"
                vkCreateDisplayModeKHRSafe ::
                VkPhysicalDevice -- ^ physicalDevice
@@ -1007,33 +936,6 @@
                                                                        -> IO VkResult
 
 #else
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INITIALIZATION_FAILED'.
---
--- > VkResult vkCreateDisplayModeKHR
--- >     ( VkPhysicalDevice physicalDevice
--- >     , VkDisplayKHR display
--- >     , const VkDisplayModeCreateInfoKHR* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkDisplayModeKHR* pMode
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateDisplayModeKHR vkCreateDisplayModeKHR registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCreateDisplayModeKHRSafe@ and @vkCreateDisplayModeKHR@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateDisplayModeKHR <- vkGetInstanceProc @VkCreateDisplayModeKHR vkInstance
---
--- or less efficient:
---
--- > myCreateDisplayModeKHR <- vkGetProc @VkCreateDisplayModeKHR
---
 vkCreateDisplayModeKHRSafe ::
                            VkPhysicalDevice -- ^ physicalDevice
                                             ->
@@ -1044,9 +946,10 @@
                                  Ptr VkAllocationCallbacks -- ^ pAllocator
                                                            -> Ptr VkDisplayModeKHR -- ^ pMode
                                                                                    -> IO VkResult
-vkCreateDisplayModeKHRSafe = vkCreateDisplayModeKHR
+vkCreateDisplayModeKHRSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCreateDisplayModeKHR)
 
-{-# INLINE vkCreateDisplayModeKHRSafe #-}
+{-# NOINLINE vkCreateDisplayModeKHRSafe #-}
 #endif
 
 -- | Success codes: 'VK_SUCCESS'.
@@ -1075,7 +978,11 @@
 
 type PFN_vkCreateDisplayModeKHR = FunPtr HS_vkCreateDisplayModeKHR
 
-foreign import ccall "dynamic" unwrapVkCreateDisplayModeKHR ::
+foreign import ccall unsafe "dynamic" unwrapVkCreateDisplayModeKHR
+               :: PFN_vkCreateDisplayModeKHR -> HS_vkCreateDisplayModeKHR
+
+foreign import ccall safe "dynamic"
+               unwrapVkCreateDisplayModeKHRSafe ::
                PFN_vkCreateDisplayModeKHR -> HS_vkCreateDisplayModeKHR
 
 instance VulkanProc "vkCreateDisplayModeKHR" where
@@ -1087,7 +994,10 @@
         unwrapVkProcPtr = unwrapVkCreateDisplayModeKHR
 
         {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkCreateDisplayModeKHRSafe
 
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
 pattern VkGetDisplayPlaneCapabilitiesKHR :: CString
 
 pattern VkGetDisplayPlaneCapabilitiesKHR <-
@@ -1110,7 +1020,6 @@
 type VkGetDisplayPlaneCapabilitiesKHR =
      "vkGetDisplayPlaneCapabilitiesKHR"
 
-#ifdef NATIVE_FFI_VK_VERSION_1_0
 -- |
 -- Success codes: 'VK_SUCCESS'.
 --
@@ -1125,9 +1034,22 @@
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDisplayPlaneCapabilitiesKHR vkGetDisplayPlaneCapabilitiesKHR registry at www.khronos.org>
 --
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
 --           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
 --
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetDisplayPlaneCapabilitiesKHR <- vkGetInstanceProc @VkGetDisplayPlaneCapabilitiesKHR vkInstance
+--
+-- or less efficient:
+--
+-- > myGetDisplayPlaneCapabilitiesKHR <- vkGetProc @VkGetDisplayPlaneCapabilitiesKHR
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_0
 foreign import ccall unsafe "vkGetDisplayPlaneCapabilitiesKHR"
                vkGetDisplayPlaneCapabilitiesKHR ::
                VkPhysicalDevice -- ^ physicalDevice
@@ -1139,32 +1061,6 @@
                                                                -> IO VkResult
 
 #else
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkGetDisplayPlaneCapabilitiesKHR
--- >     ( VkPhysicalDevice physicalDevice
--- >     , VkDisplayModeKHR mode
--- >     , uint32_t planeIndex
--- >     , VkDisplayPlaneCapabilitiesKHR* pCapabilities
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDisplayPlaneCapabilitiesKHR vkGetDisplayPlaneCapabilitiesKHR registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkGetDisplayPlaneCapabilitiesKHRSafe@ and @vkGetDisplayPlaneCapabilitiesKHR@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetDisplayPlaneCapabilitiesKHR <- vkGetInstanceProc @VkGetDisplayPlaneCapabilitiesKHR vkInstance
---
--- or less efficient:
---
--- > myGetDisplayPlaneCapabilitiesKHR <- vkGetProc @VkGetDisplayPlaneCapabilitiesKHR
---
 vkGetDisplayPlaneCapabilitiesKHR ::
                                  VkPhysicalDevice -- ^ physicalDevice
                                                   ->
@@ -1180,7 +1076,6 @@
 {-# NOINLINE vkGetDisplayPlaneCapabilitiesKHR #-}
 #endif
 
-#ifdef NATIVE_FFI_VK_VERSION_1_0
 -- |
 -- Success codes: 'VK_SUCCESS'.
 --
@@ -1195,9 +1090,22 @@
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDisplayPlaneCapabilitiesKHR vkGetDisplayPlaneCapabilitiesKHR registry at www.khronos.org>
 --
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
 --           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
 --
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetDisplayPlaneCapabilitiesKHR <- vkGetInstanceProc @VkGetDisplayPlaneCapabilitiesKHR vkInstance
+--
+-- or less efficient:
+--
+-- > myGetDisplayPlaneCapabilitiesKHR <- vkGetProc @VkGetDisplayPlaneCapabilitiesKHR
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_0
 foreign import ccall safe "vkGetDisplayPlaneCapabilitiesKHR"
                vkGetDisplayPlaneCapabilitiesKHRSafe ::
                VkPhysicalDevice -- ^ physicalDevice
@@ -1209,32 +1117,6 @@
                                                                -> IO VkResult
 
 #else
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkGetDisplayPlaneCapabilitiesKHR
--- >     ( VkPhysicalDevice physicalDevice
--- >     , VkDisplayModeKHR mode
--- >     , uint32_t planeIndex
--- >     , VkDisplayPlaneCapabilitiesKHR* pCapabilities
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDisplayPlaneCapabilitiesKHR vkGetDisplayPlaneCapabilitiesKHR registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkGetDisplayPlaneCapabilitiesKHRSafe@ and @vkGetDisplayPlaneCapabilitiesKHR@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetDisplayPlaneCapabilitiesKHR <- vkGetInstanceProc @VkGetDisplayPlaneCapabilitiesKHR vkInstance
---
--- or less efficient:
---
--- > myGetDisplayPlaneCapabilitiesKHR <- vkGetProc @VkGetDisplayPlaneCapabilitiesKHR
---
 vkGetDisplayPlaneCapabilitiesKHRSafe ::
                                      VkPhysicalDevice -- ^ physicalDevice
                                                       ->
@@ -1244,9 +1126,10 @@
                                                 -> Ptr VkDisplayPlaneCapabilitiesKHR -- ^ pCapabilities
                                                                                      -> IO VkResult
 vkGetDisplayPlaneCapabilitiesKHRSafe
-  = vkGetDisplayPlaneCapabilitiesKHR
+  = unsafeDupablePerformIO
+      (vkGetProcSafe @VkGetDisplayPlaneCapabilitiesKHR)
 
-{-# INLINE vkGetDisplayPlaneCapabilitiesKHRSafe #-}
+{-# NOINLINE vkGetDisplayPlaneCapabilitiesKHRSafe #-}
 #endif
 
 -- | Success codes: 'VK_SUCCESS'.
@@ -1273,11 +1156,16 @@
 type PFN_vkGetDisplayPlaneCapabilitiesKHR =
      FunPtr HS_vkGetDisplayPlaneCapabilitiesKHR
 
-foreign import ccall "dynamic"
+foreign import ccall unsafe "dynamic"
                unwrapVkGetDisplayPlaneCapabilitiesKHR ::
                PFN_vkGetDisplayPlaneCapabilitiesKHR ->
                  HS_vkGetDisplayPlaneCapabilitiesKHR
 
+foreign import ccall safe "dynamic"
+               unwrapVkGetDisplayPlaneCapabilitiesKHRSafe ::
+               PFN_vkGetDisplayPlaneCapabilitiesKHR ->
+                 HS_vkGetDisplayPlaneCapabilitiesKHR
+
 instance VulkanProc "vkGetDisplayPlaneCapabilitiesKHR" where
         type VkProcType "vkGetDisplayPlaneCapabilitiesKHR" =
              HS_vkGetDisplayPlaneCapabilitiesKHR
@@ -1287,7 +1175,10 @@
         unwrapVkProcPtr = unwrapVkGetDisplayPlaneCapabilitiesKHR
 
         {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkGetDisplayPlaneCapabilitiesKHRSafe
 
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
 pattern VkCreateDisplayPlaneSurfaceKHR :: CString
 
 pattern VkCreateDisplayPlaneSurfaceKHR <-
@@ -1310,7 +1201,6 @@
 type VkCreateDisplayPlaneSurfaceKHR =
      "vkCreateDisplayPlaneSurfaceKHR"
 
-#ifdef NATIVE_FFI_VK_VERSION_1_0
 -- |
 -- Success codes: 'VK_SUCCESS'.
 --
@@ -1325,9 +1215,22 @@
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateDisplayPlaneSurfaceKHR vkCreateDisplayPlaneSurfaceKHR registry at www.khronos.org>
 --
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
 --           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
 --
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateDisplayPlaneSurfaceKHR <- vkGetInstanceProc @VkCreateDisplayPlaneSurfaceKHR vkInstance
+--
+-- or less efficient:
+--
+-- > myCreateDisplayPlaneSurfaceKHR <- vkGetProc @VkCreateDisplayPlaneSurfaceKHR
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_0
 foreign import ccall unsafe "vkCreateDisplayPlaneSurfaceKHR"
                vkCreateDisplayPlaneSurfaceKHR ::
                VkInstance -- ^ instance
@@ -1339,32 +1242,6 @@
                                                                  -> IO VkResult
 
 #else
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkCreateDisplayPlaneSurfaceKHR
--- >     ( VkInstance instance
--- >     , const VkDisplaySurfaceCreateInfoKHR* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkSurfaceKHR* pSurface
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateDisplayPlaneSurfaceKHR vkCreateDisplayPlaneSurfaceKHR registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCreateDisplayPlaneSurfaceKHRSafe@ and @vkCreateDisplayPlaneSurfaceKHR@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateDisplayPlaneSurfaceKHR <- vkGetInstanceProc @VkCreateDisplayPlaneSurfaceKHR vkInstance
---
--- or less efficient:
---
--- > myCreateDisplayPlaneSurfaceKHR <- vkGetProc @VkCreateDisplayPlaneSurfaceKHR
---
 vkCreateDisplayPlaneSurfaceKHR ::
                                VkInstance -- ^ instance
                                           ->
@@ -1380,7 +1257,6 @@
 {-# NOINLINE vkCreateDisplayPlaneSurfaceKHR #-}
 #endif
 
-#ifdef NATIVE_FFI_VK_VERSION_1_0
 -- |
 -- Success codes: 'VK_SUCCESS'.
 --
@@ -1395,9 +1271,22 @@
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateDisplayPlaneSurfaceKHR vkCreateDisplayPlaneSurfaceKHR registry at www.khronos.org>
 --
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
 --           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
 --
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateDisplayPlaneSurfaceKHR <- vkGetInstanceProc @VkCreateDisplayPlaneSurfaceKHR vkInstance
+--
+-- or less efficient:
+--
+-- > myCreateDisplayPlaneSurfaceKHR <- vkGetProc @VkCreateDisplayPlaneSurfaceKHR
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_0
 foreign import ccall safe "vkCreateDisplayPlaneSurfaceKHR"
                vkCreateDisplayPlaneSurfaceKHRSafe ::
                VkInstance -- ^ instance
@@ -1409,32 +1298,6 @@
                                                                  -> IO VkResult
 
 #else
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkCreateDisplayPlaneSurfaceKHR
--- >     ( VkInstance instance
--- >     , const VkDisplaySurfaceCreateInfoKHR* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkSurfaceKHR* pSurface
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateDisplayPlaneSurfaceKHR vkCreateDisplayPlaneSurfaceKHR registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCreateDisplayPlaneSurfaceKHRSafe@ and @vkCreateDisplayPlaneSurfaceKHR@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateDisplayPlaneSurfaceKHR <- vkGetInstanceProc @VkCreateDisplayPlaneSurfaceKHR vkInstance
---
--- or less efficient:
---
--- > myCreateDisplayPlaneSurfaceKHR <- vkGetProc @VkCreateDisplayPlaneSurfaceKHR
---
 vkCreateDisplayPlaneSurfaceKHRSafe ::
                                    VkInstance -- ^ instance
                                               ->
@@ -1443,9 +1306,11 @@
                                        Ptr VkAllocationCallbacks -- ^ pAllocator
                                                                  -> Ptr VkSurfaceKHR -- ^ pSurface
                                                                                      -> IO VkResult
-vkCreateDisplayPlaneSurfaceKHRSafe = vkCreateDisplayPlaneSurfaceKHR
+vkCreateDisplayPlaneSurfaceKHRSafe
+  = unsafeDupablePerformIO
+      (vkGetProcSafe @VkCreateDisplayPlaneSurfaceKHR)
 
-{-# INLINE vkCreateDisplayPlaneSurfaceKHRSafe #-}
+{-# NOINLINE vkCreateDisplayPlaneSurfaceKHRSafe #-}
 #endif
 
 -- | Success codes: 'VK_SUCCESS'.
@@ -1472,11 +1337,16 @@
 type PFN_vkCreateDisplayPlaneSurfaceKHR =
      FunPtr HS_vkCreateDisplayPlaneSurfaceKHR
 
-foreign import ccall "dynamic" unwrapVkCreateDisplayPlaneSurfaceKHR
-               ::
+foreign import ccall unsafe "dynamic"
+               unwrapVkCreateDisplayPlaneSurfaceKHR ::
                PFN_vkCreateDisplayPlaneSurfaceKHR ->
                  HS_vkCreateDisplayPlaneSurfaceKHR
 
+foreign import ccall safe "dynamic"
+               unwrapVkCreateDisplayPlaneSurfaceKHRSafe ::
+               PFN_vkCreateDisplayPlaneSurfaceKHR ->
+                 HS_vkCreateDisplayPlaneSurfaceKHR
+
 instance VulkanProc "vkCreateDisplayPlaneSurfaceKHR" where
         type VkProcType "vkCreateDisplayPlaneSurfaceKHR" =
              HS_vkCreateDisplayPlaneSurfaceKHR
@@ -1486,6 +1356,9 @@
         unwrapVkProcPtr = unwrapVkCreateDisplayPlaneSurfaceKHR
 
         {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkCreateDisplayPlaneSurfaceKHRSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VK_KHR_DISPLAY_SPEC_VERSION :: (Num a, Eq a) => a
 
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_KHR_display_swapchain.hs b/src-gen/Graphics/Vulkan/Ext/VK_KHR_display_swapchain.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_KHR_display_swapchain.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_KHR_display_swapchain.hs
@@ -110,7 +110,6 @@
 
 type VkCreateSharedSwapchainsKHR = "vkCreateSharedSwapchainsKHR"
 
-#ifdef NATIVE_FFI_VK_VERSION_1_0
 -- |
 -- Success codes: 'VK_SUCCESS'.
 --
@@ -126,9 +125,22 @@
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateSharedSwapchainsKHR vkCreateSharedSwapchainsKHR registry at www.khronos.org>
 --
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
 --           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
 --
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateSharedSwapchainsKHR <- vkGetDeviceProc @VkCreateSharedSwapchainsKHR vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateSharedSwapchainsKHR <- vkGetProc @VkCreateSharedSwapchainsKHR
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_0
 foreign import ccall unsafe "vkCreateSharedSwapchainsKHR"
                vkCreateSharedSwapchainsKHR ::
                VkDevice -- ^ device
@@ -142,33 +154,6 @@
                                                                      -> IO VkResult
 
 #else
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INCOMPATIBLE_DISPLAY_KHR', 'VK_ERROR_DEVICE_LOST', 'VK_ERROR_SURFACE_LOST_KHR'.
---
--- > VkResult vkCreateSharedSwapchainsKHR
--- >     ( VkDevice device
--- >     , uint32_t swapchainCount
--- >     , const VkSwapchainCreateInfoKHR* pCreateInfos
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkSwapchainKHR* pSwapchains
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateSharedSwapchainsKHR vkCreateSharedSwapchainsKHR registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCreateSharedSwapchainsKHRSafe@ and @vkCreateSharedSwapchainsKHR@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateSharedSwapchainsKHR <- vkGetDeviceProc @VkCreateSharedSwapchainsKHR vkDevice
---
--- or less efficient:
---
--- > myCreateSharedSwapchainsKHR <- vkGetProc @VkCreateSharedSwapchainsKHR
---
 vkCreateSharedSwapchainsKHR ::
                             VkDevice -- ^ device
                                      ->
@@ -185,7 +170,6 @@
 {-# NOINLINE vkCreateSharedSwapchainsKHR #-}
 #endif
 
-#ifdef NATIVE_FFI_VK_VERSION_1_0
 -- |
 -- Success codes: 'VK_SUCCESS'.
 --
@@ -201,9 +185,22 @@
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateSharedSwapchainsKHR vkCreateSharedSwapchainsKHR registry at www.khronos.org>
 --
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
 --           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
 --
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateSharedSwapchainsKHR <- vkGetDeviceProc @VkCreateSharedSwapchainsKHR vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateSharedSwapchainsKHR <- vkGetProc @VkCreateSharedSwapchainsKHR
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_0
 foreign import ccall safe "vkCreateSharedSwapchainsKHR"
                vkCreateSharedSwapchainsKHRSafe ::
                VkDevice -- ^ device
@@ -217,33 +214,6 @@
                                                                      -> IO VkResult
 
 #else
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INCOMPATIBLE_DISPLAY_KHR', 'VK_ERROR_DEVICE_LOST', 'VK_ERROR_SURFACE_LOST_KHR'.
---
--- > VkResult vkCreateSharedSwapchainsKHR
--- >     ( VkDevice device
--- >     , uint32_t swapchainCount
--- >     , const VkSwapchainCreateInfoKHR* pCreateInfos
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkSwapchainKHR* pSwapchains
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateSharedSwapchainsKHR vkCreateSharedSwapchainsKHR registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCreateSharedSwapchainsKHRSafe@ and @vkCreateSharedSwapchainsKHR@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateSharedSwapchainsKHR <- vkGetDeviceProc @VkCreateSharedSwapchainsKHR vkDevice
---
--- or less efficient:
---
--- > myCreateSharedSwapchainsKHR <- vkGetProc @VkCreateSharedSwapchainsKHR
---
 vkCreateSharedSwapchainsKHRSafe ::
                                 VkDevice -- ^ device
                                          ->
@@ -254,9 +224,11 @@
                                       Ptr VkAllocationCallbacks -- ^ pAllocator
                                                                 -> Ptr VkSwapchainKHR -- ^ pSwapchains
                                                                                       -> IO VkResult
-vkCreateSharedSwapchainsKHRSafe = vkCreateSharedSwapchainsKHR
+vkCreateSharedSwapchainsKHRSafe
+  = unsafeDupablePerformIO
+      (vkGetProcSafe @VkCreateSharedSwapchainsKHR)
 
-{-# INLINE vkCreateSharedSwapchainsKHRSafe #-}
+{-# NOINLINE vkCreateSharedSwapchainsKHRSafe #-}
 #endif
 
 -- | Success codes: 'VK_SUCCESS'.
@@ -286,9 +258,14 @@
 type PFN_vkCreateSharedSwapchainsKHR =
      FunPtr HS_vkCreateSharedSwapchainsKHR
 
-foreign import ccall "dynamic" unwrapVkCreateSharedSwapchainsKHR ::
+foreign import ccall unsafe "dynamic"
+               unwrapVkCreateSharedSwapchainsKHR ::
                PFN_vkCreateSharedSwapchainsKHR -> HS_vkCreateSharedSwapchainsKHR
 
+foreign import ccall safe "dynamic"
+               unwrapVkCreateSharedSwapchainsKHRSafe ::
+               PFN_vkCreateSharedSwapchainsKHR -> HS_vkCreateSharedSwapchainsKHR
+
 instance VulkanProc "vkCreateSharedSwapchainsKHR" where
         type VkProcType "vkCreateSharedSwapchainsKHR" =
              HS_vkCreateSharedSwapchainsKHR
@@ -298,6 +275,9 @@
         unwrapVkProcPtr = unwrapVkCreateSharedSwapchainsKHR
 
         {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkCreateSharedSwapchainsKHRSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VK_KHR_DISPLAY_SWAPCHAIN_SPEC_VERSION :: (Num a, Eq a) => a
 
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_KHR_external_fence_capabilities.hs b/src-gen/Graphics/Vulkan/Ext/VK_KHR_external_fence_capabilities.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_KHR_external_fence_capabilities.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_KHR_external_fence_capabilities.hs
@@ -110,11 +110,16 @@
 type PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR =
      FunPtr HS_vkGetPhysicalDeviceExternalFencePropertiesKHR
 
-foreign import ccall "dynamic"
+foreign import ccall unsafe "dynamic"
                unwrapVkGetPhysicalDeviceExternalFencePropertiesKHR ::
                PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR ->
                  HS_vkGetPhysicalDeviceExternalFencePropertiesKHR
 
+foreign import ccall safe "dynamic"
+               unwrapVkGetPhysicalDeviceExternalFencePropertiesKHRSafe ::
+               PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR ->
+                 HS_vkGetPhysicalDeviceExternalFencePropertiesKHR
+
 instance VulkanProc "vkGetPhysicalDeviceExternalFencePropertiesKHR"
          where
         type VkProcType "vkGetPhysicalDeviceExternalFencePropertiesKHR" =
@@ -126,6 +131,10 @@
           = unwrapVkGetPhysicalDeviceExternalFencePropertiesKHR
 
         {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe
+          = unwrapVkGetPhysicalDeviceExternalFencePropertiesKHRSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VK_KHR_EXTERNAL_FENCE_CAPABILITIES_SPEC_VERSION ::
         (Num a, Eq a) => a
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_KHR_external_fence_fd.hs b/src-gen/Graphics/Vulkan/Ext/VK_KHR_external_fence_fd.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_KHR_external_fence_fd.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_KHR_external_fence_fd.hs
@@ -92,9 +92,12 @@
 
 type PFN_vkImportFenceFdKHR = FunPtr HS_vkImportFenceFdKHR
 
-foreign import ccall "dynamic" unwrapVkImportFenceFdKHR ::
+foreign import ccall unsafe "dynamic" unwrapVkImportFenceFdKHR ::
                PFN_vkImportFenceFdKHR -> HS_vkImportFenceFdKHR
 
+foreign import ccall safe "dynamic" unwrapVkImportFenceFdKHRSafe ::
+               PFN_vkImportFenceFdKHR -> HS_vkImportFenceFdKHR
+
 instance VulkanProc "vkImportFenceFdKHR" where
         type VkProcType "vkImportFenceFdKHR" = HS_vkImportFenceFdKHR
         vkProcSymbol = _VkImportFenceFdKHR
@@ -103,7 +106,10 @@
         unwrapVkProcPtr = unwrapVkImportFenceFdKHR
 
         {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkImportFenceFdKHRSafe
 
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
 pattern VkGetFenceFdKHR :: CString
 
 pattern VkGetFenceFdKHR <- (is_VkGetFenceFdKHR -> True)
@@ -140,9 +146,12 @@
 
 type PFN_vkGetFenceFdKHR = FunPtr HS_vkGetFenceFdKHR
 
-foreign import ccall "dynamic" unwrapVkGetFenceFdKHR ::
+foreign import ccall unsafe "dynamic" unwrapVkGetFenceFdKHR ::
                PFN_vkGetFenceFdKHR -> HS_vkGetFenceFdKHR
 
+foreign import ccall safe "dynamic" unwrapVkGetFenceFdKHRSafe ::
+               PFN_vkGetFenceFdKHR -> HS_vkGetFenceFdKHR
+
 instance VulkanProc "vkGetFenceFdKHR" where
         type VkProcType "vkGetFenceFdKHR" = HS_vkGetFenceFdKHR
         vkProcSymbol = _VkGetFenceFdKHR
@@ -151,6 +160,9 @@
         unwrapVkProcPtr = unwrapVkGetFenceFdKHR
 
         {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkGetFenceFdKHRSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VK_KHR_EXTERNAL_FENCE_FD_SPEC_VERSION :: (Num a, Eq a) => a
 
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_KHR_external_fence_win32.hs b/src-gen/Graphics/Vulkan/Ext/VK_KHR_external_fence_win32.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_KHR_external_fence_win32.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_KHR_external_fence_win32.hs
@@ -102,9 +102,14 @@
 type PFN_vkImportFenceWin32HandleKHR =
      FunPtr HS_vkImportFenceWin32HandleKHR
 
-foreign import ccall "dynamic" unwrapVkImportFenceWin32HandleKHR ::
+foreign import ccall unsafe "dynamic"
+               unwrapVkImportFenceWin32HandleKHR ::
                PFN_vkImportFenceWin32HandleKHR -> HS_vkImportFenceWin32HandleKHR
 
+foreign import ccall safe "dynamic"
+               unwrapVkImportFenceWin32HandleKHRSafe ::
+               PFN_vkImportFenceWin32HandleKHR -> HS_vkImportFenceWin32HandleKHR
+
 instance VulkanProc "vkImportFenceWin32HandleKHR" where
         type VkProcType "vkImportFenceWin32HandleKHR" =
              HS_vkImportFenceWin32HandleKHR
@@ -114,7 +119,10 @@
         unwrapVkProcPtr = unwrapVkImportFenceWin32HandleKHR
 
         {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkImportFenceWin32HandleKHRSafe
 
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
 pattern VkGetFenceWin32HandleKHR :: CString
 
 pattern VkGetFenceWin32HandleKHR <-
@@ -155,9 +163,14 @@
 type PFN_vkGetFenceWin32HandleKHR =
      FunPtr HS_vkGetFenceWin32HandleKHR
 
-foreign import ccall "dynamic" unwrapVkGetFenceWin32HandleKHR ::
+foreign import ccall unsafe "dynamic"
+               unwrapVkGetFenceWin32HandleKHR ::
                PFN_vkGetFenceWin32HandleKHR -> HS_vkGetFenceWin32HandleKHR
 
+foreign import ccall safe "dynamic"
+               unwrapVkGetFenceWin32HandleKHRSafe ::
+               PFN_vkGetFenceWin32HandleKHR -> HS_vkGetFenceWin32HandleKHR
+
 instance VulkanProc "vkGetFenceWin32HandleKHR" where
         type VkProcType "vkGetFenceWin32HandleKHR" =
              HS_vkGetFenceWin32HandleKHR
@@ -167,6 +180,9 @@
         unwrapVkProcPtr = unwrapVkGetFenceWin32HandleKHR
 
         {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkGetFenceWin32HandleKHRSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VK_KHR_EXTERNAL_FENCE_WIN32_SPEC_VERSION ::
         (Num a, Eq a) => a
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_KHR_external_memory_capabilities.hs b/src-gen/Graphics/Vulkan/Ext/VK_KHR_external_memory_capabilities.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_KHR_external_memory_capabilities.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_KHR_external_memory_capabilities.hs
@@ -123,11 +123,16 @@
 type PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR =
      FunPtr HS_vkGetPhysicalDeviceExternalBufferPropertiesKHR
 
-foreign import ccall "dynamic"
+foreign import ccall unsafe "dynamic"
                unwrapVkGetPhysicalDeviceExternalBufferPropertiesKHR ::
                PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR ->
                  HS_vkGetPhysicalDeviceExternalBufferPropertiesKHR
 
+foreign import ccall safe "dynamic"
+               unwrapVkGetPhysicalDeviceExternalBufferPropertiesKHRSafe ::
+               PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR ->
+                 HS_vkGetPhysicalDeviceExternalBufferPropertiesKHR
+
 instance VulkanProc
            "vkGetPhysicalDeviceExternalBufferPropertiesKHR"
          where
@@ -140,6 +145,10 @@
           = unwrapVkGetPhysicalDeviceExternalBufferPropertiesKHR
 
         {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe
+          = unwrapVkGetPhysicalDeviceExternalBufferPropertiesKHRSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION ::
         (Num a, Eq a) => a
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_KHR_external_memory_fd.hs b/src-gen/Graphics/Vulkan/Ext/VK_KHR_external_memory_fd.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_KHR_external_memory_fd.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_KHR_external_memory_fd.hs
@@ -95,9 +95,12 @@
 
 type PFN_vkGetMemoryFdKHR = FunPtr HS_vkGetMemoryFdKHR
 
-foreign import ccall "dynamic" unwrapVkGetMemoryFdKHR ::
+foreign import ccall unsafe "dynamic" unwrapVkGetMemoryFdKHR ::
                PFN_vkGetMemoryFdKHR -> HS_vkGetMemoryFdKHR
 
+foreign import ccall safe "dynamic" unwrapVkGetMemoryFdKHRSafe ::
+               PFN_vkGetMemoryFdKHR -> HS_vkGetMemoryFdKHR
+
 instance VulkanProc "vkGetMemoryFdKHR" where
         type VkProcType "vkGetMemoryFdKHR" = HS_vkGetMemoryFdKHR
         vkProcSymbol = _VkGetMemoryFdKHR
@@ -106,7 +109,10 @@
         unwrapVkProcPtr = unwrapVkGetMemoryFdKHR
 
         {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkGetMemoryFdKHRSafe
 
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
 pattern VkGetMemoryFdPropertiesKHR :: CString
 
 pattern VkGetMemoryFdPropertiesKHR <-
@@ -150,9 +156,14 @@
 type PFN_vkGetMemoryFdPropertiesKHR =
      FunPtr HS_vkGetMemoryFdPropertiesKHR
 
-foreign import ccall "dynamic" unwrapVkGetMemoryFdPropertiesKHR ::
+foreign import ccall unsafe "dynamic"
+               unwrapVkGetMemoryFdPropertiesKHR ::
                PFN_vkGetMemoryFdPropertiesKHR -> HS_vkGetMemoryFdPropertiesKHR
 
+foreign import ccall safe "dynamic"
+               unwrapVkGetMemoryFdPropertiesKHRSafe ::
+               PFN_vkGetMemoryFdPropertiesKHR -> HS_vkGetMemoryFdPropertiesKHR
+
 instance VulkanProc "vkGetMemoryFdPropertiesKHR" where
         type VkProcType "vkGetMemoryFdPropertiesKHR" =
              HS_vkGetMemoryFdPropertiesKHR
@@ -162,6 +173,9 @@
         unwrapVkProcPtr = unwrapVkGetMemoryFdPropertiesKHR
 
         {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkGetMemoryFdPropertiesKHRSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VK_KHR_EXTERNAL_MEMORY_FD_SPEC_VERSION :: (Num a, Eq a) =>
         a
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_KHR_external_memory_win32.hs b/src-gen/Graphics/Vulkan/Ext/VK_KHR_external_memory_win32.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_KHR_external_memory_win32.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_KHR_external_memory_win32.hs
@@ -105,9 +105,14 @@
 type PFN_vkGetMemoryWin32HandleKHR =
      FunPtr HS_vkGetMemoryWin32HandleKHR
 
-foreign import ccall "dynamic" unwrapVkGetMemoryWin32HandleKHR ::
+foreign import ccall unsafe "dynamic"
+               unwrapVkGetMemoryWin32HandleKHR ::
                PFN_vkGetMemoryWin32HandleKHR -> HS_vkGetMemoryWin32HandleKHR
 
+foreign import ccall safe "dynamic"
+               unwrapVkGetMemoryWin32HandleKHRSafe ::
+               PFN_vkGetMemoryWin32HandleKHR -> HS_vkGetMemoryWin32HandleKHR
+
 instance VulkanProc "vkGetMemoryWin32HandleKHR" where
         type VkProcType "vkGetMemoryWin32HandleKHR" =
              HS_vkGetMemoryWin32HandleKHR
@@ -117,7 +122,10 @@
         unwrapVkProcPtr = unwrapVkGetMemoryWin32HandleKHR
 
         {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkGetMemoryWin32HandleKHRSafe
 
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
 pattern VkGetMemoryWin32HandlePropertiesKHR :: CString
 
 pattern VkGetMemoryWin32HandlePropertiesKHR <-
@@ -164,11 +172,16 @@
 type PFN_vkGetMemoryWin32HandlePropertiesKHR =
      FunPtr HS_vkGetMemoryWin32HandlePropertiesKHR
 
-foreign import ccall "dynamic"
+foreign import ccall unsafe "dynamic"
                unwrapVkGetMemoryWin32HandlePropertiesKHR ::
                PFN_vkGetMemoryWin32HandlePropertiesKHR ->
                  HS_vkGetMemoryWin32HandlePropertiesKHR
 
+foreign import ccall safe "dynamic"
+               unwrapVkGetMemoryWin32HandlePropertiesKHRSafe ::
+               PFN_vkGetMemoryWin32HandlePropertiesKHR ->
+                 HS_vkGetMemoryWin32HandlePropertiesKHR
+
 instance VulkanProc "vkGetMemoryWin32HandlePropertiesKHR" where
         type VkProcType "vkGetMemoryWin32HandlePropertiesKHR" =
              HS_vkGetMemoryWin32HandlePropertiesKHR
@@ -178,6 +191,9 @@
         unwrapVkProcPtr = unwrapVkGetMemoryWin32HandlePropertiesKHR
 
         {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkGetMemoryWin32HandlePropertiesKHRSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VK_KHR_EXTERNAL_MEMORY_WIN32_SPEC_VERSION ::
         (Num a, Eq a) => a
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_KHR_external_semaphore_capabilities.hs b/src-gen/Graphics/Vulkan/Ext/VK_KHR_external_semaphore_capabilities.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_KHR_external_semaphore_capabilities.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_KHR_external_semaphore_capabilities.hs
@@ -113,11 +113,16 @@
 type PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR =
      FunPtr HS_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR
 
-foreign import ccall "dynamic"
+foreign import ccall unsafe "dynamic"
                unwrapVkGetPhysicalDeviceExternalSemaphorePropertiesKHR ::
                PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR ->
                  HS_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR
 
+foreign import ccall safe "dynamic"
+               unwrapVkGetPhysicalDeviceExternalSemaphorePropertiesKHRSafe ::
+               PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR ->
+                 HS_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR
+
 instance VulkanProc
            "vkGetPhysicalDeviceExternalSemaphorePropertiesKHR"
          where
@@ -130,6 +135,10 @@
           = unwrapVkGetPhysicalDeviceExternalSemaphorePropertiesKHR
 
         {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe
+          = unwrapVkGetPhysicalDeviceExternalSemaphorePropertiesKHRSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_SPEC_VERSION ::
         (Num a, Eq a) => a
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_KHR_external_semaphore_fd.hs b/src-gen/Graphics/Vulkan/Ext/VK_KHR_external_semaphore_fd.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_KHR_external_semaphore_fd.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_KHR_external_semaphore_fd.hs
@@ -95,7 +95,11 @@
 
 type PFN_vkImportSemaphoreFdKHR = FunPtr HS_vkImportSemaphoreFdKHR
 
-foreign import ccall "dynamic" unwrapVkImportSemaphoreFdKHR ::
+foreign import ccall unsafe "dynamic" unwrapVkImportSemaphoreFdKHR
+               :: PFN_vkImportSemaphoreFdKHR -> HS_vkImportSemaphoreFdKHR
+
+foreign import ccall safe "dynamic"
+               unwrapVkImportSemaphoreFdKHRSafe ::
                PFN_vkImportSemaphoreFdKHR -> HS_vkImportSemaphoreFdKHR
 
 instance VulkanProc "vkImportSemaphoreFdKHR" where
@@ -107,7 +111,10 @@
         unwrapVkProcPtr = unwrapVkImportSemaphoreFdKHR
 
         {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkImportSemaphoreFdKHRSafe
 
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
 pattern VkGetSemaphoreFdKHR :: CString
 
 pattern VkGetSemaphoreFdKHR <- (is_VkGetSemaphoreFdKHR -> True)
@@ -144,9 +151,12 @@
 
 type PFN_vkGetSemaphoreFdKHR = FunPtr HS_vkGetSemaphoreFdKHR
 
-foreign import ccall "dynamic" unwrapVkGetSemaphoreFdKHR ::
+foreign import ccall unsafe "dynamic" unwrapVkGetSemaphoreFdKHR ::
                PFN_vkGetSemaphoreFdKHR -> HS_vkGetSemaphoreFdKHR
 
+foreign import ccall safe "dynamic" unwrapVkGetSemaphoreFdKHRSafe
+               :: PFN_vkGetSemaphoreFdKHR -> HS_vkGetSemaphoreFdKHR
+
 instance VulkanProc "vkGetSemaphoreFdKHR" where
         type VkProcType "vkGetSemaphoreFdKHR" = HS_vkGetSemaphoreFdKHR
         vkProcSymbol = _VkGetSemaphoreFdKHR
@@ -155,6 +165,9 @@
         unwrapVkProcPtr = unwrapVkGetSemaphoreFdKHR
 
         {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkGetSemaphoreFdKHRSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VK_KHR_EXTERNAL_SEMAPHORE_FD_SPEC_VERSION ::
         (Num a, Eq a) => a
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_KHR_external_semaphore_win32.hs b/src-gen/Graphics/Vulkan/Ext/VK_KHR_external_semaphore_win32.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_KHR_external_semaphore_win32.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_KHR_external_semaphore_win32.hs
@@ -113,11 +113,16 @@
 type PFN_vkImportSemaphoreWin32HandleKHR =
      FunPtr HS_vkImportSemaphoreWin32HandleKHR
 
-foreign import ccall "dynamic"
+foreign import ccall unsafe "dynamic"
                unwrapVkImportSemaphoreWin32HandleKHR ::
                PFN_vkImportSemaphoreWin32HandleKHR ->
                  HS_vkImportSemaphoreWin32HandleKHR
 
+foreign import ccall safe "dynamic"
+               unwrapVkImportSemaphoreWin32HandleKHRSafe ::
+               PFN_vkImportSemaphoreWin32HandleKHR ->
+                 HS_vkImportSemaphoreWin32HandleKHR
+
 instance VulkanProc "vkImportSemaphoreWin32HandleKHR" where
         type VkProcType "vkImportSemaphoreWin32HandleKHR" =
              HS_vkImportSemaphoreWin32HandleKHR
@@ -127,7 +132,10 @@
         unwrapVkProcPtr = unwrapVkImportSemaphoreWin32HandleKHR
 
         {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkImportSemaphoreWin32HandleKHRSafe
 
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
 pattern VkGetSemaphoreWin32HandleKHR :: CString
 
 pattern VkGetSemaphoreWin32HandleKHR <-
@@ -169,10 +177,14 @@
 type PFN_vkGetSemaphoreWin32HandleKHR =
      FunPtr HS_vkGetSemaphoreWin32HandleKHR
 
-foreign import ccall "dynamic" unwrapVkGetSemaphoreWin32HandleKHR
-               ::
+foreign import ccall unsafe "dynamic"
+               unwrapVkGetSemaphoreWin32HandleKHR ::
                PFN_vkGetSemaphoreWin32HandleKHR -> HS_vkGetSemaphoreWin32HandleKHR
 
+foreign import ccall safe "dynamic"
+               unwrapVkGetSemaphoreWin32HandleKHRSafe ::
+               PFN_vkGetSemaphoreWin32HandleKHR -> HS_vkGetSemaphoreWin32HandleKHR
+
 instance VulkanProc "vkGetSemaphoreWin32HandleKHR" where
         type VkProcType "vkGetSemaphoreWin32HandleKHR" =
              HS_vkGetSemaphoreWin32HandleKHR
@@ -182,6 +194,9 @@
         unwrapVkProcPtr = unwrapVkGetSemaphoreWin32HandleKHR
 
         {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkGetSemaphoreWin32HandleKHRSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VK_KHR_EXTERNAL_SEMAPHORE_WIN32_SPEC_VERSION ::
         (Num a, Eq a) => a
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_KHR_get_memory_requirements2.hs b/src-gen/Graphics/Vulkan/Ext/VK_KHR_get_memory_requirements2.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_KHR_get_memory_requirements2.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_KHR_get_memory_requirements2.hs
@@ -116,11 +116,16 @@
 type PFN_vkGetImageMemoryRequirements2KHR =
      FunPtr HS_vkGetImageMemoryRequirements2KHR
 
-foreign import ccall "dynamic"
+foreign import ccall unsafe "dynamic"
                unwrapVkGetImageMemoryRequirements2KHR ::
                PFN_vkGetImageMemoryRequirements2KHR ->
                  HS_vkGetImageMemoryRequirements2KHR
 
+foreign import ccall safe "dynamic"
+               unwrapVkGetImageMemoryRequirements2KHRSafe ::
+               PFN_vkGetImageMemoryRequirements2KHR ->
+                 HS_vkGetImageMemoryRequirements2KHR
+
 instance VulkanProc "vkGetImageMemoryRequirements2KHR" where
         type VkProcType "vkGetImageMemoryRequirements2KHR" =
              HS_vkGetImageMemoryRequirements2KHR
@@ -130,7 +135,10 @@
         unwrapVkProcPtr = unwrapVkGetImageMemoryRequirements2KHR
 
         {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkGetImageMemoryRequirements2KHRSafe
 
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
 pattern VkGetBufferMemoryRequirements2KHR :: CString
 
 pattern VkGetBufferMemoryRequirements2KHR <-
@@ -173,11 +181,16 @@
 type PFN_vkGetBufferMemoryRequirements2KHR =
      FunPtr HS_vkGetBufferMemoryRequirements2KHR
 
-foreign import ccall "dynamic"
+foreign import ccall unsafe "dynamic"
                unwrapVkGetBufferMemoryRequirements2KHR ::
                PFN_vkGetBufferMemoryRequirements2KHR ->
                  HS_vkGetBufferMemoryRequirements2KHR
 
+foreign import ccall safe "dynamic"
+               unwrapVkGetBufferMemoryRequirements2KHRSafe ::
+               PFN_vkGetBufferMemoryRequirements2KHR ->
+                 HS_vkGetBufferMemoryRequirements2KHR
+
 instance VulkanProc "vkGetBufferMemoryRequirements2KHR" where
         type VkProcType "vkGetBufferMemoryRequirements2KHR" =
              HS_vkGetBufferMemoryRequirements2KHR
@@ -187,7 +200,10 @@
         unwrapVkProcPtr = unwrapVkGetBufferMemoryRequirements2KHR
 
         {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkGetBufferMemoryRequirements2KHRSafe
 
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
 pattern VkGetImageSparseMemoryRequirements2KHR :: CString
 
 pattern VkGetImageSparseMemoryRequirements2KHR <-
@@ -232,11 +248,16 @@
 type PFN_vkGetImageSparseMemoryRequirements2KHR =
      FunPtr HS_vkGetImageSparseMemoryRequirements2KHR
 
-foreign import ccall "dynamic"
+foreign import ccall unsafe "dynamic"
                unwrapVkGetImageSparseMemoryRequirements2KHR ::
                PFN_vkGetImageSparseMemoryRequirements2KHR ->
                  HS_vkGetImageSparseMemoryRequirements2KHR
 
+foreign import ccall safe "dynamic"
+               unwrapVkGetImageSparseMemoryRequirements2KHRSafe ::
+               PFN_vkGetImageSparseMemoryRequirements2KHR ->
+                 HS_vkGetImageSparseMemoryRequirements2KHR
+
 instance VulkanProc "vkGetImageSparseMemoryRequirements2KHR" where
         type VkProcType "vkGetImageSparseMemoryRequirements2KHR" =
              HS_vkGetImageSparseMemoryRequirements2KHR
@@ -246,6 +267,10 @@
         unwrapVkProcPtr = unwrapVkGetImageSparseMemoryRequirements2KHR
 
         {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe
+          = unwrapVkGetImageSparseMemoryRequirements2KHRSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VK_KHR_GET_MEMORY_REQUIREMENTS_2_SPEC_VERSION ::
         (Num a, Eq a) => a
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_KHR_get_physical_device_properties2.hs b/src-gen/Graphics/Vulkan/Ext/VK_KHR_get_physical_device_properties2.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_KHR_get_physical_device_properties2.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_KHR_get_physical_device_properties2.hs
@@ -160,11 +160,16 @@
 type PFN_vkGetPhysicalDeviceFeatures2KHR =
      FunPtr HS_vkGetPhysicalDeviceFeatures2KHR
 
-foreign import ccall "dynamic"
+foreign import ccall unsafe "dynamic"
                unwrapVkGetPhysicalDeviceFeatures2KHR ::
                PFN_vkGetPhysicalDeviceFeatures2KHR ->
                  HS_vkGetPhysicalDeviceFeatures2KHR
 
+foreign import ccall safe "dynamic"
+               unwrapVkGetPhysicalDeviceFeatures2KHRSafe ::
+               PFN_vkGetPhysicalDeviceFeatures2KHR ->
+                 HS_vkGetPhysicalDeviceFeatures2KHR
+
 instance VulkanProc "vkGetPhysicalDeviceFeatures2KHR" where
         type VkProcType "vkGetPhysicalDeviceFeatures2KHR" =
              HS_vkGetPhysicalDeviceFeatures2KHR
@@ -174,7 +179,10 @@
         unwrapVkProcPtr = unwrapVkGetPhysicalDeviceFeatures2KHR
 
         {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkGetPhysicalDeviceFeatures2KHRSafe
 
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
 pattern VkGetPhysicalDeviceProperties2KHR :: CString
 
 pattern VkGetPhysicalDeviceProperties2KHR <-
@@ -213,11 +221,16 @@
 type PFN_vkGetPhysicalDeviceProperties2KHR =
      FunPtr HS_vkGetPhysicalDeviceProperties2KHR
 
-foreign import ccall "dynamic"
+foreign import ccall unsafe "dynamic"
                unwrapVkGetPhysicalDeviceProperties2KHR ::
                PFN_vkGetPhysicalDeviceProperties2KHR ->
                  HS_vkGetPhysicalDeviceProperties2KHR
 
+foreign import ccall safe "dynamic"
+               unwrapVkGetPhysicalDeviceProperties2KHRSafe ::
+               PFN_vkGetPhysicalDeviceProperties2KHR ->
+                 HS_vkGetPhysicalDeviceProperties2KHR
+
 instance VulkanProc "vkGetPhysicalDeviceProperties2KHR" where
         type VkProcType "vkGetPhysicalDeviceProperties2KHR" =
              HS_vkGetPhysicalDeviceProperties2KHR
@@ -227,7 +240,10 @@
         unwrapVkProcPtr = unwrapVkGetPhysicalDeviceProperties2KHR
 
         {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkGetPhysicalDeviceProperties2KHRSafe
 
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
 pattern VkGetPhysicalDeviceFormatProperties2KHR :: CString
 
 pattern VkGetPhysicalDeviceFormatProperties2KHR <-
@@ -268,11 +284,16 @@
 type PFN_vkGetPhysicalDeviceFormatProperties2KHR =
      FunPtr HS_vkGetPhysicalDeviceFormatProperties2KHR
 
-foreign import ccall "dynamic"
+foreign import ccall unsafe "dynamic"
                unwrapVkGetPhysicalDeviceFormatProperties2KHR ::
                PFN_vkGetPhysicalDeviceFormatProperties2KHR ->
                  HS_vkGetPhysicalDeviceFormatProperties2KHR
 
+foreign import ccall safe "dynamic"
+               unwrapVkGetPhysicalDeviceFormatProperties2KHRSafe ::
+               PFN_vkGetPhysicalDeviceFormatProperties2KHR ->
+                 HS_vkGetPhysicalDeviceFormatProperties2KHR
+
 instance VulkanProc "vkGetPhysicalDeviceFormatProperties2KHR" where
         type VkProcType "vkGetPhysicalDeviceFormatProperties2KHR" =
              HS_vkGetPhysicalDeviceFormatProperties2KHR
@@ -282,7 +303,11 @@
         unwrapVkProcPtr = unwrapVkGetPhysicalDeviceFormatProperties2KHR
 
         {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe
+          = unwrapVkGetPhysicalDeviceFormatProperties2KHRSafe
 
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
 pattern VkGetPhysicalDeviceImageFormatProperties2KHR :: CString
 
 pattern VkGetPhysicalDeviceImageFormatProperties2KHR <-
@@ -330,11 +355,16 @@
 type PFN_vkGetPhysicalDeviceImageFormatProperties2KHR =
      FunPtr HS_vkGetPhysicalDeviceImageFormatProperties2KHR
 
-foreign import ccall "dynamic"
+foreign import ccall unsafe "dynamic"
                unwrapVkGetPhysicalDeviceImageFormatProperties2KHR ::
                PFN_vkGetPhysicalDeviceImageFormatProperties2KHR ->
                  HS_vkGetPhysicalDeviceImageFormatProperties2KHR
 
+foreign import ccall safe "dynamic"
+               unwrapVkGetPhysicalDeviceImageFormatProperties2KHRSafe ::
+               PFN_vkGetPhysicalDeviceImageFormatProperties2KHR ->
+                 HS_vkGetPhysicalDeviceImageFormatProperties2KHR
+
 instance VulkanProc "vkGetPhysicalDeviceImageFormatProperties2KHR"
          where
         type VkProcType "vkGetPhysicalDeviceImageFormatProperties2KHR" =
@@ -346,7 +376,11 @@
           = unwrapVkGetPhysicalDeviceImageFormatProperties2KHR
 
         {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe
+          = unwrapVkGetPhysicalDeviceImageFormatProperties2KHRSafe
 
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
 pattern VkGetPhysicalDeviceQueueFamilyProperties2KHR :: CString
 
 pattern VkGetPhysicalDeviceQueueFamilyProperties2KHR <-
@@ -389,11 +423,16 @@
 type PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR =
      FunPtr HS_vkGetPhysicalDeviceQueueFamilyProperties2KHR
 
-foreign import ccall "dynamic"
+foreign import ccall unsafe "dynamic"
                unwrapVkGetPhysicalDeviceQueueFamilyProperties2KHR ::
                PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR ->
                  HS_vkGetPhysicalDeviceQueueFamilyProperties2KHR
 
+foreign import ccall safe "dynamic"
+               unwrapVkGetPhysicalDeviceQueueFamilyProperties2KHRSafe ::
+               PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR ->
+                 HS_vkGetPhysicalDeviceQueueFamilyProperties2KHR
+
 instance VulkanProc "vkGetPhysicalDeviceQueueFamilyProperties2KHR"
          where
         type VkProcType "vkGetPhysicalDeviceQueueFamilyProperties2KHR" =
@@ -405,7 +444,11 @@
           = unwrapVkGetPhysicalDeviceQueueFamilyProperties2KHR
 
         {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe
+          = unwrapVkGetPhysicalDeviceQueueFamilyProperties2KHRSafe
 
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
 pattern VkGetPhysicalDeviceMemoryProperties2KHR :: CString
 
 pattern VkGetPhysicalDeviceMemoryProperties2KHR <-
@@ -444,11 +487,16 @@
 type PFN_vkGetPhysicalDeviceMemoryProperties2KHR =
      FunPtr HS_vkGetPhysicalDeviceMemoryProperties2KHR
 
-foreign import ccall "dynamic"
+foreign import ccall unsafe "dynamic"
                unwrapVkGetPhysicalDeviceMemoryProperties2KHR ::
                PFN_vkGetPhysicalDeviceMemoryProperties2KHR ->
                  HS_vkGetPhysicalDeviceMemoryProperties2KHR
 
+foreign import ccall safe "dynamic"
+               unwrapVkGetPhysicalDeviceMemoryProperties2KHRSafe ::
+               PFN_vkGetPhysicalDeviceMemoryProperties2KHR ->
+                 HS_vkGetPhysicalDeviceMemoryProperties2KHR
+
 instance VulkanProc "vkGetPhysicalDeviceMemoryProperties2KHR" where
         type VkProcType "vkGetPhysicalDeviceMemoryProperties2KHR" =
              HS_vkGetPhysicalDeviceMemoryProperties2KHR
@@ -458,7 +506,11 @@
         unwrapVkProcPtr = unwrapVkGetPhysicalDeviceMemoryProperties2KHR
 
         {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe
+          = unwrapVkGetPhysicalDeviceMemoryProperties2KHRSafe
 
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
 pattern VkGetPhysicalDeviceSparseImageFormatProperties2KHR ::
         CString
 
@@ -507,11 +559,16 @@
 type PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR =
      FunPtr HS_vkGetPhysicalDeviceSparseImageFormatProperties2KHR
 
-foreign import ccall "dynamic"
+foreign import ccall unsafe "dynamic"
                unwrapVkGetPhysicalDeviceSparseImageFormatProperties2KHR ::
                PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR ->
                  HS_vkGetPhysicalDeviceSparseImageFormatProperties2KHR
 
+foreign import ccall safe "dynamic"
+               unwrapVkGetPhysicalDeviceSparseImageFormatProperties2KHRSafe ::
+               PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR ->
+                 HS_vkGetPhysicalDeviceSparseImageFormatProperties2KHR
+
 instance VulkanProc
            "vkGetPhysicalDeviceSparseImageFormatProperties2KHR"
          where
@@ -525,6 +582,10 @@
           = unwrapVkGetPhysicalDeviceSparseImageFormatProperties2KHR
 
         {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe
+          = unwrapVkGetPhysicalDeviceSparseImageFormatProperties2KHRSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION ::
         (Num a, Eq a) => a
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_KHR_get_surface_capabilities2.hs b/src-gen/Graphics/Vulkan/Ext/VK_KHR_get_surface_capabilities2.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_KHR_get_surface_capabilities2.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_KHR_get_surface_capabilities2.hs
@@ -116,11 +116,16 @@
 type PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR =
      FunPtr HS_vkGetPhysicalDeviceSurfaceCapabilities2KHR
 
-foreign import ccall "dynamic"
+foreign import ccall unsafe "dynamic"
                unwrapVkGetPhysicalDeviceSurfaceCapabilities2KHR ::
                PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR ->
                  HS_vkGetPhysicalDeviceSurfaceCapabilities2KHR
 
+foreign import ccall safe "dynamic"
+               unwrapVkGetPhysicalDeviceSurfaceCapabilities2KHRSafe ::
+               PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR ->
+                 HS_vkGetPhysicalDeviceSurfaceCapabilities2KHR
+
 instance VulkanProc "vkGetPhysicalDeviceSurfaceCapabilities2KHR"
          where
         type VkProcType "vkGetPhysicalDeviceSurfaceCapabilities2KHR" =
@@ -131,7 +136,11 @@
         unwrapVkProcPtr = unwrapVkGetPhysicalDeviceSurfaceCapabilities2KHR
 
         {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe
+          = unwrapVkGetPhysicalDeviceSurfaceCapabilities2KHRSafe
 
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
 pattern VkGetPhysicalDeviceSurfaceFormats2KHR :: CString
 
 pattern VkGetPhysicalDeviceSurfaceFormats2KHR <-
@@ -178,11 +187,16 @@
 type PFN_vkGetPhysicalDeviceSurfaceFormats2KHR =
      FunPtr HS_vkGetPhysicalDeviceSurfaceFormats2KHR
 
-foreign import ccall "dynamic"
+foreign import ccall unsafe "dynamic"
                unwrapVkGetPhysicalDeviceSurfaceFormats2KHR ::
                PFN_vkGetPhysicalDeviceSurfaceFormats2KHR ->
                  HS_vkGetPhysicalDeviceSurfaceFormats2KHR
 
+foreign import ccall safe "dynamic"
+               unwrapVkGetPhysicalDeviceSurfaceFormats2KHRSafe ::
+               PFN_vkGetPhysicalDeviceSurfaceFormats2KHR ->
+                 HS_vkGetPhysicalDeviceSurfaceFormats2KHR
+
 instance VulkanProc "vkGetPhysicalDeviceSurfaceFormats2KHR" where
         type VkProcType "vkGetPhysicalDeviceSurfaceFormats2KHR" =
              HS_vkGetPhysicalDeviceSurfaceFormats2KHR
@@ -192,6 +206,10 @@
         unwrapVkProcPtr = unwrapVkGetPhysicalDeviceSurfaceFormats2KHR
 
         {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe
+          = unwrapVkGetPhysicalDeviceSurfaceFormats2KHRSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VK_KHR_GET_SURFACE_CAPABILITIES_2_SPEC_VERSION ::
         (Num a, Eq a) => a
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_KHR_maintenance1.hs b/src-gen/Graphics/Vulkan/Ext/VK_KHR_maintenance1.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_KHR_maintenance1.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_KHR_maintenance1.hs
@@ -83,9 +83,12 @@
 
 type PFN_vkTrimCommandPoolKHR = FunPtr HS_vkTrimCommandPoolKHR
 
-foreign import ccall "dynamic" unwrapVkTrimCommandPoolKHR ::
+foreign import ccall unsafe "dynamic" unwrapVkTrimCommandPoolKHR ::
                PFN_vkTrimCommandPoolKHR -> HS_vkTrimCommandPoolKHR
 
+foreign import ccall safe "dynamic" unwrapVkTrimCommandPoolKHRSafe
+               :: PFN_vkTrimCommandPoolKHR -> HS_vkTrimCommandPoolKHR
+
 instance VulkanProc "vkTrimCommandPoolKHR" where
         type VkProcType "vkTrimCommandPoolKHR" = HS_vkTrimCommandPoolKHR
         vkProcSymbol = _VkTrimCommandPoolKHR
@@ -94,6 +97,9 @@
         unwrapVkProcPtr = unwrapVkTrimCommandPoolKHR
 
         {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkTrimCommandPoolKHRSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VK_KHR_MAINTENANCE1_SPEC_VERSION :: (Num a, Eq a) => a
 
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_KHR_maintenance3.hs b/src-gen/Graphics/Vulkan/Ext/VK_KHR_maintenance3.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_KHR_maintenance3.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_KHR_maintenance3.hs
@@ -101,11 +101,16 @@
 type PFN_vkGetDescriptorSetLayoutSupportKHR =
      FunPtr HS_vkGetDescriptorSetLayoutSupportKHR
 
-foreign import ccall "dynamic"
+foreign import ccall unsafe "dynamic"
                unwrapVkGetDescriptorSetLayoutSupportKHR ::
                PFN_vkGetDescriptorSetLayoutSupportKHR ->
                  HS_vkGetDescriptorSetLayoutSupportKHR
 
+foreign import ccall safe "dynamic"
+               unwrapVkGetDescriptorSetLayoutSupportKHRSafe ::
+               PFN_vkGetDescriptorSetLayoutSupportKHR ->
+                 HS_vkGetDescriptorSetLayoutSupportKHR
+
 instance VulkanProc "vkGetDescriptorSetLayoutSupportKHR" where
         type VkProcType "vkGetDescriptorSetLayoutSupportKHR" =
              HS_vkGetDescriptorSetLayoutSupportKHR
@@ -115,6 +120,9 @@
         unwrapVkProcPtr = unwrapVkGetDescriptorSetLayoutSupportKHR
 
         {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkGetDescriptorSetLayoutSupportKHRSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VK_KHR_MAINTENANCE3_SPEC_VERSION :: (Num a, Eq a) => a
 
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_KHR_mir_surface.hs b/src-gen/Graphics/Vulkan/Ext/VK_KHR_mir_surface.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_KHR_mir_surface.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_KHR_mir_surface.hs
@@ -93,7 +93,6 @@
 
 type VkCreateMirSurfaceKHR = "vkCreateMirSurfaceKHR"
 
-#ifdef NATIVE_FFI_VK_VERSION_1_0
 -- |
 -- Success codes: 'VK_SUCCESS'.
 --
@@ -108,9 +107,22 @@
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateMirSurfaceKHR vkCreateMirSurfaceKHR registry at www.khronos.org>
 --
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
 --           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
 --
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateMirSurfaceKHR <- vkGetInstanceProc @VkCreateMirSurfaceKHR vkInstance
+--
+-- or less efficient:
+--
+-- > myCreateMirSurfaceKHR <- vkGetProc @VkCreateMirSurfaceKHR
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_0
 foreign import ccall unsafe "vkCreateMirSurfaceKHR"
                vkCreateMirSurfaceKHR ::
                VkInstance -- ^ instance
@@ -122,32 +134,6 @@
                                                                  -> IO VkResult
 
 #else
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkCreateMirSurfaceKHR
--- >     ( VkInstance instance
--- >     , const VkMirSurfaceCreateInfoKHR* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkSurfaceKHR* pSurface
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateMirSurfaceKHR vkCreateMirSurfaceKHR registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCreateMirSurfaceKHRSafe@ and @vkCreateMirSurfaceKHR@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateMirSurfaceKHR <- vkGetInstanceProc @VkCreateMirSurfaceKHR vkInstance
---
--- or less efficient:
---
--- > myCreateMirSurfaceKHR <- vkGetProc @VkCreateMirSurfaceKHR
---
 vkCreateMirSurfaceKHR ::
                       VkInstance -- ^ instance
                                  ->
@@ -162,7 +148,6 @@
 {-# NOINLINE vkCreateMirSurfaceKHR #-}
 #endif
 
-#ifdef NATIVE_FFI_VK_VERSION_1_0
 -- |
 -- Success codes: 'VK_SUCCESS'.
 --
@@ -177,9 +162,22 @@
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateMirSurfaceKHR vkCreateMirSurfaceKHR registry at www.khronos.org>
 --
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
 --           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
 --
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateMirSurfaceKHR <- vkGetInstanceProc @VkCreateMirSurfaceKHR vkInstance
+--
+-- or less efficient:
+--
+-- > myCreateMirSurfaceKHR <- vkGetProc @VkCreateMirSurfaceKHR
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_0
 foreign import ccall safe "vkCreateMirSurfaceKHR"
                vkCreateMirSurfaceKHRSafe ::
                VkInstance -- ^ instance
@@ -191,32 +189,6 @@
                                                                  -> IO VkResult
 
 #else
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkCreateMirSurfaceKHR
--- >     ( VkInstance instance
--- >     , const VkMirSurfaceCreateInfoKHR* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkSurfaceKHR* pSurface
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateMirSurfaceKHR vkCreateMirSurfaceKHR registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCreateMirSurfaceKHRSafe@ and @vkCreateMirSurfaceKHR@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateMirSurfaceKHR <- vkGetInstanceProc @VkCreateMirSurfaceKHR vkInstance
---
--- or less efficient:
---
--- > myCreateMirSurfaceKHR <- vkGetProc @VkCreateMirSurfaceKHR
---
 vkCreateMirSurfaceKHRSafe ::
                           VkInstance -- ^ instance
                                      ->
@@ -225,9 +197,10 @@
                               Ptr VkAllocationCallbacks -- ^ pAllocator
                                                         -> Ptr VkSurfaceKHR -- ^ pSurface
                                                                             -> IO VkResult
-vkCreateMirSurfaceKHRSafe = vkCreateMirSurfaceKHR
+vkCreateMirSurfaceKHRSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCreateMirSurfaceKHR)
 
-{-# INLINE vkCreateMirSurfaceKHRSafe #-}
+{-# NOINLINE vkCreateMirSurfaceKHRSafe #-}
 #endif
 
 -- | Success codes: 'VK_SUCCESS'.
@@ -253,9 +226,12 @@
 
 type PFN_vkCreateMirSurfaceKHR = FunPtr HS_vkCreateMirSurfaceKHR
 
-foreign import ccall "dynamic" unwrapVkCreateMirSurfaceKHR ::
-               PFN_vkCreateMirSurfaceKHR -> HS_vkCreateMirSurfaceKHR
+foreign import ccall unsafe "dynamic" unwrapVkCreateMirSurfaceKHR
+               :: PFN_vkCreateMirSurfaceKHR -> HS_vkCreateMirSurfaceKHR
 
+foreign import ccall safe "dynamic" unwrapVkCreateMirSurfaceKHRSafe
+               :: PFN_vkCreateMirSurfaceKHR -> HS_vkCreateMirSurfaceKHR
+
 instance VulkanProc "vkCreateMirSurfaceKHR" where
         type VkProcType "vkCreateMirSurfaceKHR" = HS_vkCreateMirSurfaceKHR
         vkProcSymbol = _VkCreateMirSurfaceKHR
@@ -264,7 +240,10 @@
         unwrapVkProcPtr = unwrapVkCreateMirSurfaceKHR
 
         {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkCreateMirSurfaceKHRSafe
 
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
 pattern VkGetPhysicalDeviceMirPresentationSupportKHR :: CString
 
 pattern VkGetPhysicalDeviceMirPresentationSupportKHR <-
@@ -288,7 +267,6 @@
 type VkGetPhysicalDeviceMirPresentationSupportKHR =
      "vkGetPhysicalDeviceMirPresentationSupportKHR"
 
-#ifdef NATIVE_FFI_VK_VERSION_1_0
 -- |
 -- > VkBool32 vkGetPhysicalDeviceMirPresentationSupportKHR
 -- >     ( VkPhysicalDevice physicalDevice
@@ -298,9 +276,22 @@
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceMirPresentationSupportKHR vkGetPhysicalDeviceMirPresentationSupportKHR registry at www.khronos.org>
 --
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
 --           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
 --
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceMirPresentationSupportKHR <- vkGetInstanceProc @VkGetPhysicalDeviceMirPresentationSupportKHR vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceMirPresentationSupportKHR <- vkGetProc @VkGetPhysicalDeviceMirPresentationSupportKHR
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_0
 foreign import ccall unsafe
                "vkGetPhysicalDeviceMirPresentationSupportKHR"
                vkGetPhysicalDeviceMirPresentationSupportKHR ::
@@ -310,27 +301,6 @@
                                                                -> IO VkBool32
 
 #else
--- |
--- > VkBool32 vkGetPhysicalDeviceMirPresentationSupportKHR
--- >     ( VkPhysicalDevice physicalDevice
--- >     , uint32_t queueFamilyIndex
--- >     , MirConnection* connection
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceMirPresentationSupportKHR vkGetPhysicalDeviceMirPresentationSupportKHR registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkGetPhysicalDeviceMirPresentationSupportKHRSafe@ and @vkGetPhysicalDeviceMirPresentationSupportKHR@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetPhysicalDeviceMirPresentationSupportKHR <- vkGetInstanceProc @VkGetPhysicalDeviceMirPresentationSupportKHR vkInstance
---
--- or less efficient:
---
--- > myGetPhysicalDeviceMirPresentationSupportKHR <- vkGetProc @VkGetPhysicalDeviceMirPresentationSupportKHR
---
 vkGetPhysicalDeviceMirPresentationSupportKHR ::
                                              VkPhysicalDevice -- ^ physicalDevice
                                                               ->
@@ -344,7 +314,6 @@
 {-# NOINLINE vkGetPhysicalDeviceMirPresentationSupportKHR #-}
 #endif
 
-#ifdef NATIVE_FFI_VK_VERSION_1_0
 -- |
 -- > VkBool32 vkGetPhysicalDeviceMirPresentationSupportKHR
 -- >     ( VkPhysicalDevice physicalDevice
@@ -354,9 +323,22 @@
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceMirPresentationSupportKHR vkGetPhysicalDeviceMirPresentationSupportKHR registry at www.khronos.org>
 --
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
 --           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
 --
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceMirPresentationSupportKHR <- vkGetInstanceProc @VkGetPhysicalDeviceMirPresentationSupportKHR vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceMirPresentationSupportKHR <- vkGetProc @VkGetPhysicalDeviceMirPresentationSupportKHR
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_0
 foreign import ccall safe
                "vkGetPhysicalDeviceMirPresentationSupportKHR"
                vkGetPhysicalDeviceMirPresentationSupportKHRSafe ::
@@ -366,27 +348,6 @@
                                                                -> IO VkBool32
 
 #else
--- |
--- > VkBool32 vkGetPhysicalDeviceMirPresentationSupportKHR
--- >     ( VkPhysicalDevice physicalDevice
--- >     , uint32_t queueFamilyIndex
--- >     , MirConnection* connection
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceMirPresentationSupportKHR vkGetPhysicalDeviceMirPresentationSupportKHR registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkGetPhysicalDeviceMirPresentationSupportKHRSafe@ and @vkGetPhysicalDeviceMirPresentationSupportKHR@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetPhysicalDeviceMirPresentationSupportKHR <- vkGetInstanceProc @VkGetPhysicalDeviceMirPresentationSupportKHR vkInstance
---
--- or less efficient:
---
--- > myGetPhysicalDeviceMirPresentationSupportKHR <- vkGetProc @VkGetPhysicalDeviceMirPresentationSupportKHR
---
 vkGetPhysicalDeviceMirPresentationSupportKHRSafe ::
                                                  VkPhysicalDevice -- ^ physicalDevice
                                                                   ->
@@ -394,9 +355,10 @@
                                                           -> Ptr MirConnection -- ^ connection
                                                                                -> IO VkBool32
 vkGetPhysicalDeviceMirPresentationSupportKHRSafe
-  = vkGetPhysicalDeviceMirPresentationSupportKHR
+  = unsafeDupablePerformIO
+      (vkGetProcSafe @VkGetPhysicalDeviceMirPresentationSupportKHR)
 
-{-# INLINE vkGetPhysicalDeviceMirPresentationSupportKHRSafe #-}
+{-# NOINLINE vkGetPhysicalDeviceMirPresentationSupportKHRSafe #-}
 #endif
 
 -- | > VkBool32 vkGetPhysicalDeviceMirPresentationSupportKHR
@@ -415,11 +377,16 @@
 type PFN_vkGetPhysicalDeviceMirPresentationSupportKHR =
      FunPtr HS_vkGetPhysicalDeviceMirPresentationSupportKHR
 
-foreign import ccall "dynamic"
+foreign import ccall unsafe "dynamic"
                unwrapVkGetPhysicalDeviceMirPresentationSupportKHR ::
                PFN_vkGetPhysicalDeviceMirPresentationSupportKHR ->
                  HS_vkGetPhysicalDeviceMirPresentationSupportKHR
 
+foreign import ccall safe "dynamic"
+               unwrapVkGetPhysicalDeviceMirPresentationSupportKHRSafe ::
+               PFN_vkGetPhysicalDeviceMirPresentationSupportKHR ->
+                 HS_vkGetPhysicalDeviceMirPresentationSupportKHR
+
 instance VulkanProc "vkGetPhysicalDeviceMirPresentationSupportKHR"
          where
         type VkProcType "vkGetPhysicalDeviceMirPresentationSupportKHR" =
@@ -431,6 +398,10 @@
           = unwrapVkGetPhysicalDeviceMirPresentationSupportKHR
 
         {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe
+          = unwrapVkGetPhysicalDeviceMirPresentationSupportKHRSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VK_KHR_MIR_SURFACE_SPEC_VERSION :: (Num a, Eq a) => a
 
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_KHR_push_descriptor.hs b/src-gen/Graphics/Vulkan/Ext/VK_KHR_push_descriptor.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_KHR_push_descriptor.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_KHR_push_descriptor.hs
@@ -117,9 +117,14 @@
 type PFN_vkCmdPushDescriptorSetKHR =
      FunPtr HS_vkCmdPushDescriptorSetKHR
 
-foreign import ccall "dynamic" unwrapVkCmdPushDescriptorSetKHR ::
+foreign import ccall unsafe "dynamic"
+               unwrapVkCmdPushDescriptorSetKHR ::
                PFN_vkCmdPushDescriptorSetKHR -> HS_vkCmdPushDescriptorSetKHR
 
+foreign import ccall safe "dynamic"
+               unwrapVkCmdPushDescriptorSetKHRSafe ::
+               PFN_vkCmdPushDescriptorSetKHR -> HS_vkCmdPushDescriptorSetKHR
+
 instance VulkanProc "vkCmdPushDescriptorSetKHR" where
         type VkProcType "vkCmdPushDescriptorSetKHR" =
              HS_vkCmdPushDescriptorSetKHR
@@ -129,7 +134,10 @@
         unwrapVkProcPtr = unwrapVkCmdPushDescriptorSetKHR
 
         {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkCmdPushDescriptorSetKHRSafe
 
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
 pattern VK_KHR_PUSH_DESCRIPTOR_SPEC_VERSION :: (Num a, Eq a) => a
 
 pattern VK_KHR_PUSH_DESCRIPTOR_SPEC_VERSION = 2
@@ -221,11 +229,16 @@
 type PFN_vkCmdPushDescriptorSetWithTemplateKHR =
      FunPtr HS_vkCmdPushDescriptorSetWithTemplateKHR
 
-foreign import ccall "dynamic"
+foreign import ccall unsafe "dynamic"
                unwrapVkCmdPushDescriptorSetWithTemplateKHR ::
                PFN_vkCmdPushDescriptorSetWithTemplateKHR ->
                  HS_vkCmdPushDescriptorSetWithTemplateKHR
 
+foreign import ccall safe "dynamic"
+               unwrapVkCmdPushDescriptorSetWithTemplateKHRSafe ::
+               PFN_vkCmdPushDescriptorSetWithTemplateKHR ->
+                 HS_vkCmdPushDescriptorSetWithTemplateKHR
+
 instance VulkanProc "vkCmdPushDescriptorSetWithTemplateKHR" where
         type VkProcType "vkCmdPushDescriptorSetWithTemplateKHR" =
              HS_vkCmdPushDescriptorSetWithTemplateKHR
@@ -235,6 +248,10 @@
         unwrapVkProcPtr = unwrapVkCmdPushDescriptorSetWithTemplateKHR
 
         {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe
+          = unwrapVkCmdPushDescriptorSetWithTemplateKHRSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
 
 -- | Create descriptor update template for pushed descriptor updates
 pattern VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR ::
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_KHR_sampler_ycbcr_conversion.hs b/src-gen/Graphics/Vulkan/Ext/VK_KHR_sampler_ycbcr_conversion.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_KHR_sampler_ycbcr_conversion.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_KHR_sampler_ycbcr_conversion.hs
@@ -247,11 +247,16 @@
 type PFN_vkCreateSamplerYcbcrConversionKHR =
      FunPtr HS_vkCreateSamplerYcbcrConversionKHR
 
-foreign import ccall "dynamic"
+foreign import ccall unsafe "dynamic"
                unwrapVkCreateSamplerYcbcrConversionKHR ::
                PFN_vkCreateSamplerYcbcrConversionKHR ->
                  HS_vkCreateSamplerYcbcrConversionKHR
 
+foreign import ccall safe "dynamic"
+               unwrapVkCreateSamplerYcbcrConversionKHRSafe ::
+               PFN_vkCreateSamplerYcbcrConversionKHR ->
+                 HS_vkCreateSamplerYcbcrConversionKHR
+
 instance VulkanProc "vkCreateSamplerYcbcrConversionKHR" where
         type VkProcType "vkCreateSamplerYcbcrConversionKHR" =
              HS_vkCreateSamplerYcbcrConversionKHR
@@ -261,7 +266,10 @@
         unwrapVkProcPtr = unwrapVkCreateSamplerYcbcrConversionKHR
 
         {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkCreateSamplerYcbcrConversionKHRSafe
 
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
 pattern VkDestroySamplerYcbcrConversionKHR :: CString
 
 pattern VkDestroySamplerYcbcrConversionKHR <-
@@ -303,11 +311,16 @@
 type PFN_vkDestroySamplerYcbcrConversionKHR =
      FunPtr HS_vkDestroySamplerYcbcrConversionKHR
 
-foreign import ccall "dynamic"
+foreign import ccall unsafe "dynamic"
                unwrapVkDestroySamplerYcbcrConversionKHR ::
                PFN_vkDestroySamplerYcbcrConversionKHR ->
                  HS_vkDestroySamplerYcbcrConversionKHR
 
+foreign import ccall safe "dynamic"
+               unwrapVkDestroySamplerYcbcrConversionKHRSafe ::
+               PFN_vkDestroySamplerYcbcrConversionKHR ->
+                 HS_vkDestroySamplerYcbcrConversionKHR
+
 instance VulkanProc "vkDestroySamplerYcbcrConversionKHR" where
         type VkProcType "vkDestroySamplerYcbcrConversionKHR" =
              HS_vkDestroySamplerYcbcrConversionKHR
@@ -317,6 +330,9 @@
         unwrapVkProcPtr = unwrapVkDestroySamplerYcbcrConversionKHR
 
         {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkDestroySamplerYcbcrConversionKHRSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VK_KHR_SAMPLER_YCBCR_CONVERSION_SPEC_VERSION ::
         (Num a, Eq a) => a
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_KHR_shared_presentable_image.hs b/src-gen/Graphics/Vulkan/Ext/VK_KHR_shared_presentable_image.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_KHR_shared_presentable_image.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_KHR_shared_presentable_image.hs
@@ -103,7 +103,11 @@
 type PFN_vkGetSwapchainStatusKHR =
      FunPtr HS_vkGetSwapchainStatusKHR
 
-foreign import ccall "dynamic" unwrapVkGetSwapchainStatusKHR ::
+foreign import ccall unsafe "dynamic" unwrapVkGetSwapchainStatusKHR
+               :: PFN_vkGetSwapchainStatusKHR -> HS_vkGetSwapchainStatusKHR
+
+foreign import ccall safe "dynamic"
+               unwrapVkGetSwapchainStatusKHRSafe ::
                PFN_vkGetSwapchainStatusKHR -> HS_vkGetSwapchainStatusKHR
 
 instance VulkanProc "vkGetSwapchainStatusKHR" where
@@ -115,6 +119,9 @@
         unwrapVkProcPtr = unwrapVkGetSwapchainStatusKHR
 
         {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkGetSwapchainStatusKHRSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VK_KHR_SHARED_PRESENTABLE_IMAGE_SPEC_VERSION ::
         (Num a, Eq a) => a
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_KHR_surface.hs b/src-gen/Graphics/Vulkan/Ext/VK_KHR_surface.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_KHR_surface.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_KHR_surface.hs
@@ -114,7 +114,6 @@
 
 type VkDestroySurfaceKHR = "vkDestroySurfaceKHR"
 
-#ifdef NATIVE_FFI_VK_VERSION_1_0
 -- |
 -- > void vkDestroySurfaceKHR
 -- >     ( VkInstance instance
@@ -124,29 +123,9 @@
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroySurfaceKHR vkDestroySurfaceKHR registry at www.khronos.org>
 --
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
 --           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkDestroySurfaceKHR"
-               vkDestroySurfaceKHR ::
-               VkInstance -- ^ instance
-                          -> VkSurfaceKHR -- ^ surface
-                                          -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                       -> IO ()
-
-#else
--- |
--- > void vkDestroySurfaceKHR
--- >     ( VkInstance instance
--- >     , VkSurfaceKHR surface
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroySurfaceKHR vkDestroySurfaceKHR registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkDestroySurfaceKHRSafe@ and @vkDestroySurfaceKHR@ are synonyms.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
 --
 -- Independently of the flag setting, you can lookup the function manually at runtime:
 --
@@ -156,6 +135,18 @@
 --
 -- > myDestroySurfaceKHR <- vkGetProc @VkDestroySurfaceKHR
 --
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkDestroySurfaceKHR"
+               vkDestroySurfaceKHR ::
+               VkInstance -- ^ instance
+                          -> VkSurfaceKHR -- ^ surface
+                                          -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                       -> IO ()
+
+#else
 vkDestroySurfaceKHR ::
                     VkInstance -- ^ instance
                                -> VkSurfaceKHR -- ^ surface
@@ -167,7 +158,6 @@
 {-# NOINLINE vkDestroySurfaceKHR #-}
 #endif
 
-#ifdef NATIVE_FFI_VK_VERSION_1_0
 -- |
 -- > void vkDestroySurfaceKHR
 -- >     ( VkInstance instance
@@ -177,29 +167,9 @@
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroySurfaceKHR vkDestroySurfaceKHR registry at www.khronos.org>
 --
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
 --           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkDestroySurfaceKHR"
-               vkDestroySurfaceKHRSafe ::
-               VkInstance -- ^ instance
-                          -> VkSurfaceKHR -- ^ surface
-                                          -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                       -> IO ()
-
-#else
--- |
--- > void vkDestroySurfaceKHR
--- >     ( VkInstance instance
--- >     , VkSurfaceKHR surface
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroySurfaceKHR vkDestroySurfaceKHR registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkDestroySurfaceKHRSafe@ and @vkDestroySurfaceKHR@ are synonyms.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
 --
 -- Independently of the flag setting, you can lookup the function manually at runtime:
 --
@@ -209,14 +179,27 @@
 --
 -- > myDestroySurfaceKHR <- vkGetProc @VkDestroySurfaceKHR
 --
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkDestroySurfaceKHR"
+               vkDestroySurfaceKHRSafe ::
+               VkInstance -- ^ instance
+                          -> VkSurfaceKHR -- ^ surface
+                                          -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                       -> IO ()
+
+#else
 vkDestroySurfaceKHRSafe ::
                         VkInstance -- ^ instance
                                    -> VkSurfaceKHR -- ^ surface
                                                    -> Ptr VkAllocationCallbacks -- ^ pAllocator
                                                                                 -> IO ()
-vkDestroySurfaceKHRSafe = vkDestroySurfaceKHR
+vkDestroySurfaceKHRSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkDestroySurfaceKHR)
 
-{-# INLINE vkDestroySurfaceKHRSafe #-}
+{-# NOINLINE vkDestroySurfaceKHRSafe #-}
 #endif
 
 -- | > void vkDestroySurfaceKHR
@@ -234,9 +217,12 @@
 
 type PFN_vkDestroySurfaceKHR = FunPtr HS_vkDestroySurfaceKHR
 
-foreign import ccall "dynamic" unwrapVkDestroySurfaceKHR ::
+foreign import ccall unsafe "dynamic" unwrapVkDestroySurfaceKHR ::
                PFN_vkDestroySurfaceKHR -> HS_vkDestroySurfaceKHR
 
+foreign import ccall safe "dynamic" unwrapVkDestroySurfaceKHRSafe
+               :: PFN_vkDestroySurfaceKHR -> HS_vkDestroySurfaceKHR
+
 instance VulkanProc "vkDestroySurfaceKHR" where
         type VkProcType "vkDestroySurfaceKHR" = HS_vkDestroySurfaceKHR
         vkProcSymbol = _VkDestroySurfaceKHR
@@ -245,7 +231,10 @@
         unwrapVkProcPtr = unwrapVkDestroySurfaceKHR
 
         {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkDestroySurfaceKHRSafe
 
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
 pattern VkGetPhysicalDeviceSurfaceSupportKHR :: CString
 
 pattern VkGetPhysicalDeviceSurfaceSupportKHR <-
@@ -268,7 +257,6 @@
 type VkGetPhysicalDeviceSurfaceSupportKHR =
      "vkGetPhysicalDeviceSurfaceSupportKHR"
 
-#ifdef NATIVE_FFI_VK_VERSION_1_0
 -- |
 -- Success codes: 'VK_SUCCESS'.
 --
@@ -283,9 +271,22 @@
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceSurfaceSupportKHR vkGetPhysicalDeviceSurfaceSupportKHR registry at www.khronos.org>
 --
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
 --           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
 --
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceSurfaceSupportKHR <- vkGetInstanceProc @VkGetPhysicalDeviceSurfaceSupportKHR vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceSurfaceSupportKHR <- vkGetProc @VkGetPhysicalDeviceSurfaceSupportKHR
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_0
 foreign import ccall unsafe "vkGetPhysicalDeviceSurfaceSupportKHR"
                vkGetPhysicalDeviceSurfaceSupportKHR ::
                VkPhysicalDevice -- ^ physicalDevice
@@ -296,32 +297,6 @@
                                                         -> IO VkResult
 
 #else
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_SURFACE_LOST_KHR'.
---
--- > VkResult vkGetPhysicalDeviceSurfaceSupportKHR
--- >     ( VkPhysicalDevice physicalDevice
--- >     , uint32_t queueFamilyIndex
--- >     , VkSurfaceKHR surface
--- >     , VkBool32* pSupported
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceSurfaceSupportKHR vkGetPhysicalDeviceSurfaceSupportKHR registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkGetPhysicalDeviceSurfaceSupportKHRSafe@ and @vkGetPhysicalDeviceSurfaceSupportKHR@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetPhysicalDeviceSurfaceSupportKHR <- vkGetInstanceProc @VkGetPhysicalDeviceSurfaceSupportKHR vkInstance
---
--- or less efficient:
---
--- > myGetPhysicalDeviceSurfaceSupportKHR <- vkGetProc @VkGetPhysicalDeviceSurfaceSupportKHR
---
 vkGetPhysicalDeviceSurfaceSupportKHR ::
                                      VkPhysicalDevice -- ^ physicalDevice
                                                       ->
@@ -336,7 +311,6 @@
 {-# NOINLINE vkGetPhysicalDeviceSurfaceSupportKHR #-}
 #endif
 
-#ifdef NATIVE_FFI_VK_VERSION_1_0
 -- |
 -- Success codes: 'VK_SUCCESS'.
 --
@@ -351,9 +325,22 @@
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceSurfaceSupportKHR vkGetPhysicalDeviceSurfaceSupportKHR registry at www.khronos.org>
 --
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
 --           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
 --
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceSurfaceSupportKHR <- vkGetInstanceProc @VkGetPhysicalDeviceSurfaceSupportKHR vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceSurfaceSupportKHR <- vkGetProc @VkGetPhysicalDeviceSurfaceSupportKHR
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_0
 foreign import ccall safe "vkGetPhysicalDeviceSurfaceSupportKHR"
                vkGetPhysicalDeviceSurfaceSupportKHRSafe ::
                VkPhysicalDevice -- ^ physicalDevice
@@ -364,32 +351,6 @@
                                                         -> IO VkResult
 
 #else
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_SURFACE_LOST_KHR'.
---
--- > VkResult vkGetPhysicalDeviceSurfaceSupportKHR
--- >     ( VkPhysicalDevice physicalDevice
--- >     , uint32_t queueFamilyIndex
--- >     , VkSurfaceKHR surface
--- >     , VkBool32* pSupported
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceSurfaceSupportKHR vkGetPhysicalDeviceSurfaceSupportKHR registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkGetPhysicalDeviceSurfaceSupportKHRSafe@ and @vkGetPhysicalDeviceSurfaceSupportKHR@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetPhysicalDeviceSurfaceSupportKHR <- vkGetInstanceProc @VkGetPhysicalDeviceSurfaceSupportKHR vkInstance
---
--- or less efficient:
---
--- > myGetPhysicalDeviceSurfaceSupportKHR <- vkGetProc @VkGetPhysicalDeviceSurfaceSupportKHR
---
 vkGetPhysicalDeviceSurfaceSupportKHRSafe ::
                                          VkPhysicalDevice -- ^ physicalDevice
                                                           ->
@@ -398,9 +359,10 @@
                                                                   -> Ptr VkBool32 -- ^ pSupported
                                                                                   -> IO VkResult
 vkGetPhysicalDeviceSurfaceSupportKHRSafe
-  = vkGetPhysicalDeviceSurfaceSupportKHR
+  = unsafeDupablePerformIO
+      (vkGetProcSafe @VkGetPhysicalDeviceSurfaceSupportKHR)
 
-{-# INLINE vkGetPhysicalDeviceSurfaceSupportKHRSafe #-}
+{-# NOINLINE vkGetPhysicalDeviceSurfaceSupportKHRSafe #-}
 #endif
 
 -- | Success codes: 'VK_SUCCESS'.
@@ -426,11 +388,16 @@
 type PFN_vkGetPhysicalDeviceSurfaceSupportKHR =
      FunPtr HS_vkGetPhysicalDeviceSurfaceSupportKHR
 
-foreign import ccall "dynamic"
+foreign import ccall unsafe "dynamic"
                unwrapVkGetPhysicalDeviceSurfaceSupportKHR ::
                PFN_vkGetPhysicalDeviceSurfaceSupportKHR ->
                  HS_vkGetPhysicalDeviceSurfaceSupportKHR
 
+foreign import ccall safe "dynamic"
+               unwrapVkGetPhysicalDeviceSurfaceSupportKHRSafe ::
+               PFN_vkGetPhysicalDeviceSurfaceSupportKHR ->
+                 HS_vkGetPhysicalDeviceSurfaceSupportKHR
+
 instance VulkanProc "vkGetPhysicalDeviceSurfaceSupportKHR" where
         type VkProcType "vkGetPhysicalDeviceSurfaceSupportKHR" =
              HS_vkGetPhysicalDeviceSurfaceSupportKHR
@@ -440,7 +407,11 @@
         unwrapVkProcPtr = unwrapVkGetPhysicalDeviceSurfaceSupportKHR
 
         {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe
+          = unwrapVkGetPhysicalDeviceSurfaceSupportKHRSafe
 
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
 pattern VkGetPhysicalDeviceSurfaceCapabilitiesKHR :: CString
 
 pattern VkGetPhysicalDeviceSurfaceCapabilitiesKHR <-
@@ -463,7 +434,6 @@
 type VkGetPhysicalDeviceSurfaceCapabilitiesKHR =
      "vkGetPhysicalDeviceSurfaceCapabilitiesKHR"
 
-#ifdef NATIVE_FFI_VK_VERSION_1_0
 -- |
 -- Success codes: 'VK_SUCCESS'.
 --
@@ -477,9 +447,22 @@
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceSurfaceCapabilitiesKHR vkGetPhysicalDeviceSurfaceCapabilitiesKHR registry at www.khronos.org>
 --
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
 --           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
 --
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceSurfaceCapabilitiesKHR <- vkGetInstanceProc @VkGetPhysicalDeviceSurfaceCapabilitiesKHR vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceSurfaceCapabilitiesKHR <- vkGetProc @VkGetPhysicalDeviceSurfaceCapabilitiesKHR
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_0
 foreign import ccall unsafe
                "vkGetPhysicalDeviceSurfaceCapabilitiesKHR"
                vkGetPhysicalDeviceSurfaceCapabilitiesKHR ::
@@ -490,31 +473,6 @@
                                                               -> IO VkResult
 
 #else
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_SURFACE_LOST_KHR'.
---
--- > VkResult vkGetPhysicalDeviceSurfaceCapabilitiesKHR
--- >     ( VkPhysicalDevice physicalDevice
--- >     , VkSurfaceKHR surface
--- >     , VkSurfaceCapabilitiesKHR* pSurfaceCapabilities
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceSurfaceCapabilitiesKHR vkGetPhysicalDeviceSurfaceCapabilitiesKHR registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkGetPhysicalDeviceSurfaceCapabilitiesKHRSafe@ and @vkGetPhysicalDeviceSurfaceCapabilitiesKHR@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetPhysicalDeviceSurfaceCapabilitiesKHR <- vkGetInstanceProc @VkGetPhysicalDeviceSurfaceCapabilitiesKHR vkInstance
---
--- or less efficient:
---
--- > myGetPhysicalDeviceSurfaceCapabilitiesKHR <- vkGetProc @VkGetPhysicalDeviceSurfaceCapabilitiesKHR
---
 vkGetPhysicalDeviceSurfaceCapabilitiesKHR ::
                                           VkPhysicalDevice -- ^ physicalDevice
                                                            ->
@@ -529,7 +487,6 @@
 {-# NOINLINE vkGetPhysicalDeviceSurfaceCapabilitiesKHR #-}
 #endif
 
-#ifdef NATIVE_FFI_VK_VERSION_1_0
 -- |
 -- Success codes: 'VK_SUCCESS'.
 --
@@ -543,9 +500,22 @@
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceSurfaceCapabilitiesKHR vkGetPhysicalDeviceSurfaceCapabilitiesKHR registry at www.khronos.org>
 --
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
 --           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
 --
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceSurfaceCapabilitiesKHR <- vkGetInstanceProc @VkGetPhysicalDeviceSurfaceCapabilitiesKHR vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceSurfaceCapabilitiesKHR <- vkGetProc @VkGetPhysicalDeviceSurfaceCapabilitiesKHR
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_0
 foreign import ccall safe
                "vkGetPhysicalDeviceSurfaceCapabilitiesKHR"
                vkGetPhysicalDeviceSurfaceCapabilitiesKHRSafe ::
@@ -556,31 +526,6 @@
                                                               -> IO VkResult
 
 #else
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_SURFACE_LOST_KHR'.
---
--- > VkResult vkGetPhysicalDeviceSurfaceCapabilitiesKHR
--- >     ( VkPhysicalDevice physicalDevice
--- >     , VkSurfaceKHR surface
--- >     , VkSurfaceCapabilitiesKHR* pSurfaceCapabilities
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceSurfaceCapabilitiesKHR vkGetPhysicalDeviceSurfaceCapabilitiesKHR registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkGetPhysicalDeviceSurfaceCapabilitiesKHRSafe@ and @vkGetPhysicalDeviceSurfaceCapabilitiesKHR@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetPhysicalDeviceSurfaceCapabilitiesKHR <- vkGetInstanceProc @VkGetPhysicalDeviceSurfaceCapabilitiesKHR vkInstance
---
--- or less efficient:
---
--- > myGetPhysicalDeviceSurfaceCapabilitiesKHR <- vkGetProc @VkGetPhysicalDeviceSurfaceCapabilitiesKHR
---
 vkGetPhysicalDeviceSurfaceCapabilitiesKHRSafe ::
                                               VkPhysicalDevice -- ^ physicalDevice
                                                                ->
@@ -589,9 +534,10 @@
                                                   Ptr VkSurfaceCapabilitiesKHR -- ^ pSurfaceCapabilities
                                                                                -> IO VkResult
 vkGetPhysicalDeviceSurfaceCapabilitiesKHRSafe
-  = vkGetPhysicalDeviceSurfaceCapabilitiesKHR
+  = unsafeDupablePerformIO
+      (vkGetProcSafe @VkGetPhysicalDeviceSurfaceCapabilitiesKHR)
 
-{-# INLINE vkGetPhysicalDeviceSurfaceCapabilitiesKHRSafe #-}
+{-# NOINLINE vkGetPhysicalDeviceSurfaceCapabilitiesKHRSafe #-}
 #endif
 
 -- | Success codes: 'VK_SUCCESS'.
@@ -615,11 +561,16 @@
 type PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR =
      FunPtr HS_vkGetPhysicalDeviceSurfaceCapabilitiesKHR
 
-foreign import ccall "dynamic"
+foreign import ccall unsafe "dynamic"
                unwrapVkGetPhysicalDeviceSurfaceCapabilitiesKHR ::
                PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR ->
                  HS_vkGetPhysicalDeviceSurfaceCapabilitiesKHR
 
+foreign import ccall safe "dynamic"
+               unwrapVkGetPhysicalDeviceSurfaceCapabilitiesKHRSafe ::
+               PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR ->
+                 HS_vkGetPhysicalDeviceSurfaceCapabilitiesKHR
+
 instance VulkanProc "vkGetPhysicalDeviceSurfaceCapabilitiesKHR"
          where
         type VkProcType "vkGetPhysicalDeviceSurfaceCapabilitiesKHR" =
@@ -630,7 +581,11 @@
         unwrapVkProcPtr = unwrapVkGetPhysicalDeviceSurfaceCapabilitiesKHR
 
         {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe
+          = unwrapVkGetPhysicalDeviceSurfaceCapabilitiesKHRSafe
 
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
 pattern VkGetPhysicalDeviceSurfaceFormatsKHR :: CString
 
 pattern VkGetPhysicalDeviceSurfaceFormatsKHR <-
@@ -653,7 +608,6 @@
 type VkGetPhysicalDeviceSurfaceFormatsKHR =
      "vkGetPhysicalDeviceSurfaceFormatsKHR"
 
-#ifdef NATIVE_FFI_VK_VERSION_1_0
 -- |
 -- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
 --
@@ -668,9 +622,22 @@
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceSurfaceFormatsKHR vkGetPhysicalDeviceSurfaceFormatsKHR registry at www.khronos.org>
 --
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
 --           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
 --
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceSurfaceFormatsKHR <- vkGetInstanceProc @VkGetPhysicalDeviceSurfaceFormatsKHR vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceSurfaceFormatsKHR <- vkGetProc @VkGetPhysicalDeviceSurfaceFormatsKHR
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_0
 foreign import ccall unsafe "vkGetPhysicalDeviceSurfaceFormatsKHR"
                vkGetPhysicalDeviceSurfaceFormatsKHR ::
                VkPhysicalDevice -- ^ physicalDevice
@@ -681,32 +648,6 @@
                                                                       -> IO VkResult
 
 #else
--- |
--- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_SURFACE_LOST_KHR'.
---
--- > VkResult vkGetPhysicalDeviceSurfaceFormatsKHR
--- >     ( VkPhysicalDevice physicalDevice
--- >     , VkSurfaceKHR surface
--- >     , uint32_t* pSurfaceFormatCount
--- >     , VkSurfaceFormatKHR* pSurfaceFormats
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceSurfaceFormatsKHR vkGetPhysicalDeviceSurfaceFormatsKHR registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkGetPhysicalDeviceSurfaceFormatsKHRSafe@ and @vkGetPhysicalDeviceSurfaceFormatsKHR@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetPhysicalDeviceSurfaceFormatsKHR <- vkGetInstanceProc @VkGetPhysicalDeviceSurfaceFormatsKHR vkInstance
---
--- or less efficient:
---
--- > myGetPhysicalDeviceSurfaceFormatsKHR <- vkGetProc @VkGetPhysicalDeviceSurfaceFormatsKHR
---
 vkGetPhysicalDeviceSurfaceFormatsKHR ::
                                      VkPhysicalDevice -- ^ physicalDevice
                                                       ->
@@ -722,7 +663,6 @@
 {-# NOINLINE vkGetPhysicalDeviceSurfaceFormatsKHR #-}
 #endif
 
-#ifdef NATIVE_FFI_VK_VERSION_1_0
 -- |
 -- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
 --
@@ -737,9 +677,22 @@
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceSurfaceFormatsKHR vkGetPhysicalDeviceSurfaceFormatsKHR registry at www.khronos.org>
 --
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
 --           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
 --
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceSurfaceFormatsKHR <- vkGetInstanceProc @VkGetPhysicalDeviceSurfaceFormatsKHR vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceSurfaceFormatsKHR <- vkGetProc @VkGetPhysicalDeviceSurfaceFormatsKHR
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_0
 foreign import ccall safe "vkGetPhysicalDeviceSurfaceFormatsKHR"
                vkGetPhysicalDeviceSurfaceFormatsKHRSafe ::
                VkPhysicalDevice -- ^ physicalDevice
@@ -750,32 +703,6 @@
                                                                       -> IO VkResult
 
 #else
--- |
--- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_SURFACE_LOST_KHR'.
---
--- > VkResult vkGetPhysicalDeviceSurfaceFormatsKHR
--- >     ( VkPhysicalDevice physicalDevice
--- >     , VkSurfaceKHR surface
--- >     , uint32_t* pSurfaceFormatCount
--- >     , VkSurfaceFormatKHR* pSurfaceFormats
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceSurfaceFormatsKHR vkGetPhysicalDeviceSurfaceFormatsKHR registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkGetPhysicalDeviceSurfaceFormatsKHRSafe@ and @vkGetPhysicalDeviceSurfaceFormatsKHR@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetPhysicalDeviceSurfaceFormatsKHR <- vkGetInstanceProc @VkGetPhysicalDeviceSurfaceFormatsKHR vkInstance
---
--- or less efficient:
---
--- > myGetPhysicalDeviceSurfaceFormatsKHR <- vkGetProc @VkGetPhysicalDeviceSurfaceFormatsKHR
---
 vkGetPhysicalDeviceSurfaceFormatsKHRSafe ::
                                          VkPhysicalDevice -- ^ physicalDevice
                                                           ->
@@ -785,9 +712,10 @@
                                                         -> Ptr VkSurfaceFormatKHR -- ^ pSurfaceFormats
                                                                                   -> IO VkResult
 vkGetPhysicalDeviceSurfaceFormatsKHRSafe
-  = vkGetPhysicalDeviceSurfaceFormatsKHR
+  = unsafeDupablePerformIO
+      (vkGetProcSafe @VkGetPhysicalDeviceSurfaceFormatsKHR)
 
-{-# INLINE vkGetPhysicalDeviceSurfaceFormatsKHRSafe #-}
+{-# NOINLINE vkGetPhysicalDeviceSurfaceFormatsKHRSafe #-}
 #endif
 
 -- | Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
@@ -813,11 +741,16 @@
 type PFN_vkGetPhysicalDeviceSurfaceFormatsKHR =
      FunPtr HS_vkGetPhysicalDeviceSurfaceFormatsKHR
 
-foreign import ccall "dynamic"
+foreign import ccall unsafe "dynamic"
                unwrapVkGetPhysicalDeviceSurfaceFormatsKHR ::
                PFN_vkGetPhysicalDeviceSurfaceFormatsKHR ->
                  HS_vkGetPhysicalDeviceSurfaceFormatsKHR
 
+foreign import ccall safe "dynamic"
+               unwrapVkGetPhysicalDeviceSurfaceFormatsKHRSafe ::
+               PFN_vkGetPhysicalDeviceSurfaceFormatsKHR ->
+                 HS_vkGetPhysicalDeviceSurfaceFormatsKHR
+
 instance VulkanProc "vkGetPhysicalDeviceSurfaceFormatsKHR" where
         type VkProcType "vkGetPhysicalDeviceSurfaceFormatsKHR" =
              HS_vkGetPhysicalDeviceSurfaceFormatsKHR
@@ -827,7 +760,11 @@
         unwrapVkProcPtr = unwrapVkGetPhysicalDeviceSurfaceFormatsKHR
 
         {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe
+          = unwrapVkGetPhysicalDeviceSurfaceFormatsKHRSafe
 
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
 pattern VkGetPhysicalDeviceSurfacePresentModesKHR :: CString
 
 pattern VkGetPhysicalDeviceSurfacePresentModesKHR <-
@@ -850,7 +787,6 @@
 type VkGetPhysicalDeviceSurfacePresentModesKHR =
      "vkGetPhysicalDeviceSurfacePresentModesKHR"
 
-#ifdef NATIVE_FFI_VK_VERSION_1_0
 -- |
 -- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
 --
@@ -865,9 +801,22 @@
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceSurfacePresentModesKHR vkGetPhysicalDeviceSurfacePresentModesKHR registry at www.khronos.org>
 --
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
 --           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
 --
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceSurfacePresentModesKHR <- vkGetInstanceProc @VkGetPhysicalDeviceSurfacePresentModesKHR vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceSurfacePresentModesKHR <- vkGetProc @VkGetPhysicalDeviceSurfacePresentModesKHR
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_0
 foreign import ccall unsafe
                "vkGetPhysicalDeviceSurfacePresentModesKHR"
                vkGetPhysicalDeviceSurfacePresentModesKHR ::
@@ -879,32 +828,6 @@
                                                                     -> IO VkResult
 
 #else
--- |
--- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_SURFACE_LOST_KHR'.
---
--- > VkResult vkGetPhysicalDeviceSurfacePresentModesKHR
--- >     ( VkPhysicalDevice physicalDevice
--- >     , VkSurfaceKHR surface
--- >     , uint32_t* pPresentModeCount
--- >     , VkPresentModeKHR* pPresentModes
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceSurfacePresentModesKHR vkGetPhysicalDeviceSurfacePresentModesKHR registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkGetPhysicalDeviceSurfacePresentModesKHRSafe@ and @vkGetPhysicalDeviceSurfacePresentModesKHR@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetPhysicalDeviceSurfacePresentModesKHR <- vkGetInstanceProc @VkGetPhysicalDeviceSurfacePresentModesKHR vkInstance
---
--- or less efficient:
---
--- > myGetPhysicalDeviceSurfacePresentModesKHR <- vkGetProc @VkGetPhysicalDeviceSurfacePresentModesKHR
---
 vkGetPhysicalDeviceSurfacePresentModesKHR ::
                                           VkPhysicalDevice -- ^ physicalDevice
                                                            ->
@@ -920,7 +843,6 @@
 {-# NOINLINE vkGetPhysicalDeviceSurfacePresentModesKHR #-}
 #endif
 
-#ifdef NATIVE_FFI_VK_VERSION_1_0
 -- |
 -- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
 --
@@ -935,9 +857,22 @@
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceSurfacePresentModesKHR vkGetPhysicalDeviceSurfacePresentModesKHR registry at www.khronos.org>
 --
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
 --           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
 --
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceSurfacePresentModesKHR <- vkGetInstanceProc @VkGetPhysicalDeviceSurfacePresentModesKHR vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceSurfacePresentModesKHR <- vkGetProc @VkGetPhysicalDeviceSurfacePresentModesKHR
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_0
 foreign import ccall safe
                "vkGetPhysicalDeviceSurfacePresentModesKHR"
                vkGetPhysicalDeviceSurfacePresentModesKHRSafe ::
@@ -949,32 +884,6 @@
                                                                     -> IO VkResult
 
 #else
--- |
--- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_SURFACE_LOST_KHR'.
---
--- > VkResult vkGetPhysicalDeviceSurfacePresentModesKHR
--- >     ( VkPhysicalDevice physicalDevice
--- >     , VkSurfaceKHR surface
--- >     , uint32_t* pPresentModeCount
--- >     , VkPresentModeKHR* pPresentModes
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceSurfacePresentModesKHR vkGetPhysicalDeviceSurfacePresentModesKHR registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkGetPhysicalDeviceSurfacePresentModesKHRSafe@ and @vkGetPhysicalDeviceSurfacePresentModesKHR@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetPhysicalDeviceSurfacePresentModesKHR <- vkGetInstanceProc @VkGetPhysicalDeviceSurfacePresentModesKHR vkInstance
---
--- or less efficient:
---
--- > myGetPhysicalDeviceSurfacePresentModesKHR <- vkGetProc @VkGetPhysicalDeviceSurfacePresentModesKHR
---
 vkGetPhysicalDeviceSurfacePresentModesKHRSafe ::
                                               VkPhysicalDevice -- ^ physicalDevice
                                                                ->
@@ -984,9 +893,10 @@
                                                              -> Ptr VkPresentModeKHR -- ^ pPresentModes
                                                                                      -> IO VkResult
 vkGetPhysicalDeviceSurfacePresentModesKHRSafe
-  = vkGetPhysicalDeviceSurfacePresentModesKHR
+  = unsafeDupablePerformIO
+      (vkGetProcSafe @VkGetPhysicalDeviceSurfacePresentModesKHR)
 
-{-# INLINE vkGetPhysicalDeviceSurfacePresentModesKHRSafe #-}
+{-# NOINLINE vkGetPhysicalDeviceSurfacePresentModesKHRSafe #-}
 #endif
 
 -- | Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
@@ -1012,11 +922,16 @@
 type PFN_vkGetPhysicalDeviceSurfacePresentModesKHR =
      FunPtr HS_vkGetPhysicalDeviceSurfacePresentModesKHR
 
-foreign import ccall "dynamic"
+foreign import ccall unsafe "dynamic"
                unwrapVkGetPhysicalDeviceSurfacePresentModesKHR ::
                PFN_vkGetPhysicalDeviceSurfacePresentModesKHR ->
                  HS_vkGetPhysicalDeviceSurfacePresentModesKHR
 
+foreign import ccall safe "dynamic"
+               unwrapVkGetPhysicalDeviceSurfacePresentModesKHRSafe ::
+               PFN_vkGetPhysicalDeviceSurfacePresentModesKHR ->
+                 HS_vkGetPhysicalDeviceSurfacePresentModesKHR
+
 instance VulkanProc "vkGetPhysicalDeviceSurfacePresentModesKHR"
          where
         type VkProcType "vkGetPhysicalDeviceSurfacePresentModesKHR" =
@@ -1027,6 +942,10 @@
         unwrapVkProcPtr = unwrapVkGetPhysicalDeviceSurfacePresentModesKHR
 
         {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe
+          = unwrapVkGetPhysicalDeviceSurfacePresentModesKHRSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VK_KHR_SURFACE_SPEC_VERSION :: (Num a, Eq a) => a
 
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_KHR_swapchain.hs b/src-gen/Graphics/Vulkan/Ext/VK_KHR_swapchain.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_KHR_swapchain.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_KHR_swapchain.hs
@@ -163,7 +163,6 @@
 
 type VkCreateSwapchainKHR = "vkCreateSwapchainKHR"
 
-#ifdef NATIVE_FFI_VK_VERSION_1_0
 -- |
 -- Success codes: 'VK_SUCCESS'.
 --
@@ -178,9 +177,22 @@
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateSwapchainKHR vkCreateSwapchainKHR registry at www.khronos.org>
 --
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
 --           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
 --
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateSwapchainKHR <- vkGetDeviceProc @VkCreateSwapchainKHR vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateSwapchainKHR <- vkGetProc @VkCreateSwapchainKHR
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_0
 foreign import ccall unsafe "vkCreateSwapchainKHR"
                vkCreateSwapchainKHR ::
                VkDevice -- ^ device
@@ -192,32 +204,6 @@
                                                                    -> IO VkResult
 
 #else
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST', 'VK_ERROR_SURFACE_LOST_KHR', 'VK_ERROR_NATIVE_WINDOW_IN_USE_KHR'.
---
--- > VkResult vkCreateSwapchainKHR
--- >     ( VkDevice device
--- >     , const VkSwapchainCreateInfoKHR* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkSwapchainKHR* pSwapchain
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateSwapchainKHR vkCreateSwapchainKHR registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCreateSwapchainKHRSafe@ and @vkCreateSwapchainKHR@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateSwapchainKHR <- vkGetDeviceProc @VkCreateSwapchainKHR vkDevice
---
--- or less efficient:
---
--- > myCreateSwapchainKHR <- vkGetProc @VkCreateSwapchainKHR
---
 vkCreateSwapchainKHR ::
                      VkDevice -- ^ device
                               ->
@@ -232,7 +218,6 @@
 {-# NOINLINE vkCreateSwapchainKHR #-}
 #endif
 
-#ifdef NATIVE_FFI_VK_VERSION_1_0
 -- |
 -- Success codes: 'VK_SUCCESS'.
 --
@@ -247,9 +232,22 @@
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateSwapchainKHR vkCreateSwapchainKHR registry at www.khronos.org>
 --
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
 --           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
 --
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateSwapchainKHR <- vkGetDeviceProc @VkCreateSwapchainKHR vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateSwapchainKHR <- vkGetProc @VkCreateSwapchainKHR
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_0
 foreign import ccall safe "vkCreateSwapchainKHR"
                vkCreateSwapchainKHRSafe ::
                VkDevice -- ^ device
@@ -261,32 +259,6 @@
                                                                    -> IO VkResult
 
 #else
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST', 'VK_ERROR_SURFACE_LOST_KHR', 'VK_ERROR_NATIVE_WINDOW_IN_USE_KHR'.
---
--- > VkResult vkCreateSwapchainKHR
--- >     ( VkDevice device
--- >     , const VkSwapchainCreateInfoKHR* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkSwapchainKHR* pSwapchain
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateSwapchainKHR vkCreateSwapchainKHR registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCreateSwapchainKHRSafe@ and @vkCreateSwapchainKHR@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateSwapchainKHR <- vkGetDeviceProc @VkCreateSwapchainKHR vkDevice
---
--- or less efficient:
---
--- > myCreateSwapchainKHR <- vkGetProc @VkCreateSwapchainKHR
---
 vkCreateSwapchainKHRSafe ::
                          VkDevice -- ^ device
                                   ->
@@ -295,9 +267,10 @@
                              Ptr VkAllocationCallbacks -- ^ pAllocator
                                                        -> Ptr VkSwapchainKHR -- ^ pSwapchain
                                                                              -> IO VkResult
-vkCreateSwapchainKHRSafe = vkCreateSwapchainKHR
+vkCreateSwapchainKHRSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCreateSwapchainKHR)
 
-{-# INLINE vkCreateSwapchainKHRSafe #-}
+{-# NOINLINE vkCreateSwapchainKHRSafe #-}
 #endif
 
 -- | Success codes: 'VK_SUCCESS'.
@@ -323,9 +296,12 @@
 
 type PFN_vkCreateSwapchainKHR = FunPtr HS_vkCreateSwapchainKHR
 
-foreign import ccall "dynamic" unwrapVkCreateSwapchainKHR ::
+foreign import ccall unsafe "dynamic" unwrapVkCreateSwapchainKHR ::
                PFN_vkCreateSwapchainKHR -> HS_vkCreateSwapchainKHR
 
+foreign import ccall safe "dynamic" unwrapVkCreateSwapchainKHRSafe
+               :: PFN_vkCreateSwapchainKHR -> HS_vkCreateSwapchainKHR
+
 instance VulkanProc "vkCreateSwapchainKHR" where
         type VkProcType "vkCreateSwapchainKHR" = HS_vkCreateSwapchainKHR
         vkProcSymbol = _VkCreateSwapchainKHR
@@ -334,7 +310,10 @@
         unwrapVkProcPtr = unwrapVkCreateSwapchainKHR
 
         {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkCreateSwapchainKHRSafe
 
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
 pattern VkDestroySwapchainKHR :: CString
 
 pattern VkDestroySwapchainKHR <- (is_VkDestroySwapchainKHR -> True)
@@ -353,7 +332,6 @@
 
 type VkDestroySwapchainKHR = "vkDestroySwapchainKHR"
 
-#ifdef NATIVE_FFI_VK_VERSION_1_0
 -- |
 -- > void vkDestroySwapchainKHR
 -- >     ( VkDevice device
@@ -363,29 +341,9 @@
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroySwapchainKHR vkDestroySwapchainKHR registry at www.khronos.org>
 --
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
 --           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkDestroySwapchainKHR"
-               vkDestroySwapchainKHR ::
-               VkDevice -- ^ device
-                        -> VkSwapchainKHR -- ^ swapchain
-                                          -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                       -> IO ()
-
-#else
--- |
--- > void vkDestroySwapchainKHR
--- >     ( VkDevice device
--- >     , VkSwapchainKHR swapchain
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroySwapchainKHR vkDestroySwapchainKHR registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkDestroySwapchainKHRSafe@ and @vkDestroySwapchainKHR@ are synonyms.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
 --
 -- Independently of the flag setting, you can lookup the function manually at runtime:
 --
@@ -395,6 +353,18 @@
 --
 -- > myDestroySwapchainKHR <- vkGetProc @VkDestroySwapchainKHR
 --
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkDestroySwapchainKHR"
+               vkDestroySwapchainKHR ::
+               VkDevice -- ^ device
+                        -> VkSwapchainKHR -- ^ swapchain
+                                          -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                       -> IO ()
+
+#else
 vkDestroySwapchainKHR ::
                       VkDevice -- ^ device
                                -> VkSwapchainKHR -- ^ swapchain
@@ -406,7 +376,6 @@
 {-# NOINLINE vkDestroySwapchainKHR #-}
 #endif
 
-#ifdef NATIVE_FFI_VK_VERSION_1_0
 -- |
 -- > void vkDestroySwapchainKHR
 -- >     ( VkDevice device
@@ -416,29 +385,9 @@
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroySwapchainKHR vkDestroySwapchainKHR registry at www.khronos.org>
 --
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
 --           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkDestroySwapchainKHR"
-               vkDestroySwapchainKHRSafe ::
-               VkDevice -- ^ device
-                        -> VkSwapchainKHR -- ^ swapchain
-                                          -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                       -> IO ()
-
-#else
--- |
--- > void vkDestroySwapchainKHR
--- >     ( VkDevice device
--- >     , VkSwapchainKHR swapchain
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroySwapchainKHR vkDestroySwapchainKHR registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkDestroySwapchainKHRSafe@ and @vkDestroySwapchainKHR@ are synonyms.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
 --
 -- Independently of the flag setting, you can lookup the function manually at runtime:
 --
@@ -448,14 +397,27 @@
 --
 -- > myDestroySwapchainKHR <- vkGetProc @VkDestroySwapchainKHR
 --
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkDestroySwapchainKHR"
+               vkDestroySwapchainKHRSafe ::
+               VkDevice -- ^ device
+                        -> VkSwapchainKHR -- ^ swapchain
+                                          -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                       -> IO ()
+
+#else
 vkDestroySwapchainKHRSafe ::
                           VkDevice -- ^ device
                                    -> VkSwapchainKHR -- ^ swapchain
                                                      -> Ptr VkAllocationCallbacks -- ^ pAllocator
                                                                                   -> IO ()
-vkDestroySwapchainKHRSafe = vkDestroySwapchainKHR
+vkDestroySwapchainKHRSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkDestroySwapchainKHR)
 
-{-# INLINE vkDestroySwapchainKHRSafe #-}
+{-# NOINLINE vkDestroySwapchainKHRSafe #-}
 #endif
 
 -- | > void vkDestroySwapchainKHR
@@ -473,9 +435,12 @@
 
 type PFN_vkDestroySwapchainKHR = FunPtr HS_vkDestroySwapchainKHR
 
-foreign import ccall "dynamic" unwrapVkDestroySwapchainKHR ::
-               PFN_vkDestroySwapchainKHR -> HS_vkDestroySwapchainKHR
+foreign import ccall unsafe "dynamic" unwrapVkDestroySwapchainKHR
+               :: PFN_vkDestroySwapchainKHR -> HS_vkDestroySwapchainKHR
 
+foreign import ccall safe "dynamic" unwrapVkDestroySwapchainKHRSafe
+               :: PFN_vkDestroySwapchainKHR -> HS_vkDestroySwapchainKHR
+
 instance VulkanProc "vkDestroySwapchainKHR" where
         type VkProcType "vkDestroySwapchainKHR" = HS_vkDestroySwapchainKHR
         vkProcSymbol = _VkDestroySwapchainKHR
@@ -484,7 +449,10 @@
         unwrapVkProcPtr = unwrapVkDestroySwapchainKHR
 
         {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkDestroySwapchainKHRSafe
 
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
 pattern VkGetSwapchainImagesKHR :: CString
 
 pattern VkGetSwapchainImagesKHR <-
@@ -504,7 +472,6 @@
 
 type VkGetSwapchainImagesKHR = "vkGetSwapchainImagesKHR"
 
-#ifdef NATIVE_FFI_VK_VERSION_1_0
 -- |
 -- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
 --
@@ -519,9 +486,22 @@
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetSwapchainImagesKHR vkGetSwapchainImagesKHR registry at www.khronos.org>
 --
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
 --           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
 --
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetSwapchainImagesKHR <- vkGetDeviceProc @VkGetSwapchainImagesKHR vkDevice
+--
+-- or less efficient:
+--
+-- > myGetSwapchainImagesKHR <- vkGetProc @VkGetSwapchainImagesKHR
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_0
 foreign import ccall unsafe "vkGetSwapchainImagesKHR"
                vkGetSwapchainImagesKHR ::
                VkDevice -- ^ device
@@ -532,32 +512,6 @@
                                                              -> IO VkResult
 
 #else
--- |
--- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkGetSwapchainImagesKHR
--- >     ( VkDevice device
--- >     , VkSwapchainKHR swapchain
--- >     , uint32_t* pSwapchainImageCount
--- >     , VkImage* pSwapchainImages
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetSwapchainImagesKHR vkGetSwapchainImagesKHR registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkGetSwapchainImagesKHRSafe@ and @vkGetSwapchainImagesKHR@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetSwapchainImagesKHR <- vkGetDeviceProc @VkGetSwapchainImagesKHR vkDevice
---
--- or less efficient:
---
--- > myGetSwapchainImagesKHR <- vkGetProc @VkGetSwapchainImagesKHR
---
 vkGetSwapchainImagesKHR ::
                         VkDevice -- ^ device
                                  ->
@@ -571,7 +525,6 @@
 {-# NOINLINE vkGetSwapchainImagesKHR #-}
 #endif
 
-#ifdef NATIVE_FFI_VK_VERSION_1_0
 -- |
 -- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
 --
@@ -586,9 +539,22 @@
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetSwapchainImagesKHR vkGetSwapchainImagesKHR registry at www.khronos.org>
 --
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
 --           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
 --
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetSwapchainImagesKHR <- vkGetDeviceProc @VkGetSwapchainImagesKHR vkDevice
+--
+-- or less efficient:
+--
+-- > myGetSwapchainImagesKHR <- vkGetProc @VkGetSwapchainImagesKHR
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_0
 foreign import ccall safe "vkGetSwapchainImagesKHR"
                vkGetSwapchainImagesKHRSafe ::
                VkDevice -- ^ device
@@ -599,32 +565,6 @@
                                                              -> IO VkResult
 
 #else
--- |
--- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkGetSwapchainImagesKHR
--- >     ( VkDevice device
--- >     , VkSwapchainKHR swapchain
--- >     , uint32_t* pSwapchainImageCount
--- >     , VkImage* pSwapchainImages
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetSwapchainImagesKHR vkGetSwapchainImagesKHR registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkGetSwapchainImagesKHRSafe@ and @vkGetSwapchainImagesKHR@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetSwapchainImagesKHR <- vkGetDeviceProc @VkGetSwapchainImagesKHR vkDevice
---
--- or less efficient:
---
--- > myGetSwapchainImagesKHR <- vkGetProc @VkGetSwapchainImagesKHR
---
 vkGetSwapchainImagesKHRSafe ::
                             VkDevice -- ^ device
                                      ->
@@ -632,9 +572,10 @@
                                              -> Ptr Word32 -- ^ pSwapchainImageCount
                                                            -> Ptr VkImage -- ^ pSwapchainImages
                                                                           -> IO VkResult
-vkGetSwapchainImagesKHRSafe = vkGetSwapchainImagesKHR
+vkGetSwapchainImagesKHRSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkGetSwapchainImagesKHR)
 
-{-# INLINE vkGetSwapchainImagesKHRSafe #-}
+{-# NOINLINE vkGetSwapchainImagesKHRSafe #-}
 #endif
 
 -- | Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
@@ -660,7 +601,11 @@
 type PFN_vkGetSwapchainImagesKHR =
      FunPtr HS_vkGetSwapchainImagesKHR
 
-foreign import ccall "dynamic" unwrapVkGetSwapchainImagesKHR ::
+foreign import ccall unsafe "dynamic" unwrapVkGetSwapchainImagesKHR
+               :: PFN_vkGetSwapchainImagesKHR -> HS_vkGetSwapchainImagesKHR
+
+foreign import ccall safe "dynamic"
+               unwrapVkGetSwapchainImagesKHRSafe ::
                PFN_vkGetSwapchainImagesKHR -> HS_vkGetSwapchainImagesKHR
 
 instance VulkanProc "vkGetSwapchainImagesKHR" where
@@ -672,7 +617,10 @@
         unwrapVkProcPtr = unwrapVkGetSwapchainImagesKHR
 
         {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkGetSwapchainImagesKHRSafe
 
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
 pattern VkAcquireNextImageKHR :: CString
 
 pattern VkAcquireNextImageKHR <- (is_VkAcquireNextImageKHR -> True)
@@ -691,7 +639,6 @@
 
 type VkAcquireNextImageKHR = "vkAcquireNextImageKHR"
 
-#ifdef NATIVE_FFI_VK_VERSION_1_0
 -- |
 -- Success codes: 'VK_SUCCESS', 'VK_TIMEOUT', 'VK_NOT_READY', 'VK_SUBOPTIMAL_KHR'.
 --
@@ -708,9 +655,22 @@
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkAcquireNextImageKHR vkAcquireNextImageKHR registry at www.khronos.org>
 --
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
 --           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
 --
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myAcquireNextImageKHR <- vkGetDeviceProc @VkAcquireNextImageKHR vkDevice
+--
+-- or less efficient:
+--
+-- > myAcquireNextImageKHR <- vkGetProc @VkAcquireNextImageKHR
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_0
 foreign import ccall unsafe "vkAcquireNextImageKHR"
                vkAcquireNextImageKHR ::
                VkDevice -- ^ device
@@ -724,34 +684,6 @@
                                                                   -> IO VkResult
 
 #else
--- |
--- Success codes: 'VK_SUCCESS', 'VK_TIMEOUT', 'VK_NOT_READY', 'VK_SUBOPTIMAL_KHR'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST', 'VK_ERROR_OUT_OF_DATE_KHR', 'VK_ERROR_SURFACE_LOST_KHR'.
---
--- > VkResult vkAcquireNextImageKHR
--- >     ( VkDevice device
--- >     , VkSwapchainKHR swapchain
--- >     , uint64_t timeout
--- >     , VkSemaphore semaphore
--- >     , VkFence fence
--- >     , uint32_t* pImageIndex
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkAcquireNextImageKHR vkAcquireNextImageKHR registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkAcquireNextImageKHRSafe@ and @vkAcquireNextImageKHR@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myAcquireNextImageKHR <- vkGetDeviceProc @VkAcquireNextImageKHR vkDevice
---
--- or less efficient:
---
--- > myAcquireNextImageKHR <- vkGetProc @VkAcquireNextImageKHR
---
 vkAcquireNextImageKHR ::
                       VkDevice -- ^ device
                                ->
@@ -768,7 +700,6 @@
 {-# NOINLINE vkAcquireNextImageKHR #-}
 #endif
 
-#ifdef NATIVE_FFI_VK_VERSION_1_0
 -- |
 -- Success codes: 'VK_SUCCESS', 'VK_TIMEOUT', 'VK_NOT_READY', 'VK_SUBOPTIMAL_KHR'.
 --
@@ -785,9 +716,22 @@
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkAcquireNextImageKHR vkAcquireNextImageKHR registry at www.khronos.org>
 --
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
 --           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
 --
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myAcquireNextImageKHR <- vkGetDeviceProc @VkAcquireNextImageKHR vkDevice
+--
+-- or less efficient:
+--
+-- > myAcquireNextImageKHR <- vkGetProc @VkAcquireNextImageKHR
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_0
 foreign import ccall safe "vkAcquireNextImageKHR"
                vkAcquireNextImageKHRSafe ::
                VkDevice -- ^ device
@@ -801,34 +745,6 @@
                                                                   -> IO VkResult
 
 #else
--- |
--- Success codes: 'VK_SUCCESS', 'VK_TIMEOUT', 'VK_NOT_READY', 'VK_SUBOPTIMAL_KHR'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST', 'VK_ERROR_OUT_OF_DATE_KHR', 'VK_ERROR_SURFACE_LOST_KHR'.
---
--- > VkResult vkAcquireNextImageKHR
--- >     ( VkDevice device
--- >     , VkSwapchainKHR swapchain
--- >     , uint64_t timeout
--- >     , VkSemaphore semaphore
--- >     , VkFence fence
--- >     , uint32_t* pImageIndex
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkAcquireNextImageKHR vkAcquireNextImageKHR registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkAcquireNextImageKHRSafe@ and @vkAcquireNextImageKHR@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myAcquireNextImageKHR <- vkGetDeviceProc @VkAcquireNextImageKHR vkDevice
---
--- or less efficient:
---
--- > myAcquireNextImageKHR <- vkGetProc @VkAcquireNextImageKHR
---
 vkAcquireNextImageKHRSafe ::
                           VkDevice -- ^ device
                                    ->
@@ -839,9 +755,10 @@
                                                     -> VkFence -- ^ fence
                                                                -> Ptr Word32 -- ^ pImageIndex
                                                                              -> IO VkResult
-vkAcquireNextImageKHRSafe = vkAcquireNextImageKHR
+vkAcquireNextImageKHRSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkAcquireNextImageKHR)
 
-{-# INLINE vkAcquireNextImageKHRSafe #-}
+{-# NOINLINE vkAcquireNextImageKHRSafe #-}
 #endif
 
 -- | Success codes: 'VK_SUCCESS', 'VK_TIMEOUT', 'VK_NOT_READY', 'VK_SUBOPTIMAL_KHR'.
@@ -871,9 +788,12 @@
 
 type PFN_vkAcquireNextImageKHR = FunPtr HS_vkAcquireNextImageKHR
 
-foreign import ccall "dynamic" unwrapVkAcquireNextImageKHR ::
-               PFN_vkAcquireNextImageKHR -> HS_vkAcquireNextImageKHR
+foreign import ccall unsafe "dynamic" unwrapVkAcquireNextImageKHR
+               :: PFN_vkAcquireNextImageKHR -> HS_vkAcquireNextImageKHR
 
+foreign import ccall safe "dynamic" unwrapVkAcquireNextImageKHRSafe
+               :: PFN_vkAcquireNextImageKHR -> HS_vkAcquireNextImageKHR
+
 instance VulkanProc "vkAcquireNextImageKHR" where
         type VkProcType "vkAcquireNextImageKHR" = HS_vkAcquireNextImageKHR
         vkProcSymbol = _VkAcquireNextImageKHR
@@ -882,7 +802,10 @@
         unwrapVkProcPtr = unwrapVkAcquireNextImageKHR
 
         {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkAcquireNextImageKHRSafe
 
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
 pattern VkQueuePresentKHR :: CString
 
 pattern VkQueuePresentKHR <- (is_VkQueuePresentKHR -> True)
@@ -900,7 +823,6 @@
 
 type VkQueuePresentKHR = "vkQueuePresentKHR"
 
-#ifdef NATIVE_FFI_VK_VERSION_1_0
 -- |
 -- Success codes: 'VK_SUCCESS', 'VK_SUBOPTIMAL_KHR'.
 --
@@ -913,30 +835,9 @@
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkQueuePresentKHR vkQueuePresentKHR registry at www.khronos.org>
 --
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
 --           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe "vkQueuePresentKHR" vkQueuePresentKHR
-               :: VkQueue -- ^ queue
-                          -> Ptr VkPresentInfoKHR -- ^ pPresentInfo
-                                                  -> IO VkResult
-
-#else
--- |
--- Success codes: 'VK_SUCCESS', 'VK_SUBOPTIMAL_KHR'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST', 'VK_ERROR_OUT_OF_DATE_KHR', 'VK_ERROR_SURFACE_LOST_KHR'.
---
--- > VkResult vkQueuePresentKHR
--- >     ( VkQueue queue
--- >     , const VkPresentInfoKHR* pPresentInfo
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkQueuePresentKHR vkQueuePresentKHR registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkQueuePresentKHRSafe@ and @vkQueuePresentKHR@ are synonyms.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
 --
 -- Independently of the flag setting, you can lookup the function manually at runtime:
 --
@@ -946,6 +847,16 @@
 --
 -- > myQueuePresentKHR <- vkGetProc @VkQueuePresentKHR
 --
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkQueuePresentKHR" vkQueuePresentKHR
+               :: VkQueue -- ^ queue
+                          -> Ptr VkPresentInfoKHR -- ^ pPresentInfo
+                                                  -> IO VkResult
+
+#else
 vkQueuePresentKHR :: VkQueue -- ^ queue
                              -> Ptr VkPresentInfoKHR -- ^ pPresentInfo
                                                      -> IO VkResult
@@ -955,7 +866,6 @@
 {-# NOINLINE vkQueuePresentKHR #-}
 #endif
 
-#ifdef NATIVE_FFI_VK_VERSION_1_0
 -- |
 -- Success codes: 'VK_SUCCESS', 'VK_SUBOPTIMAL_KHR'.
 --
@@ -968,30 +878,9 @@
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkQueuePresentKHR vkQueuePresentKHR registry at www.khronos.org>
 --
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
 --           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkQueuePresentKHR" vkQueuePresentKHRSafe
-               :: VkQueue -- ^ queue
-                          -> Ptr VkPresentInfoKHR -- ^ pPresentInfo
-                                                  -> IO VkResult
-
-#else
--- |
--- Success codes: 'VK_SUCCESS', 'VK_SUBOPTIMAL_KHR'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST', 'VK_ERROR_OUT_OF_DATE_KHR', 'VK_ERROR_SURFACE_LOST_KHR'.
---
--- > VkResult vkQueuePresentKHR
--- >     ( VkQueue queue
--- >     , const VkPresentInfoKHR* pPresentInfo
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkQueuePresentKHR vkQueuePresentKHR registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkQueuePresentKHRSafe@ and @vkQueuePresentKHR@ are synonyms.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
 --
 -- Independently of the flag setting, you can lookup the function manually at runtime:
 --
@@ -1001,13 +890,24 @@
 --
 -- > myQueuePresentKHR <- vkGetProc @VkQueuePresentKHR
 --
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkQueuePresentKHR" vkQueuePresentKHRSafe
+               :: VkQueue -- ^ queue
+                          -> Ptr VkPresentInfoKHR -- ^ pPresentInfo
+                                                  -> IO VkResult
+
+#else
 vkQueuePresentKHRSafe ::
                       VkQueue -- ^ queue
                               -> Ptr VkPresentInfoKHR -- ^ pPresentInfo
                                                       -> IO VkResult
-vkQueuePresentKHRSafe = vkQueuePresentKHR
+vkQueuePresentKHRSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkQueuePresentKHR)
 
-{-# INLINE vkQueuePresentKHRSafe #-}
+{-# NOINLINE vkQueuePresentKHRSafe #-}
 #endif
 
 -- | Success codes: 'VK_SUCCESS', 'VK_SUBOPTIMAL_KHR'.
@@ -1027,9 +927,12 @@
 
 type PFN_vkQueuePresentKHR = FunPtr HS_vkQueuePresentKHR
 
-foreign import ccall "dynamic" unwrapVkQueuePresentKHR ::
+foreign import ccall unsafe "dynamic" unwrapVkQueuePresentKHR ::
                PFN_vkQueuePresentKHR -> HS_vkQueuePresentKHR
 
+foreign import ccall safe "dynamic" unwrapVkQueuePresentKHRSafe ::
+               PFN_vkQueuePresentKHR -> HS_vkQueuePresentKHR
+
 instance VulkanProc "vkQueuePresentKHR" where
         type VkProcType "vkQueuePresentKHR" = HS_vkQueuePresentKHR
         vkProcSymbol = _VkQueuePresentKHR
@@ -1038,7 +941,10 @@
         unwrapVkProcPtr = unwrapVkQueuePresentKHR
 
         {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkQueuePresentKHRSafe
 
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
 pattern VK_KHR_SWAPCHAIN_SPEC_VERSION :: (Num a, Eq a) => a
 
 pattern VK_KHR_SWAPCHAIN_SPEC_VERSION = 70
@@ -1115,7 +1021,6 @@
 type VkGetDeviceGroupPresentCapabilitiesKHR =
      "vkGetDeviceGroupPresentCapabilitiesKHR"
 
-#ifdef NATIVE_FFI_VK_VERSION_1_1
 -- |
 -- Success codes: 'VK_SUCCESS'.
 --
@@ -1128,32 +1033,9 @@
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDeviceGroupPresentCapabilitiesKHR vkGetDeviceGroupPresentCapabilitiesKHR registry at www.khronos.org>
 --
--- __Note:__ flag @useNativeFFI-1-1@ is enabled, so this function is implemented
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
 --           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe
-               "vkGetDeviceGroupPresentCapabilitiesKHR"
-               vkGetDeviceGroupPresentCapabilitiesKHR ::
-               VkDevice -- ^ device
-                        -> Ptr VkDeviceGroupPresentCapabilitiesKHR -- ^ pDeviceGroupPresentCapabilities
-                                                                   -> IO VkResult
-
-#else
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkGetDeviceGroupPresentCapabilitiesKHR
--- >     ( VkDevice device
--- >     , VkDeviceGroupPresentCapabilitiesKHR* pDeviceGroupPresentCapabilities
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDeviceGroupPresentCapabilitiesKHR vkGetDeviceGroupPresentCapabilitiesKHR registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-1@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkGetDeviceGroupPresentCapabilitiesKHRSafe@ and @vkGetDeviceGroupPresentCapabilitiesKHR@ are synonyms.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
 --
 -- Independently of the flag setting, you can lookup the function manually at runtime:
 --
@@ -1163,6 +1045,18 @@
 --
 -- > myGetDeviceGroupPresentCapabilitiesKHR <- vkGetProc @VkGetDeviceGroupPresentCapabilitiesKHR
 --
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall unsafe
+               "vkGetDeviceGroupPresentCapabilitiesKHR"
+               vkGetDeviceGroupPresentCapabilitiesKHR ::
+               VkDevice -- ^ device
+                        -> Ptr VkDeviceGroupPresentCapabilitiesKHR -- ^ pDeviceGroupPresentCapabilities
+                                                                   -> IO VkResult
+
+#else
 vkGetDeviceGroupPresentCapabilitiesKHR ::
                                        VkDevice -- ^ device
                                                 ->
@@ -1175,7 +1069,6 @@
 {-# NOINLINE vkGetDeviceGroupPresentCapabilitiesKHR #-}
 #endif
 
-#ifdef NATIVE_FFI_VK_VERSION_1_1
 -- |
 -- Success codes: 'VK_SUCCESS'.
 --
@@ -1188,31 +1081,9 @@
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDeviceGroupPresentCapabilitiesKHR vkGetDeviceGroupPresentCapabilitiesKHR registry at www.khronos.org>
 --
--- __Note:__ flag @useNativeFFI-1-1@ is enabled, so this function is implemented
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
 --           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe "vkGetDeviceGroupPresentCapabilitiesKHR"
-               vkGetDeviceGroupPresentCapabilitiesKHRSafe ::
-               VkDevice -- ^ device
-                        -> Ptr VkDeviceGroupPresentCapabilitiesKHR -- ^ pDeviceGroupPresentCapabilities
-                                                                   -> IO VkResult
-
-#else
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkGetDeviceGroupPresentCapabilitiesKHR
--- >     ( VkDevice device
--- >     , VkDeviceGroupPresentCapabilitiesKHR* pDeviceGroupPresentCapabilities
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDeviceGroupPresentCapabilitiesKHR vkGetDeviceGroupPresentCapabilitiesKHR registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-1@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkGetDeviceGroupPresentCapabilitiesKHRSafe@ and @vkGetDeviceGroupPresentCapabilitiesKHR@ are synonyms.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
 --
 -- Independently of the flag setting, you can lookup the function manually at runtime:
 --
@@ -1222,15 +1093,27 @@
 --
 -- > myGetDeviceGroupPresentCapabilitiesKHR <- vkGetProc @VkGetDeviceGroupPresentCapabilitiesKHR
 --
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall safe "vkGetDeviceGroupPresentCapabilitiesKHR"
+               vkGetDeviceGroupPresentCapabilitiesKHRSafe ::
+               VkDevice -- ^ device
+                        -> Ptr VkDeviceGroupPresentCapabilitiesKHR -- ^ pDeviceGroupPresentCapabilities
+                                                                   -> IO VkResult
+
+#else
 vkGetDeviceGroupPresentCapabilitiesKHRSafe ::
                                            VkDevice -- ^ device
                                                     ->
                                              Ptr VkDeviceGroupPresentCapabilitiesKHR -- ^ pDeviceGroupPresentCapabilities
                                                                                      -> IO VkResult
 vkGetDeviceGroupPresentCapabilitiesKHRSafe
-  = vkGetDeviceGroupPresentCapabilitiesKHR
+  = unsafeDupablePerformIO
+      (vkGetProcSafe @VkGetDeviceGroupPresentCapabilitiesKHR)
 
-{-# INLINE vkGetDeviceGroupPresentCapabilitiesKHRSafe #-}
+{-# NOINLINE vkGetDeviceGroupPresentCapabilitiesKHRSafe #-}
 #endif
 
 -- | Success codes: 'VK_SUCCESS'.
@@ -1251,11 +1134,16 @@
 type PFN_vkGetDeviceGroupPresentCapabilitiesKHR =
      FunPtr HS_vkGetDeviceGroupPresentCapabilitiesKHR
 
-foreign import ccall "dynamic"
+foreign import ccall unsafe "dynamic"
                unwrapVkGetDeviceGroupPresentCapabilitiesKHR ::
                PFN_vkGetDeviceGroupPresentCapabilitiesKHR ->
                  HS_vkGetDeviceGroupPresentCapabilitiesKHR
 
+foreign import ccall safe "dynamic"
+               unwrapVkGetDeviceGroupPresentCapabilitiesKHRSafe ::
+               PFN_vkGetDeviceGroupPresentCapabilitiesKHR ->
+                 HS_vkGetDeviceGroupPresentCapabilitiesKHR
+
 instance VulkanProc "vkGetDeviceGroupPresentCapabilitiesKHR" where
         type VkProcType "vkGetDeviceGroupPresentCapabilitiesKHR" =
              HS_vkGetDeviceGroupPresentCapabilitiesKHR
@@ -1265,7 +1153,11 @@
         unwrapVkProcPtr = unwrapVkGetDeviceGroupPresentCapabilitiesKHR
 
         {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe
+          = unwrapVkGetDeviceGroupPresentCapabilitiesKHRSafe
 
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
 pattern VkGetDeviceGroupSurfacePresentModesKHR :: CString
 
 pattern VkGetDeviceGroupSurfacePresentModesKHR <-
@@ -1288,7 +1180,6 @@
 type VkGetDeviceGroupSurfacePresentModesKHR =
      "vkGetDeviceGroupSurfacePresentModesKHR"
 
-#ifdef NATIVE_FFI_VK_VERSION_1_1
 -- |
 -- Success codes: 'VK_SUCCESS'.
 --
@@ -1302,9 +1193,22 @@
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDeviceGroupSurfacePresentModesKHR vkGetDeviceGroupSurfacePresentModesKHR registry at www.khronos.org>
 --
--- __Note:__ flag @useNativeFFI-1-1@ is enabled, so this function is implemented
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
 --           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
 --
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetDeviceGroupSurfacePresentModesKHR <- vkGetDeviceProc @VkGetDeviceGroupSurfacePresentModesKHR vkDevice
+--
+-- or less efficient:
+--
+-- > myGetDeviceGroupSurfacePresentModesKHR <- vkGetProc @VkGetDeviceGroupSurfacePresentModesKHR
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
 foreign import ccall unsafe
                "vkGetDeviceGroupSurfacePresentModesKHR"
                vkGetDeviceGroupSurfacePresentModesKHR ::
@@ -1315,31 +1219,6 @@
                                                                       -> IO VkResult
 
 #else
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_SURFACE_LOST_KHR'.
---
--- > VkResult vkGetDeviceGroupSurfacePresentModesKHR
--- >     ( VkDevice device
--- >     , VkSurfaceKHR surface
--- >     , VkDeviceGroupPresentModeFlagsKHR* pModes
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDeviceGroupSurfacePresentModesKHR vkGetDeviceGroupSurfacePresentModesKHR registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-1@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkGetDeviceGroupSurfacePresentModesKHRSafe@ and @vkGetDeviceGroupSurfacePresentModesKHR@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetDeviceGroupSurfacePresentModesKHR <- vkGetDeviceProc @VkGetDeviceGroupSurfacePresentModesKHR vkDevice
---
--- or less efficient:
---
--- > myGetDeviceGroupSurfacePresentModesKHR <- vkGetProc @VkGetDeviceGroupSurfacePresentModesKHR
---
 vkGetDeviceGroupSurfacePresentModesKHR ::
                                        VkDevice -- ^ device
                                                 ->
@@ -1354,7 +1233,6 @@
 {-# NOINLINE vkGetDeviceGroupSurfacePresentModesKHR #-}
 #endif
 
-#ifdef NATIVE_FFI_VK_VERSION_1_1
 -- |
 -- Success codes: 'VK_SUCCESS'.
 --
@@ -1368,9 +1246,22 @@
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDeviceGroupSurfacePresentModesKHR vkGetDeviceGroupSurfacePresentModesKHR registry at www.khronos.org>
 --
--- __Note:__ flag @useNativeFFI-1-1@ is enabled, so this function is implemented
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
 --           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
 --
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetDeviceGroupSurfacePresentModesKHR <- vkGetDeviceProc @VkGetDeviceGroupSurfacePresentModesKHR vkDevice
+--
+-- or less efficient:
+--
+-- > myGetDeviceGroupSurfacePresentModesKHR <- vkGetProc @VkGetDeviceGroupSurfacePresentModesKHR
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
 foreign import ccall safe "vkGetDeviceGroupSurfacePresentModesKHR"
                vkGetDeviceGroupSurfacePresentModesKHRSafe ::
                VkDevice -- ^ device
@@ -1380,31 +1271,6 @@
                                                                       -> IO VkResult
 
 #else
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_SURFACE_LOST_KHR'.
---
--- > VkResult vkGetDeviceGroupSurfacePresentModesKHR
--- >     ( VkDevice device
--- >     , VkSurfaceKHR surface
--- >     , VkDeviceGroupPresentModeFlagsKHR* pModes
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDeviceGroupSurfacePresentModesKHR vkGetDeviceGroupSurfacePresentModesKHR registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-1@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkGetDeviceGroupSurfacePresentModesKHRSafe@ and @vkGetDeviceGroupSurfacePresentModesKHR@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetDeviceGroupSurfacePresentModesKHR <- vkGetDeviceProc @VkGetDeviceGroupSurfacePresentModesKHR vkDevice
---
--- or less efficient:
---
--- > myGetDeviceGroupSurfacePresentModesKHR <- vkGetProc @VkGetDeviceGroupSurfacePresentModesKHR
---
 vkGetDeviceGroupSurfacePresentModesKHRSafe ::
                                            VkDevice -- ^ device
                                                     ->
@@ -1413,9 +1279,10 @@
                                                Ptr VkDeviceGroupPresentModeFlagsKHR -- ^ pModes
                                                                                     -> IO VkResult
 vkGetDeviceGroupSurfacePresentModesKHRSafe
-  = vkGetDeviceGroupSurfacePresentModesKHR
+  = unsafeDupablePerformIO
+      (vkGetProcSafe @VkGetDeviceGroupSurfacePresentModesKHR)
 
-{-# INLINE vkGetDeviceGroupSurfacePresentModesKHRSafe #-}
+{-# NOINLINE vkGetDeviceGroupSurfacePresentModesKHRSafe #-}
 #endif
 
 -- | Success codes: 'VK_SUCCESS'.
@@ -1439,11 +1306,16 @@
 type PFN_vkGetDeviceGroupSurfacePresentModesKHR =
      FunPtr HS_vkGetDeviceGroupSurfacePresentModesKHR
 
-foreign import ccall "dynamic"
+foreign import ccall unsafe "dynamic"
                unwrapVkGetDeviceGroupSurfacePresentModesKHR ::
                PFN_vkGetDeviceGroupSurfacePresentModesKHR ->
                  HS_vkGetDeviceGroupSurfacePresentModesKHR
 
+foreign import ccall safe "dynamic"
+               unwrapVkGetDeviceGroupSurfacePresentModesKHRSafe ::
+               PFN_vkGetDeviceGroupSurfacePresentModesKHR ->
+                 HS_vkGetDeviceGroupSurfacePresentModesKHR
+
 instance VulkanProc "vkGetDeviceGroupSurfacePresentModesKHR" where
         type VkProcType "vkGetDeviceGroupSurfacePresentModesKHR" =
              HS_vkGetDeviceGroupSurfacePresentModesKHR
@@ -1453,7 +1325,11 @@
         unwrapVkProcPtr = unwrapVkGetDeviceGroupSurfacePresentModesKHR
 
         {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe
+          = unwrapVkGetDeviceGroupSurfacePresentModesKHRSafe
 
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
 pattern VkGetPhysicalDevicePresentRectanglesKHR :: CString
 
 pattern VkGetPhysicalDevicePresentRectanglesKHR <-
@@ -1476,7 +1352,6 @@
 type VkGetPhysicalDevicePresentRectanglesKHR =
      "vkGetPhysicalDevicePresentRectanglesKHR"
 
-#ifdef NATIVE_FFI_VK_VERSION_1_1
 -- |
 -- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
 --
@@ -1491,9 +1366,22 @@
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDevicePresentRectanglesKHR vkGetPhysicalDevicePresentRectanglesKHR registry at www.khronos.org>
 --
--- __Note:__ flag @useNativeFFI-1-1@ is enabled, so this function is implemented
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
 --           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
 --
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDevicePresentRectanglesKHR <- vkGetInstanceProc @VkGetPhysicalDevicePresentRectanglesKHR vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDevicePresentRectanglesKHR <- vkGetProc @VkGetPhysicalDevicePresentRectanglesKHR
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
 foreign import ccall unsafe
                "vkGetPhysicalDevicePresentRectanglesKHR"
                vkGetPhysicalDevicePresentRectanglesKHR ::
@@ -1505,32 +1393,6 @@
                                                             -> IO VkResult
 
 #else
--- |
--- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkGetPhysicalDevicePresentRectanglesKHR
--- >     ( VkPhysicalDevice physicalDevice
--- >     , VkSurfaceKHR surface
--- >     , uint32_t* pRectCount
--- >     , VkRect2D* pRects
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDevicePresentRectanglesKHR vkGetPhysicalDevicePresentRectanglesKHR registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-1@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkGetPhysicalDevicePresentRectanglesKHRSafe@ and @vkGetPhysicalDevicePresentRectanglesKHR@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetPhysicalDevicePresentRectanglesKHR <- vkGetInstanceProc @VkGetPhysicalDevicePresentRectanglesKHR vkInstance
---
--- or less efficient:
---
--- > myGetPhysicalDevicePresentRectanglesKHR <- vkGetProc @VkGetPhysicalDevicePresentRectanglesKHR
---
 vkGetPhysicalDevicePresentRectanglesKHR ::
                                         VkPhysicalDevice -- ^ physicalDevice
                                                          ->
@@ -1545,7 +1407,6 @@
 {-# NOINLINE vkGetPhysicalDevicePresentRectanglesKHR #-}
 #endif
 
-#ifdef NATIVE_FFI_VK_VERSION_1_1
 -- |
 -- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
 --
@@ -1560,9 +1421,22 @@
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDevicePresentRectanglesKHR vkGetPhysicalDevicePresentRectanglesKHR registry at www.khronos.org>
 --
--- __Note:__ flag @useNativeFFI-1-1@ is enabled, so this function is implemented
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
 --           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
 --
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDevicePresentRectanglesKHR <- vkGetInstanceProc @VkGetPhysicalDevicePresentRectanglesKHR vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDevicePresentRectanglesKHR <- vkGetProc @VkGetPhysicalDevicePresentRectanglesKHR
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
 foreign import ccall safe "vkGetPhysicalDevicePresentRectanglesKHR"
                vkGetPhysicalDevicePresentRectanglesKHRSafe ::
                VkPhysicalDevice -- ^ physicalDevice
@@ -1573,32 +1447,6 @@
                                                             -> IO VkResult
 
 #else
--- |
--- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkGetPhysicalDevicePresentRectanglesKHR
--- >     ( VkPhysicalDevice physicalDevice
--- >     , VkSurfaceKHR surface
--- >     , uint32_t* pRectCount
--- >     , VkRect2D* pRects
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDevicePresentRectanglesKHR vkGetPhysicalDevicePresentRectanglesKHR registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-1@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkGetPhysicalDevicePresentRectanglesKHRSafe@ and @vkGetPhysicalDevicePresentRectanglesKHR@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetPhysicalDevicePresentRectanglesKHR <- vkGetInstanceProc @VkGetPhysicalDevicePresentRectanglesKHR vkInstance
---
--- or less efficient:
---
--- > myGetPhysicalDevicePresentRectanglesKHR <- vkGetProc @VkGetPhysicalDevicePresentRectanglesKHR
---
 vkGetPhysicalDevicePresentRectanglesKHRSafe ::
                                             VkPhysicalDevice -- ^ physicalDevice
                                                              ->
@@ -1608,9 +1456,10 @@
                                                            -> Ptr VkRect2D -- ^ pRects
                                                                            -> IO VkResult
 vkGetPhysicalDevicePresentRectanglesKHRSafe
-  = vkGetPhysicalDevicePresentRectanglesKHR
+  = unsafeDupablePerformIO
+      (vkGetProcSafe @VkGetPhysicalDevicePresentRectanglesKHR)
 
-{-# INLINE vkGetPhysicalDevicePresentRectanglesKHRSafe #-}
+{-# NOINLINE vkGetPhysicalDevicePresentRectanglesKHRSafe #-}
 #endif
 
 -- | Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
@@ -1636,11 +1485,16 @@
 type PFN_vkGetPhysicalDevicePresentRectanglesKHR =
      FunPtr HS_vkGetPhysicalDevicePresentRectanglesKHR
 
-foreign import ccall "dynamic"
+foreign import ccall unsafe "dynamic"
                unwrapVkGetPhysicalDevicePresentRectanglesKHR ::
                PFN_vkGetPhysicalDevicePresentRectanglesKHR ->
                  HS_vkGetPhysicalDevicePresentRectanglesKHR
 
+foreign import ccall safe "dynamic"
+               unwrapVkGetPhysicalDevicePresentRectanglesKHRSafe ::
+               PFN_vkGetPhysicalDevicePresentRectanglesKHR ->
+                 HS_vkGetPhysicalDevicePresentRectanglesKHR
+
 instance VulkanProc "vkGetPhysicalDevicePresentRectanglesKHR" where
         type VkProcType "vkGetPhysicalDevicePresentRectanglesKHR" =
              HS_vkGetPhysicalDevicePresentRectanglesKHR
@@ -1650,7 +1504,11 @@
         unwrapVkProcPtr = unwrapVkGetPhysicalDevicePresentRectanglesKHR
 
         {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe
+          = unwrapVkGetPhysicalDevicePresentRectanglesKHRSafe
 
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
 pattern VkAcquireNextImage2KHR :: CString
 
 pattern VkAcquireNextImage2KHR <-
@@ -1670,7 +1528,6 @@
 
 type VkAcquireNextImage2KHR = "vkAcquireNextImage2KHR"
 
-#ifdef NATIVE_FFI_VK_VERSION_1_1
 -- |
 -- Success codes: 'VK_SUCCESS', 'VK_TIMEOUT', 'VK_NOT_READY', 'VK_SUBOPTIMAL_KHR'.
 --
@@ -1684,9 +1541,22 @@
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkAcquireNextImage2KHR vkAcquireNextImage2KHR registry at www.khronos.org>
 --
--- __Note:__ flag @useNativeFFI-1-1@ is enabled, so this function is implemented
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
 --           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
 --
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myAcquireNextImage2KHR <- vkGetDeviceProc @VkAcquireNextImage2KHR vkDevice
+--
+-- or less efficient:
+--
+-- > myAcquireNextImage2KHR <- vkGetProc @VkAcquireNextImage2KHR
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
 foreign import ccall unsafe "vkAcquireNextImage2KHR"
                vkAcquireNextImage2KHR ::
                VkDevice -- ^ device
@@ -1696,31 +1566,6 @@
                                                              -> IO VkResult
 
 #else
--- |
--- Success codes: 'VK_SUCCESS', 'VK_TIMEOUT', 'VK_NOT_READY', 'VK_SUBOPTIMAL_KHR'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST', 'VK_ERROR_OUT_OF_DATE_KHR', 'VK_ERROR_SURFACE_LOST_KHR'.
---
--- > VkResult vkAcquireNextImage2KHR
--- >     ( VkDevice device
--- >     , const VkAcquireNextImageInfoKHR* pAcquireInfo
--- >     , uint32_t* pImageIndex
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkAcquireNextImage2KHR vkAcquireNextImage2KHR registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-1@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkAcquireNextImage2KHRSafe@ and @vkAcquireNextImage2KHR@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myAcquireNextImage2KHR <- vkGetDeviceProc @VkAcquireNextImage2KHR vkDevice
---
--- or less efficient:
---
--- > myAcquireNextImage2KHR <- vkGetProc @VkAcquireNextImage2KHR
---
 vkAcquireNextImage2KHR ::
                        VkDevice -- ^ device
                                 ->
@@ -1733,7 +1578,6 @@
 {-# NOINLINE vkAcquireNextImage2KHR #-}
 #endif
 
-#ifdef NATIVE_FFI_VK_VERSION_1_1
 -- |
 -- Success codes: 'VK_SUCCESS', 'VK_TIMEOUT', 'VK_NOT_READY', 'VK_SUBOPTIMAL_KHR'.
 --
@@ -1747,9 +1591,22 @@
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkAcquireNextImage2KHR vkAcquireNextImage2KHR registry at www.khronos.org>
 --
--- __Note:__ flag @useNativeFFI-1-1@ is enabled, so this function is implemented
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
 --           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
 --
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myAcquireNextImage2KHR <- vkGetDeviceProc @VkAcquireNextImage2KHR vkDevice
+--
+-- or less efficient:
+--
+-- > myAcquireNextImage2KHR <- vkGetProc @VkAcquireNextImage2KHR
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
 foreign import ccall safe "vkAcquireNextImage2KHR"
                vkAcquireNextImage2KHRSafe ::
                VkDevice -- ^ device
@@ -1759,40 +1616,16 @@
                                                              -> IO VkResult
 
 #else
--- |
--- Success codes: 'VK_SUCCESS', 'VK_TIMEOUT', 'VK_NOT_READY', 'VK_SUBOPTIMAL_KHR'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST', 'VK_ERROR_OUT_OF_DATE_KHR', 'VK_ERROR_SURFACE_LOST_KHR'.
---
--- > VkResult vkAcquireNextImage2KHR
--- >     ( VkDevice device
--- >     , const VkAcquireNextImageInfoKHR* pAcquireInfo
--- >     , uint32_t* pImageIndex
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkAcquireNextImage2KHR vkAcquireNextImage2KHR registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-1@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkAcquireNextImage2KHRSafe@ and @vkAcquireNextImage2KHR@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myAcquireNextImage2KHR <- vkGetDeviceProc @VkAcquireNextImage2KHR vkDevice
---
--- or less efficient:
---
--- > myAcquireNextImage2KHR <- vkGetProc @VkAcquireNextImage2KHR
---
 vkAcquireNextImage2KHRSafe ::
                            VkDevice -- ^ device
                                     ->
                              Ptr VkAcquireNextImageInfoKHR -- ^ pAcquireInfo
                                                            -> Ptr Word32 -- ^ pImageIndex
                                                                          -> IO VkResult
-vkAcquireNextImage2KHRSafe = vkAcquireNextImage2KHR
+vkAcquireNextImage2KHRSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkAcquireNextImage2KHR)
 
-{-# INLINE vkAcquireNextImage2KHRSafe #-}
+{-# NOINLINE vkAcquireNextImage2KHRSafe #-}
 #endif
 
 -- | Success codes: 'VK_SUCCESS', 'VK_TIMEOUT', 'VK_NOT_READY', 'VK_SUBOPTIMAL_KHR'.
@@ -1815,7 +1648,11 @@
 
 type PFN_vkAcquireNextImage2KHR = FunPtr HS_vkAcquireNextImage2KHR
 
-foreign import ccall "dynamic" unwrapVkAcquireNextImage2KHR ::
+foreign import ccall unsafe "dynamic" unwrapVkAcquireNextImage2KHR
+               :: PFN_vkAcquireNextImage2KHR -> HS_vkAcquireNextImage2KHR
+
+foreign import ccall safe "dynamic"
+               unwrapVkAcquireNextImage2KHRSafe ::
                PFN_vkAcquireNextImage2KHR -> HS_vkAcquireNextImage2KHR
 
 instance VulkanProc "vkAcquireNextImage2KHR" where
@@ -1827,6 +1664,9 @@
         unwrapVkProcPtr = unwrapVkAcquireNextImage2KHR
 
         {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkAcquireNextImage2KHRSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR ::
         VkStructureType
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_KHR_wayland_surface.hs b/src-gen/Graphics/Vulkan/Ext/VK_KHR_wayland_surface.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_KHR_wayland_surface.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_KHR_wayland_surface.hs
@@ -94,7 +94,6 @@
 
 type VkCreateWaylandSurfaceKHR = "vkCreateWaylandSurfaceKHR"
 
-#ifdef NATIVE_FFI_VK_VERSION_1_0
 -- |
 -- Success codes: 'VK_SUCCESS'.
 --
@@ -109,9 +108,22 @@
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateWaylandSurfaceKHR vkCreateWaylandSurfaceKHR registry at www.khronos.org>
 --
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
 --           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
 --
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateWaylandSurfaceKHR <- vkGetInstanceProc @VkCreateWaylandSurfaceKHR vkInstance
+--
+-- or less efficient:
+--
+-- > myCreateWaylandSurfaceKHR <- vkGetProc @VkCreateWaylandSurfaceKHR
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_0
 foreign import ccall unsafe "vkCreateWaylandSurfaceKHR"
                vkCreateWaylandSurfaceKHR ::
                VkInstance -- ^ instance
@@ -123,32 +135,6 @@
                                                                  -> IO VkResult
 
 #else
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkCreateWaylandSurfaceKHR
--- >     ( VkInstance instance
--- >     , const VkWaylandSurfaceCreateInfoKHR* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkSurfaceKHR* pSurface
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateWaylandSurfaceKHR vkCreateWaylandSurfaceKHR registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCreateWaylandSurfaceKHRSafe@ and @vkCreateWaylandSurfaceKHR@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateWaylandSurfaceKHR <- vkGetInstanceProc @VkCreateWaylandSurfaceKHR vkInstance
---
--- or less efficient:
---
--- > myCreateWaylandSurfaceKHR <- vkGetProc @VkCreateWaylandSurfaceKHR
---
 vkCreateWaylandSurfaceKHR ::
                           VkInstance -- ^ instance
                                      ->
@@ -163,7 +149,6 @@
 {-# NOINLINE vkCreateWaylandSurfaceKHR #-}
 #endif
 
-#ifdef NATIVE_FFI_VK_VERSION_1_0
 -- |
 -- Success codes: 'VK_SUCCESS'.
 --
@@ -178,9 +163,22 @@
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateWaylandSurfaceKHR vkCreateWaylandSurfaceKHR registry at www.khronos.org>
 --
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
 --           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
 --
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateWaylandSurfaceKHR <- vkGetInstanceProc @VkCreateWaylandSurfaceKHR vkInstance
+--
+-- or less efficient:
+--
+-- > myCreateWaylandSurfaceKHR <- vkGetProc @VkCreateWaylandSurfaceKHR
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_0
 foreign import ccall safe "vkCreateWaylandSurfaceKHR"
                vkCreateWaylandSurfaceKHRSafe ::
                VkInstance -- ^ instance
@@ -192,32 +190,6 @@
                                                                  -> IO VkResult
 
 #else
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkCreateWaylandSurfaceKHR
--- >     ( VkInstance instance
--- >     , const VkWaylandSurfaceCreateInfoKHR* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkSurfaceKHR* pSurface
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateWaylandSurfaceKHR vkCreateWaylandSurfaceKHR registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCreateWaylandSurfaceKHRSafe@ and @vkCreateWaylandSurfaceKHR@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateWaylandSurfaceKHR <- vkGetInstanceProc @VkCreateWaylandSurfaceKHR vkInstance
---
--- or less efficient:
---
--- > myCreateWaylandSurfaceKHR <- vkGetProc @VkCreateWaylandSurfaceKHR
---
 vkCreateWaylandSurfaceKHRSafe ::
                               VkInstance -- ^ instance
                                          ->
@@ -226,9 +198,10 @@
                                   Ptr VkAllocationCallbacks -- ^ pAllocator
                                                             -> Ptr VkSurfaceKHR -- ^ pSurface
                                                                                 -> IO VkResult
-vkCreateWaylandSurfaceKHRSafe = vkCreateWaylandSurfaceKHR
+vkCreateWaylandSurfaceKHRSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCreateWaylandSurfaceKHR)
 
-{-# INLINE vkCreateWaylandSurfaceKHRSafe #-}
+{-# NOINLINE vkCreateWaylandSurfaceKHRSafe #-}
 #endif
 
 -- | Success codes: 'VK_SUCCESS'.
@@ -255,9 +228,14 @@
 type PFN_vkCreateWaylandSurfaceKHR =
      FunPtr HS_vkCreateWaylandSurfaceKHR
 
-foreign import ccall "dynamic" unwrapVkCreateWaylandSurfaceKHR ::
+foreign import ccall unsafe "dynamic"
+               unwrapVkCreateWaylandSurfaceKHR ::
                PFN_vkCreateWaylandSurfaceKHR -> HS_vkCreateWaylandSurfaceKHR
 
+foreign import ccall safe "dynamic"
+               unwrapVkCreateWaylandSurfaceKHRSafe ::
+               PFN_vkCreateWaylandSurfaceKHR -> HS_vkCreateWaylandSurfaceKHR
+
 instance VulkanProc "vkCreateWaylandSurfaceKHR" where
         type VkProcType "vkCreateWaylandSurfaceKHR" =
              HS_vkCreateWaylandSurfaceKHR
@@ -267,7 +245,10 @@
         unwrapVkProcPtr = unwrapVkCreateWaylandSurfaceKHR
 
         {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkCreateWaylandSurfaceKHRSafe
 
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
 pattern VkGetPhysicalDeviceWaylandPresentationSupportKHR :: CString
 
 pattern VkGetPhysicalDeviceWaylandPresentationSupportKHR <-
@@ -292,7 +273,6 @@
 type VkGetPhysicalDeviceWaylandPresentationSupportKHR =
      "vkGetPhysicalDeviceWaylandPresentationSupportKHR"
 
-#ifdef NATIVE_FFI_VK_VERSION_1_0
 -- |
 -- > VkBool32 vkGetPhysicalDeviceWaylandPresentationSupportKHR
 -- >     ( VkPhysicalDevice physicalDevice
@@ -302,9 +282,22 @@
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceWaylandPresentationSupportKHR vkGetPhysicalDeviceWaylandPresentationSupportKHR registry at www.khronos.org>
 --
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
 --           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
 --
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceWaylandPresentationSupportKHR <- vkGetInstanceProc @VkGetPhysicalDeviceWaylandPresentationSupportKHR vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceWaylandPresentationSupportKHR <- vkGetProc @VkGetPhysicalDeviceWaylandPresentationSupportKHR
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_0
 foreign import ccall unsafe
                "vkGetPhysicalDeviceWaylandPresentationSupportKHR"
                vkGetPhysicalDeviceWaylandPresentationSupportKHR ::
@@ -314,27 +307,6 @@
                                                            -> IO VkBool32
 
 #else
--- |
--- > VkBool32 vkGetPhysicalDeviceWaylandPresentationSupportKHR
--- >     ( VkPhysicalDevice physicalDevice
--- >     , uint32_t queueFamilyIndex
--- >     , struct wl_display* display
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceWaylandPresentationSupportKHR vkGetPhysicalDeviceWaylandPresentationSupportKHR registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkGetPhysicalDeviceWaylandPresentationSupportKHRSafe@ and @vkGetPhysicalDeviceWaylandPresentationSupportKHR@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetPhysicalDeviceWaylandPresentationSupportKHR <- vkGetInstanceProc @VkGetPhysicalDeviceWaylandPresentationSupportKHR vkInstance
---
--- or less efficient:
---
--- > myGetPhysicalDeviceWaylandPresentationSupportKHR <- vkGetProc @VkGetPhysicalDeviceWaylandPresentationSupportKHR
---
 vkGetPhysicalDeviceWaylandPresentationSupportKHR ::
                                                  VkPhysicalDevice -- ^ physicalDevice
                                                                   ->
@@ -348,7 +320,6 @@
 {-# NOINLINE vkGetPhysicalDeviceWaylandPresentationSupportKHR #-}
 #endif
 
-#ifdef NATIVE_FFI_VK_VERSION_1_0
 -- |
 -- > VkBool32 vkGetPhysicalDeviceWaylandPresentationSupportKHR
 -- >     ( VkPhysicalDevice physicalDevice
@@ -358,9 +329,22 @@
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceWaylandPresentationSupportKHR vkGetPhysicalDeviceWaylandPresentationSupportKHR registry at www.khronos.org>
 --
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
 --           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
 --
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceWaylandPresentationSupportKHR <- vkGetInstanceProc @VkGetPhysicalDeviceWaylandPresentationSupportKHR vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceWaylandPresentationSupportKHR <- vkGetProc @VkGetPhysicalDeviceWaylandPresentationSupportKHR
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_0
 foreign import ccall safe
                "vkGetPhysicalDeviceWaylandPresentationSupportKHR"
                vkGetPhysicalDeviceWaylandPresentationSupportKHRSafe ::
@@ -370,27 +354,6 @@
                                                            -> IO VkBool32
 
 #else
--- |
--- > VkBool32 vkGetPhysicalDeviceWaylandPresentationSupportKHR
--- >     ( VkPhysicalDevice physicalDevice
--- >     , uint32_t queueFamilyIndex
--- >     , struct wl_display* display
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceWaylandPresentationSupportKHR vkGetPhysicalDeviceWaylandPresentationSupportKHR registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkGetPhysicalDeviceWaylandPresentationSupportKHRSafe@ and @vkGetPhysicalDeviceWaylandPresentationSupportKHR@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetPhysicalDeviceWaylandPresentationSupportKHR <- vkGetInstanceProc @VkGetPhysicalDeviceWaylandPresentationSupportKHR vkInstance
---
--- or less efficient:
---
--- > myGetPhysicalDeviceWaylandPresentationSupportKHR <- vkGetProc @VkGetPhysicalDeviceWaylandPresentationSupportKHR
---
 vkGetPhysicalDeviceWaylandPresentationSupportKHRSafe ::
                                                      VkPhysicalDevice -- ^ physicalDevice
                                                                       ->
@@ -398,9 +361,11 @@
                                                               -> Ptr WlDisplay -- ^ display
                                                                                -> IO VkBool32
 vkGetPhysicalDeviceWaylandPresentationSupportKHRSafe
-  = vkGetPhysicalDeviceWaylandPresentationSupportKHR
+  = unsafeDupablePerformIO
+      (vkGetProcSafe @VkGetPhysicalDeviceWaylandPresentationSupportKHR)
 
-{-# INLINE vkGetPhysicalDeviceWaylandPresentationSupportKHRSafe #-}
+{-# NOINLINE vkGetPhysicalDeviceWaylandPresentationSupportKHRSafe
+             #-}
 #endif
 
 -- | > VkBool32 vkGetPhysicalDeviceWaylandPresentationSupportKHR
@@ -419,11 +384,16 @@
 type PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR =
      FunPtr HS_vkGetPhysicalDeviceWaylandPresentationSupportKHR
 
-foreign import ccall "dynamic"
+foreign import ccall unsafe "dynamic"
                unwrapVkGetPhysicalDeviceWaylandPresentationSupportKHR ::
                PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR ->
                  HS_vkGetPhysicalDeviceWaylandPresentationSupportKHR
 
+foreign import ccall safe "dynamic"
+               unwrapVkGetPhysicalDeviceWaylandPresentationSupportKHRSafe ::
+               PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR ->
+                 HS_vkGetPhysicalDeviceWaylandPresentationSupportKHR
+
 instance VulkanProc
            "vkGetPhysicalDeviceWaylandPresentationSupportKHR"
          where
@@ -436,6 +406,10 @@
           = unwrapVkGetPhysicalDeviceWaylandPresentationSupportKHR
 
         {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe
+          = unwrapVkGetPhysicalDeviceWaylandPresentationSupportKHRSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VK_KHR_WAYLAND_SURFACE_SPEC_VERSION :: (Num a, Eq a) => a
 
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_KHR_win32_surface.hs b/src-gen/Graphics/Vulkan/Ext/VK_KHR_win32_surface.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_KHR_win32_surface.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_KHR_win32_surface.hs
@@ -94,7 +94,6 @@
 
 type VkCreateWin32SurfaceKHR = "vkCreateWin32SurfaceKHR"
 
-#ifdef NATIVE_FFI_VK_VERSION_1_0
 -- |
 -- Success codes: 'VK_SUCCESS'.
 --
@@ -109,9 +108,22 @@
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateWin32SurfaceKHR vkCreateWin32SurfaceKHR registry at www.khronos.org>
 --
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
 --           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
 --
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateWin32SurfaceKHR <- vkGetInstanceProc @VkCreateWin32SurfaceKHR vkInstance
+--
+-- or less efficient:
+--
+-- > myCreateWin32SurfaceKHR <- vkGetProc @VkCreateWin32SurfaceKHR
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_0
 foreign import ccall unsafe "vkCreateWin32SurfaceKHR"
                vkCreateWin32SurfaceKHR ::
                VkInstance -- ^ instance
@@ -123,32 +135,6 @@
                                                                  -> IO VkResult
 
 #else
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkCreateWin32SurfaceKHR
--- >     ( VkInstance instance
--- >     , const VkWin32SurfaceCreateInfoKHR* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkSurfaceKHR* pSurface
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateWin32SurfaceKHR vkCreateWin32SurfaceKHR registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCreateWin32SurfaceKHRSafe@ and @vkCreateWin32SurfaceKHR@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateWin32SurfaceKHR <- vkGetInstanceProc @VkCreateWin32SurfaceKHR vkInstance
---
--- or less efficient:
---
--- > myCreateWin32SurfaceKHR <- vkGetProc @VkCreateWin32SurfaceKHR
---
 vkCreateWin32SurfaceKHR ::
                         VkInstance -- ^ instance
                                    ->
@@ -163,7 +149,6 @@
 {-# NOINLINE vkCreateWin32SurfaceKHR #-}
 #endif
 
-#ifdef NATIVE_FFI_VK_VERSION_1_0
 -- |
 -- Success codes: 'VK_SUCCESS'.
 --
@@ -178,9 +163,22 @@
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateWin32SurfaceKHR vkCreateWin32SurfaceKHR registry at www.khronos.org>
 --
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
 --           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
 --
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateWin32SurfaceKHR <- vkGetInstanceProc @VkCreateWin32SurfaceKHR vkInstance
+--
+-- or less efficient:
+--
+-- > myCreateWin32SurfaceKHR <- vkGetProc @VkCreateWin32SurfaceKHR
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_0
 foreign import ccall safe "vkCreateWin32SurfaceKHR"
                vkCreateWin32SurfaceKHRSafe ::
                VkInstance -- ^ instance
@@ -192,32 +190,6 @@
                                                                  -> IO VkResult
 
 #else
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkCreateWin32SurfaceKHR
--- >     ( VkInstance instance
--- >     , const VkWin32SurfaceCreateInfoKHR* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkSurfaceKHR* pSurface
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateWin32SurfaceKHR vkCreateWin32SurfaceKHR registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCreateWin32SurfaceKHRSafe@ and @vkCreateWin32SurfaceKHR@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateWin32SurfaceKHR <- vkGetInstanceProc @VkCreateWin32SurfaceKHR vkInstance
---
--- or less efficient:
---
--- > myCreateWin32SurfaceKHR <- vkGetProc @VkCreateWin32SurfaceKHR
---
 vkCreateWin32SurfaceKHRSafe ::
                             VkInstance -- ^ instance
                                        ->
@@ -226,9 +198,10 @@
                                 Ptr VkAllocationCallbacks -- ^ pAllocator
                                                           -> Ptr VkSurfaceKHR -- ^ pSurface
                                                                               -> IO VkResult
-vkCreateWin32SurfaceKHRSafe = vkCreateWin32SurfaceKHR
+vkCreateWin32SurfaceKHRSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCreateWin32SurfaceKHR)
 
-{-# INLINE vkCreateWin32SurfaceKHRSafe #-}
+{-# NOINLINE vkCreateWin32SurfaceKHRSafe #-}
 #endif
 
 -- | Success codes: 'VK_SUCCESS'.
@@ -255,7 +228,11 @@
 type PFN_vkCreateWin32SurfaceKHR =
      FunPtr HS_vkCreateWin32SurfaceKHR
 
-foreign import ccall "dynamic" unwrapVkCreateWin32SurfaceKHR ::
+foreign import ccall unsafe "dynamic" unwrapVkCreateWin32SurfaceKHR
+               :: PFN_vkCreateWin32SurfaceKHR -> HS_vkCreateWin32SurfaceKHR
+
+foreign import ccall safe "dynamic"
+               unwrapVkCreateWin32SurfaceKHRSafe ::
                PFN_vkCreateWin32SurfaceKHR -> HS_vkCreateWin32SurfaceKHR
 
 instance VulkanProc "vkCreateWin32SurfaceKHR" where
@@ -267,7 +244,10 @@
         unwrapVkProcPtr = unwrapVkCreateWin32SurfaceKHR
 
         {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkCreateWin32SurfaceKHRSafe
 
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
 pattern VkGetPhysicalDeviceWin32PresentationSupportKHR :: CString
 
 pattern VkGetPhysicalDeviceWin32PresentationSupportKHR <-
@@ -292,7 +272,6 @@
 type VkGetPhysicalDeviceWin32PresentationSupportKHR =
      "vkGetPhysicalDeviceWin32PresentationSupportKHR"
 
-#ifdef NATIVE_FFI_VK_VERSION_1_0
 -- |
 -- > VkBool32 vkGetPhysicalDeviceWin32PresentationSupportKHR
 -- >     ( VkPhysicalDevice physicalDevice
@@ -301,28 +280,9 @@
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceWin32PresentationSupportKHR vkGetPhysicalDeviceWin32PresentationSupportKHR registry at www.khronos.org>
 --
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
 --           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall unsafe
-               "vkGetPhysicalDeviceWin32PresentationSupportKHR"
-               vkGetPhysicalDeviceWin32PresentationSupportKHR ::
-               VkPhysicalDevice -- ^ physicalDevice
-                                -> Word32 -- ^ queueFamilyIndex
-                                          -> IO VkBool32
-
-#else
--- |
--- > VkBool32 vkGetPhysicalDeviceWin32PresentationSupportKHR
--- >     ( VkPhysicalDevice physicalDevice
--- >     , uint32_t queueFamilyIndex
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceWin32PresentationSupportKHR vkGetPhysicalDeviceWin32PresentationSupportKHR registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkGetPhysicalDeviceWin32PresentationSupportKHRSafe@ and @vkGetPhysicalDeviceWin32PresentationSupportKHR@ are synonyms.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
 --
 -- Independently of the flag setting, you can lookup the function manually at runtime:
 --
@@ -332,6 +292,18 @@
 --
 -- > myGetPhysicalDeviceWin32PresentationSupportKHR <- vkGetProc @VkGetPhysicalDeviceWin32PresentationSupportKHR
 --
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe
+               "vkGetPhysicalDeviceWin32PresentationSupportKHR"
+               vkGetPhysicalDeviceWin32PresentationSupportKHR ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                -> Word32 -- ^ queueFamilyIndex
+                                          -> IO VkBool32
+
+#else
 vkGetPhysicalDeviceWin32PresentationSupportKHR ::
                                                VkPhysicalDevice -- ^ physicalDevice
                                                                 -> Word32 -- ^ queueFamilyIndex
@@ -343,7 +315,6 @@
 {-# NOINLINE vkGetPhysicalDeviceWin32PresentationSupportKHR #-}
 #endif
 
-#ifdef NATIVE_FFI_VK_VERSION_1_0
 -- |
 -- > VkBool32 vkGetPhysicalDeviceWin32PresentationSupportKHR
 -- >     ( VkPhysicalDevice physicalDevice
@@ -352,28 +323,9 @@
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceWin32PresentationSupportKHR vkGetPhysicalDeviceWin32PresentationSupportKHR registry at www.khronos.org>
 --
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
 --           as a @foreign import@ call to C Vulkan loader.
---
-foreign import ccall safe
-               "vkGetPhysicalDeviceWin32PresentationSupportKHR"
-               vkGetPhysicalDeviceWin32PresentationSupportKHRSafe ::
-               VkPhysicalDevice -- ^ physicalDevice
-                                -> Word32 -- ^ queueFamilyIndex
-                                          -> IO VkBool32
-
-#else
--- |
--- > VkBool32 vkGetPhysicalDeviceWin32PresentationSupportKHR
--- >     ( VkPhysicalDevice physicalDevice
--- >     , uint32_t queueFamilyIndex
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceWin32PresentationSupportKHR vkGetPhysicalDeviceWin32PresentationSupportKHR registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkGetPhysicalDeviceWin32PresentationSupportKHRSafe@ and @vkGetPhysicalDeviceWin32PresentationSupportKHR@ are synonyms.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
 --
 -- Independently of the flag setting, you can lookup the function manually at runtime:
 --
@@ -383,14 +335,27 @@
 --
 -- > myGetPhysicalDeviceWin32PresentationSupportKHR <- vkGetProc @VkGetPhysicalDeviceWin32PresentationSupportKHR
 --
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe
+               "vkGetPhysicalDeviceWin32PresentationSupportKHR"
+               vkGetPhysicalDeviceWin32PresentationSupportKHRSafe ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                -> Word32 -- ^ queueFamilyIndex
+                                          -> IO VkBool32
+
+#else
 vkGetPhysicalDeviceWin32PresentationSupportKHRSafe ::
                                                    VkPhysicalDevice -- ^ physicalDevice
                                                                     -> Word32 -- ^ queueFamilyIndex
                                                                               -> IO VkBool32
 vkGetPhysicalDeviceWin32PresentationSupportKHRSafe
-  = vkGetPhysicalDeviceWin32PresentationSupportKHR
+  = unsafeDupablePerformIO
+      (vkGetProcSafe @VkGetPhysicalDeviceWin32PresentationSupportKHR)
 
-{-# INLINE vkGetPhysicalDeviceWin32PresentationSupportKHRSafe #-}
+{-# NOINLINE vkGetPhysicalDeviceWin32PresentationSupportKHRSafe #-}
 #endif
 
 -- | > VkBool32 vkGetPhysicalDeviceWin32PresentationSupportKHR
@@ -407,11 +372,16 @@
 type PFN_vkGetPhysicalDeviceWin32PresentationSupportKHR =
      FunPtr HS_vkGetPhysicalDeviceWin32PresentationSupportKHR
 
-foreign import ccall "dynamic"
+foreign import ccall unsafe "dynamic"
                unwrapVkGetPhysicalDeviceWin32PresentationSupportKHR ::
                PFN_vkGetPhysicalDeviceWin32PresentationSupportKHR ->
                  HS_vkGetPhysicalDeviceWin32PresentationSupportKHR
 
+foreign import ccall safe "dynamic"
+               unwrapVkGetPhysicalDeviceWin32PresentationSupportKHRSafe ::
+               PFN_vkGetPhysicalDeviceWin32PresentationSupportKHR ->
+                 HS_vkGetPhysicalDeviceWin32PresentationSupportKHR
+
 instance VulkanProc
            "vkGetPhysicalDeviceWin32PresentationSupportKHR"
          where
@@ -424,6 +394,10 @@
           = unwrapVkGetPhysicalDeviceWin32PresentationSupportKHR
 
         {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe
+          = unwrapVkGetPhysicalDeviceWin32PresentationSupportKHRSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VK_KHR_WIN32_SURFACE_SPEC_VERSION :: (Num a, Eq a) => a
 
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_KHR_xcb_surface.hs b/src-gen/Graphics/Vulkan/Ext/VK_KHR_xcb_surface.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_KHR_xcb_surface.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_KHR_xcb_surface.hs
@@ -93,7 +93,6 @@
 
 type VkCreateXcbSurfaceKHR = "vkCreateXcbSurfaceKHR"
 
-#ifdef NATIVE_FFI_VK_VERSION_1_0
 -- |
 -- Success codes: 'VK_SUCCESS'.
 --
@@ -108,9 +107,22 @@
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateXcbSurfaceKHR vkCreateXcbSurfaceKHR registry at www.khronos.org>
 --
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
 --           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
 --
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateXcbSurfaceKHR <- vkGetInstanceProc @VkCreateXcbSurfaceKHR vkInstance
+--
+-- or less efficient:
+--
+-- > myCreateXcbSurfaceKHR <- vkGetProc @VkCreateXcbSurfaceKHR
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_0
 foreign import ccall unsafe "vkCreateXcbSurfaceKHR"
                vkCreateXcbSurfaceKHR ::
                VkInstance -- ^ instance
@@ -122,32 +134,6 @@
                                                                  -> IO VkResult
 
 #else
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkCreateXcbSurfaceKHR
--- >     ( VkInstance instance
--- >     , const VkXcbSurfaceCreateInfoKHR* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkSurfaceKHR* pSurface
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateXcbSurfaceKHR vkCreateXcbSurfaceKHR registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCreateXcbSurfaceKHRSafe@ and @vkCreateXcbSurfaceKHR@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateXcbSurfaceKHR <- vkGetInstanceProc @VkCreateXcbSurfaceKHR vkInstance
---
--- or less efficient:
---
--- > myCreateXcbSurfaceKHR <- vkGetProc @VkCreateXcbSurfaceKHR
---
 vkCreateXcbSurfaceKHR ::
                       VkInstance -- ^ instance
                                  ->
@@ -162,7 +148,6 @@
 {-# NOINLINE vkCreateXcbSurfaceKHR #-}
 #endif
 
-#ifdef NATIVE_FFI_VK_VERSION_1_0
 -- |
 -- Success codes: 'VK_SUCCESS'.
 --
@@ -177,9 +162,22 @@
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateXcbSurfaceKHR vkCreateXcbSurfaceKHR registry at www.khronos.org>
 --
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
 --           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
 --
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateXcbSurfaceKHR <- vkGetInstanceProc @VkCreateXcbSurfaceKHR vkInstance
+--
+-- or less efficient:
+--
+-- > myCreateXcbSurfaceKHR <- vkGetProc @VkCreateXcbSurfaceKHR
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_0
 foreign import ccall safe "vkCreateXcbSurfaceKHR"
                vkCreateXcbSurfaceKHRSafe ::
                VkInstance -- ^ instance
@@ -191,32 +189,6 @@
                                                                  -> IO VkResult
 
 #else
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkCreateXcbSurfaceKHR
--- >     ( VkInstance instance
--- >     , const VkXcbSurfaceCreateInfoKHR* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkSurfaceKHR* pSurface
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateXcbSurfaceKHR vkCreateXcbSurfaceKHR registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCreateXcbSurfaceKHRSafe@ and @vkCreateXcbSurfaceKHR@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateXcbSurfaceKHR <- vkGetInstanceProc @VkCreateXcbSurfaceKHR vkInstance
---
--- or less efficient:
---
--- > myCreateXcbSurfaceKHR <- vkGetProc @VkCreateXcbSurfaceKHR
---
 vkCreateXcbSurfaceKHRSafe ::
                           VkInstance -- ^ instance
                                      ->
@@ -225,9 +197,10 @@
                               Ptr VkAllocationCallbacks -- ^ pAllocator
                                                         -> Ptr VkSurfaceKHR -- ^ pSurface
                                                                             -> IO VkResult
-vkCreateXcbSurfaceKHRSafe = vkCreateXcbSurfaceKHR
+vkCreateXcbSurfaceKHRSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCreateXcbSurfaceKHR)
 
-{-# INLINE vkCreateXcbSurfaceKHRSafe #-}
+{-# NOINLINE vkCreateXcbSurfaceKHRSafe #-}
 #endif
 
 -- | Success codes: 'VK_SUCCESS'.
@@ -253,9 +226,12 @@
 
 type PFN_vkCreateXcbSurfaceKHR = FunPtr HS_vkCreateXcbSurfaceKHR
 
-foreign import ccall "dynamic" unwrapVkCreateXcbSurfaceKHR ::
-               PFN_vkCreateXcbSurfaceKHR -> HS_vkCreateXcbSurfaceKHR
+foreign import ccall unsafe "dynamic" unwrapVkCreateXcbSurfaceKHR
+               :: PFN_vkCreateXcbSurfaceKHR -> HS_vkCreateXcbSurfaceKHR
 
+foreign import ccall safe "dynamic" unwrapVkCreateXcbSurfaceKHRSafe
+               :: PFN_vkCreateXcbSurfaceKHR -> HS_vkCreateXcbSurfaceKHR
+
 instance VulkanProc "vkCreateXcbSurfaceKHR" where
         type VkProcType "vkCreateXcbSurfaceKHR" = HS_vkCreateXcbSurfaceKHR
         vkProcSymbol = _VkCreateXcbSurfaceKHR
@@ -264,7 +240,10 @@
         unwrapVkProcPtr = unwrapVkCreateXcbSurfaceKHR
 
         {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkCreateXcbSurfaceKHRSafe
 
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
 pattern VkGetPhysicalDeviceXcbPresentationSupportKHR :: CString
 
 pattern VkGetPhysicalDeviceXcbPresentationSupportKHR <-
@@ -288,7 +267,6 @@
 type VkGetPhysicalDeviceXcbPresentationSupportKHR =
      "vkGetPhysicalDeviceXcbPresentationSupportKHR"
 
-#ifdef NATIVE_FFI_VK_VERSION_1_0
 -- |
 -- > VkBool32 vkGetPhysicalDeviceXcbPresentationSupportKHR
 -- >     ( VkPhysicalDevice physicalDevice
@@ -299,9 +277,22 @@
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceXcbPresentationSupportKHR vkGetPhysicalDeviceXcbPresentationSupportKHR registry at www.khronos.org>
 --
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
 --           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
 --
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceXcbPresentationSupportKHR <- vkGetInstanceProc @VkGetPhysicalDeviceXcbPresentationSupportKHR vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceXcbPresentationSupportKHR <- vkGetProc @VkGetPhysicalDeviceXcbPresentationSupportKHR
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_0
 foreign import ccall unsafe
                "vkGetPhysicalDeviceXcbPresentationSupportKHR"
                vkGetPhysicalDeviceXcbPresentationSupportKHR ::
@@ -313,28 +304,6 @@
                                                               -> IO VkBool32
 
 #else
--- |
--- > VkBool32 vkGetPhysicalDeviceXcbPresentationSupportKHR
--- >     ( VkPhysicalDevice physicalDevice
--- >     , uint32_t queueFamilyIndex
--- >     , xcb_connection_t* connection
--- >     , xcb_visualid_t visual_id
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceXcbPresentationSupportKHR vkGetPhysicalDeviceXcbPresentationSupportKHR registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkGetPhysicalDeviceXcbPresentationSupportKHRSafe@ and @vkGetPhysicalDeviceXcbPresentationSupportKHR@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetPhysicalDeviceXcbPresentationSupportKHR <- vkGetInstanceProc @VkGetPhysicalDeviceXcbPresentationSupportKHR vkInstance
---
--- or less efficient:
---
--- > myGetPhysicalDeviceXcbPresentationSupportKHR <- vkGetProc @VkGetPhysicalDeviceXcbPresentationSupportKHR
---
 vkGetPhysicalDeviceXcbPresentationSupportKHR ::
                                              VkPhysicalDevice -- ^ physicalDevice
                                                               ->
@@ -350,7 +319,6 @@
 {-# NOINLINE vkGetPhysicalDeviceXcbPresentationSupportKHR #-}
 #endif
 
-#ifdef NATIVE_FFI_VK_VERSION_1_0
 -- |
 -- > VkBool32 vkGetPhysicalDeviceXcbPresentationSupportKHR
 -- >     ( VkPhysicalDevice physicalDevice
@@ -361,9 +329,22 @@
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceXcbPresentationSupportKHR vkGetPhysicalDeviceXcbPresentationSupportKHR registry at www.khronos.org>
 --
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
 --           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
 --
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceXcbPresentationSupportKHR <- vkGetInstanceProc @VkGetPhysicalDeviceXcbPresentationSupportKHR vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceXcbPresentationSupportKHR <- vkGetProc @VkGetPhysicalDeviceXcbPresentationSupportKHR
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_0
 foreign import ccall safe
                "vkGetPhysicalDeviceXcbPresentationSupportKHR"
                vkGetPhysicalDeviceXcbPresentationSupportKHRSafe ::
@@ -375,28 +356,6 @@
                                                               -> IO VkBool32
 
 #else
--- |
--- > VkBool32 vkGetPhysicalDeviceXcbPresentationSupportKHR
--- >     ( VkPhysicalDevice physicalDevice
--- >     , uint32_t queueFamilyIndex
--- >     , xcb_connection_t* connection
--- >     , xcb_visualid_t visual_id
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceXcbPresentationSupportKHR vkGetPhysicalDeviceXcbPresentationSupportKHR registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkGetPhysicalDeviceXcbPresentationSupportKHRSafe@ and @vkGetPhysicalDeviceXcbPresentationSupportKHR@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetPhysicalDeviceXcbPresentationSupportKHR <- vkGetInstanceProc @VkGetPhysicalDeviceXcbPresentationSupportKHR vkInstance
---
--- or less efficient:
---
--- > myGetPhysicalDeviceXcbPresentationSupportKHR <- vkGetProc @VkGetPhysicalDeviceXcbPresentationSupportKHR
---
 vkGetPhysicalDeviceXcbPresentationSupportKHRSafe ::
                                                  VkPhysicalDevice -- ^ physicalDevice
                                                                   ->
@@ -407,9 +366,10 @@
                                                        XcbVisualidT -- ^ visual_id
                                                                     -> IO VkBool32
 vkGetPhysicalDeviceXcbPresentationSupportKHRSafe
-  = vkGetPhysicalDeviceXcbPresentationSupportKHR
+  = unsafeDupablePerformIO
+      (vkGetProcSafe @VkGetPhysicalDeviceXcbPresentationSupportKHR)
 
-{-# INLINE vkGetPhysicalDeviceXcbPresentationSupportKHRSafe #-}
+{-# NOINLINE vkGetPhysicalDeviceXcbPresentationSupportKHRSafe #-}
 #endif
 
 -- | > VkBool32 vkGetPhysicalDeviceXcbPresentationSupportKHR
@@ -431,11 +391,16 @@
 type PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR =
      FunPtr HS_vkGetPhysicalDeviceXcbPresentationSupportKHR
 
-foreign import ccall "dynamic"
+foreign import ccall unsafe "dynamic"
                unwrapVkGetPhysicalDeviceXcbPresentationSupportKHR ::
                PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR ->
                  HS_vkGetPhysicalDeviceXcbPresentationSupportKHR
 
+foreign import ccall safe "dynamic"
+               unwrapVkGetPhysicalDeviceXcbPresentationSupportKHRSafe ::
+               PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR ->
+                 HS_vkGetPhysicalDeviceXcbPresentationSupportKHR
+
 instance VulkanProc "vkGetPhysicalDeviceXcbPresentationSupportKHR"
          where
         type VkProcType "vkGetPhysicalDeviceXcbPresentationSupportKHR" =
@@ -447,6 +412,10 @@
           = unwrapVkGetPhysicalDeviceXcbPresentationSupportKHR
 
         {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe
+          = unwrapVkGetPhysicalDeviceXcbPresentationSupportKHRSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VK_KHR_XCB_SURFACE_SPEC_VERSION :: (Num a, Eq a) => a
 
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_KHR_xlib_surface.hs b/src-gen/Graphics/Vulkan/Ext/VK_KHR_xlib_surface.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_KHR_xlib_surface.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_KHR_xlib_surface.hs
@@ -94,7 +94,6 @@
 
 type VkCreateXlibSurfaceKHR = "vkCreateXlibSurfaceKHR"
 
-#ifdef NATIVE_FFI_VK_VERSION_1_0
 -- |
 -- Success codes: 'VK_SUCCESS'.
 --
@@ -109,9 +108,22 @@
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateXlibSurfaceKHR vkCreateXlibSurfaceKHR registry at www.khronos.org>
 --
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
 --           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
 --
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateXlibSurfaceKHR <- vkGetInstanceProc @VkCreateXlibSurfaceKHR vkInstance
+--
+-- or less efficient:
+--
+-- > myCreateXlibSurfaceKHR <- vkGetProc @VkCreateXlibSurfaceKHR
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_0
 foreign import ccall unsafe "vkCreateXlibSurfaceKHR"
                vkCreateXlibSurfaceKHR ::
                VkInstance -- ^ instance
@@ -123,32 +135,6 @@
                                                                  -> IO VkResult
 
 #else
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkCreateXlibSurfaceKHR
--- >     ( VkInstance instance
--- >     , const VkXlibSurfaceCreateInfoKHR* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkSurfaceKHR* pSurface
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateXlibSurfaceKHR vkCreateXlibSurfaceKHR registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCreateXlibSurfaceKHRSafe@ and @vkCreateXlibSurfaceKHR@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateXlibSurfaceKHR <- vkGetInstanceProc @VkCreateXlibSurfaceKHR vkInstance
---
--- or less efficient:
---
--- > myCreateXlibSurfaceKHR <- vkGetProc @VkCreateXlibSurfaceKHR
---
 vkCreateXlibSurfaceKHR ::
                        VkInstance -- ^ instance
                                   ->
@@ -163,7 +149,6 @@
 {-# NOINLINE vkCreateXlibSurfaceKHR #-}
 #endif
 
-#ifdef NATIVE_FFI_VK_VERSION_1_0
 -- |
 -- Success codes: 'VK_SUCCESS'.
 --
@@ -178,9 +163,22 @@
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateXlibSurfaceKHR vkCreateXlibSurfaceKHR registry at www.khronos.org>
 --
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
 --           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
 --
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateXlibSurfaceKHR <- vkGetInstanceProc @VkCreateXlibSurfaceKHR vkInstance
+--
+-- or less efficient:
+--
+-- > myCreateXlibSurfaceKHR <- vkGetProc @VkCreateXlibSurfaceKHR
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_0
 foreign import ccall safe "vkCreateXlibSurfaceKHR"
                vkCreateXlibSurfaceKHRSafe ::
                VkInstance -- ^ instance
@@ -192,32 +190,6 @@
                                                                  -> IO VkResult
 
 #else
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkCreateXlibSurfaceKHR
--- >     ( VkInstance instance
--- >     , const VkXlibSurfaceCreateInfoKHR* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkSurfaceKHR* pSurface
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateXlibSurfaceKHR vkCreateXlibSurfaceKHR registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkCreateXlibSurfaceKHRSafe@ and @vkCreateXlibSurfaceKHR@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateXlibSurfaceKHR <- vkGetInstanceProc @VkCreateXlibSurfaceKHR vkInstance
---
--- or less efficient:
---
--- > myCreateXlibSurfaceKHR <- vkGetProc @VkCreateXlibSurfaceKHR
---
 vkCreateXlibSurfaceKHRSafe ::
                            VkInstance -- ^ instance
                                       ->
@@ -226,9 +198,10 @@
                                Ptr VkAllocationCallbacks -- ^ pAllocator
                                                          -> Ptr VkSurfaceKHR -- ^ pSurface
                                                                              -> IO VkResult
-vkCreateXlibSurfaceKHRSafe = vkCreateXlibSurfaceKHR
+vkCreateXlibSurfaceKHRSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCreateXlibSurfaceKHR)
 
-{-# INLINE vkCreateXlibSurfaceKHRSafe #-}
+{-# NOINLINE vkCreateXlibSurfaceKHRSafe #-}
 #endif
 
 -- | Success codes: 'VK_SUCCESS'.
@@ -254,7 +227,11 @@
 
 type PFN_vkCreateXlibSurfaceKHR = FunPtr HS_vkCreateXlibSurfaceKHR
 
-foreign import ccall "dynamic" unwrapVkCreateXlibSurfaceKHR ::
+foreign import ccall unsafe "dynamic" unwrapVkCreateXlibSurfaceKHR
+               :: PFN_vkCreateXlibSurfaceKHR -> HS_vkCreateXlibSurfaceKHR
+
+foreign import ccall safe "dynamic"
+               unwrapVkCreateXlibSurfaceKHRSafe ::
                PFN_vkCreateXlibSurfaceKHR -> HS_vkCreateXlibSurfaceKHR
 
 instance VulkanProc "vkCreateXlibSurfaceKHR" where
@@ -266,7 +243,10 @@
         unwrapVkProcPtr = unwrapVkCreateXlibSurfaceKHR
 
         {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkCreateXlibSurfaceKHRSafe
 
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
 pattern VkGetPhysicalDeviceXlibPresentationSupportKHR :: CString
 
 pattern VkGetPhysicalDeviceXlibPresentationSupportKHR <-
@@ -290,7 +270,6 @@
 type VkGetPhysicalDeviceXlibPresentationSupportKHR =
      "vkGetPhysicalDeviceXlibPresentationSupportKHR"
 
-#ifdef NATIVE_FFI_VK_VERSION_1_0
 -- |
 -- > VkBool32 vkGetPhysicalDeviceXlibPresentationSupportKHR
 -- >     ( VkPhysicalDevice physicalDevice
@@ -301,9 +280,22 @@
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceXlibPresentationSupportKHR vkGetPhysicalDeviceXlibPresentationSupportKHR registry at www.khronos.org>
 --
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
 --           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
 --
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceXlibPresentationSupportKHR <- vkGetInstanceProc @VkGetPhysicalDeviceXlibPresentationSupportKHR vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceXlibPresentationSupportKHR <- vkGetProc @VkGetPhysicalDeviceXlibPresentationSupportKHR
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_0
 foreign import ccall unsafe
                "vkGetPhysicalDeviceXlibPresentationSupportKHR"
                vkGetPhysicalDeviceXlibPresentationSupportKHR ::
@@ -315,28 +307,6 @@
                                                    -> IO VkBool32
 
 #else
--- |
--- > VkBool32 vkGetPhysicalDeviceXlibPresentationSupportKHR
--- >     ( VkPhysicalDevice physicalDevice
--- >     , uint32_t queueFamilyIndex
--- >     , Display* dpy
--- >     , VisualID visualID
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceXlibPresentationSupportKHR vkGetPhysicalDeviceXlibPresentationSupportKHR registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkGetPhysicalDeviceXlibPresentationSupportKHRSafe@ and @vkGetPhysicalDeviceXlibPresentationSupportKHR@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetPhysicalDeviceXlibPresentationSupportKHR <- vkGetInstanceProc @VkGetPhysicalDeviceXlibPresentationSupportKHR vkInstance
---
--- or less efficient:
---
--- > myGetPhysicalDeviceXlibPresentationSupportKHR <- vkGetProc @VkGetPhysicalDeviceXlibPresentationSupportKHR
---
 vkGetPhysicalDeviceXlibPresentationSupportKHR ::
                                               VkPhysicalDevice -- ^ physicalDevice
                                                                ->
@@ -351,7 +321,6 @@
 {-# NOINLINE vkGetPhysicalDeviceXlibPresentationSupportKHR #-}
 #endif
 
-#ifdef NATIVE_FFI_VK_VERSION_1_0
 -- |
 -- > VkBool32 vkGetPhysicalDeviceXlibPresentationSupportKHR
 -- >     ( VkPhysicalDevice physicalDevice
@@ -362,9 +331,22 @@
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceXlibPresentationSupportKHR vkGetPhysicalDeviceXlibPresentationSupportKHR registry at www.khronos.org>
 --
--- __Note:__ flag @useNativeFFI-1-0@ is enabled, so this function is implemented
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
 --           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
 --
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceXlibPresentationSupportKHR <- vkGetInstanceProc @VkGetPhysicalDeviceXlibPresentationSupportKHR vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceXlibPresentationSupportKHR <- vkGetProc @VkGetPhysicalDeviceXlibPresentationSupportKHR
+--
+-- __Note:__ @vkXxx@ and @vkXxxSafe@ versions of the call refer to
+--           using @unsafe@ of @safe@ FFI respectively.
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_0
 foreign import ccall safe
                "vkGetPhysicalDeviceXlibPresentationSupportKHR"
                vkGetPhysicalDeviceXlibPresentationSupportKHRSafe ::
@@ -376,28 +358,6 @@
                                                    -> IO VkBool32
 
 #else
--- |
--- > VkBool32 vkGetPhysicalDeviceXlibPresentationSupportKHR
--- >     ( VkPhysicalDevice physicalDevice
--- >     , uint32_t queueFamilyIndex
--- >     , Display* dpy
--- >     , VisualID visualID
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceXlibPresentationSupportKHR vkGetPhysicalDeviceXlibPresentationSupportKHR registry at www.khronos.org>
---
--- __Note:__ flag @useNativeFFI-1-0@ is disabled, so this function is looked up
---           dynamically at runtime;
---           @vkGetPhysicalDeviceXlibPresentationSupportKHRSafe@ and @vkGetPhysicalDeviceXlibPresentationSupportKHR@ are synonyms.
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetPhysicalDeviceXlibPresentationSupportKHR <- vkGetInstanceProc @VkGetPhysicalDeviceXlibPresentationSupportKHR vkInstance
---
--- or less efficient:
---
--- > myGetPhysicalDeviceXlibPresentationSupportKHR <- vkGetProc @VkGetPhysicalDeviceXlibPresentationSupportKHR
---
 vkGetPhysicalDeviceXlibPresentationSupportKHRSafe ::
                                                   VkPhysicalDevice -- ^ physicalDevice
                                                                    ->
@@ -406,9 +366,10 @@
                                                                           -> VisualID -- ^ visualID
                                                                                       -> IO VkBool32
 vkGetPhysicalDeviceXlibPresentationSupportKHRSafe
-  = vkGetPhysicalDeviceXlibPresentationSupportKHR
+  = unsafeDupablePerformIO
+      (vkGetProcSafe @VkGetPhysicalDeviceXlibPresentationSupportKHR)
 
-{-# INLINE vkGetPhysicalDeviceXlibPresentationSupportKHRSafe #-}
+{-# NOINLINE vkGetPhysicalDeviceXlibPresentationSupportKHRSafe #-}
 #endif
 
 -- | > VkBool32 vkGetPhysicalDeviceXlibPresentationSupportKHR
@@ -430,11 +391,16 @@
 type PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR =
      FunPtr HS_vkGetPhysicalDeviceXlibPresentationSupportKHR
 
-foreign import ccall "dynamic"
+foreign import ccall unsafe "dynamic"
                unwrapVkGetPhysicalDeviceXlibPresentationSupportKHR ::
                PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR ->
                  HS_vkGetPhysicalDeviceXlibPresentationSupportKHR
 
+foreign import ccall safe "dynamic"
+               unwrapVkGetPhysicalDeviceXlibPresentationSupportKHRSafe ::
+               PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR ->
+                 HS_vkGetPhysicalDeviceXlibPresentationSupportKHR
+
 instance VulkanProc "vkGetPhysicalDeviceXlibPresentationSupportKHR"
          where
         type VkProcType "vkGetPhysicalDeviceXlibPresentationSupportKHR" =
@@ -446,6 +412,10 @@
           = unwrapVkGetPhysicalDeviceXlibPresentationSupportKHR
 
         {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe
+          = unwrapVkGetPhysicalDeviceXlibPresentationSupportKHRSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VK_KHR_XLIB_SURFACE_SPEC_VERSION :: (Num a, Eq a) => a
 
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_MVK_ios_surface.hs b/src-gen/Graphics/Vulkan/Ext/VK_MVK_ios_surface.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_MVK_ios_surface.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_MVK_ios_surface.hs
@@ -103,9 +103,12 @@
 
 type PFN_vkCreateIOSSurfaceMVK = FunPtr HS_vkCreateIOSSurfaceMVK
 
-foreign import ccall "dynamic" unwrapVkCreateIOSSurfaceMVK ::
-               PFN_vkCreateIOSSurfaceMVK -> HS_vkCreateIOSSurfaceMVK
+foreign import ccall unsafe "dynamic" unwrapVkCreateIOSSurfaceMVK
+               :: PFN_vkCreateIOSSurfaceMVK -> HS_vkCreateIOSSurfaceMVK
 
+foreign import ccall safe "dynamic" unwrapVkCreateIOSSurfaceMVKSafe
+               :: PFN_vkCreateIOSSurfaceMVK -> HS_vkCreateIOSSurfaceMVK
+
 instance VulkanProc "vkCreateIOSSurfaceMVK" where
         type VkProcType "vkCreateIOSSurfaceMVK" = HS_vkCreateIOSSurfaceMVK
         vkProcSymbol = _VkCreateIOSSurfaceMVK
@@ -114,6 +117,9 @@
         unwrapVkProcPtr = unwrapVkCreateIOSSurfaceMVK
 
         {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkCreateIOSSurfaceMVKSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VK_MVK_IOS_SURFACE_SPEC_VERSION :: (Num a, Eq a) => a
 
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_MVK_macos_surface.hs b/src-gen/Graphics/Vulkan/Ext/VK_MVK_macos_surface.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_MVK_macos_surface.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_MVK_macos_surface.hs
@@ -105,7 +105,11 @@
 type PFN_vkCreateMacOSSurfaceMVK =
      FunPtr HS_vkCreateMacOSSurfaceMVK
 
-foreign import ccall "dynamic" unwrapVkCreateMacOSSurfaceMVK ::
+foreign import ccall unsafe "dynamic" unwrapVkCreateMacOSSurfaceMVK
+               :: PFN_vkCreateMacOSSurfaceMVK -> HS_vkCreateMacOSSurfaceMVK
+
+foreign import ccall safe "dynamic"
+               unwrapVkCreateMacOSSurfaceMVKSafe ::
                PFN_vkCreateMacOSSurfaceMVK -> HS_vkCreateMacOSSurfaceMVK
 
 instance VulkanProc "vkCreateMacOSSurfaceMVK" where
@@ -117,6 +121,9 @@
         unwrapVkProcPtr = unwrapVkCreateMacOSSurfaceMVK
 
         {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkCreateMacOSSurfaceMVKSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VK_MVK_MACOS_SURFACE_SPEC_VERSION :: (Num a, Eq a) => a
 
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_NN_vi_surface.hs b/src-gen/Graphics/Vulkan/Ext/VK_NN_vi_surface.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_NN_vi_surface.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_NN_vi_surface.hs
@@ -102,9 +102,12 @@
 
 type PFN_vkCreateViSurfaceNN = FunPtr HS_vkCreateViSurfaceNN
 
-foreign import ccall "dynamic" unwrapVkCreateViSurfaceNN ::
+foreign import ccall unsafe "dynamic" unwrapVkCreateViSurfaceNN ::
                PFN_vkCreateViSurfaceNN -> HS_vkCreateViSurfaceNN
 
+foreign import ccall safe "dynamic" unwrapVkCreateViSurfaceNNSafe
+               :: PFN_vkCreateViSurfaceNN -> HS_vkCreateViSurfaceNN
+
 instance VulkanProc "vkCreateViSurfaceNN" where
         type VkProcType "vkCreateViSurfaceNN" = HS_vkCreateViSurfaceNN
         vkProcSymbol = _VkCreateViSurfaceNN
@@ -113,6 +116,9 @@
         unwrapVkProcPtr = unwrapVkCreateViSurfaceNN
 
         {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkCreateViSurfaceNNSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VK_NN_VI_SURFACE_SPEC_VERSION :: (Num a, Eq a) => a
 
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_NVX_device_generated_commands.hs b/src-gen/Graphics/Vulkan/Ext/VK_NVX_device_generated_commands.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_NVX_device_generated_commands.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_NVX_device_generated_commands.hs
@@ -142,7 +142,11 @@
 type PFN_vkCmdProcessCommandsNVX =
      FunPtr HS_vkCmdProcessCommandsNVX
 
-foreign import ccall "dynamic" unwrapVkCmdProcessCommandsNVX ::
+foreign import ccall unsafe "dynamic" unwrapVkCmdProcessCommandsNVX
+               :: PFN_vkCmdProcessCommandsNVX -> HS_vkCmdProcessCommandsNVX
+
+foreign import ccall safe "dynamic"
+               unwrapVkCmdProcessCommandsNVXSafe ::
                PFN_vkCmdProcessCommandsNVX -> HS_vkCmdProcessCommandsNVX
 
 instance VulkanProc "vkCmdProcessCommandsNVX" where
@@ -154,7 +158,10 @@
         unwrapVkProcPtr = unwrapVkCmdProcessCommandsNVX
 
         {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkCmdProcessCommandsNVXSafe
 
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
 pattern VkCmdReserveSpaceForCommandsNVX :: CString
 
 pattern VkCmdReserveSpaceForCommandsNVX <-
@@ -195,11 +202,16 @@
 type PFN_vkCmdReserveSpaceForCommandsNVX =
      FunPtr HS_vkCmdReserveSpaceForCommandsNVX
 
-foreign import ccall "dynamic"
+foreign import ccall unsafe "dynamic"
                unwrapVkCmdReserveSpaceForCommandsNVX ::
                PFN_vkCmdReserveSpaceForCommandsNVX ->
                  HS_vkCmdReserveSpaceForCommandsNVX
 
+foreign import ccall safe "dynamic"
+               unwrapVkCmdReserveSpaceForCommandsNVXSafe ::
+               PFN_vkCmdReserveSpaceForCommandsNVX ->
+                 HS_vkCmdReserveSpaceForCommandsNVX
+
 instance VulkanProc "vkCmdReserveSpaceForCommandsNVX" where
         type VkProcType "vkCmdReserveSpaceForCommandsNVX" =
              HS_vkCmdReserveSpaceForCommandsNVX
@@ -209,7 +221,10 @@
         unwrapVkProcPtr = unwrapVkCmdReserveSpaceForCommandsNVX
 
         {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkCmdReserveSpaceForCommandsNVXSafe
 
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
 pattern VkCreateIndirectCommandsLayoutNVX :: CString
 
 pattern VkCreateIndirectCommandsLayoutNVX <-
@@ -257,11 +272,16 @@
 type PFN_vkCreateIndirectCommandsLayoutNVX =
      FunPtr HS_vkCreateIndirectCommandsLayoutNVX
 
-foreign import ccall "dynamic"
+foreign import ccall unsafe "dynamic"
                unwrapVkCreateIndirectCommandsLayoutNVX ::
                PFN_vkCreateIndirectCommandsLayoutNVX ->
                  HS_vkCreateIndirectCommandsLayoutNVX
 
+foreign import ccall safe "dynamic"
+               unwrapVkCreateIndirectCommandsLayoutNVXSafe ::
+               PFN_vkCreateIndirectCommandsLayoutNVX ->
+                 HS_vkCreateIndirectCommandsLayoutNVX
+
 instance VulkanProc "vkCreateIndirectCommandsLayoutNVX" where
         type VkProcType "vkCreateIndirectCommandsLayoutNVX" =
              HS_vkCreateIndirectCommandsLayoutNVX
@@ -271,7 +291,10 @@
         unwrapVkProcPtr = unwrapVkCreateIndirectCommandsLayoutNVX
 
         {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkCreateIndirectCommandsLayoutNVXSafe
 
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
 pattern VkDestroyIndirectCommandsLayoutNVX :: CString
 
 pattern VkDestroyIndirectCommandsLayoutNVX <-
@@ -311,11 +334,16 @@
 type PFN_vkDestroyIndirectCommandsLayoutNVX =
      FunPtr HS_vkDestroyIndirectCommandsLayoutNVX
 
-foreign import ccall "dynamic"
+foreign import ccall unsafe "dynamic"
                unwrapVkDestroyIndirectCommandsLayoutNVX ::
                PFN_vkDestroyIndirectCommandsLayoutNVX ->
                  HS_vkDestroyIndirectCommandsLayoutNVX
 
+foreign import ccall safe "dynamic"
+               unwrapVkDestroyIndirectCommandsLayoutNVXSafe ::
+               PFN_vkDestroyIndirectCommandsLayoutNVX ->
+                 HS_vkDestroyIndirectCommandsLayoutNVX
+
 instance VulkanProc "vkDestroyIndirectCommandsLayoutNVX" where
         type VkProcType "vkDestroyIndirectCommandsLayoutNVX" =
              HS_vkDestroyIndirectCommandsLayoutNVX
@@ -325,7 +353,10 @@
         unwrapVkProcPtr = unwrapVkDestroyIndirectCommandsLayoutNVX
 
         {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkDestroyIndirectCommandsLayoutNVXSafe
 
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
 pattern VkCreateObjectTableNVX :: CString
 
 pattern VkCreateObjectTableNVX <-
@@ -368,7 +399,11 @@
 
 type PFN_vkCreateObjectTableNVX = FunPtr HS_vkCreateObjectTableNVX
 
-foreign import ccall "dynamic" unwrapVkCreateObjectTableNVX ::
+foreign import ccall unsafe "dynamic" unwrapVkCreateObjectTableNVX
+               :: PFN_vkCreateObjectTableNVX -> HS_vkCreateObjectTableNVX
+
+foreign import ccall safe "dynamic"
+               unwrapVkCreateObjectTableNVXSafe ::
                PFN_vkCreateObjectTableNVX -> HS_vkCreateObjectTableNVX
 
 instance VulkanProc "vkCreateObjectTableNVX" where
@@ -380,7 +415,10 @@
         unwrapVkProcPtr = unwrapVkCreateObjectTableNVX
 
         {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkCreateObjectTableNVXSafe
 
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
 pattern VkDestroyObjectTableNVX :: CString
 
 pattern VkDestroyObjectTableNVX <-
@@ -416,7 +454,11 @@
 type PFN_vkDestroyObjectTableNVX =
      FunPtr HS_vkDestroyObjectTableNVX
 
-foreign import ccall "dynamic" unwrapVkDestroyObjectTableNVX ::
+foreign import ccall unsafe "dynamic" unwrapVkDestroyObjectTableNVX
+               :: PFN_vkDestroyObjectTableNVX -> HS_vkDestroyObjectTableNVX
+
+foreign import ccall safe "dynamic"
+               unwrapVkDestroyObjectTableNVXSafe ::
                PFN_vkDestroyObjectTableNVX -> HS_vkDestroyObjectTableNVX
 
 instance VulkanProc "vkDestroyObjectTableNVX" where
@@ -428,7 +470,10 @@
         unwrapVkProcPtr = unwrapVkDestroyObjectTableNVX
 
         {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkDestroyObjectTableNVXSafe
 
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
 pattern VkRegisterObjectsNVX :: CString
 
 pattern VkRegisterObjectsNVX <- (is_VkRegisterObjectsNVX -> True)
@@ -473,9 +518,12 @@
 
 type PFN_vkRegisterObjectsNVX = FunPtr HS_vkRegisterObjectsNVX
 
-foreign import ccall "dynamic" unwrapVkRegisterObjectsNVX ::
+foreign import ccall unsafe "dynamic" unwrapVkRegisterObjectsNVX ::
                PFN_vkRegisterObjectsNVX -> HS_vkRegisterObjectsNVX
 
+foreign import ccall safe "dynamic" unwrapVkRegisterObjectsNVXSafe
+               :: PFN_vkRegisterObjectsNVX -> HS_vkRegisterObjectsNVX
+
 instance VulkanProc "vkRegisterObjectsNVX" where
         type VkProcType "vkRegisterObjectsNVX" = HS_vkRegisterObjectsNVX
         vkProcSymbol = _VkRegisterObjectsNVX
@@ -484,7 +532,10 @@
         unwrapVkProcPtr = unwrapVkRegisterObjectsNVX
 
         {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkRegisterObjectsNVXSafe
 
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
 pattern VkUnregisterObjectsNVX :: CString
 
 pattern VkUnregisterObjectsNVX <-
@@ -529,7 +580,11 @@
 
 type PFN_vkUnregisterObjectsNVX = FunPtr HS_vkUnregisterObjectsNVX
 
-foreign import ccall "dynamic" unwrapVkUnregisterObjectsNVX ::
+foreign import ccall unsafe "dynamic" unwrapVkUnregisterObjectsNVX
+               :: PFN_vkUnregisterObjectsNVX -> HS_vkUnregisterObjectsNVX
+
+foreign import ccall safe "dynamic"
+               unwrapVkUnregisterObjectsNVXSafe ::
                PFN_vkUnregisterObjectsNVX -> HS_vkUnregisterObjectsNVX
 
 instance VulkanProc "vkUnregisterObjectsNVX" where
@@ -541,7 +596,10 @@
         unwrapVkProcPtr = unwrapVkUnregisterObjectsNVX
 
         {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkUnregisterObjectsNVXSafe
 
+        {-# INLINE unwrapVkProcPtrSafe #-}
+
 pattern VkGetPhysicalDeviceGeneratedCommandsPropertiesNVX ::
         CString
 
@@ -585,11 +643,16 @@
 type PFN_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX =
      FunPtr HS_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX
 
-foreign import ccall "dynamic"
+foreign import ccall unsafe "dynamic"
                unwrapVkGetPhysicalDeviceGeneratedCommandsPropertiesNVX ::
                PFN_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX ->
                  HS_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX
 
+foreign import ccall safe "dynamic"
+               unwrapVkGetPhysicalDeviceGeneratedCommandsPropertiesNVXSafe ::
+               PFN_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX ->
+                 HS_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX
+
 instance VulkanProc
            "vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX"
          where
@@ -602,6 +665,10 @@
           = unwrapVkGetPhysicalDeviceGeneratedCommandsPropertiesNVX
 
         {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe
+          = unwrapVkGetPhysicalDeviceGeneratedCommandsPropertiesNVXSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VK_NVX_DEVICE_GENERATED_COMMANDS_SPEC_VERSION ::
         (Num a, Eq a) => a
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_NV_clip_space_w_scaling.hs b/src-gen/Graphics/Vulkan/Ext/VK_NV_clip_space_w_scaling.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_NV_clip_space_w_scaling.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_NV_clip_space_w_scaling.hs
@@ -96,9 +96,14 @@
 type PFN_vkCmdSetViewportWScalingNV =
      FunPtr HS_vkCmdSetViewportWScalingNV
 
-foreign import ccall "dynamic" unwrapVkCmdSetViewportWScalingNV ::
+foreign import ccall unsafe "dynamic"
+               unwrapVkCmdSetViewportWScalingNV ::
                PFN_vkCmdSetViewportWScalingNV -> HS_vkCmdSetViewportWScalingNV
 
+foreign import ccall safe "dynamic"
+               unwrapVkCmdSetViewportWScalingNVSafe ::
+               PFN_vkCmdSetViewportWScalingNV -> HS_vkCmdSetViewportWScalingNV
+
 instance VulkanProc "vkCmdSetViewportWScalingNV" where
         type VkProcType "vkCmdSetViewportWScalingNV" =
              HS_vkCmdSetViewportWScalingNV
@@ -108,6 +113,9 @@
         unwrapVkProcPtr = unwrapVkCmdSetViewportWScalingNV
 
         {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkCmdSetViewportWScalingNVSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VK_NV_CLIP_SPACE_W_SCALING_SPEC_VERSION :: (Num a, Eq a) =>
         a
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_NV_external_memory_capabilities.hs b/src-gen/Graphics/Vulkan/Ext/VK_NV_external_memory_capabilities.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_NV_external_memory_capabilities.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_NV_external_memory_capabilities.hs
@@ -120,11 +120,16 @@
 type PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV =
      FunPtr HS_vkGetPhysicalDeviceExternalImageFormatPropertiesNV
 
-foreign import ccall "dynamic"
+foreign import ccall unsafe "dynamic"
                unwrapVkGetPhysicalDeviceExternalImageFormatPropertiesNV ::
                PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV ->
                  HS_vkGetPhysicalDeviceExternalImageFormatPropertiesNV
 
+foreign import ccall safe "dynamic"
+               unwrapVkGetPhysicalDeviceExternalImageFormatPropertiesNVSafe ::
+               PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV ->
+                 HS_vkGetPhysicalDeviceExternalImageFormatPropertiesNV
+
 instance VulkanProc
            "vkGetPhysicalDeviceExternalImageFormatPropertiesNV"
          where
@@ -138,6 +143,10 @@
           = unwrapVkGetPhysicalDeviceExternalImageFormatPropertiesNV
 
         {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe
+          = unwrapVkGetPhysicalDeviceExternalImageFormatPropertiesNVSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VK_NV_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION ::
         (Num a, Eq a) => a
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_NV_external_memory_win32.hs b/src-gen/Graphics/Vulkan/Ext/VK_NV_external_memory_win32.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_NV_external_memory_win32.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_NV_external_memory_win32.hs
@@ -102,9 +102,14 @@
 type PFN_vkGetMemoryWin32HandleNV =
      FunPtr HS_vkGetMemoryWin32HandleNV
 
-foreign import ccall "dynamic" unwrapVkGetMemoryWin32HandleNV ::
+foreign import ccall unsafe "dynamic"
+               unwrapVkGetMemoryWin32HandleNV ::
                PFN_vkGetMemoryWin32HandleNV -> HS_vkGetMemoryWin32HandleNV
 
+foreign import ccall safe "dynamic"
+               unwrapVkGetMemoryWin32HandleNVSafe ::
+               PFN_vkGetMemoryWin32HandleNV -> HS_vkGetMemoryWin32HandleNV
+
 instance VulkanProc "vkGetMemoryWin32HandleNV" where
         type VkProcType "vkGetMemoryWin32HandleNV" =
              HS_vkGetMemoryWin32HandleNV
@@ -114,6 +119,9 @@
         unwrapVkProcPtr = unwrapVkGetMemoryWin32HandleNV
 
         {-# INLINE unwrapVkProcPtr #-}
+        unwrapVkProcPtrSafe = unwrapVkGetMemoryWin32HandleNVSafe
+
+        {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VK_NV_EXTERNAL_MEMORY_WIN32_SPEC_VERSION ::
         (Num a, Eq a) => a
diff --git a/src-gen/Graphics/Vulkan/Types/Defines.hs b/src-gen/Graphics/Vulkan/Types/Defines.hs
--- a/src-gen/Graphics/Vulkan/Types/Defines.hs
+++ b/src-gen/Graphics/Vulkan/Types/Defines.hs
@@ -57,12 +57,12 @@
 type VK_API_VERSION_1_1 = 4198400
 
 -- | > // Version of this file
---   > #define VK_HEADER_VERSION 72
+--   > #define VK_HEADER_VERSION 74
 pattern VK_HEADER_VERSION :: (Num a, Eq a) => a
 
-pattern VK_HEADER_VERSION = 72
+pattern VK_HEADER_VERSION = 74
 
-type VK_HEADER_VERSION = 72
+type VK_HEADER_VERSION = 74
 
 -- | > #define VK_MAKE_VERSION(major, minor, patch) \
 --   >     (((major) << 22) | ((minor) << 12) | (patch))
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/PhysicalDevice.hsc b/src-gen/Graphics/Vulkan/Types/Struct/PhysicalDevice.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/PhysicalDevice.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/PhysicalDevice.hsc
@@ -1965,7 +1965,7 @@
         type ReturnedOnly VkPhysicalDeviceDescriptorIndexingFeaturesEXT =
              'False -- ' closing tick for hsc2hs
         type StructExtends VkPhysicalDeviceDescriptorIndexingFeaturesEXT =
-             '[VkPhysicalDeviceFeatures2KHR, VkDeviceCreateInfo] -- ' closing tick for hsc2hs
+             '[VkPhysicalDeviceFeatures2, VkDeviceCreateInfo] -- ' closing tick for hsc2hs
 
 instance {-# OVERLAPPING #-}
          HasField "sType" VkPhysicalDeviceDescriptorIndexingFeaturesEXT
@@ -3301,7 +3301,7 @@
         type ReturnedOnly VkPhysicalDeviceDescriptorIndexingPropertiesEXT =
              'True -- ' closing tick for hsc2hs
         type StructExtends VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-             = '[VkPhysicalDeviceProperties2KHR] -- ' closing tick for hsc2hs
+             = '[VkPhysicalDeviceProperties2] -- ' closing tick for hsc2hs
 
 instance {-# OVERLAPPING #-}
          HasField "sType" VkPhysicalDeviceDescriptorIndexingPropertiesEXT
diff --git a/src/Graphics/Vulkan/Marshal/Proc.hs b/src/Graphics/Vulkan/Marshal/Proc.hs
--- a/src/Graphics/Vulkan/Marshal/Proc.hs
+++ b/src/Graphics/Vulkan/Marshal/Proc.hs
@@ -14,11 +14,20 @@
 --   Also, have a look at
 --   <https://vulkan.lunarg.com/doc/view/1.1.70.1/windows/loader_and_layer_interface.html#user-content-instance-versus-device Vulkan loader>
 --   page to see other reasons to load symbols manually.
+--
+--   All FFI functions are present in two variants:
+--   @xxx@ and @xxxSafe@, the names stand for @foreign import unsafe xxx@
+--   @foreign import safe xxx@ respectively.
+--   In particular, that does not mean that @vkGetXxxProcSafe@ function cannot fail;
+--   it does error if the symbol is not present in the implementation!
 module Graphics.Vulkan.Marshal.Proc
   ( VulkanProc (..)
-  , vkGetInstanceProc, vkLookupInstanceProc
-  , vkGetDeviceProc, vkLookupDeviceProc
-  , vkGetProc, vkLookupProc
+  , vkGetInstanceProc, vkGetInstanceProcSafe
+  , vkLookupInstanceProc, vkLookupInstanceProcSafe
+  , vkGetDeviceProc, vkGetDeviceProcSafe
+  , vkLookupDeviceProc, vkLookupDeviceProcSafe
+  , vkGetProc, vkGetProcSafe
+  , vkLookupProc, vkLookupProcSafe
     -- * Re-export `Foreign.Ptr`
   , FunPtr, nullFunPtr
   ) where
@@ -55,8 +64,22 @@
     -- | Name of the vulkan function
     vkProcSymbol :: CString
     -- | Convert C function pointer to an ordinary haskell function.
+    --   Use unsafe FFI (@foreign import unsafe "dynamic" ...@).
     unwrapVkProcPtr :: FunPtr (VkProcType proc) -> VkProcType proc
+    -- | Convert C function pointer to an ordinary haskell function.
+    --   Use safe FFI (@foreign import safe "dynamic" ...@).
+    unwrapVkProcPtrSafe :: FunPtr (VkProcType proc) -> VkProcType proc
 
+
+
+--------------------------------------------------------------------------------
+-- Unsafe FFI version
+--------------------------------------------------------------------------------
+
+
+
+
+
 -- | An alternative to @vkGetInstanceProcAddr@ with type inference
 --   and protection against typos.
 --
@@ -141,6 +164,100 @@
 
 
 
+--------------------------------------------------------------------------------
+-- Safe FFI version
+--------------------------------------------------------------------------------
+
+
+
+-- | An alternative to @vkGetInstanceProcAddr@ with type inference
+--   and protection against typos.
+--
+--   Note, this is an unsafe function;
+--   it does not check if the result of @vkGetInstanceProcAddr@
+--   is a null function pointer.
+vkGetInstanceProcSafe :: forall proc . VulkanProc proc
+                  => VkInstance -> IO (VkProcType proc)
+vkGetInstanceProcSafe i
+  = unwrapVkProcPtrSafe @proc
+  <$> c'vkGetInstanceProcAddr i (vkProcSymbol @proc)
+{-# INLINE vkGetInstanceProcSafe #-}
+
+-- | An alternative to @vkGetInstanceProcAddr@ with type inference
+--   and protection against typos.
+vkLookupInstanceProcSafe :: forall proc . VulkanProc proc
+                     => VkInstance -> IO (Maybe (VkProcType proc))
+vkLookupInstanceProcSafe i
+    = f <$> c'vkGetInstanceProcAddr i (vkProcSymbol @proc)
+  where
+    f p = if p == nullFunPtr then Nothing else Just (unwrapVkProcPtrSafe @proc p)
+{-# INLINE vkLookupInstanceProcSafe #-}
+
+
+-- | An alternative to @vkGetDeviceProcAddr@ with type inference
+--   and protection against typos.
+--
+--   Note, this is an unsafe function;
+--   it does not check if the result of @vkGetInstanceProcAddr@
+--   is a null function pointer.
+vkGetDeviceProcSafe :: forall proc . VulkanProc proc
+                => VkDevice -> IO (VkProcType proc)
+vkGetDeviceProcSafe i
+  = unwrapVkProcPtrSafe @proc
+  <$> c'vkGetDeviceProcAddr i (vkProcSymbol @proc)
+{-# INLINE vkGetDeviceProcSafe #-}
+
+-- | An alternative to @vkGetDeviceProcAddr@ with type inference
+--   and protection against typos.
+vkLookupDeviceProcSafe :: forall proc . VulkanProc proc
+                   => VkDevice -> IO (Maybe (VkProcType proc))
+vkLookupDeviceProcSafe i
+    = f <$> c'vkGetDeviceProcAddr i (vkProcSymbol @proc)
+  where
+    f p = if p == nullFunPtr then Nothing else Just (unwrapVkProcPtrSafe @proc p)
+{-# INLINE vkLookupDeviceProcSafe #-}
+
+
+-- | Locate Vulkan symbol dynamically at runtime using platform-dependent machinery,
+--   such as @dlsym@ or @GetProcAddress@.
+--   This function throws an error on failure.
+--
+--   Consider using `vkGetDeviceProc` or `vkGetInstanceProc` for loading a symbol,
+--    because they can return a more optimized version of a function.
+--   Also note, you are likely not able to lookup an extension funcion using
+--   `vkGetProc`, because a corresponding symbol is simply not present in the
+--   vulkan loader library.
+vkGetProcSafe :: forall proc . VulkanProc proc => IO (VkProcType proc)
+vkGetProcSafe = alloca $ \errPtr -> do
+    fp <- withForeignPtr _vkDlHandle $ \h ->
+      c'vkdll_dlsym h (vkProcSymbol @proc) errPtr
+    when (fp == nullFunPtr) $ peek errPtr >>= peekCString >>= fail .
+        ("An error happened while trying to load vulkan symbol dynamically: " ++)
+    return $ unwrapVkProcPtrSafe @proc fp
+{-# INLINE vkGetProcSafe #-}
+
+-- | Locate Vulkan symbol dynamically at runtime using platform-dependent machinery,
+--   such as @dlsym@ or @GetProcAddress@.
+--   This function returns @Nothing@ on failure ignoring an error message.
+--
+--   Consider using `vkGetDeviceProc` or `vkGetInstanceProc` for loading a symbol,
+--    because they can return a more optimized version of a function.
+--   Also note, you are likely not able to lookup an extension funcion using
+--   `vkLookupProc`, because a corresponding symbol is simply not present in the
+--   vulkan loader library.
+vkLookupProcSafe :: forall proc . VulkanProc proc => IO (Maybe (VkProcType proc))
+vkLookupProcSafe = alloca $ \errPtr -> do
+    fp <- withForeignPtr _vkDlHandle $ \h ->
+      c'vkdll_dlsym h (vkProcSymbol @proc) errPtr
+    return $ if fp == nullFunPtr then Nothing else Just (unwrapVkProcPtrSafe @proc fp)
+{-# INLINE vkLookupProcSafe #-}
+
+
+
+
+--------------------------------------------------------------------------------
+-- Utilities
+--------------------------------------------------------------------------------
 
 
 
diff --git a/vulkan-api.cabal b/vulkan-api.cabal
--- a/vulkan-api.cabal
+++ b/vulkan-api.cabal
@@ -3,7 +3,7 @@
 -- it is autogenerated at genvulkan/src/Write/Cabal.hs
 --
 name:                vulkan-api
-version:             1.1.1.0
+version:             1.1.2.0
 synopsis:            Low-level low-overhead vulkan api bindings
 description:
     Haskell bindings for vulkan api as described in vk.xml.
@@ -426,10 +426,11 @@
       cpp-options: -DNATIVE_FFI_VK_VERSION_1_1
 
     build-depends:
-        base >= 4.7 && < 5
+        base >= 4.9 && < 5
     default-language:    Haskell2010
     ghc-options:         -Wall
     include-dirs:        include
+    c-sources:           cbits/vulkan_loader.c
     if flag(useNativeFFI-1-0) || flag(useNativeFFI-1-1)
       if os(windows)
         extra-libraries: vulkan-1
@@ -440,7 +441,6 @@
     else
       cpp-options:       -DVK_NO_PROTOTYPES
       cc-options:        -DVK_NO_PROTOTYPES
-      c-sources:         cbits/vulkan_loader.c
 
 source-repository head
     type:     git
